From 603f9b56f9fa721de1ee3c83d41578e97600063f Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Fri, 14 Aug 2026 22:36:56 -0500 Subject: [PATCH] BURN THE WITCH --- .github/workflows/compile_bluescreens.yaml | 10 +- .gitignore | 3 - .vscode/launch.json | 17 +- SConstruct | 115 +- build | 3 - common/params_keys.h | 2 - common/spinner.py | 13 - common/text_window.py | 12 - docs/MODEL_REBUILD.md | 2 +- docs/contributing/contribute.md | 2 +- docs/how-to/laptop-device-build.md | 12 +- raybig | 6 - scripts/debug_ui_freeze.sh | 6 +- scripts/host_tool_runner.sh | 52 +- scripts/laptop_device_build.sh | 3 +- scripts/launch_onroad_desktop.sh | 57 +- ...big_desktop.sh => launch_ui_c3_desktop.sh} | 22 +- scripts/launch_ui_desktop.sh | 265 --- scripts/starpilot_build_flow.sh | 23 +- selfdrive/assets/.gitignore | 2 - selfdrive/assets/assets.qrc | 20 - .../controls/lib/longcontrol_vehicle_tunes.py | 14 + selfdrive/controls/tests/test_longcontrol.py | 9 + selfdrive/ui/SConscript | 151 +- .../layouts/settings/starpilot/appearance.py | 1 - .../ui/layouts/settings/starpilot/panel.py | 2 +- selfdrive/ui/main.cc | 62 - selfdrive/ui/mici/widgets/button.py | 2 +- selfdrive/ui/moc_ui.cc | 338 --- selfdrive/ui/onroad/starpilot/path.py | 1 - selfdrive/ui/onroad/starpilot/rainbow_path.py | 2 +- selfdrive/ui/qt/api.cc | 142 -- selfdrive/ui/qt/api.h | 49 - selfdrive/ui/qt/body.cc | 161 -- selfdrive/ui/qt/body.h | 38 - selfdrive/ui/qt/home.cc | 344 --- selfdrive/ui/qt/home.h | 86 - selfdrive/ui/qt/moc_api.cc | 151 -- selfdrive/ui/qt/moc_body.cc | 195 -- selfdrive/ui/qt/moc_home.cc | 309 --- selfdrive/ui/qt/moc_prime_state.cc | 136 -- selfdrive/ui/qt/moc_sidebar.cc | 323 --- selfdrive/ui/qt/moc_util.cc | 136 -- selfdrive/ui/qt/moc_window.cc | 94 - selfdrive/ui/qt/network/moc_networking.cc | 519 ----- selfdrive/ui/qt/network/moc_wifi_manager.cc | 201 -- selfdrive/ui/qt/network/networking.cc | 420 ---- selfdrive/ui/qt/network/networking.h | 106 - selfdrive/ui/qt/network/networkmanager.h | 48 - selfdrive/ui/qt/network/wifi_manager.cc | 539 ----- selfdrive/ui/qt/network/wifi_manager.h | 112 - selfdrive/ui/qt/offroad/developer_panel.cc | 401 ---- selfdrive/ui/qt/offroad/developer_panel.h | 64 - selfdrive/ui/qt/offroad/driverview.cc | 82 - selfdrive/ui/qt/offroad/driverview.h | 23 - selfdrive/ui/qt/offroad/experimental_mode.cc | 95 - selfdrive/ui/qt/offroad/experimental_mode.h | 32 - .../ui/qt/offroad/moc_developer_panel.cc | 177 -- selfdrive/ui/qt/offroad/moc_driverview.cc | 133 -- .../ui/qt/offroad/moc_experimental_mode.cc | 142 -- selfdrive/ui/qt/offroad/moc_onboarding.cc | 477 ----- selfdrive/ui/qt/offroad/moc_settings.cc | 756 ------- selfdrive/ui/qt/offroad/onboarding.cc | 211 -- selfdrive/ui/qt/offroad/onboarding.h | 107 - selfdrive/ui/qt/offroad/settings.cc | 897 -------- selfdrive/ui/qt/offroad/settings.h | 143 -- selfdrive/ui/qt/offroad/software_settings.cc | 202 -- selfdrive/ui/qt/onroad/alerts.cc | 163 -- selfdrive/ui/qt/onroad/alerts.h | 53 - selfdrive/ui/qt/onroad/annotated_camera.cc | 281 --- selfdrive/ui/qt/onroad/annotated_camera.h | 57 - selfdrive/ui/qt/onroad/buttons.cc | 143 -- selfdrive/ui/qt/onroad/buttons.h | 46 - selfdrive/ui/qt/onroad/driver_monitoring.cc | 129 -- selfdrive/ui/qt/onroad/driver_monitoring.h | 32 - selfdrive/ui/qt/onroad/hud.cc | 427 ---- selfdrive/ui/qt/onroad/hud.h | 61 - selfdrive/ui/qt/onroad/moc_alerts.cc | 94 - .../ui/qt/onroad/moc_annotated_camera.cc | 94 - selfdrive/ui/qt/onroad/moc_buttons.cc | 94 - selfdrive/ui/qt/onroad/moc_hud.cc | 94 - selfdrive/ui/qt/onroad/moc_onroad_home.cc | 128 -- selfdrive/ui/qt/onroad/model.cc | 401 ---- selfdrive/ui/qt/onroad/model.h | 54 - selfdrive/ui/qt/onroad/onroad_home.cc | 149 -- selfdrive/ui/qt/onroad/onroad_home.h | 30 - selfdrive/ui/qt/prime_state.cc | 48 - selfdrive/ui/qt/prime_state.h | 33 - selfdrive/ui/qt/qt_window.cc | 36 - selfdrive/ui/qt/qt_window.h | 20 - selfdrive/ui/qt/request_repeater.cc | 27 - selfdrive/ui/qt/request_repeater.h | 15 - selfdrive/ui/qt/sidebar.cc | 336 --- selfdrive/ui/qt/sidebar.h | 82 - selfdrive/ui/qt/spinner_larch64 | Bin 2807984 -> 0 bytes selfdrive/ui/qt/text_larch64 | Bin 2847888 -> 0 bytes selfdrive/ui/qt/util.cc | 248 --- selfdrive/ui/qt/util.h | 56 - selfdrive/ui/qt/widgets/cameraview.cc | 365 ---- selfdrive/ui/qt/widgets/cameraview.h | 89 - selfdrive/ui/qt/widgets/controls.cc | 168 -- selfdrive/ui/qt/widgets/controls.h | 328 --- selfdrive/ui/qt/widgets/input.cc | 355 ---- selfdrive/ui/qt/widgets/input.h | 78 - selfdrive/ui/qt/widgets/keyboard.cc | 182 -- selfdrive/ui/qt/widgets/keyboard.h | 42 - selfdrive/ui/qt/widgets/moc_cameraview.cc | 230 -- selfdrive/ui/qt/widgets/moc_controls.cc | 956 --------- selfdrive/ui/qt/widgets/moc_input.cc | 394 ---- selfdrive/ui/qt/widgets/moc_keyboard.cc | 324 --- selfdrive/ui/qt/widgets/moc_offroad_alerts.cc | 273 --- selfdrive/ui/qt/widgets/moc_prime.cc | 445 ---- selfdrive/ui/qt/widgets/moc_scrollview.cc | 94 - selfdrive/ui/qt/widgets/moc_ssh_keys.cc | 164 -- selfdrive/ui/qt/widgets/moc_toggle.cc | 176 -- selfdrive/ui/qt/widgets/offroad_alerts.cc | 138 -- selfdrive/ui/qt/widgets/offroad_alerts.h | 44 - selfdrive/ui/qt/widgets/prime.cc | 266 --- selfdrive/ui/qt/widgets/prime.h | 70 - selfdrive/ui/qt/widgets/scrollview.cc | 49 - selfdrive/ui/qt/widgets/scrollview.h | 12 - selfdrive/ui/qt/widgets/ssh_keys.cc | 65 - selfdrive/ui/qt/widgets/ssh_keys.h | 32 - selfdrive/ui/qt/widgets/toggle.cc | 83 - selfdrive/ui/qt/widgets/toggle.h | 44 - selfdrive/ui/qt/window.cc | 102 - selfdrive/ui/qt/window.h | 27 - selfdrive/ui/spinner | 27 - .../ui/tests/test_stopped_timer_widget.py | 4 +- selfdrive/ui/text | 27 - selfdrive/ui/ui | Bin 4477024 -> 0 bytes selfdrive/ui/ui.cc | 522 ----- selfdrive/ui/ui.h | 146 -- selfdrive/ui/widgets/drive_stats.py | 2 +- selfdrive/ui/widgets/offroad_alerts.py | 2 +- starpilot/common/maps_selection.py | 2 +- .../tools/device_settings_layout.json | 8 - .../assets/components/tools/galaxy.css | 74 + .../assets/components/tools/galaxy.js | 105 +- .../tests/test_device_settings_layout.py | 18 +- .../tests/test_navigation_params.py | 62 +- starpilot/system/the_galaxy/the_galaxy.py | 146 +- starpilot/ui/moc_starpilot_ui.cc | 133 -- starpilot/ui/qt/offroad/data_settings.cc | 872 -------- starpilot/ui/qt/offroad/data_settings.h | 23 - starpilot/ui/qt/offroad/device_settings.cc | 272 --- starpilot/ui/qt/offroad/device_settings.h | 34 - .../offroad/expandable_multi_option_dialog.cc | 769 ------- .../offroad/expandable_multi_option_dialog.h | 76 - starpilot/ui/qt/offroad/lateral_settings.cc | 447 ---- starpilot/ui/qt/offroad/lateral_settings.h | 44 - .../ui/qt/offroad/longitudinal_settings.cc | 1118 ---------- .../ui/qt/offroad/longitudinal_settings.h | 71 - starpilot/ui/qt/offroad/maps_settings.cc | 290 --- starpilot/ui/qt/offroad/maps_settings.h | 51 - starpilot/ui/qt/offroad/moc_data_settings.cc | 133 -- .../ui/qt/offroad/moc_device_settings.cc | 133 -- .../moc_expandable_multi_option_dialog.cc | 94 - .../ui/qt/offroad/moc_lateral_settings.cc | 133 -- .../qt/offroad/moc_longitudinal_settings.cc | 168 -- starpilot/ui/qt/offroad/moc_maps_settings.cc | 133 -- starpilot/ui/qt/offroad/moc_model_settings.cc | 133 -- .../ui/qt/offroad/moc_navigation_settings.cc | 151 -- .../ui/qt/offroad/moc_sounds_settings.cc | 133 -- .../ui/qt/offroad/moc_starpilot_settings.cc | 280 --- starpilot/ui/qt/offroad/moc_theme_settings.cc | 133 -- starpilot/ui/qt/offroad/moc_utilities.cc | 94 - .../ui/qt/offroad/moc_vehicle_settings.cc | 134 -- .../ui/qt/offroad/moc_visual_settings.cc | 151 -- starpilot/ui/qt/offroad/moc_wheel_settings.cc | 94 - starpilot/ui/qt/offroad/model_settings.cc | 858 -------- starpilot/ui/qt/offroad/model_settings.h | 66 - .../ui/qt/offroad/navigation_settings.cc | 330 --- starpilot/ui/qt/offroad/navigation_settings.h | 48 - starpilot/ui/qt/offroad/sounds_settings.cc | 241 --- starpilot/ui/qt/offroad/sounds_settings.h | 40 - starpilot/ui/qt/offroad/starpilot_settings.cc | 482 ----- starpilot/ui/qt/offroad/starpilot_settings.h | 106 - starpilot/ui/qt/offroad/theme_settings.cc | 951 --------- starpilot/ui/qt/offroad/theme_settings.h | 73 - starpilot/ui/qt/offroad/utilities.cc | 192 -- starpilot/ui/qt/offroad/utilities.h | 25 - starpilot/ui/qt/offroad/vehicle_settings.cc | 497 ----- starpilot/ui/qt/offroad/vehicle_settings.h | 45 - starpilot/ui/qt/offroad/visual_settings.cc | 353 --- starpilot/ui/qt/offroad/visual_settings.h | 37 - starpilot/ui/qt/offroad/wheel_settings.cc | 188 -- starpilot/ui/qt/offroad/wheel_settings.h | 24 - .../onroad/moc_starpilot_annotated_camera.cc | 94 - .../ui/qt/onroad/moc_starpilot_buttons.cc | 94 - .../ui/qt/onroad/moc_starpilot_onroad.cc | 94 - .../qt/onroad/starpilot_annotated_camera.cc | 1297 ----------- .../ui/qt/onroad/starpilot_annotated_camera.h | 216 -- starpilot/ui/qt/onroad/starpilot_buttons.cc | 241 --- starpilot/ui/qt/onroad/starpilot_buttons.h | 62 - starpilot/ui/qt/onroad/starpilot_onroad.cc | 155 -- starpilot/ui/qt/onroad/starpilot_onroad.h | 52 - starpilot/ui/qt/widgets/developer_sidebar.cc | 338 --- starpilot/ui/qt/widgets/developer_sidebar.h | 46 - starpilot/ui/qt/widgets/drive_stats.cc | 108 - starpilot/ui/qt/widgets/drive_stats.h | 38 - starpilot/ui/qt/widgets/drive_summary.cc | 225 -- starpilot/ui/qt/widgets/drive_summary.h | 39 - .../ui/qt/widgets/moc_developer_sidebar.cc | 94 - starpilot/ui/qt/widgets/moc_drive_stats.cc | 120 -- starpilot/ui/qt/widgets/moc_drive_summary.cc | 133 -- .../ui/qt/widgets/moc_navigation_functions.cc | 94 - .../ui/qt/widgets/moc_starpilot_controls.cc | 876 -------- .../ui/qt/widgets/navigation_functions.cc | 63 - .../ui/qt/widgets/navigation_functions.h | 214 -- starpilot/ui/qt/widgets/starpilot_controls.cc | 145 -- starpilot/ui/qt/widgets/starpilot_controls.h | 644 ------ starpilot/ui/screenrecorder/blocking_queue.h | 70 - .../ui/screenrecorder/moc_screenrecorder.cc | 118 -- starpilot/ui/screenrecorder/omx_encoder.cc | 432 ---- starpilot/ui/screenrecorder/omx_encoder.h | 92 - .../openmax/include/OMX_Audio.h | 1312 ------------ .../openmax/include/OMX_Component.h | 579 ----- .../openmax/include/OMX_ContentPipe.h | 195 -- .../screenrecorder/openmax/include/OMX_Core.h | 1440 ------------- .../openmax/include/OMX_CoreExt.h | 66 - .../openmax/include/OMX_IVCommon.h | 933 -------- .../openmax/include/OMX_Image.h | 328 --- .../openmax/include/OMX_Index.h | 259 --- .../openmax/include/OMX_IndexExt.h | 95 - .../openmax/include/OMX_Other.h | 337 --- .../openmax/include/OMX_QCOMExtns.h | 1888 ----------------- .../include/OMX_Skype_VideoExtensions.h | 155 -- .../openmax/include/OMX_Types.h | 359 ---- .../openmax/include/OMX_Video.h | 1082 ---------- .../openmax/include/OMX_VideoExt.h | 166 -- starpilot/ui/screenrecorder/screenrecorder.cc | 151 -- starpilot/ui/screenrecorder/screenrecorder.h | 44 - starpilot/ui/starpilot_ui.cc | 124 -- starpilot/ui/starpilot_ui.h | 50 - system/manager/launch_param_migrations.py | 23 +- system/manager/process_config.py | 88 +- .../test/test_launch_param_migrations.py | 29 +- system/manager/test/test_manager.py | 73 +- system/ui/README.md | 2 +- system/ui/lib/application.py | 6 +- system/ui/widgets/__init__.py | 2 +- system/ui/widgets/html_render.py | 4 +- tools/CTF.md | 4 +- tools/README.md | 2 +- tools/STARPILOT_DEVELOPMENT.md | 13 +- tools/StarPilot/generate_galaxy_layout.py | 721 ------- tools/clip/README.md | 26 +- tools/clip/run.py | 218 +- tools/laptop_device_build/Dockerfile | 1 - .../extract_sysroot_from_agnos.py | 11 - tools/replay/onroad_config.py | 7 +- tools/replay/tests/test_onroad_config.py | 7 +- 253 files changed, 512 insertions(+), 46786 deletions(-) delete mode 100755 raybig rename scripts/{launch_ui_raybig_desktop.sh => launch_ui_c3_desktop.sh} (95%) delete mode 100755 scripts/launch_ui_desktop.sh delete mode 100644 selfdrive/assets/assets.qrc delete mode 100644 selfdrive/ui/main.cc delete mode 100644 selfdrive/ui/moc_ui.cc delete mode 100644 selfdrive/ui/qt/api.cc delete mode 100644 selfdrive/ui/qt/api.h delete mode 100644 selfdrive/ui/qt/body.cc delete mode 100644 selfdrive/ui/qt/body.h delete mode 100644 selfdrive/ui/qt/home.cc delete mode 100644 selfdrive/ui/qt/home.h delete mode 100644 selfdrive/ui/qt/moc_api.cc delete mode 100644 selfdrive/ui/qt/moc_body.cc delete mode 100644 selfdrive/ui/qt/moc_home.cc delete mode 100644 selfdrive/ui/qt/moc_prime_state.cc delete mode 100644 selfdrive/ui/qt/moc_sidebar.cc delete mode 100644 selfdrive/ui/qt/moc_util.cc delete mode 100644 selfdrive/ui/qt/moc_window.cc delete mode 100644 selfdrive/ui/qt/network/moc_networking.cc delete mode 100644 selfdrive/ui/qt/network/moc_wifi_manager.cc delete mode 100644 selfdrive/ui/qt/network/networking.cc delete mode 100644 selfdrive/ui/qt/network/networking.h delete mode 100644 selfdrive/ui/qt/network/networkmanager.h delete mode 100644 selfdrive/ui/qt/network/wifi_manager.cc delete mode 100644 selfdrive/ui/qt/network/wifi_manager.h delete mode 100644 selfdrive/ui/qt/offroad/developer_panel.cc delete mode 100644 selfdrive/ui/qt/offroad/developer_panel.h delete mode 100644 selfdrive/ui/qt/offroad/driverview.cc delete mode 100644 selfdrive/ui/qt/offroad/driverview.h delete mode 100644 selfdrive/ui/qt/offroad/experimental_mode.cc delete mode 100644 selfdrive/ui/qt/offroad/experimental_mode.h delete mode 100644 selfdrive/ui/qt/offroad/moc_developer_panel.cc delete mode 100644 selfdrive/ui/qt/offroad/moc_driverview.cc delete mode 100644 selfdrive/ui/qt/offroad/moc_experimental_mode.cc delete mode 100644 selfdrive/ui/qt/offroad/moc_onboarding.cc delete mode 100644 selfdrive/ui/qt/offroad/moc_settings.cc delete mode 100644 selfdrive/ui/qt/offroad/onboarding.cc delete mode 100644 selfdrive/ui/qt/offroad/onboarding.h delete mode 100644 selfdrive/ui/qt/offroad/settings.cc delete mode 100644 selfdrive/ui/qt/offroad/settings.h delete mode 100644 selfdrive/ui/qt/offroad/software_settings.cc delete mode 100644 selfdrive/ui/qt/onroad/alerts.cc delete mode 100644 selfdrive/ui/qt/onroad/alerts.h delete mode 100644 selfdrive/ui/qt/onroad/annotated_camera.cc delete mode 100644 selfdrive/ui/qt/onroad/annotated_camera.h delete mode 100644 selfdrive/ui/qt/onroad/buttons.cc delete mode 100644 selfdrive/ui/qt/onroad/buttons.h delete mode 100644 selfdrive/ui/qt/onroad/driver_monitoring.cc delete mode 100644 selfdrive/ui/qt/onroad/driver_monitoring.h delete mode 100644 selfdrive/ui/qt/onroad/hud.cc delete mode 100644 selfdrive/ui/qt/onroad/hud.h delete mode 100644 selfdrive/ui/qt/onroad/moc_alerts.cc delete mode 100644 selfdrive/ui/qt/onroad/moc_annotated_camera.cc delete mode 100644 selfdrive/ui/qt/onroad/moc_buttons.cc delete mode 100644 selfdrive/ui/qt/onroad/moc_hud.cc delete mode 100644 selfdrive/ui/qt/onroad/moc_onroad_home.cc delete mode 100644 selfdrive/ui/qt/onroad/model.cc delete mode 100644 selfdrive/ui/qt/onroad/model.h delete mode 100644 selfdrive/ui/qt/onroad/onroad_home.cc delete mode 100644 selfdrive/ui/qt/onroad/onroad_home.h delete mode 100644 selfdrive/ui/qt/prime_state.cc delete mode 100644 selfdrive/ui/qt/prime_state.h delete mode 100644 selfdrive/ui/qt/qt_window.cc delete mode 100644 selfdrive/ui/qt/qt_window.h delete mode 100644 selfdrive/ui/qt/request_repeater.cc delete mode 100644 selfdrive/ui/qt/request_repeater.h delete mode 100644 selfdrive/ui/qt/sidebar.cc delete mode 100644 selfdrive/ui/qt/sidebar.h delete mode 100755 selfdrive/ui/qt/spinner_larch64 delete mode 100755 selfdrive/ui/qt/text_larch64 delete mode 100644 selfdrive/ui/qt/util.cc delete mode 100644 selfdrive/ui/qt/util.h delete mode 100644 selfdrive/ui/qt/widgets/cameraview.cc delete mode 100644 selfdrive/ui/qt/widgets/cameraview.h delete mode 100644 selfdrive/ui/qt/widgets/controls.cc delete mode 100644 selfdrive/ui/qt/widgets/controls.h delete mode 100644 selfdrive/ui/qt/widgets/input.cc delete mode 100644 selfdrive/ui/qt/widgets/input.h delete mode 100644 selfdrive/ui/qt/widgets/keyboard.cc delete mode 100644 selfdrive/ui/qt/widgets/keyboard.h delete mode 100644 selfdrive/ui/qt/widgets/moc_cameraview.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_controls.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_input.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_keyboard.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_offroad_alerts.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_prime.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_scrollview.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_ssh_keys.cc delete mode 100644 selfdrive/ui/qt/widgets/moc_toggle.cc delete mode 100644 selfdrive/ui/qt/widgets/offroad_alerts.cc delete mode 100644 selfdrive/ui/qt/widgets/offroad_alerts.h delete mode 100644 selfdrive/ui/qt/widgets/prime.cc delete mode 100644 selfdrive/ui/qt/widgets/prime.h delete mode 100644 selfdrive/ui/qt/widgets/scrollview.cc delete mode 100644 selfdrive/ui/qt/widgets/scrollview.h delete mode 100644 selfdrive/ui/qt/widgets/ssh_keys.cc delete mode 100644 selfdrive/ui/qt/widgets/ssh_keys.h delete mode 100644 selfdrive/ui/qt/widgets/toggle.cc delete mode 100644 selfdrive/ui/qt/widgets/toggle.h delete mode 100644 selfdrive/ui/qt/window.cc delete mode 100644 selfdrive/ui/qt/window.h delete mode 100755 selfdrive/ui/spinner delete mode 100755 selfdrive/ui/text delete mode 100755 selfdrive/ui/ui delete mode 100644 selfdrive/ui/ui.cc delete mode 100644 selfdrive/ui/ui.h delete mode 100644 starpilot/ui/moc_starpilot_ui.cc delete mode 100644 starpilot/ui/qt/offroad/data_settings.cc delete mode 100644 starpilot/ui/qt/offroad/data_settings.h delete mode 100644 starpilot/ui/qt/offroad/device_settings.cc delete mode 100644 starpilot/ui/qt/offroad/device_settings.h delete mode 100644 starpilot/ui/qt/offroad/expandable_multi_option_dialog.cc delete mode 100644 starpilot/ui/qt/offroad/expandable_multi_option_dialog.h delete mode 100644 starpilot/ui/qt/offroad/lateral_settings.cc delete mode 100644 starpilot/ui/qt/offroad/lateral_settings.h delete mode 100644 starpilot/ui/qt/offroad/longitudinal_settings.cc delete mode 100644 starpilot/ui/qt/offroad/longitudinal_settings.h delete mode 100644 starpilot/ui/qt/offroad/maps_settings.cc delete mode 100644 starpilot/ui/qt/offroad/maps_settings.h delete mode 100644 starpilot/ui/qt/offroad/moc_data_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_device_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_expandable_multi_option_dialog.cc delete mode 100644 starpilot/ui/qt/offroad/moc_lateral_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_longitudinal_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_maps_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_model_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_navigation_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_sounds_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_starpilot_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_theme_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_utilities.cc delete mode 100644 starpilot/ui/qt/offroad/moc_vehicle_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_visual_settings.cc delete mode 100644 starpilot/ui/qt/offroad/moc_wheel_settings.cc delete mode 100644 starpilot/ui/qt/offroad/model_settings.cc delete mode 100644 starpilot/ui/qt/offroad/model_settings.h delete mode 100644 starpilot/ui/qt/offroad/navigation_settings.cc delete mode 100644 starpilot/ui/qt/offroad/navigation_settings.h delete mode 100644 starpilot/ui/qt/offroad/sounds_settings.cc delete mode 100644 starpilot/ui/qt/offroad/sounds_settings.h delete mode 100644 starpilot/ui/qt/offroad/starpilot_settings.cc delete mode 100644 starpilot/ui/qt/offroad/starpilot_settings.h delete mode 100644 starpilot/ui/qt/offroad/theme_settings.cc delete mode 100644 starpilot/ui/qt/offroad/theme_settings.h delete mode 100644 starpilot/ui/qt/offroad/utilities.cc delete mode 100644 starpilot/ui/qt/offroad/utilities.h delete mode 100644 starpilot/ui/qt/offroad/vehicle_settings.cc delete mode 100644 starpilot/ui/qt/offroad/vehicle_settings.h delete mode 100644 starpilot/ui/qt/offroad/visual_settings.cc delete mode 100644 starpilot/ui/qt/offroad/visual_settings.h delete mode 100644 starpilot/ui/qt/offroad/wheel_settings.cc delete mode 100644 starpilot/ui/qt/offroad/wheel_settings.h delete mode 100644 starpilot/ui/qt/onroad/moc_starpilot_annotated_camera.cc delete mode 100644 starpilot/ui/qt/onroad/moc_starpilot_buttons.cc delete mode 100644 starpilot/ui/qt/onroad/moc_starpilot_onroad.cc delete mode 100644 starpilot/ui/qt/onroad/starpilot_annotated_camera.cc delete mode 100644 starpilot/ui/qt/onroad/starpilot_annotated_camera.h delete mode 100644 starpilot/ui/qt/onroad/starpilot_buttons.cc delete mode 100644 starpilot/ui/qt/onroad/starpilot_buttons.h delete mode 100644 starpilot/ui/qt/onroad/starpilot_onroad.cc delete mode 100644 starpilot/ui/qt/onroad/starpilot_onroad.h delete mode 100644 starpilot/ui/qt/widgets/developer_sidebar.cc delete mode 100644 starpilot/ui/qt/widgets/developer_sidebar.h delete mode 100644 starpilot/ui/qt/widgets/drive_stats.cc delete mode 100644 starpilot/ui/qt/widgets/drive_stats.h delete mode 100644 starpilot/ui/qt/widgets/drive_summary.cc delete mode 100644 starpilot/ui/qt/widgets/drive_summary.h delete mode 100644 starpilot/ui/qt/widgets/moc_developer_sidebar.cc delete mode 100644 starpilot/ui/qt/widgets/moc_drive_stats.cc delete mode 100644 starpilot/ui/qt/widgets/moc_drive_summary.cc delete mode 100644 starpilot/ui/qt/widgets/moc_navigation_functions.cc delete mode 100644 starpilot/ui/qt/widgets/moc_starpilot_controls.cc delete mode 100644 starpilot/ui/qt/widgets/navigation_functions.cc delete mode 100644 starpilot/ui/qt/widgets/navigation_functions.h delete mode 100644 starpilot/ui/qt/widgets/starpilot_controls.cc delete mode 100644 starpilot/ui/qt/widgets/starpilot_controls.h delete mode 100644 starpilot/ui/screenrecorder/blocking_queue.h delete mode 100644 starpilot/ui/screenrecorder/moc_screenrecorder.cc delete mode 100644 starpilot/ui/screenrecorder/omx_encoder.cc delete mode 100644 starpilot/ui/screenrecorder/omx_encoder.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Audio.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Component.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_ContentPipe.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Core.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_CoreExt.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_IVCommon.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Image.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Index.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_IndexExt.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Other.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_QCOMExtns.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Skype_VideoExtensions.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Types.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_Video.h delete mode 100644 starpilot/ui/screenrecorder/openmax/include/OMX_VideoExt.h delete mode 100644 starpilot/ui/screenrecorder/screenrecorder.cc delete mode 100644 starpilot/ui/screenrecorder/screenrecorder.h delete mode 100644 starpilot/ui/starpilot_ui.cc delete mode 100644 starpilot/ui/starpilot_ui.h delete mode 100755 tools/StarPilot/generate_galaxy_layout.py diff --git a/.github/workflows/compile_bluescreens.yaml b/.github/workflows/compile_bluescreens.yaml index 1c113ed86..2f5d59494 100644 --- a/.github/workflows/compile_bluescreens.yaml +++ b/.github/workflows/compile_bluescreens.yaml @@ -23,11 +23,6 @@ on: type: boolean default: true required: false - build_ui: - description: "Build UI (selfdrive/ui)" - type: boolean - default: true - required: false build_params: description: "Build params Python extension" type: boolean @@ -156,7 +151,6 @@ jobs: fi TARGETS=() - [[ "${{ inputs.build_ui }}" == "true" ]] && TARGETS+=("selfdrive/ui/ui") [[ "${{ inputs.build_params }}" == "true" ]] && TARGETS+=("common/params_pyx.so") [[ "${{ inputs.build_cereal }}" == "true" ]] && TARGETS+=("cereal/messaging/bridge") if [[ "${{ inputs.build_panda }}" == "true" ]]; then @@ -184,8 +178,8 @@ jobs: fi if [[ ${#TARGETS[@]} -eq 0 ]]; then - echo "No partial targets selected; defaulting to UI + panda" - TARGETS=("selfdrive/ui/ui" "panda/board/obj/panda.bin.signed") + echo "No partial targets selected; defaulting to panda" + TARGETS=("panda/board/obj/panda.bin.signed") fi echo "Running partial build for targets: ${TARGETS[*]}" diff --git a/.gitignore b/.gitignore index 619d33d96..1c7ced51a 100644 --- a/.gitignore +++ b/.gitignore @@ -54,9 +54,6 @@ cereal/gen selfdrive/ui/translations/tmp selfdrive/car/tests/cars_dump system/camerad/test/ae_gray_test -selfdrive/ui/ui.macos -selfdrive/ui/ui.larch64 - .coverage* coverage.xml htmlcov diff --git a/.vscode/launch.json b/.vscode/launch.json index f090061c4..6f4fb86a6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,14 +11,6 @@ "tools/sim/run_bridge.py" ] }, - { - "id": "cpp_process", - "type": "pickString", - "description": "Select the process to debug", - "options": [ - "selfdrive/ui/ui" - ] - }, { "id": "args", "description": "Arguments to pass to the process", @@ -40,13 +32,6 @@ "justMyCode": true, "args": "${input:args}" }, - { - "name": "C++: openpilot Process", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/${input:cpp_process}", - "cwd": "${workspaceFolder}" - }, { "name": "Attach LLDB to Replay drive", "type": "lldb", @@ -82,4 +67,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/SConstruct b/SConstruct index d2354f868..7147ecdc1 100644 --- a/SConstruct +++ b/SConstruct @@ -37,10 +37,6 @@ AddOption('--coverage', action='store_true', help='build with test coverage options') -AddOption('--clazy', - action='store_true', - help='build with clazy') - AddOption('--ccflags', action='store', type='string', @@ -354,116 +350,7 @@ else: np_version = SCons.Script.Value(np.__version__) Export('envCython', 'np_version') -# Qt build environment -qt_env = env.Clone() -qt_modules = ["Widgets", "Gui", "Core", "Network", "Concurrent", "DBus", "Xml"] - -qt_libs = [] -if arch == "Darwin": - qt_env['QTDIR'] = f"{brew_prefix}/opt/qt@5" - qt_dirs = [ - os.path.join(qt_env['QTDIR'], "include"), - ] - qt_dirs += [f"{qt_env['QTDIR']}/include/Qt{m}" for m in qt_modules] - qt_env["LINKFLAGS"] += ["-F" + os.path.join(qt_env['QTDIR'], "lib")] - qt_env["FRAMEWORKS"] += [f"Qt{m}" for m in qt_modules] + ["OpenGL"] - qt_env.AppendENVPath('PATH', os.path.join(qt_env['QTDIR'], "bin")) -else: - if arch == "larch64": - qt_env.PrependENVPath('PATH', Dir("#third_party/qt5/larch64/bin/").abspath) - # For laptop/device builds that mount an AGNOS sysroot, always prefer Qt - # headers from that sysroot to keep headers/libs ABI-matched (Qt 5.12.x). - if arch == "larch64" and os.environ.get("SP_TICI_SYSROOT"): - qt_install_prefix = tici_libpath("/usr") - qt_install_headers = tici_libpath("/usr/include/aarch64-linux-gnu/qt5") - else: - qmake = os.environ.get("SP_QMAKE", "qmake") - qt_install_prefix = subprocess.check_output([qmake, '-query', 'QT_INSTALL_PREFIX'], encoding='utf8').strip() - qt_install_headers = subprocess.check_output([qmake, '-query', 'QT_INSTALL_HEADERS'], encoding='utf8').strip() - - qt_env['QTDIR'] = qt_install_prefix - qt_dirs = [ - f"{qt_install_headers}", - ] - - qt_gui_path = os.path.join(qt_install_headers, "QtGui") - qt_gui_dirs = [d for d in os.listdir(qt_gui_path) if os.path.isdir(os.path.join(qt_gui_path, d))] - qt_dirs += [f"{qt_install_headers}/QtGui/{qt_gui_dirs[0]}/QtGui", ] if qt_gui_dirs else [] - qt_dirs += [f"{qt_install_headers}/Qt{m}" for m in qt_modules] - - qt_libs = [f"Qt5{m}" for m in qt_modules] - if arch == "larch64": - qt_libs += ["GLESv2", "wayland-client"] - elif arch != "Darwin": - qt_libs += ["GL"] -qt_env['QT3DIR'] = qt_env['QTDIR'] -qt_env.Tool('qt3') -if arch == "larch64" and os.environ.get("SP_TICI_SYSROOT"): - qt_tool_bin = tici_libpath("/usr/lib/qt5/bin") - qt_tool_root = tici_libpath("/") - qt_arm_moc = os.path.join(qt_tool_bin, "moc") - qt_arm_uic = os.path.join(qt_tool_bin, "uic") - qt_arm_rcc = os.path.join(qt_tool_bin, "rcc") - qt_host_bin = os.environ.get("SP_QT_HOST_BIN", "/usr/lib/qt5/bin") - qt_host_moc = os.environ.get("SP_QT_HOST_MOC", os.path.join(qt_host_bin, "moc")) - qt_host_uic = os.environ.get("SP_QT_HOST_UIC", os.path.join(qt_host_bin, "uic")) - qt_host_rcc = os.environ.get("SP_QT_HOST_RCC", "rcc") - if platform.machine() in ("aarch64", "arm64"): - if "SP_QT_HOST_MOC" in os.environ: - qt_env['QT3_MOC'] = qt_host_moc - elif os.path.isfile(qt_arm_moc): - qt_env['QT3_MOC'] = qt_arm_moc - if "SP_QT_HOST_UIC" in os.environ: - qt_env['QT3_UIC'] = qt_host_uic - elif os.path.isfile(qt_arm_uic): - qt_env['QT3_UIC'] = qt_arm_uic - if "SP_QT_HOST_RCC" in os.environ: - qt_env['SP_QT_RCC'] = qt_host_rcc - elif os.path.isfile(qt_arm_rcc): - qt_env['SP_QT_RCC'] = qt_arm_rcc - else: - qt_qemu = shutil.which("qemu-aarch64-static") or shutil.which("qemu-aarch64") - - if qt_qemu and os.path.isfile(qt_arm_moc): - qt_env['QT3_MOC'] = f"{qt_qemu} -L {qt_tool_root} {qt_arm_moc}" - else: - qt_env['QT3_MOC'] = qt_host_moc - - if qt_qemu and os.path.isfile(qt_arm_uic): - qt_env['QT3_UIC'] = f"{qt_qemu} -L {qt_tool_root} {qt_arm_uic}" - else: - qt_env['QT3_UIC'] = qt_host_uic - - if qt_qemu and os.path.isfile(qt_arm_rcc): - qt_env['SP_QT_RCC'] = f"{qt_qemu} -L {qt_tool_root} {qt_arm_rcc}" - else: - qt_env['SP_QT_RCC'] = qt_host_rcc - -qt_env['CPPPATH'] += qt_dirs + ["#third_party/qrcode"] -qt_flags = [ - "-D_REENTRANT", - "-DQT_NO_DEBUG", - "-DQT_WIDGETS_LIB", - "-DQT_GUI_LIB", - "-DQT_CORE_LIB", - "-DQT_MESSAGELOGCONTEXT", -] -qt_env['CXXFLAGS'] += qt_flags -qt_env['LIBPATH'] += ['#selfdrive/ui', ] -qt_env['LIBS'] = qt_libs - -if GetOption("clazy"): - checks = [ - "level0", - "level1", - "no-range-loop", - "no-non-pod-global-static", - ] - qt_env['CXX'] = 'clazy' - qt_env['ENV']['CLAZY_IGNORE_DIRS'] = qt_dirs[0] - qt_env['ENV']['CLAZY_CHECKS'] = ','.join(checks) - -Export('env', 'qt_env', 'arch', 'real_arch') +Export('env', 'arch', 'real_arch') # Build common module SConscript(['common/SConscript']) diff --git a/build b/build index c39d925b5..d8da0a3ba 100755 --- a/build +++ b/build @@ -46,9 +46,6 @@ while [[ $# -gt 0 ]]; do shortcut_includes_panda=1 add_panda_targets ;; - --ui|-ui) - shortcut_targets+=("selfdrive/ui/ui") - ;; --cereal|-cereal) shortcut_targets+=( "cereal/libcereal.a" diff --git a/common/params_keys.h b/common/params_keys.h index 68cf7ea8c..e1a924167 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -137,8 +137,6 @@ inline static std::unordered_map keys = { {"SecOCKey", {PERSISTENT | DONT_LOG, STRING}}, {"ShowDebugInfo", {PERSISTENT, BOOL}}, {"ShowAllToggles", {PERSISTENT, BOOL, "0", "0", 3}}, - {"TryRaylibUI", {PERSISTENT, BOOL, "1"}}, - {"UseOldUI", {PERSISTENT, BOOL, "0", std::nullopt, 0, SETTINGS_SIMPLE}}, {"UsePrebuilt", {PERSISTENT, BOOL, "1"}}, {"RouteCount", {PERSISTENT, INT, "0"}}, {"SnoozeUpdate", {CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION, BOOL}}, diff --git a/common/spinner.py b/common/spinner.py index 829aba32a..8050054ce 100755 --- a/common/spinner.py +++ b/common/spinner.py @@ -7,19 +7,6 @@ class Spinner: def __init__(self): self.spinner_proc = None - # Prefer the legacy compiled spinner on device. - legacy_spinner = os.path.join(BASEDIR, "selfdrive", "ui", "spinner") - if os.path.isfile("/TICI") and os.path.isfile(legacy_spinner) and os.access(legacy_spinner, os.X_OK): - try: - self.spinner_proc = subprocess.Popen([legacy_spinner], - stdin=subprocess.PIPE, - cwd=os.path.join(BASEDIR, "selfdrive", "ui"), - close_fds=True) - return - except OSError: - self.spinner_proc = None - - # Raylib spinner requires Python deps from the repo virtualenv. spinner_cwd = os.path.join(BASEDIR, "system", "ui") venv_python = os.path.join(BASEDIR, ".venv", "bin", "python") python_exec = venv_python if os.path.isfile(venv_python) else "python3" diff --git a/common/text_window.py b/common/text_window.py index 11b51cc9c..c38414c03 100755 --- a/common/text_window.py +++ b/common/text_window.py @@ -9,18 +9,6 @@ class TextWindow: def __init__(self, text): self.text_proc = None - # Prefer the legacy compiled text window on device. - legacy_text = os.path.join(BASEDIR, "selfdrive", "ui", "text") - if os.path.isfile("/TICI") and os.path.isfile(legacy_text) and os.access(legacy_text, os.X_OK): - try: - self.text_proc = subprocess.Popen([legacy_text, text], - stdin=subprocess.PIPE, - cwd=os.path.join(BASEDIR, "selfdrive", "ui"), - close_fds=True) - return - except OSError: - self.text_proc = None - text_cwd = os.path.join(BASEDIR, "system", "ui") venv_python = os.path.join(BASEDIR, ".venv", "bin", "python") python_exec = venv_python if os.path.isfile(venv_python) else "python3" diff --git a/docs/MODEL_REBUILD.md b/docs/MODEL_REBUILD.md index af1a25de9..b803bc75c 100644 --- a/docs/MODEL_REBUILD.md +++ b/docs/MODEL_REBUILD.md @@ -203,6 +203,6 @@ Compilation validates JIT capture/replay, pickle round-trip, finite outputs, met 2. Confirm `modeld` stays running. 3. Confirm finite `modelV2` path, lane-line, lead, pose, and action data. 4. Confirm `driverStateV2` on both supported camera resolutions. -5. Test download, selection, deletion, randomization, migration, and fallback in QT, raylib/mici, and Galaxy. +5. Test download, selection, deletion, randomization, migration, and fallback in both device UIs and Galaxy. The built-in RDF artifact is `selfdrive/modeld/models/driving_tinygrad.pkl`. If migration cannot download the selected v23 artifact, StarPilot switches to that built-in model. diff --git a/docs/contributing/contribute.md b/docs/contributing/contribute.md index 42712d950..ced41acd3 100644 --- a/docs/contributing/contribute.md +++ b/docs/contributing/contribute.md @@ -48,7 +48,7 @@ Use `./dev` for host-native tools. It creates and reuses an isolated environment ./dev shell ``` -For desktop UI work, use `./c3`, `./c4`, or `./raybig`. These commands use the same isolated host environment. +For desktop UI work, use `./c3` or `./c4`. These commands use the same isolated host environment. Use `./build` when you need comma-compatible device artifacts. This is the expected validation for changes that affect compiled device code or runtime behavior: diff --git a/docs/how-to/laptop-device-build.md b/docs/how-to/laptop-device-build.md index 8bddc4f26..aa49a38b8 100644 --- a/docs/how-to/laptop-device-build.md +++ b/docs/how-to/laptop-device-build.md @@ -2,7 +2,7 @@ This flow builds **device-target (`larch64`) binaries on your laptop** using a Linux/aarch64 container and a synced comma sysroot. -For the full StarPilot branch workflow, including host-native shorthand tools such as `./dev`, `./c3`, `./c4`, and `./raybig`, see the [StarPilot development guide](https://github.com/firestar5683/StarPilot/blob/Dom/tools/STARPILOT_DEVELOPMENT.md). +For the full StarPilot branch workflow, including host-native shorthand tools such as `./dev`, `./c3`, and `./c4`, see the [StarPilot development guide](https://github.com/firestar5683/StarPilot/blob/Dom/tools/STARPILOT_DEVELOPMENT.md). ## Prerequisites @@ -71,10 +71,10 @@ This runs: - `SP_TICI_SYSROOT=/opt/tici-sysroot` - `touch prebuilt` -To run `scons` targets explicitly in the same device-compatible environment: +To run SCons targets explicitly in the same device-compatible environment: ```bash -scripts/laptop_device_build.sh scons selfdrive/ui/ui +scripts/laptop_device_build.sh scons common/params_pyx.so ``` On macOS, once `.comma_sysroot` is present, plain `scons ...` auto-routes to this containerized device build. @@ -112,7 +112,6 @@ Preferred host-side shorthand commands on this branch: ```bash ./c3 ./c4 -./raybig ./dev replay ./dev cabana ./dev plotjuggler @@ -120,10 +119,9 @@ Preferred host-side shorthand commands on this branch: These commands use the isolated `.host_runtime` cache so host-native artifacts do not churn the main tree. -Legacy direct script entrypoints still exist if needed: +Direct script entrypoints are also available: ```bash -scripts/launch_ui_desktop.sh +scripts/launch_ui_c3_desktop.sh scripts/launch_ui_c4_desktop.sh -scripts/launch_ui_raybig_desktop.sh ``` diff --git a/raybig b/raybig deleted file mode 100755 index 618a8ef20..000000000 --- a/raybig +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -exec "${ROOT_DIR}/scripts/host_tool_runner.sh" raybig "$@" diff --git a/scripts/debug_ui_freeze.sh b/scripts/debug_ui_freeze.sh index 000fc8858..f97664251 100755 --- a/scripts/debug_ui_freeze.sh +++ b/scripts/debug_ui_freeze.sh @@ -21,7 +21,7 @@ mkdir -p "${OUT_DIR}" echo echo "=== Process Snapshot ===" - ps -eo pid,ppid,stat,ni,etime,comm,args | grep -E "(manager.py|selfdrive.ui.ui|/selfdrive/ui/ui|weston|loggerd|encoderd|modeld|dmonitoringmodeld)" || true + ps -eo pid,ppid,stat,ni,etime,comm,args | grep -E "(manager.py|selfdrive.ui.ui|/selfdrive/ui/ui.py|weston|loggerd|encoderd|modeld|dmonitoringmodeld)" || true echo echo "=== Manager State (tmux service output) ===" @@ -35,7 +35,7 @@ mkdir -p "${OUT_DIR}" echo echo "=== UI PID + Watchdog Timestamp Delta ===" - for ui_pid in $(pgrep -f "selfdrive.ui.ui|/selfdrive/ui/ui" 2>/dev/null || true); do + for ui_pid in $(pgrep -f "selfdrive.ui.ui|/selfdrive/ui/ui.py" 2>/dev/null || true); do echo "ui_pid=${ui_pid}" wd_file="/dev/shm/wd_${ui_pid}" if [[ -f "${wd_file}" ]]; then @@ -74,7 +74,7 @@ PY echo echo "=== open files for UI process(es) ===" - for ui_pid in $(pgrep -f "selfdrive.ui.ui|/selfdrive/ui/ui" 2>/dev/null || true); do + for ui_pid in $(pgrep -f "selfdrive.ui.ui|/selfdrive/ui/ui.py" 2>/dev/null || true); do echo "--- lsof for pid ${ui_pid} ---" lsof -p "${ui_pid}" 2>/dev/null | tail -n 200 || true done diff --git a/scripts/host_tool_runner.sh b/scripts/host_tool_runner.sh index 7f10d7cad..415c6a616 100755 --- a/scripts/host_tool_runner.sh +++ b/scripts/host_tool_runner.sh @@ -24,9 +24,8 @@ Usage: ./tools/host [args...] Commands: - c3 Launch the desktop Qt UI from the isolated host cache. + c3 Launch the large raylib UI from the isolated host cache. c4 Launch the small raylib UI from the isolated host cache. - raybig Launch the large raylib UI from the isolated host cache. onroad Launch replay plus desktop UI(s) from the isolated host cache. replay Build and run replay from the isolated host cache. cabana Build and run cabana from the isolated host cache. @@ -43,9 +42,8 @@ Notes: - `cabana` uses its own host-runtime bucket, so it can run together with `plotjuggler`. - Other commands that share a bucket still wait on that bucket's lock. - `./build` remains the device-target flow. - - For c3/c4/raybig, pass the jobs count first to preserve existing shorthand: + - For c3/c4, pass the jobs count first to preserve existing shorthand: ./dev c3 8 - ./dev raybig 12 - `./onroad --c3 f08912a233c1584f/2022-08-11--18-02-41/1` launches replay plus the selected desktop UI. - `./dev sync` refreshes all host buckets. Use `./dev sync cabana` to sync one. EOF @@ -65,7 +63,7 @@ resolve_host_bucket() { local name="${1:-shared}" case "${name}" in - shared|default|ui|c3|c4|raybig|onroad|replay|shell) + shared|default|ui|c3|c4|onroad|replay|shell) echo "shared" ;; cabana) @@ -235,16 +233,13 @@ purge_host_foreign_platform_artifacts() { esac } -purge_host_desktop_ui_artifacts() { - rm -f \ - "${WORK_DIR}/selfdrive/ui/libqt_widgets.a" \ - "${WORK_DIR}/selfdrive/ui/libqt_util.a" \ - "${WORK_DIR}/selfdrive/ui/assets.o" \ - "${WORK_DIR}/selfdrive/ui/main.o" \ - "${WORK_DIR}/selfdrive/ui/moc_ui.o" \ - "${WORK_DIR}/selfdrive/ui/ui.o" \ - "${WORK_DIR}/selfdrive/ui/ui" \ - "${WORK_DIR}/cereal/gen/cpp/"*.capnp.o +purge_host_generated_objects() { + rm -f "${WORK_DIR}/cereal/gen/cpp/"*.capnp.o +} + +purge_host_obsolete_ui_artifacts() { + find "${WORK_DIR}/selfdrive/ui" -maxdepth 1 -type f \ + \( -name 'ui' -o -name 'ui.macos' -o -name 'ui.larch64' -o -name '*.o' -o -name '*.a' \) -delete } ensure_host_python_tools() { @@ -333,11 +328,6 @@ sync_worktree() { "tools/replay/tests/test_replay" "tools/cabana/cabana" "tools/cabana/tests/test_cabana" - "selfdrive/ui/ui" - "selfdrive/ui/ui.macos" - "selfdrive/ui/ui.larch64" - "selfdrive/ui/libqt_widgets.a" - "selfdrive/ui/libqt_util.a" "cereal/libcereal.a" "cereal/libsocketmaster.a" "cereal/messaging/bridge" @@ -388,7 +378,8 @@ sync_worktree() { if [[ "${_capnp_before}" != "${_capnp_after}" ]]; then rm -rf "${SP_SCONS_CACHE_DIR:-${HOST_ROOT}/scons_cache}" fi - purge_host_desktop_ui_artifacts + purge_host_generated_objects + purge_host_obsolete_ui_artifacts purge_host_foreign_platform_artifacts rm -f "${WORK_DIR}/third_party/libjson11.a" "${WORK_DIR}/third_party/libkaitai.a" sync_host_generated_headers @@ -478,7 +469,7 @@ launch_c3() { fi sync_worktree - run_in_worktree "${WORK_DIR}/scripts/launch_ui_desktop.sh" "${jobs}" "$@" + run_in_worktree "${WORK_DIR}/scripts/launch_ui_c3_desktop.sh" "${jobs}" "$@" } launch_c4() { @@ -493,18 +484,6 @@ launch_c4() { run_in_worktree "${WORK_DIR}/scripts/launch_ui_c4_desktop.sh" "${jobs}" "$@" } -launch_raybig() { - local jobs - jobs="$(default_jobs)" - if [[ "${1:-}" =~ ^[0-9]+$ ]]; then - jobs="$1" - shift || true - fi - - sync_worktree - run_in_worktree "${WORK_DIR}/scripts/launch_ui_raybig_desktop.sh" "${jobs}" "$@" -} - launch_onroad() { local jobs jobs="$(default_jobs)" @@ -609,7 +588,7 @@ main() { help|-h|--help) usage ;; - c3|c4|raybig|onroad|replay|shell|python|pytest) + c3|c4|onroad|replay|shell|python|pytest) set_host_bucket "shared" acquire_host_lock "${command} $*" ;; @@ -650,9 +629,6 @@ main() { c4) launch_c4 "$@" ;; - raybig) - launch_raybig "$@" - ;; onroad) launch_onroad "$@" ;; diff --git a/scripts/laptop_device_build.sh b/scripts/laptop_device_build.sh index 343870c71..1f25ba54b 100755 --- a/scripts/laptop_device_build.sh +++ b/scripts/laptop_device_build.sh @@ -527,8 +527,7 @@ manager_artifacts_ready() { [[ -f "${ROOT_DIR}/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so" ]] && [[ -f "${ROOT_DIR}/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/libacados_ocp_solver_lat.so" ]] && [[ -f "${ROOT_DIR}/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so" ]] && - [[ -f "${ROOT_DIR}/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/libacados_ocp_solver_long.so" ]] && - [[ -f "${ROOT_DIR}/selfdrive/ui/ui" ]] + [[ -f "${ROOT_DIR}/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/libacados_ocp_solver_long.so" ]] } run_manager() { diff --git a/scripts/launch_onroad_desktop.sh b/scripts/launch_onroad_desktop.sh index 1c21cbf5e..3440c67e9 100755 --- a/scripts/launch_onroad_desktop.sh +++ b/scripts/launch_onroad_desktop.sh @@ -27,24 +27,24 @@ env_var_truthy() { usage() { cat <<'EOF' Usage: - ./onroad [jobs] [--c3 | --c4 | --raybig | --all | --replay-only] [--galaxy] [-nav] [--offroad] [-alert] [--cem] [--prefix name] + ./onroad [jobs] [--c3 | --c4 | --all | --replay-only] [--galaxy] [-nav] [--offroad] [-alert] [--cem] [--prefix name] Examples: ./onroad ./onroad --c3 ./onroad --c4 --start 30 ./onroad --c4 -nav - ./onroad --raybig --nav --offroad --demo + ./onroad --c3 --nav --offroad --demo ./onroad --c4 --cem --demo - ./onroad --raybig --cem --demo - ./onroad --raybig --cem -alert --demo --no-loop + ./onroad --c3 --cem --demo + ./onroad --c3 --cem -alert --demo --no-loop ./onroad --all ./onroad --replay-only --demo --no-vipc --no-loop Notes: - This is host/dev only. It uses the isolated host worktree and does not touch the device path. - A private comma connect route still requires tools/lib/auth.py before replay can download it. - - If no UI flag is provided, the route's logged device type selects the UI: mici/c4 -> c4, tici/tizi -> raybig unless UseOldUI was enabled. + - If no UI flag is provided, the route's logged device type selects the UI: mici/c4 -> c4, all big devices -> c3. - Use multiple UI flags together if you want more than one desktop UI at once. - --galaxy starts a local Galaxy web session with the same preview params and prints the localhost URL. It blocks replay's logged customReserved9 stream so Galaxy can own the live Testing Grounds publisher. - -nav injects a fake navigation demo stream and blocks replay from publishing navInstruction/navRoute. @@ -101,13 +101,8 @@ parse_args() { UI_SELECTION_EXPLICIT=1 shift ;; - --raybig) - UI_TARGETS+=(raybig) - UI_SELECTION_EXPLICIT=1 - shift - ;; --all) - UI_TARGETS+=(c3 c4 raybig) + UI_TARGETS+=(c3 c4) UI_SELECTION_EXPLICIT=1 shift ;; @@ -183,7 +178,7 @@ expand_ui_targets() { case "${selection,,}" in all|"") - UI_TARGETS=(c3 c4 raybig) + UI_TARGETS=(c3 c4) return ;; none) @@ -199,18 +194,18 @@ expand_ui_targets() { local raw="" for raw in "${raw_targets[@]}"; do case "${raw,,}" in - c3|c4|raybig) + c3|c4) normalized+=("${raw,,}") ;; *) echo "Unknown UI target in --ui: ${raw}" >&2 - echo "Valid values: all, none, c3, c4, raybig" >&2 + echo "Valid values: all, none, c3, c4" >&2 exit 1 ;; esac done - local ordered_targets=(c3 c4 raybig) + local ordered_targets=(c3 c4) local target="" for target in "${ordered_targets[@]}"; do local candidate="" @@ -224,7 +219,7 @@ expand_ui_targets() { } dedupe_ui_targets() { - local ordered_targets=(c3 c4 raybig) + local ordered_targets=(c3 c4) local deduped=() local target="" for target in "${ordered_targets[@]}"; do @@ -402,7 +397,6 @@ prepare_env() { export USE_WEBCAM=1 export SP_C3_FAKE_WIFI=0 export SP_C4_FAKE_WIFI=0 - export SP_RAYBIG_FAKE_WIFI=0 export SP_ALLOW_DESKTOP_FAKE_WIFI=0 export SP_ONROAD_NAV_DEMO="${NAV_DEMO}" export SP_ONROAD_OFFROAD_DEMO="${OFFROAD_DEMO}" @@ -448,7 +442,7 @@ build_replay() { } prepare_c3_runtime() { - SP_C3_COMPILE_ONLY=1 "${ROOT_DIR}/scripts/launch_ui_desktop.sh" "${jobs}" + SP_KEEP_DESKTOP_RUNTIME_ARTIFACTS=1 SP_C3_COMPILE_ONLY=1 "${ROOT_DIR}/scripts/launch_ui_c3_desktop.sh" "${jobs}" } prepare_python_ui_runtime() { @@ -589,22 +583,6 @@ launch_galaxy() { echo "Access Galaxy with ${GALAXY_URL}" } -launch_c3_ui() { - local os_ext="linux" - if [[ "$(uname -s)" == "Darwin" ]]; then - os_ext="macos" - fi - - local host_ui="${ROOT_DIR}/selfdrive/ui/ui.${os_ext}" - if [[ ! -x "${host_ui}" ]]; then - echo "Missing ${host_ui}. C3 build did not produce the desktop binary." >&2 - return 1 - fi - - "${host_ui}" & - UI_PIDS+=("$!") -} - launch_python_ui() { local big="$1" ( @@ -680,7 +658,7 @@ if [[ "${REPLAY_ONLY}" != "1" && "${UI_SELECTION_EXPLICIT}" == "0" && ${#UI_TARG fi if [[ "${REPLAY_ONLY}" != "1" && ${#UI_TARGETS[@]} -eq 0 ]]; then - echo "Select at least one UI with --c3, --c4, --raybig, or use --replay-only." >&2 + echo "Select at least one UI with --c3, --c4, or use --replay-only." >&2 exit 1 fi @@ -695,7 +673,7 @@ case " ${UI_TARGETS[*]-} " in esac case " ${UI_TARGETS[*]-} " in - *" c4 "*|*" raybig "*) + *" c4 "*) prepare_python_ui_runtime ;; esac @@ -739,16 +717,13 @@ has_raylib=0 for local_target in "${UI_TARGETS[@]}"; do case "${local_target}" in c3) - launch_c3_ui + launch_python_ui 1 + has_raylib=1 ;; c4) launch_python_ui 0 has_raylib=1 ;; - raybig) - launch_python_ui 1 - has_raylib=1 - ;; esac done diff --git a/scripts/launch_ui_raybig_desktop.sh b/scripts/launch_ui_c3_desktop.sh similarity index 95% rename from scripts/launch_ui_raybig_desktop.sh rename to scripts/launch_ui_c3_desktop.sh index 3fe592381..a41229f0c 100755 --- a/scripts/launch_ui_raybig_desktop.sh +++ b/scripts/launch_ui_c3_desktop.sh @@ -47,19 +47,19 @@ export PATH="${ROOT_DIR}/.venv/bin:${PATH}" export PYTHONPATH="${ROOT_DIR}:${ROOT_DIR}/starpilot/third_party" for d in "${ROOT_DIR}"/*_repo; do [[ -d "$d" ]] && export PYTHONPATH="${PYTHONPATH}:$d"; done [[ -d "${ROOT_DIR}/third_party/acados" ]] && export PYTHONPATH="${PYTHONPATH}:${ROOT_DIR}/third_party/acados" -export OPENPILOT_ZMQ_NAMESPACE="${OPENPILOT_ZMQ_NAMESPACE:-desktop-raybig-$$}" +export OPENPILOT_ZMQ_NAMESPACE="${OPENPILOT_ZMQ_NAMESPACE:-desktop-c3-$$}" export BIG=1 export NOBOARD=1 export SIMULATION=1 export SKIP_FW_QUERY=1 export USE_WEBCAM=1 export PRIME_TYPE="${PRIME_TYPE:-0}" -export SP_RAYBIG_FAKE_DRIVE_STATS="${SP_RAYBIG_FAKE_DRIVE_STATS:-1}" +export SP_C3_FAKE_DRIVE_STATS="${SP_C3_FAKE_DRIVE_STATS:-1}" -backup_dir="$(mktemp -d /tmp/starpilot_raybig_ui_backup.XXXXXX)" +backup_dir="$(mktemp -d /tmp/starpilot_c3_ui_backup.XXXXXX)" backup_manifest="${backup_dir}/.artifact_manifest" -PRE_TRACKED_DIRTY="$(mktemp /tmp/starpilot_raybig_pretracked.XXXXXX)" -POST_TRACKED_DIRTY="$(mktemp /tmp/starpilot_raybig_posttracked.XXXXXX)" +PRE_TRACKED_DIRTY="$(mktemp /tmp/starpilot_c3_pretracked.XXXXXX)" +POST_TRACKED_DIRTY="$(mktemp /tmp/starpilot_c3_posttracked.XXXXXX)" FAKE_WIFI_PID="" runtime_artifacts=( @@ -175,7 +175,7 @@ prepare_common_host_artifacts() { prepare_msgq_host_artifacts() { # Clear mixed-arch Python extension objects from both msgq trees. These - # commonly conflict after switching between ./build (larch64) and ./raybig (macOS). + # commonly conflict after switching between ./build (larch64) and ./c3 (macOS). remove_if_elf "msgq/ipc_pyx.o" remove_if_elf "msgq/visionipc/visionipc_pyx.o" remove_if_elf "msgq_repo/msgq/ipc_pyx.o" @@ -268,12 +268,12 @@ run_scons() { fi } -kill_stale_raybig_ui() { +kill_stale_c3_ui() { pkill -f "selfdrive/ui/ui.py" >/dev/null 2>&1 || true } start_fake_wifi() { - if [[ ! "${SP_RAYBIG_FAKE_WIFI:-1}" =~ ^(1|true|yes|on)$ ]]; then + if [[ ! "${SP_C3_FAKE_WIFI:-1}" =~ ^(1|true|yes|on)$ ]]; then export SP_ALLOW_DESKTOP_FAKE_WIFI=0 return fi @@ -339,8 +339,8 @@ PY exit 1 fi -if [[ "${SP_RAYBIG_COMPILE_ONLY:-0}" == "1" ]]; then - echo "Raybig runtime artifacts prepared." +if [[ "${SP_C3_COMPILE_ONLY:-0}" == "1" ]]; then + echo "C3 runtime artifacts prepared." exit 0 fi @@ -356,6 +356,6 @@ params.put_bool("IsDriverViewEnabled", False) PY seed_starpilot_theme -kill_stale_raybig_ui +kill_stale_c3_ui start_fake_wifi "${PY_BIN}" selfdrive/ui/ui.py "$@" diff --git a/scripts/launch_ui_desktop.sh b/scripts/launch_ui_desktop.sh deleted file mode 100755 index 11d69edd9..000000000 --- a/scripts/launch_ui_desktop.sh +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -cd "${ROOT_DIR}" - -if [[ ! -f .venv/bin/activate ]]; then - echo "Missing .venv. Run tools/install_python_dependencies.sh first." - exit 1 -fi - -default_jobs() { - if command -v nproc >/dev/null 2>&1; then - nproc - elif command -v sysctl >/dev/null 2>&1; then - sysctl -n hw.ncpu - else - echo 8 - fi -} - -jobs="$(default_jobs)" -if [[ "${1:-}" =~ ^[0-9]+$ ]]; then - jobs="$1" - shift || true -fi - -OS_EXT="linux" -if [[ "$(uname -s)" == "Darwin" ]]; then - OS_EXT="macos" -fi -HOST_UI="${ROOT_DIR}/selfdrive/ui/ui.${OS_EXT}" -PRE_TRACKED_DIRTY="$(mktemp /tmp/starpilot_c3_pretracked.XXXXXX)" -POST_TRACKED_DIRTY="$(mktemp /tmp/starpilot_c3_posttracked.XXXXXX)" -BACKUP_DIR="$(mktemp -d /tmp/starpilot_c3_backup.XXXXXX)" -BACKUP_MANIFEST="${BACKUP_DIR}/.artifact_manifest" -FAKE_WIFI_PID="" - -runtime_artifacts=( - "selfdrive/ui/ui" - "common/libcommon.a" - "common/transformations/libtransformations.a" - "cereal/libsocketmaster.a" - "msgq_repo/libmsgq.a" - "msgq_repo/libvisionipc.a" - "common/params_pyx.so" - "common/transformations/transformations.so" - "msgq_repo/msgq/ipc_pyx.so" - "msgq_repo/msgq/visionipc/visionipc_pyx.so" -) - -collect_tracked_dirty() { - if ! command -v git >/dev/null 2>&1; then - return 1 - fi - if ! git -C "${ROOT_DIR}" rev-parse --is-inside-work-tree >/dev/null 2>&1; then - return 1 - fi - git -C "${ROOT_DIR}" status --porcelain --untracked-files=no | sed -E 's/^.. //' -} - -backup_artifact() { - local rel="$1" - local src="${ROOT_DIR}/${rel}" - echo "${rel}" >> "${BACKUP_MANIFEST}" - if [[ -f "${src}" ]]; then - mkdir -p "${BACKUP_DIR}/$(dirname "${rel}")" - cp -f "${src}" "${BACKUP_DIR}/${rel}" - fi -} - -restore_runtime_artifacts() { - if [[ ! -d "${BACKUP_DIR}" ]]; then - return - fi - - if [[ -f "${BACKUP_MANIFEST}" ]]; then - while IFS= read -r rel; do - [[ -z "${rel}" ]] && continue - if [[ -f "${BACKUP_DIR}/${rel}" ]]; then - cp -f "${BACKUP_DIR}/${rel}" "${ROOT_DIR}/${rel}" - else - rm -f "${ROOT_DIR}/${rel}" - fi - done < "${BACKUP_MANIFEST}" - fi - - rm -rf "${BACKUP_DIR}" -} - -restore_new_tracked_changes() { - if ! collect_tracked_dirty > "${POST_TRACKED_DIRTY}"; then - return - fi - - while IFS= read -r path; do - [[ -z "${path}" ]] && continue - if ! grep -Fxq "${path}" "${PRE_TRACKED_DIRTY}"; then - git -C "${ROOT_DIR}" checkout -- "${path}" >/dev/null 2>&1 || true - fi - done < "${POST_TRACKED_DIRTY}" -} - -cleanup() { - restore_runtime_artifacts - restore_new_tracked_changes - stop_fake_wifi - rm -f "${PRE_TRACKED_DIRTY}" "${POST_TRACKED_DIRTY}" -} - -start_fake_wifi() { - if [[ ! "${SP_C3_FAKE_WIFI:-1}" =~ ^(1|true|yes|on)$ ]]; then - export SP_ALLOW_DESKTOP_FAKE_WIFI=0 - return - fi - - export SP_ALLOW_DESKTOP_FAKE_WIFI=1 - "${ROOT_DIR}/.venv/bin/python3" selfdrive/debug/fake_wifi.py --network wifi --strength great --interval 0.2 & - FAKE_WIFI_PID=$! -} - -seed_starpilot_theme() { - "${ROOT_DIR}/.venv/bin/python3" - <<'PY' -from openpilot.starpilot.common.starpilot_functions import seed_desktop_theme_assets - -seed_desktop_theme_assets() -PY -} - -starpilot_theme_runtime_ok() { - "${ROOT_DIR}/.venv/bin/python3" - <<'PY' -import openpilot.selfdrive.controls.lib.lateral_mpc_lib.c_generated_code.acados_ocp_solver_pyx # noqa: F401 -import openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.c_generated_code.acados_ocp_solver_pyx # noqa: F401 -PY -} - -ensure_starpilot_theme_runtime() { - if starpilot_theme_runtime_ok >/dev/null 2>&1; then - return - fi - - echo "Preparing C3 StarPilot theme runtime extensions..." - remove_if_elf "selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so" - remove_if_elf "selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so" - scons -j"${jobs}" \ - selfdrive/controls/lib/lateral_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so \ - selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.so -} - -stop_fake_wifi() { - if [[ -n "${FAKE_WIFI_PID}" ]]; then - kill "${FAKE_WIFI_PID}" >/dev/null 2>&1 || true - FAKE_WIFI_PID="" - fi -} - -archive_is_aarch64_elf() { - local path="$1" - [[ -f "${path}" ]] || return 1 - if command -v readelf >/dev/null 2>&1; then - readelf -h "${path}" 2>/dev/null | grep -iq "aarch64" - else - objdump -a "${path}" 2>/dev/null | head -n 12 | grep -iqE "elf64-littleaarch64|aarch64" - fi -} - -remove_if_elf() { - local rel="$1" - local path="${ROOT_DIR}/${rel}" - if [[ -f "${path}" ]] && file "${path}" | grep -q "ELF"; then - rm -f "${path}" - fi -} - -purge_objects() { - local root="$1" - if [[ -d "${root}" ]]; then - find "${root}" -type f \( -name '*.o' -o -name '*.os' \) -delete - fi -} - -prepare_host_artifacts() { - if archive_is_aarch64_elf "${ROOT_DIR}/common/libcommon.a"; then - rm -f "${ROOT_DIR}/common/libcommon.a" "${ROOT_DIR}/common/params_pyx.o" - purge_objects "${ROOT_DIR}/common" - fi - - if archive_is_aarch64_elf "${ROOT_DIR}/cereal/libsocketmaster.a"; then - rm -f "${ROOT_DIR}/cereal/libsocketmaster.a" - purge_objects "${ROOT_DIR}/cereal/messaging" - fi - - if archive_is_aarch64_elf "${ROOT_DIR}/common/transformations/libtransformations.a"; then - rm -f "${ROOT_DIR}/common/transformations/libtransformations.a" \ - "${ROOT_DIR}/common/transformations/transformations.o" - purge_objects "${ROOT_DIR}/common/transformations" - fi - - if archive_is_aarch64_elf "${ROOT_DIR}/msgq_repo/libmsgq.a" || archive_is_aarch64_elf "${ROOT_DIR}/msgq_repo/libvisionipc.a"; then - rm -f "${ROOT_DIR}/msgq_repo/libmsgq.a" "${ROOT_DIR}/msgq_repo/libvisionipc.a" - purge_objects "${ROOT_DIR}/msgq_repo/msgq" - purge_objects "${ROOT_DIR}/msgq_repo/msgq/visionipc" - fi - - remove_if_elf "common/params_pyx.so" - remove_if_elf "common/transformations/transformations.so" - remove_if_elf "msgq_repo/msgq/ipc_pyx.so" - remove_if_elf "msgq_repo/msgq/visionipc/visionipc_pyx.so" - - purge_objects "${ROOT_DIR}/selfdrive/ui" - purge_objects "${ROOT_DIR}/starpilot/ui" - rm -f "${ROOT_DIR}/selfdrive/ui/libqt_widgets.a" "${ROOT_DIR}/selfdrive/ui/libqt_util.a" - rm -f "${ROOT_DIR}/selfdrive/ui/ui" -} - -collect_tracked_dirty > "${PRE_TRACKED_DIRTY}" || true -trap cleanup EXIT - -for rel in "${runtime_artifacts[@]}"; do - backup_artifact "${rel}" -done - -source .venv/bin/activate -if [[ -d /opt/homebrew/bin ]]; then - export PATH="/opt/homebrew/bin:${PATH}" -fi - -if [[ "$(uname -s)" == "Darwin" ]]; then - # Keep desktop host builds on Apple toolchain even if shell exports Homebrew llvm. - export CC="/usr/bin/clang" - export CXX="/usr/bin/clang++" - export AR="/usr/bin/ar" - export RANLIB="/usr/bin/ranlib" -fi -unset CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH CPPFLAGS CFLAGS CXXFLAGS LDFLAGS - -prepare_host_artifacts - -export PYTHONPATH="${ROOT_DIR}:${ROOT_DIR}/starpilot/third_party" -for d in "${ROOT_DIR}"/*_repo; do [[ -d "$d" ]] && export PYTHONPATH="${PYTHONPATH}:$d"; done -[[ -d "${ROOT_DIR}/third_party/acados" ]] && export PYTHONPATH="${PYTHONPATH}:${ROOT_DIR}/third_party/acados" -export OPENPILOT_ZMQ_NAMESPACE="${OPENPILOT_ZMQ_NAMESPACE:-desktop-c3-$$}" - -export SP_DISABLE_AUTO_DEVICE_SCONS=1 -scons -j"${jobs}" selfdrive/ui/ui - -cp -f "${ROOT_DIR}/selfdrive/ui/ui" "${HOST_UI}" -cleanup -trap - EXIT - -if [[ "${SP_C3_COMPILE_ONLY:-0}" == "1" ]]; then - echo "C3 UI binary prepared." - exit 0 -fi - -ensure_starpilot_theme_runtime -seed_starpilot_theme -start_fake_wifi -trap stop_fake_wifi EXIT -"${HOST_UI}" "$@" -rc=$? -stop_fake_wifi -trap - EXIT -exit "${rc}" diff --git a/scripts/starpilot_build_flow.sh b/scripts/starpilot_build_flow.sh index 7837d8779..89ca7b70b 100755 --- a/scripts/starpilot_build_flow.sh +++ b/scripts/starpilot_build_flow.sh @@ -9,14 +9,14 @@ usage() { cat <<'EOF' Usage: scripts/starpilot_build_flow.sh verify - scripts/starpilot_build_flow.sh mac [jobs] + scripts/starpilot_build_flow.sh mac scripts/starpilot_build_flow.sh device [jobs] scripts/starpilot_build_flow.sh laptop-setup [device-host] scripts/starpilot_build_flow.sh laptop-device [jobs] Modes: verify Check critical StarPilot parity build guards in-tree. - mac Run macOS developer validation build (Qt UI + Python compile checks). + mac Run macOS developer Python validation checks. device Run full on-device build (comma hardware only) and set prebuilt flag. laptop-setup Prepare laptop device-build environment (venv + image + sysroot). laptop-device Run full device-target build in Linux/aarch64 container on laptop. @@ -61,20 +61,6 @@ verify_tree() { echo "OK: timed.py guards timezonefinder usage." fi - if ! rg -q "if os.path.isfile\\(\"/TICI\"\\)" common/spinner.py; then - echo "FAIL: common/spinner.py missing device-only legacy spinner path." - failed=1 - else - echo "OK: spinner uses device-only legacy fallback." - fi - - if ! rg -q "if os.path.isfile\\(\"/TICI\"\\)" common/text_window.py; then - echo "FAIL: common/text_window.py missing device-only legacy text path." - failed=1 - else - echo "OK: text window uses device-only legacy fallback." - fi - if ! source .venv/bin/activate >/dev/null 2>&1; then echo "FAIL: .venv is required for loggerd import checks." failed=1 @@ -107,7 +93,6 @@ PY } build_mac() { - local jobs="${1:-8}" require_venv source .venv/bin/activate @@ -129,8 +114,6 @@ build_mac() { starpilot/system/the_galaxy \ starpilot/system/galaxy - SP_DISABLE_AUTO_DEVICE_SCONS=1 scons -j"${jobs}" selfdrive/ui/ui - echo "mac build validation complete." } @@ -166,7 +149,7 @@ main() { verify_tree ;; mac) - build_mac "${1:-8}" + build_mac ;; device) build_device "${1:-$(nproc)}" diff --git a/selfdrive/assets/.gitignore b/selfdrive/assets/.gitignore index fffd4b4ed..2d97f8b11 100644 --- a/selfdrive/assets/.gitignore +++ b/selfdrive/assets/.gitignore @@ -1,4 +1,2 @@ -*.cc fonts/*.fnt fonts/*.png -translations_assets.qrc diff --git a/selfdrive/assets/assets.qrc b/selfdrive/assets/assets.qrc deleted file mode 100644 index 26a7d998e..000000000 --- a/selfdrive/assets/assets.qrc +++ /dev/null @@ -1,20 +0,0 @@ - - - ../../third_party/bootstrap/bootstrap-icons.svg - images/button_continue_triangle.svg - icons/circled_check.svg - icons/circled_slash.svg - icons/eye_open.svg - icons/eye_closed.svg - icons/close.svg - icons/lock_closed.svg - icons/checkmark.svg - icons/warning.png - icons/wifi_strength_low.svg - icons/wifi_strength_medium.svg - icons/wifi_strength_high.svg - icons/wifi_strength_full.svg - - ../ui/translations/languages.json - - diff --git a/selfdrive/controls/lib/longcontrol_vehicle_tunes.py b/selfdrive/controls/lib/longcontrol_vehicle_tunes.py index c9450b365..74b3d4e7e 100644 --- a/selfdrive/controls/lib/longcontrol_vehicle_tunes.py +++ b/selfdrive/controls/lib/longcontrol_vehicle_tunes.py @@ -52,6 +52,9 @@ HYUNDAI_ELANTRA_STOPPED_LEAD_MAX_EGO_SPEED = 2.0 HYUNDAI_ELANTRA_STOPPED_LEAD_MAX_SPEED = 0.5 HYUNDAI_ELANTRA_STOPPED_LEAD_MIN_CLOSING_SPEED = 0.25 HYUNDAI_ELANTRA_STOPPED_LEAD_MAX_CREEP_ACCEL = 0.05 +HYUNDAI_SANTA_FE_FINAL_STOP_MAX_SPEED = 1.0 +HYUNDAI_SANTA_FE_FINAL_STOP_CAP_BP = [0.0, 0.2, 0.5, HYUNDAI_SANTA_FE_FINAL_STOP_MAX_SPEED] +HYUNDAI_SANTA_FE_FINAL_STOP_CAP_V = [-0.25, -0.30, -0.50, -0.90] def get_bolt_acc_pedal_friction_bias(output_accel, a_target, v_ego): @@ -131,6 +134,9 @@ class LongControlVehicleTuning: self.is_hyundai_elantra_2021 = bool( CP.brand == "hyundai" and str(getattr(CP, "carFingerprint", "")) == "HYUNDAI_ELANTRA_2021" ) + self.is_hyundai_santa_fe_2022 = bool( + CP.brand == "hyundai" and str(getattr(CP, "carFingerprint", "")) == "HYUNDAI_SANTA_FE_2022" + ) self.is_bolt_acc_pedal_friction_car = bool( CP.brand == "gm" and CP.enableGasInterceptorDEPRECATED and @@ -153,6 +159,14 @@ class LongControlVehicleTuning: def shape_stopping_accel(self, output_accel, a_target, should_stop, v_ego, has_lead, stop_accel): """Release a stale hard lead brake once the stop target has eased.""" + if ( + self.is_hyundai_santa_fe_2022 and + v_ego <= HYUNDAI_SANTA_FE_FINAL_STOP_MAX_SPEED and + a_target <= 0.1 + ): + final_stop_cap = float(interp(v_ego, HYUNDAI_SANTA_FE_FINAL_STOP_CAP_BP, HYUNDAI_SANTA_FE_FINAL_STOP_CAP_V)) + return max(float(output_accel), final_stop_cap) + if ( not self.is_hyundai_elantra_2021 or not has_lead or not should_stop or v_ego > 2.0 or diff --git a/selfdrive/controls/tests/test_longcontrol.py b/selfdrive/controls/tests/test_longcontrol.py index b85a3cedd..ef4566524 100644 --- a/selfdrive/controls/tests/test_longcontrol.py +++ b/selfdrive/controls/tests/test_longcontrol.py @@ -1217,6 +1217,15 @@ def test_gm_stock_truck_target_filter_bypasses_low_speed_and_other_cars(): assert bolt_tuning.shape_gm_truck_accel_target(-0.10, 20.0, False) == pytest.approx(-0.10) +def test_santa_fe_final_stop_cap_softens_only_last_kmh(): + CP = make_longcontrol_cp(brand="hyundai", carFingerprint="HYUNDAI_SANTA_FE_2022") + tuning = LongControl(CP).vehicle_tuning + + assert tuning.shape_stopping_accel(-2.0, -0.2, True, 0.2, False, -2.0) == pytest.approx(-0.30) + assert tuning.shape_stopping_accel(-2.0, -0.2, True, 1.5, False, -2.0) == pytest.approx(-2.0) + assert tuning.shape_stopping_accel(-2.0, 0.3, False, 0.2, False, -2.0) == pytest.approx(-2.0) + + def test_toyota_sienna_target_filter_smooths_mild_high_speed_handoffs(): CP = make_longcontrol_cp(brand="toyota", carFingerprint=TOYOTA_CAR.TOYOTA_SIENNA_4TH_GEN) tuning = vehicle_tunes.LongControlVehicleTuning(CP) diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 3046f99e5..6177692d9 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -1,128 +1,33 @@ -import json -import os -Import('env', 'qt_env', 'arch', 'common', 'messaging', 'visionipc', 'transformations') +Import('env', 'arch', 'common') -base_libs = [common, messaging, visionipc, transformations, - 'm', 'OpenCL', 'ssl', 'crypto', 'pthread'] + qt_env["LIBS"] +if GetOption('extras') and arch != "Darwin": + raylib_env = env.Clone() + raylib_env['LIBPATH'] += [f'#third_party/raylib/{arch}/'] + raylib_env['LINKFLAGS'].append('-Wl,-strip-debug') -base_libs += ['avcodec', 'avformat', 'avutil', 'swresample', 'yuv'] + raylib_libs = common + ["raylib"] + if arch == "larch64": + raylib_libs += ["GLESv2", "wayland-client", "wayland-egl", "EGL"] + else: + raylib_libs += ["GL"] -# OpenMAX is only available in the device-target runtime/sysroot. Host desktop -# UI builds on Linux should not need or link it. -if arch == 'larch64': - base_libs.append('OmxCore') + release = "release3" + installers = [ + ("openpilot", release), + ("openpilot_test", f"{release}-staging"), + ("openpilot_nightly", "nightly"), + ("openpilot_internal", "nightly-dev"), + ] -if arch == 'larch64': - base_libs.append('EGL') + cont = raylib_env.Command("installer/continue_openpilot.o", "installer/continue_openpilot.sh", + "ld -r -b binary -o $TARGET $SOURCE") + inter = raylib_env.Command("installer/inter_ttf.o", "installer/inter-ascii.ttf", + "ld -r -b binary -o $TARGET $SOURCE") + for name, branch in installers: + defines = {'BRANCH': f"'\"{branch}\"'"} + if "internal" in name: + defines['INTERNAL'] = "1" -if arch == "Darwin": - del base_libs[base_libs.index('OpenCL')] - qt_env['FRAMEWORKS'] += ['OpenCL'] - -# FIXME: remove this once we're on 5.15 (24.04) -qt_env['CXXFLAGS'] += ["-Wno-deprecated-declarations"] - -qt_util = qt_env.Library("qt_util", ["#selfdrive/ui/qt/api.cc", "#selfdrive/ui/qt/util.cc"], LIBS=base_libs) -widgets_src = ["qt/widgets/input.cc", "qt/prime_state.cc", - "qt/widgets/ssh_keys.cc", "qt/widgets/toggle.cc", "qt/widgets/controls.cc", - "qt/widgets/offroad_alerts.cc", "qt/widgets/prime.cc", "qt/widgets/keyboard.cc", - "qt/widgets/scrollview.cc", "qt/widgets/cameraview.cc", "#third_party/qrcode/QrCode.cc", - "qt/request_repeater.cc", "qt/qt_window.cc", "qt/network/networking.cc", "qt/network/wifi_manager.cc"] - -starpilot_widgets_src = ["../../starpilot/ui/qt/widgets/starpilot_controls.cc"] -widgets_src += starpilot_widgets_src - -widgets = qt_env.Library("qt_widgets", widgets_src, LIBS=base_libs) -Export('widgets') -qt_libs = [widgets, qt_util] + base_libs - -qt_src = ["main.cc", "ui.cc", "qt/sidebar.cc", "qt/body.cc", - "qt/window.cc", "qt/home.cc", "qt/offroad/settings.cc", - "qt/offroad/software_settings.cc", "qt/offroad/developer_panel.cc", "qt/offroad/onboarding.cc", - "qt/offroad/driverview.cc", "qt/offroad/experimental_mode.cc", - "qt/onroad/onroad_home.cc", "qt/onroad/annotated_camera.cc", "qt/onroad/model.cc", - "qt/onroad/buttons.cc", "qt/onroad/alerts.cc", "qt/onroad/driver_monitoring.cc", "qt/onroad/hud.cc"] - -qt_env['CPPPATH'] += ["../../starpilot/ui/screenrecorder/openmax/include/"] - -starpilot_src = ["../../starpilot/ui/starpilot_ui.cc", "../../starpilot/ui/qt/offroad/data_settings.cc", - "../../starpilot/ui/qt/offroad/device_settings.cc", "../../starpilot/ui/qt/offroad/starpilot_settings.cc", - "../../starpilot/ui/qt/offroad/expandable_multi_option_dialog.cc", - "../../starpilot/ui/qt/offroad/lateral_settings.cc", "../../starpilot/ui/qt/offroad/longitudinal_settings.cc", - "../../starpilot/ui/qt/offroad/maps_settings.cc", "../../starpilot/ui/qt/offroad/model_settings.cc", - "../../starpilot/ui/qt/offroad/navigation_settings.cc", "../../starpilot/ui/qt/offroad/sounds_settings.cc", - "../../starpilot/ui/qt/offroad/theme_settings.cc", "../../starpilot/ui/qt/offroad/utilities.cc", - "../../starpilot/ui/qt/offroad/vehicle_settings.cc", "../../starpilot/ui/qt/offroad/visual_settings.cc", - "../../starpilot/ui/qt/offroad/wheel_settings.cc", "../../starpilot/ui/qt/onroad/starpilot_annotated_camera.cc", - "../../starpilot/ui/qt/onroad/starpilot_buttons.cc", "../../starpilot/ui/qt/onroad/starpilot_onroad.cc", - "../../starpilot/ui/qt/widgets/developer_sidebar.cc", "../../starpilot/ui/qt/widgets/drive_stats.cc", - "../../starpilot/ui/qt/widgets/drive_summary.cc", - "../../starpilot/ui/qt/widgets/navigation_functions.cc", - "../../starpilot/ui/screenrecorder/omx_encoder.cc", "../../starpilot/ui/screenrecorder/screenrecorder.cc"] -qt_src += starpilot_src - -# build translation files -with open(File("translations/languages.json").abspath) as f: - languages = json.loads(f.read()) -translation_sources = [f"#selfdrive/ui/translations/{l}.ts" for l in languages.values()] -translation_targets = [src.replace(".ts", ".qm") for src in translation_sources] -lrelease_bin = os.environ.get("SP_QT_HOST_LRELEASE", "lrelease") if arch == 'larch64' else 'lrelease' - -lrelease = qt_env.Command(translation_targets, translation_sources, f"{lrelease_bin} $SOURCES") -qt_env.NoClean(translation_sources) -qt_env.Precious(translation_sources) - -# create qrc file for compiled translations to include with assets -translations_assets_src = "#selfdrive/assets/translations_assets.qrc" -with open(File(translations_assets_src).abspath, 'w') as f: - f.write('\n\n') - f.write('\n'.join([f'../ui/translations/{l}.qm' for l in languages.values()])) - f.write('\n\n') - -# build assets -assets = "#selfdrive/assets/assets.cc" -assets_src = "#selfdrive/assets/assets.qrc" -rcc_bin = qt_env.get("SP_QT_RCC", "rcc") -qt_env.Command(assets, [assets_src, translations_assets_src], f"{rcc_bin} $SOURCES -o $TARGET") -qt_env.Depends(assets, Glob('#selfdrive/assets/*', exclude=[assets, assets_src, translations_assets_src, "#selfdrive/assets/assets.o"]) + [lrelease]) -asset_obj = qt_env.Object("assets", assets) - -# build main UI -qt_env.Program("ui", qt_src + [asset_obj], LIBS=qt_libs) -if GetOption('extras'): - qt_src.remove("main.cc") # replaced by test_runner - qt_env.Program('tests/test_translations', [asset_obj, 'tests/test_runner.cc', 'tests/test_translations.cc'] + qt_src, LIBS=qt_libs) - - # build installers - if arch != "Darwin": - raylib_env = env.Clone() - raylib_env['LIBPATH'] += [f'#third_party/raylib/{arch}/'] - raylib_env['LINKFLAGS'].append('-Wl,-strip-debug') - - raylib_libs = common + ["raylib"] - if arch == "larch64": - raylib_libs += ["GLESv2", "wayland-client", "wayland-egl", "EGL"] - else: - raylib_libs += ["GL"] - - release = "release3" - installers = [ - ("openpilot", release), - ("openpilot_test", f"{release}-staging"), - ("openpilot_nightly", "nightly"), - ("openpilot_internal", "nightly-dev"), - ] - - cont = raylib_env.Command("installer/continue_openpilot.o", "installer/continue_openpilot.sh", - "ld -r -b binary -o $TARGET $SOURCE") - inter = raylib_env.Command("installer/inter_ttf.o", "installer/inter-ascii.ttf", - "ld -r -b binary -o $TARGET $SOURCE") - for name, branch in installers: - d = {'BRANCH': f"'\"{branch}\"'"} - if "internal" in name: - d['INTERNAL'] = "1" - - obj = raylib_env.Object(f"installer/installers/installer_{name}.o", ["installer/installer.cc"], CPPDEFINES=d) - f = raylib_env.Program(f"installer/installers/installer_{name}", [obj, cont, inter], LIBS=raylib_libs) - # keep installers small - assert f[0].get_size() < 1900*1e3, f[0].get_size() + obj = raylib_env.Object(f"installer/installers/installer_{name}.o", ["installer/installer.cc"], CPPDEFINES=defines) + installer = raylib_env.Program(f"installer/installers/installer_{name}", [obj, cont, inter], LIBS=raylib_libs) + assert installer[0].get_size() < 1900*1e3, installer[0].get_size() diff --git a/selfdrive/ui/layouts/settings/starpilot/appearance.py b/selfdrive/ui/layouts/settings/starpilot/appearance.py index 470a344a2..5a9f1d200 100644 --- a/selfdrive/ui/layouts/settings/starpilot/appearance.py +++ b/selfdrive/ui/layouts/settings/starpilot/appearance.py @@ -32,7 +32,6 @@ THEME_KEY_CONFIG = { COLOR_PRESETS = ["Stock", "#FFFFFF", "#178644", "#3B82F6", "#E63956", "#8B5CF6", "#F59E0B"] CAMERA_VIEWS = ["Auto", "Driver", "Standard", "Wide"] -# Mirrors starpilot/ui/qt/offroad/developer_panel.cc:200-218. # Keys are the int values stored in DeveloperSidebarMetric{1..7}; values are the # human-readable labels shown in both the row value and the picker dialog. DEVELOPER_SIDEBAR_METRIC_OPTIONS: dict[int, str] = { diff --git a/selfdrive/ui/layouts/settings/starpilot/panel.py b/selfdrive/ui/layouts/settings/starpilot/panel.py index 6cc8cf682..4ea42a6e6 100644 --- a/selfdrive/ui/layouts/settings/starpilot/panel.py +++ b/selfdrive/ui/layouts/settings/starpilot/panel.py @@ -355,7 +355,7 @@ class _SettingsPage(StarPilotPanel): def _show_labeled_select(self, title, key, options, current_value): """Integer-based multi-option selector with label/value pairs (puts int). - Mirrors Qt's ButtonParamControl: resolve by index so no KeyError is possible. + Resolve by index so no KeyError is possible. """ option_labels = [tr(label) for _, label in options] option_values = [value for value, _ in options] diff --git a/selfdrive/ui/main.cc b/selfdrive/ui/main.cc deleted file mode 100644 index 9c1103211..000000000 --- a/selfdrive/ui/main.cc +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include - -#include -#include - -#include "common/swaglog.h" -#include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/qt_window.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/window.h" - -// Qt 5.12.8's qErrnoWarning() emits QtCriticalMsg then calls abort() directly, -// bypassing the fatal-message path. Intercept critical+fatal Wayland messages -// before the unconditional abort() fires and clean-exit so the manager restarts -// us quickly instead of going through the slow abort/crash-handler path. -void waylandAwareMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - if (type == QtCriticalMsg || type == QtFatalMsg) { - QByteArray bytes = msg.toUtf8(); - if (bytes.contains("ayland") || bytes.contains("wl_display")) { - swagLogMessageHandler(type, context, msg); - LOGE("UI WAYLAND EXIT: %s", bytes.constData()); - _exit(0); // clean exit; manager restarts us - } - } - swagLogMessageHandler(type, context, msg); - // Non-Wayland fatal: let Qt abort normally; crash_handler will capture it. -} - -int main(int argc, char *argv[]) { - setpriority(PRIO_PROCESS, 0, -20); - - qInstallMessageHandler(waylandAwareMessageHandler); - initApp(argc, argv); - - QTranslator translator; - QString translation_file = QString::fromStdString(Params().get("LanguageSetting")); - if (!translator.load(QString(":/%1").arg(translation_file)) && translation_file.length()) { - qCritical() << "Failed to load translation file:" << translation_file; - } - - QApplication a(argc, argv); - a.installTranslator(&translator); - - MainWindow w; - setMainWindow(&w); - a.installEventFilter(&w); - - // Pin the UI to the little cores (0-3) AFTER startup. The realtime control - // loop (card/controlsd) runs SCHED_FIFO on core 4; this keeps the steady-state - // UI off it so a UI stall can't preempt the control loop. Deliberately done - // after MainWindow init so startup — and crucially restart recovery — can use - // all cores; pinning before init starved the restarting UI on the contended - // little cores and stretched recovery from ~30s to minutes. The per-second - // reaffine in UIState::update keeps it pinned thereafter. - if (!Hardware::PC()) { - util::set_core_affinity({0, 1, 2, 3}); - } - - return a.exec(); -} diff --git a/selfdrive/ui/mici/widgets/button.py b/selfdrive/ui/mici/widgets/button.py index 3ad6efde3..8f3c4e09d 100644 --- a/selfdrive/ui/mici/widgets/button.py +++ b/selfdrive/ui/mici/widgets/button.py @@ -105,7 +105,7 @@ class BigButton(Widget): LABEL_HORIZONTAL_PADDING = 40 LABEL_VERTICAL_PADDING = 23 # visually matches 30 in figma - """A lightweight stand-in for the Qt BigButton, drawn & updated each frame.""" + """A lightweight large action button, drawn and updated each frame.""" def __init__(self, text: str, value: str = "", icon: Union[rl.Texture, None] = None, scroll: bool = False): super().__init__() diff --git a/selfdrive/ui/moc_ui.cc b/selfdrive/ui/moc_ui.cc deleted file mode 100644 index 72421f5f2..000000000 --- a/selfdrive/ui/moc_ui.cc +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'ui.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "ui.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'ui.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_UIState_t { - QByteArrayData data[11]; - char stringdata0[96]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_UIState_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_UIState_t qt_meta_stringdata_UIState = { - { -QT_MOC_LITERAL(0, 0, 7), // "UIState" -QT_MOC_LITERAL(1, 8, 8), // "uiUpdate" -QT_MOC_LITERAL(2, 17, 0), // "" -QT_MOC_LITERAL(3, 18, 1), // "s" -QT_MOC_LITERAL(4, 20, 16), // "StarPilotUIState" -QT_MOC_LITERAL(5, 37, 2), // "fs" -QT_MOC_LITERAL(6, 40, 17), // "offroadTransition" -QT_MOC_LITERAL(7, 58, 7), // "offroad" -QT_MOC_LITERAL(8, 66, 14), // "engagedChanged" -QT_MOC_LITERAL(9, 81, 7), // "engaged" -QT_MOC_LITERAL(10, 89, 6) // "update" - - }, - "UIState\0uiUpdate\0\0s\0StarPilotUIState\0" - "fs\0offroadTransition\0offroad\0" - "engagedChanged\0engaged\0update" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_UIState[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 4, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 34, 2, 0x06 /* Public */, - 6, 1, 39, 2, 0x06 /* Public */, - 8, 1, 42, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 10, 0, 45, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, 0x80000000 | 0, 0x80000000 | 4, 3, 5, - QMetaType::Void, QMetaType::Bool, 7, - QMetaType::Void, QMetaType::Bool, 9, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void UIState::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->uiUpdate((*reinterpret_cast< const UIState(*)>(_a[1])),(*reinterpret_cast< const StarPilotUIState(*)>(_a[2]))); break; - case 1: _t->offroadTransition((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 2: _t->engagedChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 3: _t->update(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (UIState::*)(const UIState & , const StarPilotUIState & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&UIState::uiUpdate)) { - *result = 0; - return; - } - } - { - using _t = void (UIState::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&UIState::offroadTransition)) { - *result = 1; - return; - } - } - { - using _t = void (UIState::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&UIState::engagedChanged)) { - *result = 2; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject UIState::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_UIState.data, - qt_meta_data_UIState, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *UIState::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *UIState::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_UIState.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int UIState::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 4) - qt_static_metacall(this, _c, _id, _a); - _id -= 4; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 4) - *reinterpret_cast(_a[0]) = -1; - _id -= 4; - } - return _id; -} - -// SIGNAL 0 -void UIState::uiUpdate(const UIState & _t1, const StarPilotUIState & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void UIState::offroadTransition(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, _a); -} - -// SIGNAL 2 -void UIState::engagedChanged(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 2, _a); -} -struct qt_meta_stringdata_Device_t { - QByteArrayData data[13]; - char stringdata0[134]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Device_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Device_t qt_meta_stringdata_Device = { - { -QT_MOC_LITERAL(0, 0, 6), // "Device" -QT_MOC_LITERAL(1, 7, 19), // "displayPowerChanged" -QT_MOC_LITERAL(2, 27, 0), // "" -QT_MOC_LITERAL(3, 28, 2), // "on" -QT_MOC_LITERAL(4, 31, 18), // "interactiveTimeout" -QT_MOC_LITERAL(5, 50, 23), // "resetInteractiveTimeout" -QT_MOC_LITERAL(6, 74, 7), // "timeout" -QT_MOC_LITERAL(7, 82, 14), // "timeout_onroad" -QT_MOC_LITERAL(8, 97, 6), // "update" -QT_MOC_LITERAL(9, 104, 7), // "UIState" -QT_MOC_LITERAL(10, 112, 1), // "s" -QT_MOC_LITERAL(11, 114, 16), // "StarPilotUIState" -QT_MOC_LITERAL(12, 131, 2) // "fs" - - }, - "Device\0displayPowerChanged\0\0on\0" - "interactiveTimeout\0resetInteractiveTimeout\0" - "timeout\0timeout_onroad\0update\0UIState\0" - "s\0StarPilotUIState\0fs" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Device[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 6, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 44, 2, 0x06 /* Public */, - 4, 0, 47, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 5, 2, 48, 2, 0x0a /* Public */, - 5, 1, 53, 2, 0x2a /* Public | MethodCloned */, - 5, 0, 56, 2, 0x2a /* Public | MethodCloned */, - 8, 2, 57, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Bool, 3, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Int, QMetaType::Int, 6, 7, - QMetaType::Void, QMetaType::Int, 6, - QMetaType::Void, - QMetaType::Void, 0x80000000 | 9, 0x80000000 | 11, 10, 12, - - 0 // eod -}; - -void Device::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->displayPowerChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 1: _t->interactiveTimeout(); break; - case 2: _t->resetInteractiveTimeout((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; - case 3: _t->resetInteractiveTimeout((*reinterpret_cast< int(*)>(_a[1]))); break; - case 4: _t->resetInteractiveTimeout(); break; - case 5: _t->update((*reinterpret_cast< const UIState(*)>(_a[1])),(*reinterpret_cast< const StarPilotUIState(*)>(_a[2]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (Device::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Device::displayPowerChanged)) { - *result = 0; - return; - } - } - { - using _t = void (Device::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Device::interactiveTimeout)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject Device::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_Device.data, - qt_meta_data_Device, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *Device::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Device::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_Device.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int Device::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 6) - qt_static_metacall(this, _c, _id, _a); - _id -= 6; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 6) - *reinterpret_cast(_a[0]) = -1; - _id -= 6; - } - return _id; -} - -// SIGNAL 0 -void Device::displayPowerChanged(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void Device::interactiveTimeout() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/onroad/starpilot/path.py b/selfdrive/ui/onroad/starpilot/path.py index 7b74423ea..204e00887 100644 --- a/selfdrive/ui/onroad/starpilot/path.py +++ b/selfdrive/ui/onroad/starpilot/path.py @@ -130,7 +130,6 @@ def render_adjacent_lanes(renderer) -> None: def render_path_edges(renderer) -> None: """Draw colored edge strips along the driving path. - Qt reference: paintPathEdges in starpilot_annotated_camera.cc:732-769 Path edges are the area between track_edge_vertices (outer) and track_vertices (inner). Color selection on Python UIs: diff --git a/selfdrive/ui/onroad/starpilot/rainbow_path.py b/selfdrive/ui/onroad/starpilot/rainbow_path.py index 693fe21be..ddc3379b4 100644 --- a/selfdrive/ui/onroad/starpilot/rainbow_path.py +++ b/selfdrive/ui/onroad/starpilot/rainbow_path.py @@ -19,7 +19,7 @@ def _hsla_to_color(h: float, s: float, l: float, a: float) -> rl.Color: class RainbowPath: - """Rainbow path renderer ported from the FrogPilot/StarPilot Qt C++ UI implementation.""" + """Rainbow path renderer for the StarPilot onroad UI.""" def __init__(self) -> None: self._hue_offset: float = 0.0 diff --git a/selfdrive/ui/qt/api.cc b/selfdrive/ui/qt/api.cc deleted file mode 100644 index 6889b40e5..000000000 --- a/selfdrive/ui/qt/api.cc +++ /dev/null @@ -1,142 +0,0 @@ -#include "selfdrive/ui/qt/api.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/util.h" - -namespace CommaApi { - -RSA *get_rsa_private_key() { - static std::unique_ptr rsa_private(nullptr, RSA_free); - if (!rsa_private) { - FILE *fp = fopen(Path::rsa_file().c_str(), "rb"); - if (!fp) { - qDebug() << "No RSA private key found, please run manager.py or registration.py"; - return nullptr; - } - rsa_private.reset(PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL)); - fclose(fp); - } - return rsa_private.get(); -} - -QByteArray rsa_sign(const QByteArray &data) { - RSA *rsa_private = get_rsa_private_key(); - if (!rsa_private) return {}; - - QByteArray sig(RSA_size(rsa_private), Qt::Uninitialized); - unsigned int sig_len; - int ret = RSA_sign(NID_sha256, (unsigned char*)data.data(), data.size(), (unsigned char*)sig.data(), &sig_len, rsa_private); - assert(ret == 1); - assert(sig.size() == sig_len); - return sig; -} - -QString create_jwt(const QJsonObject &payloads, int expiry) { - QJsonObject header = {{"alg", "RS256"}}; - - auto t = QDateTime::currentSecsSinceEpoch(); - QJsonObject payload = {{"identity", getDongleId().value_or("")}, {"nbf", t}, {"iat", t}, {"exp", t + expiry}}; - for (auto it = payloads.begin(); it != payloads.end(); ++it) { - payload.insert(it.key(), it.value()); - } - - auto b64_opts = QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals; - QString jwt = QJsonDocument(header).toJson(QJsonDocument::Compact).toBase64(b64_opts) + '.' + - QJsonDocument(payload).toJson(QJsonDocument::Compact).toBase64(b64_opts); - - auto hash = QCryptographicHash::hash(jwt.toUtf8(), QCryptographicHash::Sha256); - return jwt + "." + rsa_sign(hash).toBase64(b64_opts); -} - -} // namespace CommaApi - -HttpRequest::HttpRequest(QObject *parent, bool create_jwt, int timeout) : create_jwt(create_jwt), QObject(parent) { - networkTimer = new QTimer(this); - networkTimer->setSingleShot(true); - networkTimer->setInterval(timeout); - connect(networkTimer, &QTimer::timeout, this, &HttpRequest::requestTimeout); -} - -bool HttpRequest::active() const { - return reply != nullptr; -} - -bool HttpRequest::timeout() const { - return reply && reply->error() == QNetworkReply::OperationCanceledError; -} - -void HttpRequest::sendRequest(const QString &requestURL, const HttpRequest::Method method) { - if (active()) { - qDebug() << "HttpRequest is active"; - return; - } - QString token; - if (create_jwt) { - token = CommaApi::create_jwt(); - } else { - QString token_json = QString::fromStdString(util::read_file(util::getenv("HOME") + "/.comma/auth.json")); - QJsonDocument json_d = QJsonDocument::fromJson(token_json.toUtf8()); - token = json_d["access_token"].toString(); - } - - QNetworkRequest request; - request.setUrl(QUrl(requestURL)); - request.setRawHeader("User-Agent", getUserAgent().toUtf8()); - - if (!token.isEmpty()) { - request.setRawHeader(QByteArray("Authorization"), ("JWT " + token).toUtf8()); - } - - if (method == HttpRequest::Method::GET) { - reply = nam()->get(request); - } else if (method == HttpRequest::Method::DELETE) { - reply = nam()->deleteResource(request); - } - - networkTimer->start(); - connect(reply, &QNetworkReply::finished, this, &HttpRequest::requestFinished); -} - -void HttpRequest::requestTimeout() { - reply->abort(); -} - -void HttpRequest::requestFinished() { - networkTimer->stop(); - - if (reply->error() == QNetworkReply::NoError) { - emit requestDone(reply->readAll(), true, reply->error()); - } else { - QString error; - if (reply->error() == QNetworkReply::OperationCanceledError) { - nam()->clearAccessCache(); - nam()->clearConnectionCache(); - error = "Request timed out"; - } else { - error = reply->errorString(); - } - emit requestDone(error, false, reply->error()); - } - - reply->deleteLater(); - reply = nullptr; -} - -QNetworkAccessManager *HttpRequest::nam() { - static QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager(qApp); - return networkAccessManager; -} diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h deleted file mode 100644 index 2b7d70f13..000000000 --- a/selfdrive/ui/qt/api.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "common/util.h" - -#include "starpilot/ui/qt/widgets/starpilot_controls.h" - -namespace CommaApi { - -const QString BASE_URL = util::getenv("API_HOST", useKonikServer() ? "https://api.konik.ai" : "https://api.commadotai.com").c_str(); -QByteArray rsa_sign(const QByteArray &data); -QString create_jwt(const QJsonObject &payloads = {}, int expiry = 3600); - -} // namespace CommaApi - -/** - * Makes a request to the request endpoint. - */ - -class HttpRequest : public QObject { - Q_OBJECT - -public: - enum class Method {GET, DELETE}; - - explicit HttpRequest(QObject* parent, bool create_jwt = true, int timeout = 20000); - void sendRequest(const QString &requestURL, const Method method = Method::GET); - bool active() const; - bool timeout() const; - -signals: - void requestDone(const QString &response, bool success, QNetworkReply::NetworkError error); - -protected: - QNetworkReply *reply = nullptr; - -private: - static QNetworkAccessManager *nam(); - QTimer *networkTimer = nullptr; - bool create_jwt; - -private slots: - void requestTimeout(); - void requestFinished(); -}; diff --git a/selfdrive/ui/qt/body.cc b/selfdrive/ui/qt/body.cc deleted file mode 100644 index e01adbe06..000000000 --- a/selfdrive/ui/qt/body.cc +++ /dev/null @@ -1,161 +0,0 @@ -#include "selfdrive/ui/qt/body.h" - -#include -#include - -#include -#include - -#include "common/params.h" -#include "common/timing.h" - -RecordButton::RecordButton(QWidget *parent) : QPushButton(parent) { - setCheckable(true); - setChecked(false); - setFixedSize(148, 148); - - QObject::connect(this, &QPushButton::toggled, [=]() { - setEnabled(false); - }); -} - -void RecordButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - QPoint center(width() / 2, height() / 2); - - QColor bg(isChecked() ? "#FFFFFF" : "#737373"); - QColor accent(isChecked() ? "#FF0000" : "#FFFFFF"); - if (!isEnabled()) { - bg = QColor("#404040"); - accent = QColor("#FFFFFF"); - } - - if (isDown()) { - accent.setAlphaF(0.7); - } - - p.setPen(Qt::NoPen); - p.setBrush(bg); - p.drawEllipse(center, 74, 74); - - p.setPen(QPen(accent, 6)); - p.setBrush(Qt::NoBrush); - p.drawEllipse(center, 42, 42); - - p.setPen(Qt::NoPen); - p.setBrush(accent); - p.drawEllipse(center, 22, 22); -} - - -BodyWindow::BodyWindow(QWidget *parent) : fuel_filter(1.0, 5., 1. / UI_FREQ), QWidget(parent) { - QStackedLayout *layout = new QStackedLayout(this); - layout->setStackingMode(QStackedLayout::StackAll); - - QWidget *w = new QWidget; - QVBoxLayout *vlayout = new QVBoxLayout(w); - vlayout->setMargin(45); - layout->addWidget(w); - - // face - face = new QLabel(); - face->setAlignment(Qt::AlignCenter); - layout->addWidget(face); - awake = new QMovie("../assets/body/awake.gif", {}, this); - awake->setCacheMode(QMovie::CacheAll); - sleep = new QMovie("../assets/body/sleep.gif", {}, this); - sleep->setCacheMode(QMovie::CacheAll); - - // record button - btn = new RecordButton(this); - vlayout->addWidget(btn, 0, Qt::AlignBottom | Qt::AlignRight); - QObject::connect(btn, &QPushButton::clicked, [=](bool checked) { - btn->setEnabled(false); - Params().putBool("DisableLogging", !checked); - last_button = nanos_since_boot(); - }); - w->raise(); - - QObject::connect(uiState(), &UIState::uiUpdate, this, &BodyWindow::updateState); -} - -void BodyWindow::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - p.fillRect(rect(), QColor(0, 0, 0)); - - // battery outline + detail - p.translate(width() - 136, 16); - const QColor gray = QColor("#737373"); - p.setBrush(Qt::NoBrush); - p.setPen(QPen(gray, 4, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - p.drawRoundedRect(2, 2, 78, 36, 8, 8); - - p.setPen(Qt::NoPen); - p.setBrush(gray); - p.drawRoundedRect(84, 12, 6, 16, 4, 4); - p.drawRect(84, 12, 3, 16); - - // battery level - double fuel = std::clamp(fuel_filter.x(), 0.2f, 1.0f); - const int m = 5; // manual margin since we can't do an inner border - p.setPen(Qt::NoPen); - p.setBrush(fuel > 0.25 ? QColor("#32D74B") : QColor("#FF453A")); - p.drawRoundedRect(2 + m, 2 + m, (78 - 2*m)*fuel, 36 - 2*m, 4, 4); - - // charging status - if (charging) { - p.setPen(Qt::NoPen); - p.setBrush(Qt::white); - const QPolygonF charger({ - QPointF(12.31, 0), - QPointF(12.31, 16.92), - QPointF(18.46, 16.92), - QPointF(6.15, 40), - QPointF(6.15, 23.08), - QPointF(0, 23.08), - }); - p.drawPolygon(charger.translated(98, 0)); - } -} - -void BodyWindow::offroadTransition(bool offroad) { - btn->setChecked(true); - btn->setEnabled(true); - fuel_filter.reset(1.0); -} - -void BodyWindow::updateState(const UIState &s) { - if (!isVisible()) { - return; - } - - const SubMaster &sm = *(s.sm); - auto cs = sm["carState"].getCarState(); - - charging = cs.getCharging(); - fuel_filter.update(cs.getFuelGauge()); - - // TODO: use carState.standstill when that's fixed - const bool standstill = std::abs(cs.getVEgo()) < 0.01; - QMovie *m = standstill ? sleep : awake; - if (m != face->movie()) { - face->setMovie(m); - face->movie()->start(); - } - - // update record button state - if (sm.updated("managerState") && (sm.rcv_time("managerState") - last_button)*1e-9 > 0.5) { - for (auto proc : sm["managerState"].getManagerState().getProcesses()) { - if (proc.getName() == "loggerd") { - btn->setEnabled(true); - btn->setChecked(proc.getRunning()); - } - } - } - - update(); -} diff --git a/selfdrive/ui/qt/body.h b/selfdrive/ui/qt/body.h deleted file mode 100644 index 567a54d49..000000000 --- a/selfdrive/ui/qt/body.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "common/util.h" -#include "selfdrive/ui/ui.h" - -class RecordButton : public QPushButton { - Q_OBJECT - -public: - RecordButton(QWidget* parent = 0); - -private: - void paintEvent(QPaintEvent*) override; -}; - -class BodyWindow : public QWidget { - Q_OBJECT - -public: - BodyWindow(QWidget* parent = 0); - -private: - bool charging = false; - uint64_t last_button = 0; - FirstOrderFilter fuel_filter; - QLabel *face; - QMovie *awake, *sleep; - RecordButton *btn; - void paintEvent(QPaintEvent*) override; - -private slots: - void updateState(const UIState &s); - void offroadTransition(bool onroad); -}; diff --git a/selfdrive/ui/qt/home.cc b/selfdrive/ui/qt/home.cc deleted file mode 100644 index e04c6e8bd..000000000 --- a/selfdrive/ui/qt/home.cc +++ /dev/null @@ -1,344 +0,0 @@ -#include "selfdrive/ui/qt/home.h" - -#include -#include -#include -#include - -#include "selfdrive/ui/qt/offroad/experimental_mode.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/prime.h" - -#include "starpilot/ui/qt/widgets/drive_stats.h" -#include "starpilot/ui/qt/widgets/drive_summary.h" - -// HomeWindow: the container for the offroad and onroad UIs - -HomeWindow::HomeWindow(QWidget* parent) : QWidget(parent) { - QHBoxLayout *main_layout = new QHBoxLayout(this); - main_layout->setMargin(0); - main_layout->setSpacing(0); - - sidebar = new Sidebar(this); - main_layout->addWidget(sidebar); - QObject::connect(sidebar, &Sidebar::openSettings, this, &HomeWindow::openSettings); - - slayout = new QStackedLayout(); - main_layout->addLayout(slayout); - - home = new OffroadHome(this); - QObject::connect(home, &OffroadHome::openSettings, this, &HomeWindow::openSettings); - slayout->addWidget(home); - - onroad = new OnroadWindow(this); - slayout->addWidget(onroad); - - body = new BodyWindow(this); - slayout->addWidget(body); - - driver_view = new DriverViewWindow(this); - connect(driver_view, &DriverViewWindow::done, [=] { - showDriverView(false); - }); - slayout->addWidget(driver_view); - setAttribute(Qt::WA_NoSystemBackground); - QObject::connect(uiState(), &UIState::uiUpdate, this, &HomeWindow::updateState); - QObject::connect(uiState(), &UIState::offroadTransition, this, &HomeWindow::offroadTransition); - QObject::connect(uiState(), &UIState::offroadTransition, sidebar, &Sidebar::offroadTransition); - - developer_sidebar = new DeveloperSidebar(this); - main_layout->addWidget(developer_sidebar); - developer_sidebar->setVisible(false); -} - -void HomeWindow::showSidebar(bool show) { - sidebar->setVisible(show); -} - -void HomeWindow::updateState(const UIState &s, const StarPilotUIState &fs) { - const SubMaster &sm = *(s.sm); - - // switch to the generic robot UI - if (onroad->isVisible() && !body->isEnabled() && sm["carParams"].getCarParams().getNotCar()) { - body->setEnabled(true); - slayout->setCurrentWidget(body); - } - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - if (s.scene.started) { - if (starpilot_scene.driver_camera_timer >= UI_FREQ / 2) { - showDriverView(true, true); - } else { - if (driver_view->isVisible()) { - sidebar->setVisible(params.getBool("Sidebar") || starpilot_toggles.value("debug_mode").toBool()); - slayout->setCurrentWidget(onroad); - } - - developer_sidebar->setVisible(starpilot_toggles.value("developer_sidebar").toBool()); - - starpilotUIState()->starpilot_scene.sidebars_open = developer_sidebar->isVisible() && sidebar->isVisible(); - } - } -} - -void HomeWindow::offroadTransition(bool offroad) { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - body->setEnabled(false); - sidebar->setVisible(offroad || params.getBool("SidebarOpen") || starpilot_toggles.value("debug_mode").toBool()); - if (offroad) { - slayout->setCurrentWidget(home); - - developer_sidebar->setVisible(false); - } else { - slayout->setCurrentWidget(onroad); - } -} - -void HomeWindow::showDriverView(bool show, bool started) { - if (show) { - if (!started) { - emit closeSettings(); - } - slayout->setCurrentWidget(driver_view); - } else { - slayout->setCurrentWidget(home); - } - sidebar->setVisible(show == false); - - developer_sidebar->setVisible(false); -} - -void HomeWindow::mousePressEvent(QMouseEvent* e) { - // Handle sidebar collapsing - if ((onroad->isVisible() || body->isVisible()) && (!sidebar->isVisible() || e->x() > sidebar->width())) { - sidebar->setVisible(!sidebar->isVisible()); - - params.putBool("SidebarOpen", sidebar->isVisible()); - } -} - -void HomeWindow::mouseDoubleClickEvent(QMouseEvent* e) { - HomeWindow::mousePressEvent(e); - const SubMaster &sm = *(uiState()->sm); - if (sm["carParams"].getCarParams().getNotCar()) { - if (onroad->isVisible()) { - slayout->setCurrentWidget(body); - } else if (body->isVisible()) { - slayout->setCurrentWidget(onroad); - } - showSidebar(false); - } -} - -// OffroadHome: the offroad home page - -OffroadHome::OffroadHome(QWidget* parent) : QFrame(parent) { - QVBoxLayout* main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(40, 40, 40, 40); - - // top header - QHBoxLayout* header_layout = new QHBoxLayout(); - header_layout->setContentsMargins(0, 0, 0, 0); - header_layout->setSpacing(16); - - date = new ElidedLabel(); - header_layout->addWidget(date, 0, Qt::AlignHCenter | Qt::AlignLeft); - - update_notif = new QPushButton(tr("UPDATE")); - update_notif->setVisible(false); - update_notif->setStyleSheet("background-color: #364DEF;"); - QObject::connect(update_notif, &QPushButton::clicked, [=]() { center_layout->setCurrentIndex(1); }); - header_layout->addWidget(update_notif, 0, Qt::AlignHCenter | Qt::AlignLeft); - - alert_notif = new QPushButton(); - alert_notif->setVisible(false); - alert_notif->setStyleSheet("background-color: #E22C2C;"); - QObject::connect(alert_notif, &QPushButton::clicked, [=] { center_layout->setCurrentIndex(2); }); - header_layout->addWidget(alert_notif, 0, Qt::AlignHCenter | Qt::AlignLeft); - - version = new ElidedLabel(); - header_layout->addWidget(version, 0, Qt::AlignHCenter | Qt::AlignRight); - - main_layout->addLayout(header_layout); - - // main content - main_layout->addSpacing(25); - center_layout = new QStackedLayout(); - - QWidget *home_widget = new QWidget(this); - { - QHBoxLayout *home_layout = new QHBoxLayout(home_widget); - home_layout->setContentsMargins(0, 0, 0, 0); - home_layout->setSpacing(30); - - // left: stock prime card in simple mode, StarPilot drive stats otherwise - left_widget = new QStackedWidget(this); - - stock_left_widget = new QStackedWidget(this); - QVBoxLayout *left_prime_layout = new QVBoxLayout(); - left_prime_layout->setContentsMargins(0, 0, 0, 0); - QWidget *prime_user = new PrimeUserWidget(); - prime_user->setStyleSheet(R"( - border-radius: 10px; - background-color: #333333; - )"); - left_prime_layout->addWidget(prime_user); - left_prime_layout->addStretch(); - stock_left_widget->addWidget(new LayoutWidget(left_prime_layout)); - stock_left_widget->addWidget(new PrimeAdWidget); - stock_left_widget->setStyleSheet("border-radius: 10px;"); - QObject::connect(uiState()->prime_state, &PrimeState::changed, this, [this]() { - stock_left_widget->setCurrentIndex(uiState()->prime_state->isSubscribed() ? 0 : 1); - }); - left_widget->addWidget(stock_left_widget); - - QWidget *custom_left_widget = new QWidget(this); - custom_left_stack = new QStackedLayout(custom_left_widget); - custom_left_stack->setContentsMargins(0, 0, 0, 0); - custom_left_stack->addWidget(new DriveStats()); - StarPilotDriveSummary *drive_summary = new StarPilotDriveSummary(this); - custom_left_stack->addWidget(drive_summary); - left_widget->addWidget(custom_left_widget); - left_widget->setCurrentIndex(params.getBool("SimpleMode") ? 0 : 1); - - QObject::connect(drive_summary, &StarPilotDriveSummary::panelClosed, [this]() { - custom_left_stack->setCurrentIndex(0); - }); - QObject::connect(uiState(), &UIState::offroadTransition, [this](bool offroad) { - static bool previouslyOnroad = false; - if (offroad && previouslyOnroad && !params.getBool("SimpleMode")) { - custom_left_stack->setCurrentIndex(1); - } - previouslyOnroad = !offroad; - }); - - home_layout->addWidget(left_widget, 1); - - // right: ExperimentalModeButton, SetupWidget, Random Events Summary - right_widget = new QStackedWidget(this); - right_widget->setFixedWidth(750); - - QWidget *default_right = new QWidget(this); - QVBoxLayout *right_column = new QVBoxLayout(default_right); - right_column->setContentsMargins(0, 0, 0, 0); - right_column->setSpacing(30); - - ExperimentalModeButton *experimental_mode = new ExperimentalModeButton(this); - QObject::connect(experimental_mode, &ExperimentalModeButton::openSettings, this, &OffroadHome::openSettings); - right_column->addWidget(experimental_mode, 1); - - SetupWidget *setup_widget = new SetupWidget; - QObject::connect(setup_widget, &SetupWidget::openSettings, this, &OffroadHome::openSettings); - right_column->addWidget(setup_widget, 1); - - right_widget->addWidget(default_right); - - StarPilotDriveSummary *random_events_summary = new StarPilotDriveSummary(this, true); - right_widget->addWidget(random_events_summary); - right_widget->setCurrentIndex(0); - - QObject::connect(random_events_summary, &StarPilotDriveSummary::panelClosed, [=]() { - right_widget->setCurrentIndex(0); - }); - QObject::connect(uiState(), &UIState::offroadTransition, [this](bool offroad) { - static bool previouslyOnroad = false; - if (offroad && previouslyOnroad && !params.getBool("SimpleMode") && - starpilotUIState()->starpilot_scene.starpilot_toggles.value("random_events").toBool()) { - right_widget->setCurrentIndex(1); - } - previouslyOnroad = !offroad; - }); - - home_layout->addWidget(right_widget, 0); - } - center_layout->addWidget(home_widget); - - // add update & alerts widgets - update_widget = new UpdateAlert(); - QObject::connect(update_widget, &UpdateAlert::dismiss, [=]() { center_layout->setCurrentIndex(0); }); - center_layout->addWidget(update_widget); - alerts_widget = new OffroadAlert(); - QObject::connect(alerts_widget, &OffroadAlert::dismiss, [=]() { center_layout->setCurrentIndex(0); }); - center_layout->addWidget(alerts_widget); - - main_layout->addLayout(center_layout, 1); - - // set up refresh timer - timer = new QTimer(this); - timer->callOnTimeout(this, &OffroadHome::refresh); - - setStyleSheet(R"( - * { - color: white; - } - OffroadHome { - background-color: black; - } - OffroadHome > QPushButton { - padding: 15px 30px; - border-radius: 5px; - font-size: 40px; - font-weight: 500; - } - OffroadHome > QLabel { - font-size: 55px; - } - )"); -} - -void OffroadHome::showEvent(QShowEvent *event) { - refresh(); - timer->start(10 * 1000); -} - -void OffroadHome::hideEvent(QHideEvent *event) { - timer->stop(); -} - -void OffroadHome::refresh() { - bool updateAvailable = update_widget->refresh(); - int alerts = alerts_widget->refresh(); - - // pop-up new notification - int idx = center_layout->currentIndex(); - if (!updateAvailable && !alerts) { - idx = 0; - } else if (updateAvailable && (!update_notif->isVisible() || (!alerts && idx == 2))) { - idx = 1; - } else if (alerts && (!alert_notif->isVisible() || (!updateAvailable && idx == 1))) { - idx = 2; - } - center_layout->setCurrentIndex(idx); - - update_notif->setVisible(updateAvailable); - alert_notif->setVisible(alerts); - if (alerts) { - alert_notif->setText(QString::number(alerts) + (alerts > 1 ? tr(" ALERTS") : tr(" ALERT"))); - } - - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool simple_mode = params.getBool("SimpleMode"); - - stock_left_widget->setCurrentIndex(uiState()->prime_state->isSubscribed() ? 0 : 1); - left_widget->setCurrentIndex(simple_mode ? 0 : 1); - if (simple_mode) { - custom_left_stack->setCurrentIndex(0); - right_widget->setCurrentIndex(0); - } - - date->setText(QLocale(uiState()->language.mid(5)).toString(QDateTime::currentDateTime(), "dddd, MMMM d")); - date->setVisible(util::system_time_valid() && !simple_mode); - - if (simple_mode) { - version->setText(getBrand() + " " + formatStarPilotDisplayVersionDescription(QString::fromStdString(params.get("UpdaterCurrentDescription")))); - } else { - version->setText(getBrand() + " - " + getStarPilotDisplayVersion() + " - " + cleanModelName(starpilot_toggles.value("model_name").toString())); - } -} diff --git a/selfdrive/ui/qt/home.h b/selfdrive/ui/qt/home.h deleted file mode 100644 index f0931b394..000000000 --- a/selfdrive/ui/qt/home.h +++ /dev/null @@ -1,86 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -#include "common/params.h" -#include "selfdrive/ui/qt/offroad/driverview.h" -#include "selfdrive/ui/qt/body.h" -#include "selfdrive/ui/qt/onroad/onroad_home.h" -#include "selfdrive/ui/qt/sidebar.h" -#include "selfdrive/ui/qt/widgets/controls.h" -#include "selfdrive/ui/qt/widgets/offroad_alerts.h" -#include "selfdrive/ui/ui.h" - -#include "starpilot/ui/qt/widgets/developer_sidebar.h" - -class OffroadHome : public QFrame { - Q_OBJECT - -public: - explicit OffroadHome(QWidget* parent = 0); - -signals: - void openSettings(int index = 0, const QString ¶m = ""); - -private: - void showEvent(QShowEvent *event) override; - void hideEvent(QHideEvent *event) override; - void refresh(); - - Params params; - - QTimer* timer; - ElidedLabel* version; - QStackedLayout* center_layout; - UpdateAlert *update_widget; - OffroadAlert* alerts_widget; - QPushButton* alert_notif; - QPushButton* update_notif; - - ElidedLabel* date; - QStackedWidget *left_widget; - QStackedWidget *stock_left_widget; - QStackedLayout *custom_left_stack; - QStackedWidget *right_widget; -}; - -class HomeWindow : public QWidget { - Q_OBJECT - -public: - explicit HomeWindow(QWidget* parent = 0); - -signals: - void openSettings(int index = 0, const QString ¶m = ""); - void closeSettings(); - -public slots: - void offroadTransition(bool offroad); - void showDriverView(bool show, bool started=false); - void showSidebar(bool show); - -protected: - void mousePressEvent(QMouseEvent* e) override; - void mouseDoubleClickEvent(QMouseEvent* e) override; - -private: - Sidebar *sidebar; - OffroadHome *home; - OnroadWindow *onroad; - BodyWindow *body; - DriverViewWindow *driver_view; - QStackedLayout *slayout; - - DeveloperSidebar *developer_sidebar; - - Params params; - -private slots: - void updateState(const UIState &s, const StarPilotUIState &fs); -}; diff --git a/selfdrive/ui/qt/moc_api.cc b/selfdrive/ui/qt/moc_api.cc deleted file mode 100644 index e56142ebe..000000000 --- a/selfdrive/ui/qt/moc_api.cc +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'api.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "api.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'api.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_HttpRequest_t { - QByteArrayData data[9]; - char stringdata0[107]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_HttpRequest_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_HttpRequest_t qt_meta_stringdata_HttpRequest = { - { -QT_MOC_LITERAL(0, 0, 11), // "HttpRequest" -QT_MOC_LITERAL(1, 12, 11), // "requestDone" -QT_MOC_LITERAL(2, 24, 0), // "" -QT_MOC_LITERAL(3, 25, 8), // "response" -QT_MOC_LITERAL(4, 34, 7), // "success" -QT_MOC_LITERAL(5, 42, 27), // "QNetworkReply::NetworkError" -QT_MOC_LITERAL(6, 70, 5), // "error" -QT_MOC_LITERAL(7, 76, 14), // "requestTimeout" -QT_MOC_LITERAL(8, 91, 15) // "requestFinished" - - }, - "HttpRequest\0requestDone\0\0response\0" - "success\0QNetworkReply::NetworkError\0" - "error\0requestTimeout\0requestFinished" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_HttpRequest[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 3, 29, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 7, 0, 36, 2, 0x08 /* Private */, - 8, 0, 37, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, QMetaType::QString, QMetaType::Bool, 0x80000000 | 5, 3, 4, 6, - - // slots: parameters - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void HttpRequest::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->requestDone((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2])),(*reinterpret_cast< QNetworkReply::NetworkError(*)>(_a[3]))); break; - case 1: _t->requestTimeout(); break; - case 2: _t->requestFinished(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (HttpRequest::*)(const QString & , bool , QNetworkReply::NetworkError ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&HttpRequest::requestDone)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject HttpRequest::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_HttpRequest.data, - qt_meta_data_HttpRequest, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *HttpRequest::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *HttpRequest::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_HttpRequest.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int HttpRequest::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void HttpRequest::requestDone(const QString & _t1, bool _t2, QNetworkReply::NetworkError _t3) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)), const_cast(reinterpret_cast(&_t3)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_body.cc b/selfdrive/ui/qt/moc_body.cc deleted file mode 100644 index 4a3cdd82a..000000000 --- a/selfdrive/ui/qt/moc_body.cc +++ /dev/null @@ -1,195 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'body.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "body.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'body.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_RecordButton_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_RecordButton_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_RecordButton_t qt_meta_stringdata_RecordButton = { - { -QT_MOC_LITERAL(0, 0, 12) // "RecordButton" - - }, - "RecordButton" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_RecordButton[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void RecordButton::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject RecordButton::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_RecordButton.data, - qt_meta_data_RecordButton, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *RecordButton::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *RecordButton::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_RecordButton.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int RecordButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_BodyWindow_t { - QByteArrayData data[7]; - char stringdata0[59]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_BodyWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_BodyWindow_t qt_meta_stringdata_BodyWindow = { - { -QT_MOC_LITERAL(0, 0, 10), // "BodyWindow" -QT_MOC_LITERAL(1, 11, 11), // "updateState" -QT_MOC_LITERAL(2, 23, 0), // "" -QT_MOC_LITERAL(3, 24, 7), // "UIState" -QT_MOC_LITERAL(4, 32, 1), // "s" -QT_MOC_LITERAL(5, 34, 17), // "offroadTransition" -QT_MOC_LITERAL(6, 52, 6) // "onroad" - - }, - "BodyWindow\0updateState\0\0UIState\0s\0" - "offroadTransition\0onroad" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_BodyWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 1, 24, 2, 0x08 /* Private */, - 5, 1, 27, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, 0x80000000 | 3, 4, - QMetaType::Void, QMetaType::Bool, 6, - - 0 // eod -}; - -void BodyWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->updateState((*reinterpret_cast< const UIState(*)>(_a[1]))); break; - case 1: _t->offroadTransition((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } -} - -QT_INIT_METAOBJECT const QMetaObject BodyWindow::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_BodyWindow.data, - qt_meta_data_BodyWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *BodyWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *BodyWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_BodyWindow.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int BodyWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_home.cc b/selfdrive/ui/qt/moc_home.cc deleted file mode 100644 index a2580d778..000000000 --- a/selfdrive/ui/qt/moc_home.cc +++ /dev/null @@ -1,309 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'home.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "home.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'home.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_OffroadHome_t { - QByteArrayData data[5]; - char stringdata0[38]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_OffroadHome_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_OffroadHome_t qt_meta_stringdata_OffroadHome = { - { -QT_MOC_LITERAL(0, 0, 11), // "OffroadHome" -QT_MOC_LITERAL(1, 12, 12), // "openSettings" -QT_MOC_LITERAL(2, 25, 0), // "" -QT_MOC_LITERAL(3, 26, 5), // "index" -QT_MOC_LITERAL(4, 32, 5) // "param" - - }, - "OffroadHome\0openSettings\0\0index\0param" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_OffroadHome[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 29, 2, 0x06 /* Public */, - 1, 1, 34, 2, 0x26 /* Public | MethodCloned */, - 1, 0, 37, 2, 0x26 /* Public | MethodCloned */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, QMetaType::QString, 3, 4, - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, - - 0 // eod -}; - -void OffroadHome::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSettings((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - case 1: _t->openSettings((*reinterpret_cast< int(*)>(_a[1]))); break; - case 2: _t->openSettings(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (OffroadHome::*)(int , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&OffroadHome::openSettings)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject OffroadHome::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_OffroadHome.data, - qt_meta_data_OffroadHome, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *OffroadHome::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *OffroadHome::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_OffroadHome.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int OffroadHome::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void OffroadHome::openSettings(int _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_HomeWindow_t { - QByteArrayData data[17]; - char stringdata0[159]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_HomeWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_HomeWindow_t qt_meta_stringdata_HomeWindow = { - { -QT_MOC_LITERAL(0, 0, 10), // "HomeWindow" -QT_MOC_LITERAL(1, 11, 12), // "openSettings" -QT_MOC_LITERAL(2, 24, 0), // "" -QT_MOC_LITERAL(3, 25, 5), // "index" -QT_MOC_LITERAL(4, 31, 5), // "param" -QT_MOC_LITERAL(5, 37, 13), // "closeSettings" -QT_MOC_LITERAL(6, 51, 17), // "offroadTransition" -QT_MOC_LITERAL(7, 69, 7), // "offroad" -QT_MOC_LITERAL(8, 77, 14), // "showDriverView" -QT_MOC_LITERAL(9, 92, 4), // "show" -QT_MOC_LITERAL(10, 97, 7), // "started" -QT_MOC_LITERAL(11, 105, 11), // "showSidebar" -QT_MOC_LITERAL(12, 117, 11), // "updateState" -QT_MOC_LITERAL(13, 129, 7), // "UIState" -QT_MOC_LITERAL(14, 137, 1), // "s" -QT_MOC_LITERAL(15, 139, 16), // "StarPilotUIState" -QT_MOC_LITERAL(16, 156, 2) // "fs" - - }, - "HomeWindow\0openSettings\0\0index\0param\0" - "closeSettings\0offroadTransition\0offroad\0" - "showDriverView\0show\0started\0showSidebar\0" - "updateState\0UIState\0s\0StarPilotUIState\0" - "fs" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_HomeWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 9, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 4, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 59, 2, 0x06 /* Public */, - 1, 1, 64, 2, 0x26 /* Public | MethodCloned */, - 1, 0, 67, 2, 0x26 /* Public | MethodCloned */, - 5, 0, 68, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 6, 1, 69, 2, 0x0a /* Public */, - 8, 2, 72, 2, 0x0a /* Public */, - 8, 1, 77, 2, 0x2a /* Public | MethodCloned */, - 11, 1, 80, 2, 0x0a /* Public */, - 12, 2, 83, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, QMetaType::QString, 3, 4, - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Bool, 7, - QMetaType::Void, QMetaType::Bool, QMetaType::Bool, 9, 10, - QMetaType::Void, QMetaType::Bool, 9, - QMetaType::Void, QMetaType::Bool, 9, - QMetaType::Void, 0x80000000 | 13, 0x80000000 | 15, 14, 16, - - 0 // eod -}; - -void HomeWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSettings((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - case 1: _t->openSettings((*reinterpret_cast< int(*)>(_a[1]))); break; - case 2: _t->openSettings(); break; - case 3: _t->closeSettings(); break; - case 4: _t->offroadTransition((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 5: _t->showDriverView((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; - case 6: _t->showDriverView((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 7: _t->showSidebar((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 8: _t->updateState((*reinterpret_cast< const UIState(*)>(_a[1])),(*reinterpret_cast< const StarPilotUIState(*)>(_a[2]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (HomeWindow::*)(int , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&HomeWindow::openSettings)) { - *result = 0; - return; - } - } - { - using _t = void (HomeWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&HomeWindow::closeSettings)) { - *result = 3; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject HomeWindow::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_HomeWindow.data, - qt_meta_data_HomeWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *HomeWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *HomeWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_HomeWindow.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int HomeWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 9) - qt_static_metacall(this, _c, _id, _a); - _id -= 9; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 9) - *reinterpret_cast(_a[0]) = -1; - _id -= 9; - } - return _id; -} - -// SIGNAL 0 -void HomeWindow::openSettings(int _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 3 -void HomeWindow::closeSettings() -{ - QMetaObject::activate(this, &staticMetaObject, 3, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_prime_state.cc b/selfdrive/ui/qt/moc_prime_state.cc deleted file mode 100644 index c9f6c414c..000000000 --- a/selfdrive/ui/qt/moc_prime_state.cc +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'prime_state.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "prime_state.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'prime_state.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_PrimeState_t { - QByteArrayData data[5]; - char stringdata0[48]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_PrimeState_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_PrimeState_t qt_meta_stringdata_PrimeState = { - { -QT_MOC_LITERAL(0, 0, 10), // "PrimeState" -QT_MOC_LITERAL(1, 11, 7), // "changed" -QT_MOC_LITERAL(2, 19, 0), // "" -QT_MOC_LITERAL(3, 20, 16), // "PrimeState::Type" -QT_MOC_LITERAL(4, 37, 10) // "prime_type" - - }, - "PrimeState\0changed\0\0PrimeState::Type\0" - "prime_type" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_PrimeState[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, 0x80000000 | 3, 4, - - 0 // eod -}; - -void PrimeState::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->changed((*reinterpret_cast< PrimeState::Type(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (PrimeState::*)(PrimeState::Type ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&PrimeState::changed)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject PrimeState::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_PrimeState.data, - qt_meta_data_PrimeState, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *PrimeState::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *PrimeState::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_PrimeState.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int PrimeState::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void PrimeState::changed(PrimeState::Type _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_sidebar.cc b/selfdrive/ui/qt/moc_sidebar.cc deleted file mode 100644 index 8531d4b5d..000000000 --- a/selfdrive/ui/qt/moc_sidebar.cc +++ /dev/null @@ -1,323 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'sidebar.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "sidebar.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'sidebar.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_Sidebar_t { - QByteArrayData data[23]; - char stringdata0[236]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Sidebar_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Sidebar_t qt_meta_stringdata_Sidebar = { - { -QT_MOC_LITERAL(0, 0, 7), // "Sidebar" -QT_MOC_LITERAL(1, 8, 12), // "openSettings" -QT_MOC_LITERAL(2, 21, 0), // "" -QT_MOC_LITERAL(3, 22, 5), // "index" -QT_MOC_LITERAL(4, 28, 5), // "param" -QT_MOC_LITERAL(5, 34, 12), // "valueChanged" -QT_MOC_LITERAL(6, 47, 17), // "offroadTransition" -QT_MOC_LITERAL(7, 65, 7), // "offroad" -QT_MOC_LITERAL(8, 73, 11), // "updateState" -QT_MOC_LITERAL(9, 85, 7), // "UIState" -QT_MOC_LITERAL(10, 93, 1), // "s" -QT_MOC_LITERAL(11, 95, 16), // "StarPilotUIState" -QT_MOC_LITERAL(12, 112, 2), // "fs" -QT_MOC_LITERAL(13, 115, 13), // "connectStatus" -QT_MOC_LITERAL(14, 129, 10), // "ItemStatus" -QT_MOC_LITERAL(15, 140, 11), // "pandaStatus" -QT_MOC_LITERAL(16, 152, 10), // "tempStatus" -QT_MOC_LITERAL(17, 163, 7), // "netType" -QT_MOC_LITERAL(18, 171, 11), // "netStrength" -QT_MOC_LITERAL(19, 183, 14), // "recordingAudio" -QT_MOC_LITERAL(20, 198, 10), // "chipStatus" -QT_MOC_LITERAL(21, 209, 12), // "memoryStatus" -QT_MOC_LITERAL(22, 222, 13) // "storageStatus" - - }, - "Sidebar\0openSettings\0\0index\0param\0" - "valueChanged\0offroadTransition\0offroad\0" - "updateState\0UIState\0s\0StarPilotUIState\0" - "fs\0connectStatus\0ItemStatus\0pandaStatus\0" - "tempStatus\0netType\0netStrength\0" - "recordingAudio\0chipStatus\0memoryStatus\0" - "storageStatus" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Sidebar[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 6, 14, // methods - 9, 62, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 4, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 44, 2, 0x06 /* Public */, - 1, 1, 49, 2, 0x26 /* Public | MethodCloned */, - 1, 0, 52, 2, 0x26 /* Public | MethodCloned */, - 5, 0, 53, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 6, 1, 54, 2, 0x0a /* Public */, - 8, 2, 57, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, QMetaType::QString, 3, 4, - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Bool, 7, - QMetaType::Void, 0x80000000 | 9, 0x80000000 | 11, 10, 12, - - // properties: name, type, flags - 13, 0x80000000 | 14, 0x0049500b, - 15, 0x80000000 | 14, 0x0049500b, - 16, 0x80000000 | 14, 0x0049500b, - 17, QMetaType::QString, 0x00495003, - 18, QMetaType::Int, 0x00495003, - 19, QMetaType::Bool, 0x00495003, - 20, 0x80000000 | 14, 0x0049500b, - 21, 0x80000000 | 14, 0x0049500b, - 22, 0x80000000 | 14, 0x0049500b, - - // properties: notify_signal_id - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - 3, - - 0 // eod -}; - -void Sidebar::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSettings((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - case 1: _t->openSettings((*reinterpret_cast< int(*)>(_a[1]))); break; - case 2: _t->openSettings(); break; - case 3: _t->valueChanged(); break; - case 4: _t->offroadTransition((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 5: _t->updateState((*reinterpret_cast< const UIState(*)>(_a[1])),(*reinterpret_cast< const StarPilotUIState(*)>(_a[2]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (Sidebar::*)(int , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Sidebar::openSettings)) { - *result = 0; - return; - } - } - { - using _t = void (Sidebar::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Sidebar::valueChanged)) { - *result = 3; - return; - } - } - } else if (_c == QMetaObject::RegisterPropertyMetaType) { - switch (_id) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 8: - case 7: - case 6: - case 2: - case 1: - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< ItemStatus >(); break; - } - } - -#ifndef QT_NO_PROPERTIES - else if (_c == QMetaObject::ReadProperty) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - void *_v = _a[0]; - switch (_id) { - case 0: *reinterpret_cast< ItemStatus*>(_v) = _t->connect_status; break; - case 1: *reinterpret_cast< ItemStatus*>(_v) = _t->panda_status; break; - case 2: *reinterpret_cast< ItemStatus*>(_v) = _t->temp_status; break; - case 3: *reinterpret_cast< QString*>(_v) = _t->net_type; break; - case 4: *reinterpret_cast< int*>(_v) = _t->net_strength; break; - case 5: *reinterpret_cast< bool*>(_v) = _t->recording_audio; break; - case 6: *reinterpret_cast< ItemStatus*>(_v) = _t->chip_status; break; - case 7: *reinterpret_cast< ItemStatus*>(_v) = _t->memory_status; break; - case 8: *reinterpret_cast< ItemStatus*>(_v) = _t->storage_status; break; - default: break; - } - } else if (_c == QMetaObject::WriteProperty) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - void *_v = _a[0]; - switch (_id) { - case 0: - if (_t->connect_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->connect_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 1: - if (_t->panda_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->panda_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 2: - if (_t->temp_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->temp_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 3: - if (_t->net_type != *reinterpret_cast< QString*>(_v)) { - _t->net_type = *reinterpret_cast< QString*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 4: - if (_t->net_strength != *reinterpret_cast< int*>(_v)) { - _t->net_strength = *reinterpret_cast< int*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 5: - if (_t->recording_audio != *reinterpret_cast< bool*>(_v)) { - _t->recording_audio = *reinterpret_cast< bool*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 6: - if (_t->chip_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->chip_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 7: - if (_t->memory_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->memory_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - case 8: - if (_t->storage_status != *reinterpret_cast< ItemStatus*>(_v)) { - _t->storage_status = *reinterpret_cast< ItemStatus*>(_v); - Q_EMIT _t->valueChanged(); - } - break; - default: break; - } - } else if (_c == QMetaObject::ResetProperty) { - } -#endif // QT_NO_PROPERTIES -} - -QT_INIT_METAOBJECT const QMetaObject Sidebar::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_Sidebar.data, - qt_meta_data_Sidebar, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *Sidebar::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Sidebar::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_Sidebar.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int Sidebar::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 6) - qt_static_metacall(this, _c, _id, _a); - _id -= 6; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 6) - *reinterpret_cast(_a[0]) = -1; - _id -= 6; - } -#ifndef QT_NO_PROPERTIES - else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty - || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { - qt_static_metacall(this, _c, _id, _a); - _id -= 9; - } else if (_c == QMetaObject::QueryPropertyDesignable) { - _id -= 9; - } else if (_c == QMetaObject::QueryPropertyScriptable) { - _id -= 9; - } else if (_c == QMetaObject::QueryPropertyStored) { - _id -= 9; - } else if (_c == QMetaObject::QueryPropertyEditable) { - _id -= 9; - } else if (_c == QMetaObject::QueryPropertyUser) { - _id -= 9; - } -#endif // QT_NO_PROPERTIES - return _id; -} - -// SIGNAL 0 -void Sidebar::openSettings(int _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 3 -void Sidebar::valueChanged() -{ - QMetaObject::activate(this, &staticMetaObject, 3, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_util.cc b/selfdrive/ui/qt/moc_util.cc deleted file mode 100644 index 6dcabe07a..000000000 --- a/selfdrive/ui/qt/moc_util.cc +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'util.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "util.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'util.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ParamWatcher_t { - QByteArrayData data[5]; - char stringdata0[50]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ParamWatcher_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ParamWatcher_t qt_meta_stringdata_ParamWatcher = { - { -QT_MOC_LITERAL(0, 0, 12), // "ParamWatcher" -QT_MOC_LITERAL(1, 13, 12), // "paramChanged" -QT_MOC_LITERAL(2, 26, 0), // "" -QT_MOC_LITERAL(3, 27, 10), // "param_name" -QT_MOC_LITERAL(4, 38, 11) // "param_value" - - }, - "ParamWatcher\0paramChanged\0\0param_name\0" - "param_value" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ParamWatcher[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::QString, QMetaType::QString, 3, 4, - - 0 // eod -}; - -void ParamWatcher::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->paramChanged((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (ParamWatcher::*)(const QString & , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ParamWatcher::paramChanged)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject ParamWatcher::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_ParamWatcher.data, - qt_meta_data_ParamWatcher, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ParamWatcher::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ParamWatcher::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ParamWatcher.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int ParamWatcher::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void ParamWatcher::paramChanged(const QString & _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/moc_window.cc b/selfdrive/ui/qt/moc_window.cc deleted file mode 100644 index 8d4f6b7bf..000000000 --- a/selfdrive/ui/qt/moc_window.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'window.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "window.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'window.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_MainWindow_t { - QByteArrayData data[1]; - char stringdata0[11]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = { - { -QT_MOC_LITERAL(0, 0, 10) // "MainWindow" - - }, - "MainWindow" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_MainWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_MainWindow.data, - qt_meta_data_MainWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *MainWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *MainWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/network/moc_networking.cc b/selfdrive/ui/qt/network/moc_networking.cc deleted file mode 100644 index 1943db1a4..000000000 --- a/selfdrive/ui/qt/network/moc_networking.cc +++ /dev/null @@ -1,519 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'networking.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "networking.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'networking.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_WifiItem_t { - QByteArrayData data[6]; - char stringdata0[51]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_WifiItem_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_WifiItem_t qt_meta_stringdata_WifiItem = { - { -QT_MOC_LITERAL(0, 0, 8), // "WifiItem" -QT_MOC_LITERAL(1, 9, 16), // "connectToNetwork" -QT_MOC_LITERAL(2, 26, 0), // "" -QT_MOC_LITERAL(3, 27, 7), // "Network" -QT_MOC_LITERAL(4, 35, 1), // "n" -QT_MOC_LITERAL(5, 37, 13) // "forgotNetwork" - - }, - "WifiItem\0connectToNetwork\0\0Network\0n\0" - "forgotNetwork" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_WifiItem[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 24, 2, 0x06 /* Public */, - 5, 1, 27, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, 0x80000000 | 3, 4, - QMetaType::Void, 0x80000000 | 3, 4, - - 0 // eod -}; - -void WifiItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->connectToNetwork((*reinterpret_cast< const Network(*)>(_a[1]))); break; - case 1: _t->forgotNetwork((*reinterpret_cast< const Network(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (WifiItem::*)(const Network ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WifiItem::connectToNetwork)) { - *result = 0; - return; - } - } - { - using _t = void (WifiItem::*)(const Network ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WifiItem::forgotNetwork)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject WifiItem::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_WifiItem.data, - qt_meta_data_WifiItem, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *WifiItem::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *WifiItem::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_WifiItem.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int WifiItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void WifiItem::connectToNetwork(const Network _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void WifiItem::forgotNetwork(const Network _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, _a); -} -struct qt_meta_stringdata_WifiUI_t { - QByteArrayData data[6]; - char stringdata0[43]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_WifiUI_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_WifiUI_t qt_meta_stringdata_WifiUI = { - { -QT_MOC_LITERAL(0, 0, 6), // "WifiUI" -QT_MOC_LITERAL(1, 7, 16), // "connectToNetwork" -QT_MOC_LITERAL(2, 24, 0), // "" -QT_MOC_LITERAL(3, 25, 7), // "Network" -QT_MOC_LITERAL(4, 33, 1), // "n" -QT_MOC_LITERAL(5, 35, 7) // "refresh" - - }, - "WifiUI\0connectToNetwork\0\0Network\0n\0" - "refresh" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_WifiUI[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 24, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 5, 0, 27, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, 0x80000000 | 3, 4, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void WifiUI::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->connectToNetwork((*reinterpret_cast< const Network(*)>(_a[1]))); break; - case 1: _t->refresh(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (WifiUI::*)(const Network ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WifiUI::connectToNetwork)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject WifiUI::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_WifiUI.data, - qt_meta_data_WifiUI, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *WifiUI::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *WifiUI::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_WifiUI.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int WifiUI::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void WifiUI::connectToNetwork(const Network _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_AdvancedNetworking_t { - QByteArrayData data[7]; - char stringdata0[75]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_AdvancedNetworking_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_AdvancedNetworking_t qt_meta_stringdata_AdvancedNetworking = { - { -QT_MOC_LITERAL(0, 0, 18), // "AdvancedNetworking" -QT_MOC_LITERAL(1, 19, 9), // "backPress" -QT_MOC_LITERAL(2, 29, 0), // "" -QT_MOC_LITERAL(3, 30, 17), // "requestWifiScreen" -QT_MOC_LITERAL(4, 48, 15), // "toggleTethering" -QT_MOC_LITERAL(5, 64, 2), // "id" -QT_MOC_LITERAL(6, 67, 7) // "refresh" - - }, - "AdvancedNetworking\0backPress\0\0" - "requestWifiScreen\0toggleTethering\0id\0" - "refresh" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_AdvancedNetworking[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 4, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 34, 2, 0x06 /* Public */, - 3, 0, 35, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 4, 1, 36, 2, 0x0a /* Public */, - 6, 0, 39, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Int, 5, - QMetaType::Void, - - 0 // eod -}; - -void AdvancedNetworking::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->backPress(); break; - case 1: _t->requestWifiScreen(); break; - case 2: _t->toggleTethering((*reinterpret_cast< int(*)>(_a[1]))); break; - case 3: _t->refresh(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (AdvancedNetworking::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&AdvancedNetworking::backPress)) { - *result = 0; - return; - } - } - { - using _t = void (AdvancedNetworking::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&AdvancedNetworking::requestWifiScreen)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject AdvancedNetworking::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_AdvancedNetworking.data, - qt_meta_data_AdvancedNetworking, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *AdvancedNetworking::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *AdvancedNetworking::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_AdvancedNetworking.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int AdvancedNetworking::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 4) - qt_static_metacall(this, _c, _id, _a); - _id -= 4; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 4) - *reinterpret_cast(_a[0]) = -1; - _id -= 4; - } - return _id; -} - -// SIGNAL 0 -void AdvancedNetworking::backPress() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void AdvancedNetworking::requestWifiScreen() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -struct qt_meta_stringdata_Networking_t { - QByteArrayData data[8]; - char stringdata0[66]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Networking_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Networking_t qt_meta_stringdata_Networking = { - { -QT_MOC_LITERAL(0, 0, 10), // "Networking" -QT_MOC_LITERAL(1, 11, 7), // "refresh" -QT_MOC_LITERAL(2, 19, 0), // "" -QT_MOC_LITERAL(3, 20, 16), // "connectToNetwork" -QT_MOC_LITERAL(4, 37, 7), // "Network" -QT_MOC_LITERAL(5, 45, 1), // "n" -QT_MOC_LITERAL(6, 47, 13), // "wrongPassword" -QT_MOC_LITERAL(7, 61, 4) // "ssid" - - }, - "Networking\0refresh\0\0connectToNetwork\0" - "Network\0n\0wrongPassword\0ssid" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Networking[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 0, 29, 2, 0x0a /* Public */, - 3, 1, 30, 2, 0x08 /* Private */, - 6, 1, 33, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, - QMetaType::Void, 0x80000000 | 4, 5, - QMetaType::Void, QMetaType::QString, 7, - - 0 // eod -}; - -void Networking::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->refresh(); break; - case 1: _t->connectToNetwork((*reinterpret_cast< const Network(*)>(_a[1]))); break; - case 2: _t->wrongPassword((*reinterpret_cast< const QString(*)>(_a[1]))); break; - default: ; - } - } -} - -QT_INIT_METAOBJECT const QMetaObject Networking::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_Networking.data, - qt_meta_data_Networking, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *Networking::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Networking::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_Networking.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int Networking::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/network/moc_wifi_manager.cc b/selfdrive/ui/qt/network/moc_wifi_manager.cc deleted file mode 100644 index 24b7f360a..000000000 --- a/selfdrive/ui/qt/network/moc_wifi_manager.cc +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'wifi_manager.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "wifi_manager.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'wifi_manager.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_WifiManager_t { - QByteArrayData data[22]; - char stringdata0[276]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_WifiManager_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_WifiManager_t qt_meta_stringdata_WifiManager = { - { -QT_MOC_LITERAL(0, 0, 11), // "WifiManager" -QT_MOC_LITERAL(1, 12, 13), // "wrongPassword" -QT_MOC_LITERAL(2, 26, 0), // "" -QT_MOC_LITERAL(3, 27, 4), // "ssid" -QT_MOC_LITERAL(4, 32, 13), // "refreshSignal" -QT_MOC_LITERAL(5, 46, 11), // "stateChange" -QT_MOC_LITERAL(6, 58, 9), // "new_state" -QT_MOC_LITERAL(7, 68, 14), // "previous_state" -QT_MOC_LITERAL(8, 83, 13), // "change_reason" -QT_MOC_LITERAL(9, 97, 14), // "propertyChange" -QT_MOC_LITERAL(10, 112, 9), // "interface" -QT_MOC_LITERAL(11, 122, 5), // "props" -QT_MOC_LITERAL(12, 128, 17), // "invalidated_props" -QT_MOC_LITERAL(13, 146, 11), // "deviceAdded" -QT_MOC_LITERAL(14, 158, 15), // "QDBusObjectPath" -QT_MOC_LITERAL(15, 174, 4), // "path" -QT_MOC_LITERAL(16, 179, 17), // "connectionRemoved" -QT_MOC_LITERAL(17, 197, 13), // "newConnection" -QT_MOC_LITERAL(18, 211, 15), // "refreshFinished" -QT_MOC_LITERAL(19, 227, 24), // "QDBusPendingCallWatcher*" -QT_MOC_LITERAL(20, 252, 4), // "call" -QT_MOC_LITERAL(21, 257, 18) // "tetheringActivated" - - }, - "WifiManager\0wrongPassword\0\0ssid\0" - "refreshSignal\0stateChange\0new_state\0" - "previous_state\0change_reason\0" - "propertyChange\0interface\0props\0" - "invalidated_props\0deviceAdded\0" - "QDBusObjectPath\0path\0connectionRemoved\0" - "newConnection\0refreshFinished\0" - "QDBusPendingCallWatcher*\0call\0" - "tetheringActivated" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_WifiManager[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 9, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 59, 2, 0x06 /* Public */, - 4, 0, 62, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 5, 3, 63, 2, 0x08 /* Private */, - 9, 3, 70, 2, 0x08 /* Private */, - 13, 1, 77, 2, 0x08 /* Private */, - 16, 1, 80, 2, 0x08 /* Private */, - 17, 1, 83, 2, 0x08 /* Private */, - 18, 1, 86, 2, 0x08 /* Private */, - 21, 1, 89, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, QMetaType::QString, 3, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::UInt, QMetaType::UInt, QMetaType::UInt, 6, 7, 8, - QMetaType::Void, QMetaType::QString, QMetaType::QVariantMap, QMetaType::QStringList, 10, 11, 12, - QMetaType::Void, 0x80000000 | 14, 15, - QMetaType::Void, 0x80000000 | 14, 15, - QMetaType::Void, 0x80000000 | 14, 15, - QMetaType::Void, 0x80000000 | 19, 20, - QMetaType::Void, 0x80000000 | 19, 20, - - 0 // eod -}; - -void WifiManager::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->wrongPassword((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 1: _t->refreshSignal(); break; - case 2: _t->stateChange((*reinterpret_cast< uint(*)>(_a[1])),(*reinterpret_cast< uint(*)>(_a[2])),(*reinterpret_cast< uint(*)>(_a[3]))); break; - case 3: _t->propertyChange((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< const QVariantMap(*)>(_a[2])),(*reinterpret_cast< const QStringList(*)>(_a[3]))); break; - case 4: _t->deviceAdded((*reinterpret_cast< const QDBusObjectPath(*)>(_a[1]))); break; - case 5: _t->connectionRemoved((*reinterpret_cast< const QDBusObjectPath(*)>(_a[1]))); break; - case 6: _t->newConnection((*reinterpret_cast< const QDBusObjectPath(*)>(_a[1]))); break; - case 7: _t->refreshFinished((*reinterpret_cast< QDBusPendingCallWatcher*(*)>(_a[1]))); break; - case 8: _t->tetheringActivated((*reinterpret_cast< QDBusPendingCallWatcher*(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (WifiManager::*)(const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WifiManager::wrongPassword)) { - *result = 0; - return; - } - } - { - using _t = void (WifiManager::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WifiManager::refreshSignal)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject WifiManager::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_WifiManager.data, - qt_meta_data_WifiManager, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *WifiManager::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *WifiManager::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_WifiManager.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int WifiManager::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 9) - qt_static_metacall(this, _c, _id, _a); - _id -= 9; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 9) - *reinterpret_cast(_a[0]) = -1; - _id -= 9; - } - return _id; -} - -// SIGNAL 0 -void WifiManager::wrongPassword(const QString & _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void WifiManager::refreshSignal() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/network/networking.cc b/selfdrive/ui/qt/network/networking.cc deleted file mode 100644 index 55895bb26..000000000 --- a/selfdrive/ui/qt/network/networking.cc +++ /dev/null @@ -1,420 +0,0 @@ -#include "selfdrive/ui/qt/network/networking.h" - -#include - -#include -#include -#include - -#include "selfdrive/ui/qt/qt_window.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/controls.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" - -static const int ICON_WIDTH = 49; - -// Networking functions - -Networking::Networking(QWidget* parent, bool show_advanced) : QFrame(parent) { - main_layout = new QStackedLayout(this); - - wifi = new WifiManager(this); - connect(wifi, &WifiManager::refreshSignal, this, &Networking::refresh); - connect(wifi, &WifiManager::wrongPassword, this, &Networking::wrongPassword); - - wifiScreen = new QWidget(this); - QVBoxLayout* vlayout = new QVBoxLayout(wifiScreen); - vlayout->setContentsMargins(20, 20, 20, 20); - if (show_advanced) { - QPushButton* advancedSettings = new QPushButton(tr("Advanced")); - advancedSettings->setObjectName("advanced_btn"); - advancedSettings->setStyleSheet("margin-right: 30px;"); - advancedSettings->setFixedSize(400, 100); - connect(advancedSettings, &QPushButton::clicked, [=]() { main_layout->setCurrentWidget(an); }); - vlayout->addSpacing(10); - vlayout->addWidget(advancedSettings, 0, Qt::AlignRight); - vlayout->addSpacing(10); - } - - wifiWidget = new WifiUI(this, wifi); - wifiWidget->setObjectName("wifiWidget"); - connect(wifiWidget, &WifiUI::connectToNetwork, this, &Networking::connectToNetwork); - - ScrollView *wifiScroller = new ScrollView(wifiWidget, this); - wifiScroller->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - vlayout->addWidget(wifiScroller, 1); - main_layout->addWidget(wifiScreen); - - an = new AdvancedNetworking(this, wifi); - connect(an, &AdvancedNetworking::backPress, [=]() { main_layout->setCurrentWidget(wifiScreen); }); - connect(an, &AdvancedNetworking::requestWifiScreen, [=]() { main_layout->setCurrentWidget(wifiScreen); }); - main_layout->addWidget(an); - - QPalette pal = palette(); - pal.setColor(QPalette::Window, QColor(0x29, 0x29, 0x29)); - setAutoFillBackground(true); - setPalette(pal); - - setStyleSheet(R"( - #wifiWidget > QPushButton, #back_btn, #advanced_btn { - font-size: 50px; - margin: 0px; - padding: 15px; - border-width: 0; - border-radius: 30px; - color: #dddddd; - background-color: #393939; - } - #back_btn:pressed, #advanced_btn:pressed { - background-color: #4a4a4a; - } - )"); - main_layout->setCurrentWidget(wifiScreen); -} - -void Networking::setPrimeType(PrimeState::Type type) { - an->setGsmVisible(type == PrimeState::PRIME_TYPE_NONE || type == PrimeState::PRIME_TYPE_LITE); - wifi->ipv4_forward = (type == PrimeState::PRIME_TYPE_NONE || type == PrimeState::PRIME_TYPE_LITE); -} - -void Networking::refresh() { - wifiWidget->refresh(); - an->refresh(); -} - -void Networking::connectToNetwork(const Network n) { - if (wifi->isKnownConnection(n.ssid)) { - wifi->activateWifiConnection(n.ssid); - } else if (n.security_type == SecurityType::OPEN) { - wifi->connect(n, false); - } else if (n.security_type == SecurityType::WPA) { - QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); - if (!pass.isEmpty()) { - wifi->connect(n, false, pass); - } - } -} - -void Networking::wrongPassword(const QString &ssid) { - if (wifi->seenNetworks.contains(ssid)) { - const Network &n = wifi->seenNetworks.value(ssid); - QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); - if (!pass.isEmpty()) { - wifi->connect(n, false, pass); - } - } -} - -void Networking::showEvent(QShowEvent *event) { - wifi->start(); -} - -void Networking::hideEvent(QHideEvent *event) { - main_layout->setCurrentWidget(wifiScreen); - wifi->stop(); -} - -// AdvancedNetworking functions - -AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWidget(parent), wifi(wifi) { - - QVBoxLayout* main_layout = new QVBoxLayout(this); - main_layout->setMargin(40); - main_layout->setSpacing(20); - - // Back button - QPushButton* back = new QPushButton(tr("Back")); - back->setObjectName("back_btn"); - back->setFixedSize(400, 100); - connect(back, &QPushButton::clicked, [=]() { emit backPress(); }); - main_layout->addWidget(back, 0, Qt::AlignLeft); - - ListWidget *list = new ListWidget(this); - // Enable tethering layout - std::vector tetheringSelection{tr("Off"), tr("Always"), tr("Only Onroad"), tr("Until Reboot")}; - tetheringToggle = new ButtonParamControl("TetheringEnabled", tr("Enable Tethering"), - tr("Share your device's internet connection with other devices, either all the time or only while driving."), - "", tetheringSelection); - if (params.getInt("TetheringEnabled") == 3) { - params.remove("TetheringEnabled"); - tetheringToggle->setCheckedButton(0); - } - list->addItem(tetheringToggle); - QObject::connect(tetheringToggle, &MultiButtonControl::buttonClicked, this, &AdvancedNetworking::toggleTethering); - - // Change tethering password - ButtonControl *editPasswordButton = new ButtonControl(tr("Tethering Password"), tr("EDIT")); - connect(editPasswordButton, &ButtonControl::clicked, [=]() { - QString pass = InputDialog::getText(tr("Enter new tethering password"), this, "", true, 8, wifi->getTetheringPassword()); - if (!pass.isEmpty()) { - wifi->changeTetheringPassword(pass); - } - }); - list->addItem(editPasswordButton); - - // IP address - ipLabel = new LabelControl(tr("IP Address"), wifi->ipv4_address); - list->addItem(ipLabel); - - // Roaming toggle - const bool roamingEnabled = params.getBool("GsmRoaming"); - roamingToggle = new ToggleControl(tr("Enable Roaming"), "", "", roamingEnabled); - QObject::connect(roamingToggle, &ToggleControl::toggleFlipped, [=](bool state) { - params.putBool("GsmRoaming", state); - wifi->updateGsmSettings(state, QString::fromStdString(params.get("GsmApn")), params.getBool("GsmMetered")); - }); - list->addItem(roamingToggle); - - // APN settings - editApnButton = new ButtonControl(tr("APN Setting"), tr("EDIT")); - connect(editApnButton, &ButtonControl::clicked, [=]() { - const QString cur_apn = QString::fromStdString(params.get("GsmApn")); - QString apn = InputDialog::getText(tr("Enter APN"), this, tr("leave blank for automatic configuration"), false, -1, cur_apn).trimmed(); - - if (apn.isEmpty()) { - params.remove("GsmApn"); - } else { - params.put("GsmApn", apn.toStdString()); - } - wifi->updateGsmSettings(params.getBool("GsmRoaming"), apn, params.getBool("GsmMetered")); - }); - list->addItem(editApnButton); - - // Cellular metered toggle (prime lite or none) - const bool metered = params.getBool("GsmMetered"); - cellularMeteredToggle = new ToggleControl(tr("Cellular Metered"), tr("Prevent large data uploads when on a metered cellular connection"), "", metered); - QObject::connect(cellularMeteredToggle, &SshToggle::toggleFlipped, [=](bool state) { - params.putBool("GsmMetered", state); - wifi->updateGsmSettings(params.getBool("GsmRoaming"), QString::fromStdString(params.get("GsmApn")), state); - }); - list->addItem(cellularMeteredToggle); - - // Wi-Fi metered toggle - std::vector metered_button_texts{tr("default"), tr("metered"), tr("unmetered")}; - wifiMeteredToggle = new MultiButtonControl(tr("Wi-Fi Network Metered"), tr("Prevent large data uploads when on a metered Wi-Fi connection"), "", metered_button_texts); - QObject::connect(wifiMeteredToggle, &MultiButtonControl::buttonClicked, [=](int id) { - wifiMeteredToggle->setEnabled(false); - MeteredType metered = MeteredType::UNKNOWN; - if (id == NM_METERED_YES) { - metered = MeteredType::YES; - } else if (id == NM_METERED_NO) { - metered = MeteredType::NO; - } - auto pending_call = wifi->setCurrentNetworkMetered(metered); - if (pending_call) { - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(*pending_call); - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [=]() { - refresh(); - watcher->deleteLater(); - }); - } - }); - list->addItem(wifiMeteredToggle); - - // Hidden Network - hiddenNetworkButton = new ButtonControl(tr("Hidden Network"), tr("CONNECT")); - connect(hiddenNetworkButton, &ButtonControl::clicked, [=]() { - QString ssid = InputDialog::getText(tr("Enter SSID"), this, "", false, 1); - if (!ssid.isEmpty()) { - QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(ssid), true, -1); - Network hidden_network; - hidden_network.ssid = ssid.toUtf8(); - if (!pass.isEmpty()) { - hidden_network.security_type = SecurityType::WPA; - wifi->connect(hidden_network, true, pass); - } else { - wifi->connect(hidden_network, true); - } - emit requestWifiScreen(); - } - }); - list->addItem(hiddenNetworkButton); - - // Set initial config - wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn")), metered); - - main_layout->addWidget(new ScrollView(list, this)); - main_layout->addStretch(1); -} - -void AdvancedNetworking::setGsmVisible(bool visible) { - roamingToggle->setVisible(visible); - editApnButton->setVisible(visible); - cellularMeteredToggle->setVisible(visible); -} - -void AdvancedNetworking::refresh() { - ipLabel->setText(wifi->ipv4_address); - tetheringToggle->setEnabled(true); - - if (wifi->isTetheringEnabled() || wifi->ipv4_address == "") { - wifiMeteredToggle->setEnabled(false); - wifiMeteredToggle->setCheckedButton(0); - } else if (wifi->ipv4_address != "") { - MeteredType metered = wifi->currentNetworkMetered(); - wifiMeteredToggle->setEnabled(true); - wifiMeteredToggle->setCheckedButton(static_cast(metered)); - } - - update(); -} - -void AdvancedNetworking::toggleTethering(int id) { - wifi->setTetheringEnabled(id == 1 || id == 2 && uiState()->scene.started || id == 3); - tetheringToggle->setEnabled(false); - if (id != 0) { - wifiMeteredToggle->setEnabled(false); - wifiMeteredToggle->setCheckedButton(0); - } -} - -// WifiUI functions - -WifiUI::WifiUI(QWidget *parent, WifiManager* wifi) : QWidget(parent), wifi(wifi) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(0, 0, 0, 0); - main_layout->setSpacing(0); - - // load imgs - for (const auto &s : {"low", "medium", "high", "full"}) { - QPixmap pix(ASSET_PATH + "/icons/wifi_strength_" + s + ".svg"); - strengths.push_back(pix.scaledToHeight(68, Qt::SmoothTransformation)); - } - lock = QPixmap(ASSET_PATH + "icons/lock_closed.svg").scaledToWidth(ICON_WIDTH, Qt::SmoothTransformation); - checkmark = QPixmap(ASSET_PATH + "icons/checkmark.svg").scaledToWidth(ICON_WIDTH, Qt::SmoothTransformation); - circled_slash = QPixmap(ASSET_PATH + "icons/circled_slash.svg").scaledToWidth(ICON_WIDTH, Qt::SmoothTransformation); - - scanningLabel = new QLabel(tr("Scanning for networks...")); - scanningLabel->setStyleSheet("font-size: 65px;"); - main_layout->addWidget(scanningLabel, 0, Qt::AlignCenter); - - wifi_list_widget = new ListWidget(this); - wifi_list_widget->setVisible(false); - main_layout->addWidget(wifi_list_widget); - - setStyleSheet(R"( - QScrollBar::handle:vertical { - min-height: 0px; - border-radius: 4px; - background-color: #8A8A8A; - } - #forgetBtn { - font-size: 32px; - font-weight: 600; - color: #292929; - background-color: #BDBDBD; - border-width: 1px solid #828282; - border-radius: 5px; - padding: 40px; - padding-bottom: 16px; - padding-top: 16px; - } - #forgetBtn:pressed { - background-color: #828282; - } - #connecting { - font-size: 32px; - font-weight: 600; - color: white; - border-radius: 0; - padding: 27px; - padding-left: 43px; - padding-right: 43px; - background-color: black; - } - #ssidLabel { - text-align: left; - border: none; - padding-top: 50px; - padding-bottom: 50px; - } - #ssidLabel:disabled { - color: #696969; - } - )"); -} - -void WifiUI::refresh() { - bool is_empty = wifi->seenNetworks.isEmpty(); - scanningLabel->setVisible(is_empty); - wifi_list_widget->setVisible(!is_empty); - if (is_empty) return; - - setUpdatesEnabled(false); - - const bool is_tethering_enabled = wifi->isTetheringEnabled(); - QList sortedNetworks = wifi->seenNetworks.values(); - std::sort(sortedNetworks.begin(), sortedNetworks.end(), compare_by_strength); - - int n = 0; - for (Network &network : sortedNetworks) { - QPixmap status_icon; - if (network.connected == ConnectedType::CONNECTED) { - status_icon = checkmark; - } else if (network.security_type == SecurityType::UNSUPPORTED) { - status_icon = circled_slash; - } else if (network.security_type == SecurityType::WPA) { - status_icon = lock; - } - bool show_forget_btn = wifi->isKnownConnection(network.ssid) && !is_tethering_enabled; - QPixmap strength = strengths[strengthLevel(network.strength)]; - - auto item = getItem(n++); - item->setItem(network, status_icon, show_forget_btn, strength); - item->setVisible(true); - } - for (; n < wifi_items.size(); ++n) wifi_items[n]->setVisible(false); - - setUpdatesEnabled(true); -} - -WifiItem *WifiUI::getItem(int n) { - auto item = n < wifi_items.size() ? wifi_items[n] : wifi_items.emplace_back(new WifiItem(tr("CONNECTING..."), tr("FORGET"))); - if (!item->parentWidget()) { - QObject::connect(item, &WifiItem::connectToNetwork, this, &WifiUI::connectToNetwork); - QObject::connect(item, &WifiItem::forgotNetwork, [this](const Network n) { - if (ConfirmationDialog::confirm(tr("Forget Wi-Fi Network \"%1\"?").arg(QString::fromUtf8(n.ssid)), tr("Forget"), this)) - wifi->forgetConnection(n.ssid); - }); - wifi_list_widget->addItem(item); - } - return item; -} - -// WifiItem - -WifiItem::WifiItem(const QString &connecting_text, const QString &forget_text, QWidget *parent) : QWidget(parent) { - QHBoxLayout *hlayout = new QHBoxLayout(this); - hlayout->setContentsMargins(44, 0, 73, 0); - hlayout->setSpacing(50); - - hlayout->addWidget(ssidLabel = new ElidedLabel()); - ssidLabel->setObjectName("ssidLabel"); - ssidLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - hlayout->addWidget(connecting = new QPushButton(connecting_text), 0, Qt::AlignRight); - connecting->setObjectName("connecting"); - hlayout->addWidget(forgetBtn = new QPushButton(forget_text), 0, Qt::AlignRight); - forgetBtn->setObjectName("forgetBtn"); - hlayout->addWidget(iconLabel = new QLabel(), 0, Qt::AlignRight); - hlayout->addWidget(strengthLabel = new QLabel(), 0, Qt::AlignRight); - - iconLabel->setFixedWidth(ICON_WIDTH); - QObject::connect(forgetBtn, &QPushButton::clicked, [this]() { emit forgotNetwork(network); }); - QObject::connect(ssidLabel, &ElidedLabel::clicked, [this]() { - if (network.connected == ConnectedType::DISCONNECTED) emit connectToNetwork(network); - }); -} - -void WifiItem::setItem(const Network &n, const QPixmap &status_icon, bool show_forget_btn, const QPixmap &strength_icon) { - network = n; - - ssidLabel->setText(n.ssid); - ssidLabel->setEnabled(n.security_type != SecurityType::UNSUPPORTED); - ssidLabel->setFont(InterFont(55, network.connected == ConnectedType::DISCONNECTED ? QFont::Normal : QFont::Bold)); - - connecting->setVisible(n.connected == ConnectedType::CONNECTING); - forgetBtn->setVisible(show_forget_btn); - - iconLabel->setPixmap(status_icon); - strengthLabel->setPixmap(strength_icon); -} diff --git a/selfdrive/ui/qt/network/networking.h b/selfdrive/ui/qt/network/networking.h deleted file mode 100644 index e66e431cf..000000000 --- a/selfdrive/ui/qt/network/networking.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#include - -#include "selfdrive/ui/qt/network/wifi_manager.h" -#include "selfdrive/ui/qt/prime_state.h" -#include "selfdrive/ui/qt/widgets/input.h" -#include "selfdrive/ui/qt/widgets/ssh_keys.h" -#include "selfdrive/ui/qt/widgets/toggle.h" -#include "selfdrive/ui/ui.h" - -class WifiItem : public QWidget { - Q_OBJECT -public: - explicit WifiItem(const QString &connecting_text, const QString &forget_text, QWidget* parent = nullptr); - void setItem(const Network& n, const QPixmap &icon, bool show_forget_btn, const QPixmap &strength); - -signals: - // Cannot pass Network by reference. it may change after the signal is sent. - void connectToNetwork(const Network n); - void forgotNetwork(const Network n); - -protected: - ElidedLabel* ssidLabel; - QPushButton* connecting; - QPushButton* forgetBtn; - QLabel* iconLabel; - QLabel* strengthLabel; - Network network; -}; - -class WifiUI : public QWidget { - Q_OBJECT - -public: - explicit WifiUI(QWidget *parent = 0, WifiManager* wifi = 0); - -private: - WifiItem *getItem(int n); - - WifiManager *wifi = nullptr; - QLabel *scanningLabel = nullptr; - QPixmap lock; - QPixmap checkmark; - QPixmap circled_slash; - QVector strengths; - ListWidget *wifi_list_widget = nullptr; - std::vector wifi_items; - -signals: - void connectToNetwork(const Network n); - -public slots: - void refresh(); -}; - -class AdvancedNetworking : public QWidget { - Q_OBJECT -public: - explicit AdvancedNetworking(QWidget* parent = 0, WifiManager* wifi = 0); - void setGsmVisible(bool visible); - -private: - LabelControl* ipLabel; - ButtonParamControl* tetheringToggle; - ToggleControl* roamingToggle; - ButtonControl* editApnButton; - ButtonControl* hiddenNetworkButton; - ToggleControl* cellularMeteredToggle; - MultiButtonControl* wifiMeteredToggle; - WifiManager* wifi = nullptr; - Params params; - -signals: - void backPress(); - void requestWifiScreen(); - -public slots: - void toggleTethering(int id); - void refresh(); -}; - -class Networking : public QFrame { - Q_OBJECT - -public: - explicit Networking(QWidget* parent = 0, bool show_advanced = true); - void setPrimeType(PrimeState::Type type); - WifiManager* wifi = nullptr; - -private: - QStackedLayout* main_layout = nullptr; - QWidget* wifiScreen = nullptr; - AdvancedNetworking* an = nullptr; - WifiUI* wifiWidget; - - void showEvent(QShowEvent* event) override; - void hideEvent(QHideEvent* event) override; - -public slots: - void refresh(); - -private slots: - void connectToNetwork(const Network n); - void wrongPassword(const QString &ssid); -}; diff --git a/selfdrive/ui/qt/network/networkmanager.h b/selfdrive/ui/qt/network/networkmanager.h deleted file mode 100644 index 8bdeaf3bb..000000000 --- a/selfdrive/ui/qt/network/networkmanager.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -/** - * We are using a NetworkManager DBUS API : https://developer.gnome.org/NetworkManager/1.26/spec.html - * */ - -// https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NM80211ApFlags -const int NM_802_11_AP_FLAGS_NONE = 0x00000000; -const int NM_802_11_AP_FLAGS_PRIVACY = 0x00000001; -const int NM_802_11_AP_FLAGS_WPS = 0x00000002; - -// https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NM80211ApSecurityFlags -const int NM_802_11_AP_SEC_PAIR_WEP40 = 0x00000001; -const int NM_802_11_AP_SEC_PAIR_WEP104 = 0x00000002; -const int NM_802_11_AP_SEC_GROUP_WEP40 = 0x00000010; -const int NM_802_11_AP_SEC_GROUP_WEP104 = 0x00000020; -const int NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x00000100; -const int NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x00000200; - -const QString NM_DBUS_PATH = "/org/freedesktop/NetworkManager"; -const QString NM_DBUS_PATH_SETTINGS = "/org/freedesktop/NetworkManager/Settings"; - -const QString NM_DBUS_INTERFACE = "org.freedesktop.NetworkManager"; -const QString NM_DBUS_INTERFACE_PROPERTIES = "org.freedesktop.DBus.Properties"; -const QString NM_DBUS_INTERFACE_SETTINGS = "org.freedesktop.NetworkManager.Settings"; -const QString NM_DBUS_INTERFACE_SETTINGS_CONNECTION = "org.freedesktop.NetworkManager.Settings.Connection"; -const QString NM_DBUS_INTERFACE_DEVICE = "org.freedesktop.NetworkManager.Device"; -const QString NM_DBUS_INTERFACE_DEVICE_WIRELESS = "org.freedesktop.NetworkManager.Device.Wireless"; -const QString NM_DBUS_INTERFACE_ACCESS_POINT = "org.freedesktop.NetworkManager.AccessPoint"; -const QString NM_DBUS_INTERFACE_ACTIVE_CONNECTION = "org.freedesktop.NetworkManager.Connection.Active"; -const QString NM_DBUS_INTERFACE_IP4_CONFIG = "org.freedesktop.NetworkManager.IP4Config"; - -const QString NM_DBUS_SERVICE = "org.freedesktop.NetworkManager"; - -const int NM_DEVICE_STATE_UNKNOWN = 0; -const int NM_DEVICE_STATE_ACTIVATED = 100; -const int NM_DEVICE_STATE_NEED_AUTH = 60; -const int NM_DEVICE_TYPE_WIFI = 2; -const int NM_DEVICE_TYPE_MODEM = 8; -const int NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT = 8; -const int DBUS_TIMEOUT = 100; - -// https://developer-old.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMMetered -const int NM_METERED_UNKNOWN = 0; -const int NM_METERED_YES = 1; -const int NM_METERED_NO = 2; -const int NM_METERED_GUESS_YES = 3; -const int NM_METERED_GUESS_NO = 4; diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc deleted file mode 100644 index d4ad8974b..000000000 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ /dev/null @@ -1,539 +0,0 @@ -#include "selfdrive/ui/qt/network/wifi_manager.h" - -#include - -#include "common/swaglog.h" -#include "selfdrive/ui/qt/util.h" - -bool compare_by_strength(const Network &a, const Network &b) { - return std::tuple(a.connected, strengthLevel(a.strength), b.ssid) > - std::tuple(b.connected, strengthLevel(b.strength), a.ssid); -} - -template -T call(const QString &path, const QString &interface, const QString &method, Args &&...args) { - QDBusInterface nm(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); - nm.setTimeout(DBUS_TIMEOUT); - - QDBusMessage response = nm.call(method, std::forward(args)...); - if (response.type() == QDBusMessage::ErrorMessage) { - qCritical() << "DBus call error:" << response.errorMessage(); - return T(); - } - - if constexpr (std::is_same_v) { - return response; - } else if (response.arguments().count() >= 1) { - QVariant vFirst = response.arguments().at(0).value().variant(); - if (vFirst.canConvert()) { - return vFirst.value(); - } - QDebug critical = qCritical(); - critical << "Variant unpacking failure :" << method << ','; - (critical << ... << args); - } - return T(); -} - -template -QDBusPendingCall asyncCall(const QString &path, const QString &interface, const QString &method, Args &&...args) { - QDBusInterface nm = QDBusInterface(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); - return nm.asyncCall(method, args...); -} - -bool emptyPath(const QString &path) { - return path == "" || path == "/"; -} - -WifiManager::WifiManager(QObject *parent) : QObject(parent) { - qDBusRegisterMetaType(); - qDBusRegisterMetaType(); - - // Set tethering ssid as "weedle" + first 4 characters of a dongle id - tethering_ssid = "weedle"; - if (auto dongle_id = getDongleId()) { - tethering_ssid += "-" + dongle_id->left(4); - } - - adapter = getAdapter(); - if (!adapter.isEmpty()) { - setup(); - } else { - QDBusConnection::systemBus().connect(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, "DeviceAdded", this, SLOT(deviceAdded(QDBusObjectPath))); - } - - timer.callOnTimeout(this, &WifiManager::requestScan); - - initConnections(); -} - -void WifiManager::setup() { - auto bus = QDBusConnection::systemBus(); - bus.connect(NM_DBUS_SERVICE, adapter, NM_DBUS_INTERFACE_DEVICE, "StateChanged", this, SLOT(stateChange(unsigned int, unsigned int, unsigned int))); - bus.connect(NM_DBUS_SERVICE, adapter, NM_DBUS_INTERFACE_PROPERTIES, "PropertiesChanged", this, SLOT(propertyChange(QString, QVariantMap, QStringList))); - - bus.connect(NM_DBUS_SERVICE, NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "ConnectionRemoved", this, SLOT(connectionRemoved(QDBusObjectPath))); - bus.connect(NM_DBUS_SERVICE, NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "NewConnection", this, SLOT(newConnection(QDBusObjectPath))); - - raw_adapter_state = call(adapter, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_DEVICE, "State"); - activeAp = call(adapter, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_DEVICE_WIRELESS, "ActiveAccessPoint").path(); - - requestScan(); -} - -void WifiManager::start() { - timer.start(5000); - refreshNetworks(); -} - -void WifiManager::stop() { - timer.stop(); -} - -void WifiManager::refreshNetworks() { - if (adapter.isEmpty() || !timer.isActive()) return; - - QDBusPendingCall pending_call = asyncCall(adapter, NM_DBUS_INTERFACE_DEVICE_WIRELESS, "GetAllAccessPoints"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pending_call); - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, &WifiManager::refreshFinished); -} - -void WifiManager::refreshFinished(QDBusPendingCallWatcher *watcher) { - ipv4_address = getIp4Address(); - seenNetworks.clear(); - - const QDBusReply> watcher_reply = *watcher; - if (!watcher_reply.isValid()) { - qCritical() << "Failed to refresh"; - watcher->deleteLater(); - return; - } - - for (const QDBusObjectPath &path : watcher_reply.value()) { - QDBusReply reply = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); - if (!reply.isValid()) { - qCritical() << "Failed to retrieve properties for path:" << path.path(); - continue; - } - - auto properties = reply.value(); - const QByteArray ssid = properties["Ssid"].toByteArray(); - if (ssid.isEmpty()) continue; - - // May be multiple access points for each SSID. - // Use first for ssid and security type, then update connected status and strength using all - if (!seenNetworks.contains(ssid)) { - seenNetworks[ssid] = {ssid, 0U, ConnectedType::DISCONNECTED, getSecurityType(properties)}; - } - - if (path.path() == activeAp) { - seenNetworks[ssid].connected = (ssid == connecting_to_network) ? ConnectedType::CONNECTING : ConnectedType::CONNECTED; - } - - uint32_t strength = properties["Strength"].toUInt(); - if (seenNetworks[ssid].strength < strength) { - seenNetworks[ssid].strength = strength; - } - } - - emit refreshSignal(); - watcher->deleteLater(); -} - -QString WifiManager::getIp4Address() { - if (raw_adapter_state != NM_DEVICE_STATE_ACTIVATED) return ""; - - for (const auto &p : getActiveConnections()) { - QString type = call(p.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Type"); - if (type == "802-11-wireless") { - auto ip4config = call(p.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Ip4Config"); - const auto &arr = call(ip4config.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_IP4_CONFIG, "AddressData"); - QVariantMap path; - arr.beginArray(); - while (!arr.atEnd()) { - arr >> path; - arr.endArray(); - return path.value("address").value(); - } - arr.endArray(); - } - } - return ""; -} - -SecurityType WifiManager::getSecurityType(const QVariantMap &properties) { - int sflag = properties["Flags"].toUInt(); - int wpaflag = properties["WpaFlags"].toUInt(); - int rsnflag = properties["RsnFlags"].toUInt(); - int wpa_props = wpaflag | rsnflag; - - // obtained by looking at flags of networks in the office as reported by an Android phone - const int supports_wpa = NM_802_11_AP_SEC_PAIR_WEP40 | NM_802_11_AP_SEC_PAIR_WEP104 | NM_802_11_AP_SEC_GROUP_WEP40 | NM_802_11_AP_SEC_GROUP_WEP104 | NM_802_11_AP_SEC_KEY_MGMT_PSK; - - if ((sflag == NM_802_11_AP_FLAGS_NONE) || ((sflag & NM_802_11_AP_FLAGS_WPS) && !(wpa_props & supports_wpa))) { - return SecurityType::OPEN; - } else if ((sflag & NM_802_11_AP_FLAGS_PRIVACY) && (wpa_props & supports_wpa) && !(wpa_props & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) { - return SecurityType::WPA; - } else { - LOGW("Unsupported network! sflag: %d, wpaflag: %d, rsnflag: %d", sflag, wpaflag, rsnflag); - return SecurityType::UNSUPPORTED; - } -} - -void WifiManager::connect(const Network &n, const bool is_hidden, const QString &password, const QString &username) { - setCurrentConnecting(n.ssid); - forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting - Connection connection; - connection["connection"]["type"] = "802-11-wireless"; - connection["connection"]["uuid"] = QUuid::createUuid().toString().remove('{').remove('}'); - connection["connection"]["id"] = "openpilot connection " + QString::fromStdString(n.ssid.toStdString()); - connection["connection"]["autoconnect-retries"] = 0; - - connection["802-11-wireless"]["ssid"] = n.ssid; - connection["802-11-wireless"]["hidden"] = is_hidden; - connection["802-11-wireless"]["mode"] = "infrastructure"; - - if (n.security_type == SecurityType::WPA) { - connection["802-11-wireless-security"]["key-mgmt"] = "wpa-psk"; - connection["802-11-wireless-security"]["auth-alg"] = "open"; - connection["802-11-wireless-security"]["psk"] = password; - } - - connection["ipv4"]["method"] = "auto"; - connection["ipv4"]["dns-priority"] = 600; - connection["ipv6"]["method"] = "ignore"; - - asyncCall(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); -} - -void WifiManager::deactivateConnectionBySsid(const QString &ssid) { - for (QDBusObjectPath active_connection : getActiveConnections()) { - auto pth = call(active_connection.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "SpecificObject"); - if (!emptyPath(pth.path())) { - QString Ssid = get_property(pth.path(), "Ssid"); - if (Ssid == ssid) { - deactivateConnection(active_connection); - return; - } - } - } -} - -void WifiManager::deactivateConnection(const QDBusObjectPath &path) { - asyncCall(NM_DBUS_PATH, NM_DBUS_INTERFACE, "DeactivateConnection", QVariant::fromValue(path)); -} - -QVector WifiManager::getActiveConnections() { - auto result = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "ActiveConnections"); - return qdbus_cast>(result); -} - -bool WifiManager::isKnownConnection(const QString &ssid) { - return !getConnectionPath(ssid).path().isEmpty(); -} - -void WifiManager::forgetConnection(const QString &ssid) { - const QDBusObjectPath &path = getConnectionPath(ssid); - if (!path.path().isEmpty()) { - call(path.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "Delete"); - } -} - -void WifiManager::setCurrentConnecting(const QString &ssid) { - connecting_to_network = ssid; - for (auto &network : seenNetworks) { - network.connected = (network.ssid == ssid) ? ConnectedType::CONNECTING : ConnectedType::DISCONNECTED; - } - emit refreshSignal(); -} - -uint WifiManager::getAdapterType(const QDBusObjectPath &path) { - return call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_DEVICE, "DeviceType"); -} - -void WifiManager::requestScan() { - if (!adapter.isEmpty()) { - asyncCall(adapter, NM_DBUS_INTERFACE_DEVICE_WIRELESS, "RequestScan", QVariantMap()); - } -} - -QByteArray WifiManager::get_property(const QString &network_path , const QString &property) { - return call(network_path, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACCESS_POINT, property); -} - -QString WifiManager::getAdapter(const uint adapter_type) { - QDBusReply> response = call(NM_DBUS_PATH, NM_DBUS_INTERFACE, "GetDevices"); - for (const QDBusObjectPath &path : response.value()) { - if (getAdapterType(path) == adapter_type) { - return path.path(); - } - } - return ""; -} - -void WifiManager::stateChange(unsigned int new_state, unsigned int previous_state, unsigned int change_reason) { - raw_adapter_state = new_state; - if (new_state == NM_DEVICE_STATE_NEED_AUTH && change_reason == NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT && !connecting_to_network.isEmpty()) { - forgetConnection(connecting_to_network); - emit wrongPassword(connecting_to_network); - } else if (new_state == NM_DEVICE_STATE_ACTIVATED) { - connecting_to_network = ""; - refreshNetworks(); - } -} - -// https://developer.gnome.org/NetworkManager/stable/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html -void WifiManager::propertyChange(const QString &interface, const QVariantMap &props, const QStringList &invalidated_props) { - if (interface == NM_DBUS_INTERFACE_DEVICE_WIRELESS && props.contains("LastScan")) { - refreshNetworks(); - } else if (interface == NM_DBUS_INTERFACE_DEVICE_WIRELESS && props.contains("ActiveAccessPoint")) { - activeAp = props.value("ActiveAccessPoint").value().path(); - } -} - -void WifiManager::deviceAdded(const QDBusObjectPath &path) { - if (getAdapterType(path) == NM_DEVICE_TYPE_WIFI && emptyPath(adapter)) { - adapter = path.path(); - setup(); - } -} - -void WifiManager::connectionRemoved(const QDBusObjectPath &path) { - knownConnections.remove(path); -} - -void WifiManager::newConnection(const QDBusObjectPath &path) { - Connection settings = getConnectionSettings(path); - if (settings.value("connection").value("type") == "802-11-wireless") { - knownConnections[path] = settings.value("802-11-wireless").value("ssid").toString(); - if (knownConnections[path] != tethering_ssid) { - activateWifiConnection(knownConnections[path]); - } - } -} - -QDBusObjectPath WifiManager::getConnectionPath(const QString &ssid) { - return knownConnections.key(ssid); -} - -Connection WifiManager::getConnectionSettings(const QDBusObjectPath &path) { - return QDBusReply(call(path.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "GetSettings")).value(); -} - -void WifiManager::initConnections() { - const QDBusReply> response = call(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "ListConnections"); - for (const QDBusObjectPath &path : response.value()) { - const Connection settings = getConnectionSettings(path); - if (settings.value("connection").value("type") == "802-11-wireless") { - knownConnections[path] = settings.value("802-11-wireless").value("ssid").toString(); - } else if (settings.value("connection").value("id") == "lte") { - lteConnectionPath = path; - } - } - - if (!isKnownConnection(tethering_ssid)) { - addTetheringConnection(); - } -} - -std::optional WifiManager::activateWifiConnection(const QString &ssid) { - const QDBusObjectPath &path = getConnectionPath(ssid); - if (!path.path().isEmpty()) { - setCurrentConnecting(ssid); - return asyncCall(NM_DBUS_PATH, NM_DBUS_INTERFACE, "ActivateConnection", QVariant::fromValue(path), QVariant::fromValue(QDBusObjectPath(adapter)), QVariant::fromValue(QDBusObjectPath("/"))); - } - return std::nullopt; -} - -void WifiManager::activateModemConnection(const QDBusObjectPath &path) { - QString modem = getAdapter(NM_DEVICE_TYPE_MODEM); - if (!path.path().isEmpty() && !modem.isEmpty()) { - asyncCall(NM_DBUS_PATH, NM_DBUS_INTERFACE, "ActivateConnection", QVariant::fromValue(path), QVariant::fromValue(QDBusObjectPath(modem)), QVariant::fromValue(QDBusObjectPath("/"))); - } -} - -// function matches tici/hardware.py -// FIXME: it can mistakenly show CELL when connected to WIFI -NetworkType WifiManager::currentNetworkType() { - auto primary_conn = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "PrimaryConnection"); - auto primary_type = call(primary_conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Type"); - - if (primary_type == "802-3-ethernet") { - return NetworkType::ETHERNET; - } else if (primary_type == "802-11-wireless" && !isTetheringEnabled()) { - return NetworkType::WIFI; - } else { - for (const QDBusObjectPath &conn : getActiveConnections()) { - auto type = call(conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Type"); - if (type == "gsm") { - return NetworkType::CELL; - } - } - } - return NetworkType::NONE; -} - -MeteredType WifiManager::currentNetworkMetered() { - MeteredType metered = MeteredType::UNKNOWN; - for (const auto &active_conn : getActiveConnections()) { - QString type = call(active_conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Type"); - if (type == "802-11-wireless") { - QDBusObjectPath conn = call(active_conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Connection"); - if (!conn.path().isEmpty()) { - Connection settings = getConnectionSettings(conn); - int metered_prop = settings.value("connection").value("metered").toInt(); - if (metered_prop == NM_METERED_YES) { - metered = MeteredType::YES; - } else if (metered_prop == NM_METERED_NO) { - metered = MeteredType::NO; - } - } - break; - } - } - return metered; -} - -std::optional WifiManager::setCurrentNetworkMetered(MeteredType metered) { - for (const auto &active_conn : getActiveConnections()) { - QString type = call(active_conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Type"); - if (type == "802-11-wireless") { - if (!isTetheringEnabled()) { - QDBusObjectPath conn = call(active_conn.path(), NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE_ACTIVE_CONNECTION, "Connection"); - if (!conn.path().isEmpty()) { - Connection settings = getConnectionSettings(conn); - settings["connection"]["metered"] = static_cast(metered); - return asyncCall(conn.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "Update", QVariant::fromValue(settings)); - } - } - } - } - return std::nullopt; -} - -void WifiManager::updateGsmSettings(bool roaming, QString apn, bool metered) { - if (!lteConnectionPath.path().isEmpty()) { - bool changes = false; - bool auto_config = apn.isEmpty(); - Connection settings = getConnectionSettings(lteConnectionPath); - if (settings.value("gsm").value("auto-config").toBool() != auto_config) { - qWarning() << "Changing gsm.auto-config to" << auto_config; - settings["gsm"]["auto-config"] = auto_config; - changes = true; - } - - if (settings.value("gsm").value("apn").toString() != apn) { - qWarning() << "Changing gsm.apn to" << apn; - settings["gsm"]["apn"] = apn; - changes = true; - } - - if (settings.value("gsm").value("home-only").toBool() == roaming) { - qWarning() << "Changing gsm.home-only to" << !roaming; - settings["gsm"]["home-only"] = !roaming; - changes = true; - } - - int meteredInt = metered ? NM_METERED_UNKNOWN : NM_METERED_NO; - if (settings.value("connection").value("metered").toInt() != meteredInt) { - qWarning() << "Changing connection.metered to" << meteredInt; - settings["connection"]["metered"] = meteredInt; - changes = true; - } - - if (changes) { - QDBusPendingCall pending_call = asyncCall(lteConnectionPath.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "UpdateUnsaved", QVariant::fromValue(settings)); // update is temporary - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pending_call); - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher]() { - deactivateConnection(lteConnectionPath); - activateModemConnection(lteConnectionPath); - watcher->deleteLater(); - }); - } - } -} - -// Functions for tethering -void WifiManager::addTetheringConnection() { - Connection connection; - connection["connection"]["id"] = "Hotspot"; - connection["connection"]["uuid"] = QUuid::createUuid().toString().remove('{').remove('}'); - connection["connection"]["type"] = "802-11-wireless"; - connection["connection"]["interface-name"] = "wlan0"; - connection["connection"]["autoconnect"] = false; - - connection["802-11-wireless"]["band"] = "bg"; - connection["802-11-wireless"]["mode"] = "ap"; - connection["802-11-wireless"]["ssid"] = tethering_ssid.toUtf8(); - - connection["802-11-wireless-security"]["group"] = QStringList("ccmp"); - connection["802-11-wireless-security"]["key-mgmt"] = "wpa-psk"; - connection["802-11-wireless-security"]["pairwise"] = QStringList("ccmp"); - connection["802-11-wireless-security"]["proto"] = QStringList("rsn"); - connection["802-11-wireless-security"]["psk"] = defaultTetheringPassword; - - connection["ipv4"]["method"] = "shared"; - QVariantMap address; - address["address"] = "192.168.43.1"; - address["prefix"] = 24u; - connection["ipv4"]["address-data"] = QVariant::fromValue(IpConfig() << address); - connection["ipv4"]["gateway"] = "192.168.43.1"; - connection["ipv4"]["never-default"] = true; - connection["ipv6"]["method"] = "ignore"; - - asyncCall(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); -} - -void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) { - if (!ipv4_forward) { - QTimer::singleShot(5000, this, [=] { - qWarning() << "net.ipv4.ip_forward = 0"; - std::system("sudo sysctl net.ipv4.ip_forward=0"); - }); - } - call->deleteLater(); - tethering_on = true; -} - -void WifiManager::setTetheringEnabled(bool enabled) { - if (enabled) { - auto pending_call = activateWifiConnection(tethering_ssid); - - if (pending_call) { - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(*pending_call); - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, &WifiManager::tetheringActivated); - } - - } else { - deactivateConnectionBySsid(tethering_ssid); - tethering_on = false; - } -} - -bool WifiManager::isTetheringEnabled() { - if (!emptyPath(activeAp)) { - return get_property(activeAp, "Ssid") == tethering_ssid; - } - return false; -} - -QString WifiManager::getTetheringPassword() { - const QDBusObjectPath &path = getConnectionPath(tethering_ssid); - if (!path.path().isEmpty()) { - QDBusReply> response = call(path.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "GetSecrets", "802-11-wireless-security"); - return response.value().value("802-11-wireless-security").value("psk").toString(); - } - return ""; -} - -void WifiManager::changeTetheringPassword(const QString &newPassword) { - const QDBusObjectPath &path = getConnectionPath(tethering_ssid); - if (!path.path().isEmpty()) { - Connection settings = getConnectionSettings(path); - settings["802-11-wireless-security"]["psk"] = newPassword; - call(path.path(), NM_DBUS_INTERFACE_SETTINGS_CONNECTION, "Update", QVariant::fromValue(settings)); - if (isTetheringEnabled()) { - activateWifiConnection(tethering_ssid); - } - } -} diff --git a/selfdrive/ui/qt/network/wifi_manager.h b/selfdrive/ui/qt/network/wifi_manager.h deleted file mode 100644 index 70e15f45b..000000000 --- a/selfdrive/ui/qt/network/wifi_manager.h +++ /dev/null @@ -1,112 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "selfdrive/ui/qt/network/networkmanager.h" - -enum class SecurityType { - OPEN, - WPA, - UNSUPPORTED -}; -enum class ConnectedType { - DISCONNECTED, - CONNECTING, - CONNECTED -}; -enum class NetworkType { - NONE, - WIFI, - CELL, - ETHERNET -}; -enum class MeteredType { - UNKNOWN, - YES, - NO -}; - -typedef QMap Connection; -typedef QVector IpConfig; - -struct Network { - QByteArray ssid; - unsigned int strength; - ConnectedType connected; - SecurityType security_type; -}; -bool compare_by_strength(const Network &a, const Network &b); -inline int strengthLevel(unsigned int strength) { return std::clamp((int)round(strength / 33.), 0, 3); } - -class WifiManager : public QObject { - Q_OBJECT - -public: - QMap seenNetworks; - QMap knownConnections; - QString ipv4_address; - bool tethering_on = false; - bool ipv4_forward = false; - - explicit WifiManager(QObject* parent); - void start(); - void stop(); - void requestScan(); - void forgetConnection(const QString &ssid); - bool isKnownConnection(const QString &ssid); - std::optional activateWifiConnection(const QString &ssid); - NetworkType currentNetworkType(); - MeteredType currentNetworkMetered(); - std::optional setCurrentNetworkMetered(MeteredType metered); - void updateGsmSettings(bool roaming, QString apn, bool metered); - void connect(const Network &ssid, const bool is_hidden = false, const QString &password = {}, const QString &username = {}); - - // Tethering functions - void setTetheringEnabled(bool enabled); - bool isTetheringEnabled(); - void changeTetheringPassword(const QString &newPassword); - QString getTetheringPassword(); - - QString getIp4Address(); - -private: - QString adapter; // Path to network manager wifi-device - QTimer timer; - unsigned int raw_adapter_state = NM_DEVICE_STATE_UNKNOWN; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState - QString connecting_to_network; - QString tethering_ssid; - const QString defaultTetheringPassword = "swagswagcomma"; - QString activeAp; - QDBusObjectPath lteConnectionPath; - - QString getAdapter(const uint = NM_DEVICE_TYPE_WIFI); - uint getAdapterType(const QDBusObjectPath &path); - void deactivateConnectionBySsid(const QString &ssid); - void deactivateConnection(const QDBusObjectPath &path); - QVector getActiveConnections(); - QByteArray get_property(const QString &network_path, const QString &property); - SecurityType getSecurityType(const QVariantMap &properties); - QDBusObjectPath getConnectionPath(const QString &ssid); - Connection getConnectionSettings(const QDBusObjectPath &path); - void initConnections(); - void setup(); - void refreshNetworks(); - void activateModemConnection(const QDBusObjectPath &path); - void addTetheringConnection(); - void setCurrentConnecting(const QString &ssid); - -signals: - void wrongPassword(const QString &ssid); - void refreshSignal(); - -private slots: - void stateChange(unsigned int new_state, unsigned int previous_state, unsigned int change_reason); - void propertyChange(const QString &interface, const QVariantMap &props, const QStringList &invalidated_props); - void deviceAdded(const QDBusObjectPath &path); - void connectionRemoved(const QDBusObjectPath &path); - void newConnection(const QDBusObjectPath &path); - void refreshFinished(QDBusPendingCallWatcher *call); - void tetheringActivated(QDBusPendingCallWatcher *call); -}; diff --git a/selfdrive/ui/qt/offroad/developer_panel.cc b/selfdrive/ui/qt/offroad/developer_panel.cc deleted file mode 100644 index a9c3b6890..000000000 --- a/selfdrive/ui/qt/offroad/developer_panel.cc +++ /dev/null @@ -1,401 +0,0 @@ -#include "selfdrive/ui/qt/offroad/developer_panel.h" -#include "selfdrive/ui/qt/widgets/ssh_keys.h" -#include "selfdrive/ui/qt/widgets/controls.h" - -DeveloperPanel::DeveloperPanel(SettingsWindow *parent) : QFrame(parent) { - mainLayout = new QStackedLayout(this); - - mainWidget = new QWidget(this); - QVBoxLayout *mainListLayout = new QVBoxLayout(mainWidget); - - mainListLayout->setContentsMargins(50, 25, 50, 25); - mainListLayout->setSpacing(20); - - StarPilotListWidget *mainList = new StarPilotListWidget(mainWidget); - mainListLayout->addWidget(mainList); - - adbToggle = new ParamControl("AdbEnabled", tr("Enable ADB"), - tr("ADB (Android Debug Bridge) allows connecting to your device over USB or over the network. See https://docs.comma.ai/how-to/connect-to-comma for more info."), ""); - mainList->addItem(adbToggle); - - auto *usePrebuiltToggle = new ParamControl("UsePrebuilt", tr("Use Prebuilt Binaries"), - tr("When enabled (default), the device skips source compilation on boot if a prebuilt artifact exists. Disable this if you plan to edit code and rebuild on-device."), ""); - mainList->addItem(usePrebuiltToggle); - - auto *showAllToggles = new ParamControl("ShowAllToggles", tr("Show All Toggles"), - tr("Show every toggle in Settings and StarPilot, even when it would normally be hidden by tuning level, car support, or related feature gating."), ""); - QObject::connect(showAllToggles, &ParamControl::toggleFlipped, [this](bool) { - updateToggles(offroad); - emit showAllTogglesChanged(); - }); - mainList->addItem(showAllToggles); - - // SSH keys - mainList->addItem(new SshToggle()); - mainList->addItem(new SshControl()); - - joystickToggle = new ParamControl("JoystickDebugMode", tr("Joystick Debug Mode"), "", ""); - QObject::connect(joystickToggle, &ParamControl::toggleFlipped, [=](bool state) { - params.putBool("LongitudinalManeuverMode", false); - longManeuverToggle->refresh(); - }); - mainList->addItem(joystickToggle); - - longManeuverToggle = new ParamControl("LongitudinalManeuverMode", tr("Longitudinal Maneuver Mode"), "", ""); - QObject::connect(longManeuverToggle, &ParamControl::toggleFlipped, [=](bool state) { - params.putBool("JoystickDebugMode", false); - joystickToggle->refresh(); - }); - mainList->addItem(longManeuverToggle); - - experimentalLongitudinalToggle = new ParamControl( - "AlphaLongitudinalEnabled", - tr("openpilot Longitudinal Control (Alpha)"), - QString("%1

%2") - .arg(tr("WARNING: openpilot longitudinal control is in alpha for this car and will disable Automatic Emergency Braking (AEB).")) - .arg(tr("On this car, openpilot defaults to the car's built-in ACC instead of openpilot's longitudinal control. " - "Enable this to switch to openpilot longitudinal control. Enabling Experimental mode is recommended when enabling openpilot longitudinal control alpha.")), - "" - ); - experimentalLongitudinalToggle->setConfirmation(true, false); - QObject::connect(experimentalLongitudinalToggle, &ParamControl::toggleFlipped, [=]() { - updateToggles(offroad); - }); - mainList->addItem(experimentalLongitudinalToggle); - - // Joystick and longitudinal maneuvers should be hidden on release branches - is_release = false; - - // Toggles should be not available to change in onroad state - QObject::connect(uiState(), &UIState::offroadTransition, this, &DeveloperPanel::updateToggles); - - QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); - QString className = this->metaObject()->className(); - - if (!shownDescriptions.value(className).toBool(false)) { - forceOpenDescriptions = true; - } - - std::vector keys = params.allKeys(); - for (const std::string &key : keys) { - starpilotToggleLevels[QString::fromStdString(key)] = params.getTuningLevel(key); - } - - developerUIToggle = new StarPilotManageControl("DeveloperUI", tr("Developer UI"), tr("Detailed information about openpilot's internal operations."), ""); - QObject::connect(developerUIToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - mainLayout->setCurrentWidget(developerUIPanel); - emit openSubPanel(); - }); - mainList->insertItem(0, developerUIToggle); - - mainLayout->addWidget(mainWidget); - - StarPilotListWidget *developerUIList = new StarPilotListWidget(this); - developerUIList->setContentsMargins(50, 25, 50, 25); - developerUIPanel = new ScrollView(developerUIList, this); - mainLayout->addWidget(developerUIPanel); - - StarPilotListWidget *developerMetricList = new StarPilotListWidget(this); - developerMetricList->setContentsMargins(50, 25, 50, 25); - developerMetricPanel = new ScrollView(developerMetricList, this); - mainLayout->addWidget(developerMetricPanel); - - StarPilotListWidget *developerSidebarList = new StarPilotListWidget(this); - developerSidebarList->setContentsMargins(50, 25, 50, 25); - developerSidebarPanel = new ScrollView(developerSidebarList, this); - mainLayout->addWidget(developerSidebarPanel); - - StarPilotListWidget *developerWidgetList = new StarPilotListWidget(this); - developerWidgetList->setContentsMargins(50, 25, 50, 25); - developerWidgetPanel = new ScrollView(developerWidgetList, this); - mainLayout->addWidget(developerWidgetPanel); - - std::vector> developerToggles { - {"DeveloperMetrics", tr("Developer Metrics"), tr("Performance data, sensor readings, and system metrics for debugging and optimizing openpilot."), ""}, - {"AdjacentPathMetrics", tr("Adjacent Lane Metrics"), tr("Show the width of the adjacent lanes."), ""}, - {"BorderMetrics", tr("Border Metrics"), tr("Show statuses along the border of the driving screen.

Blind Spot: The border turns red when a vehicle is in a blind spot
Steering Torque: The border goes from green to red according to how much steering torque is being used
Turn Signal: The border flashes yellow when a turn signal is on"), ""}, - {"FPSCounter", tr("FPS Display"), tr("Show the frames per second (FPS) at the bottom of the driving screen."), ""}, - {"LeadInfo", tr("Lead Info"), tr("Show each tracked vehicle's distance and speed below its marker."), ""}, - {"NumericalTemp", tr("Numerical Temperature Gauge"), tr("Show a numerical temperature in the sidebar instead of the status labels."), ""}, - {"SidebarMetrics", tr("Sidebar Metrics"), tr("Display system information (CPU, GPU, RAM usage, IP address, device storage) in the sidebar."), ""}, - {"UseSI", tr("Use International System of Units"), tr("Display measurements using the \"International System of Units\" (SI) standard."), ""}, - - {"DeveloperSidebar", tr("Developer Sidebar"), tr("Display debugging info and metrics in a dedicated sidebar on the right side of the screen."), ""}, - {"DeveloperSidebarMetric1", tr("Metric #1"), tr("Select the metric shown in the first \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric2", tr("Metric #2"), tr("Select the metric shown in the second \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric3", tr("Metric #3"), tr("Select the metric shown in the third \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric4", tr("Metric #4"), tr("Select the metric shown in the fourth \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric5", tr("Metric #5"), tr("Select the metric shown in the fifth \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric6", tr("Metric #6"), tr("Select the metric shown in the sixth \"Developer Sidebar\" widget."), ""}, - {"DeveloperSidebarMetric7", tr("Metric #7"), tr("Select the metric shown in the seventh \"Developer Sidebar\" widget."), ""}, - - {"DeveloperWidgets", tr("Developer Widgets"), tr("Overlays for debugging visuals, internal states, and model predictions on the driving screen."), ""}, - {"AdjacentLeadsUI", tr("Adjacent Leads Tracking"), tr("Display adjacent leads detected by the car's radar to the left and right of the current driving path."), ""}, - {"ShowStoppingPoint", tr("Model Stopping Point"), tr("Show a stop-sign marker where the model intends to stop."), ""}, - {"RadarTracksUI", tr("Radar Tracks"), tr("Display all radar points produced by the car's radar."), ""}, - }; - - for (const auto &[param, title, desc, icon] : developerToggles) { - AbstractControl *developerToggle; - - if (param == "DeveloperMetrics") { - StarPilotManageControl *developerMetricsToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(developerMetricsToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - mainLayout->setCurrentWidget(developerMetricPanel); - emit openSubSubPanel(); - }); - developerToggle = developerMetricsToggle; - } else if (param == "BorderMetrics") { - std::vector borderToggles{"BlindSpotMetrics", "ShowSteering", "SignalMetrics"}; - std::vector borderToggleNames{tr("Blind Spot"), tr("Steering Torque"), tr("Turn Signal")}; - borderMetricsButton = new StarPilotButtonToggleControl(param, title, desc, icon, borderToggles, borderToggleNames); - developerToggle = borderMetricsButton; - } else if (param == "NumericalTemp") { - std::vector temperatureToggles{"Fahrenheit"}; - std::vector temperatureToggleNames{tr("Fahrenheit")}; - developerToggle = new StarPilotButtonToggleControl(param, title, desc, icon, temperatureToggles, temperatureToggleNames); - } else if (param == "SidebarMetrics") { - sidebarMetricsToggles = {"ShowCPU", "ShowGPU", "ShowIP", "ShowMemoryUsage", "ShowStorageLeft", "ShowStorageUsed"}; - std::vector sidebarMetricsToggleNames{tr("CPU"), tr("GPU"), tr("IP"), tr("RAM"), tr("SSD Left"), tr("SSD Used")}; - sidebarMetricsToggle = new StarPilotButtonsControl(title, desc, icon, sidebarMetricsToggleNames, true, false, 150); - for (int i = 0; i < sidebarMetricsToggles.size(); ++i) { - if (params.getBool(sidebarMetricsToggles[i].toStdString())) { - sidebarMetricsToggle->setCheckedButton(i); - } - } - QObject::connect(sidebarMetricsToggle, &StarPilotButtonsControl::buttonClicked, [this](int id) { - params.putBool(sidebarMetricsToggles[id].toStdString(), !params.getBool(sidebarMetricsToggles[id].toStdString())); - - if (id == 0) { - params.putBool("ShowGPU", false); - } else if (id == 1) { - params.putBool("ShowCPU", false); - } else if (id == 3) { - params.putBool("ShowStorageLeft", false); - params.putBool("ShowStorageUsed", false); - } else if (id == 4) { - params.putBool("ShowMemoryUsage", false); - params.putBool("ShowStorageUsed", false); - } else if (id == 5) { - params.putBool("ShowMemoryUsage", false); - params.putBool("ShowStorageLeft", false); - } - - sidebarMetricsToggle->clearCheckedButtons(); - for (int i = 0; i < sidebarMetricsToggles.size(); ++i) { - if (params.getBool(sidebarMetricsToggles[i].toStdString())) { - sidebarMetricsToggle->setCheckedButton(i); - } - } - }); - developerToggle = sidebarMetricsToggle; - } else if (param == "DeveloperSidebar") { - StarPilotManageControl *developerSidebarToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(developerSidebarToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - mainLayout->setCurrentWidget(developerSidebarPanel); - emit openSubSubPanel(); - }); - developerToggle = developerSidebarToggle; - } else if (developerSidebarKeys.contains(param)) { - QMap developerSidebarMetricOptions { - {0, tr("None")}, - {1, tr("Acceleration: Current")}, - {2, tr("Acceleration: Max")}, - {3, tr("Auto Tune: Actuator Delay")}, - {4, tr("Auto Tune: Friction")}, - {5, tr("Auto Tune: Lateral Acceleration")}, - {6, tr("Auto Tune: Steer Ratio")}, - {7, tr("Auto Tune: Stiffness Factor")}, - {8, tr("Engagement %: Lateral")}, - {9, tr("Engagement %: Longitudinal")}, - {10, tr("Lateral Control: Steering Angle")}, - {11, tr("Lateral Control: Torque % Used")}, - {12, tr("Longitudinal Control: Actuator Acceleration Output")}, - {13, tr("Longitudinal MPC: Danger Factor")}, - {14, tr("Longitudinal MPC Jerk: Acceleration")}, - {15, tr("Longitudinal MPC Jerk: Danger Zone")}, - {16, tr("Longitudinal MPC Jerk: Speed Control")}, - {17, tr("Model Name")}, - }; - - ButtonControl *metricToggle = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(metricToggle, &ButtonControl::clicked, [metricToggle, key = param, developerSidebarMetricOptions, this]() mutable { - QString current = developerSidebarMetricOptions.value(params.getInt(key.toStdString()), tr("None")); - QString selection = MultiOptionDialog::getSelection(tr("Select a metric to display"), developerSidebarMetricOptions.values(), current, this); - - if (!selection.isEmpty()) { - int selectedMetric = developerSidebarMetricOptions.key(selection); - - params.putInt(key.toStdString(), selectedMetric); - - metricToggle->setValue(selection); - } - }); - metricToggle->setValue(developerSidebarMetricOptions.value(params.getInt(param.toStdString()), tr("None"))); - developerToggle = metricToggle; - } else if (param == "DeveloperWidgets") { - StarPilotManageControl *developerWidgetsToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(developerWidgetsToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - mainLayout->setCurrentWidget(developerWidgetPanel); - emit openSubSubPanel(); - }); - developerToggle = developerWidgetsToggle; - } else if (param == "ShowStoppingPoint") { - std::vector stoppingPointToggles{"ShowStoppingPointMetrics"}; - std::vector stoppingPointToggleNames{tr("Show Distance")}; - developerToggle = new StarPilotButtonToggleControl(param, title, desc, icon, stoppingPointToggles, stoppingPointToggleNames); - } else { - developerToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = developerToggle; - - if (developerMetricKeys.contains(param)) { - developerMetricList->addItem(developerToggle); - } else if (developerSidebarKeys.contains(param)) { - developerSidebarList->addItem(developerToggle); - } else if (developerWidgetKeys.contains(param)) { - developerWidgetList->addItem(developerToggle); - } else { - developerUIList->addItem(developerToggle); - - parentKeys.insert(param); - } - } - - QObject::connect(parent, &SettingsWindow::closeSubPanel, [this]() {mainLayout->setCurrentWidget(mainWidget);}); - QObject::connect(parent, &SettingsWindow::closeSubSubPanel, [this]() {mainLayout->setCurrentWidget(developerUIPanel);}); -} - -void DeveloperPanel::updateToggles(bool _offroad) { - const bool showAllToggles = params.getBool("ShowAllToggles"); - - for (auto btn : findChildren()) { - btn->setVisible(showAllToggles || !is_release); - - /* - * experimentalLongitudinalToggle should be toggelable when: - * - visible, and - * - during onroad & offroad states - */ - if (btn != experimentalLongitudinalToggle) { - btn->setEnabled(_offroad); - } - - for (auto &[key, toggle] : toggles) { - if (toggle == btn) { - btn->setEnabled(true); - break; - } - } - if (developerUIToggle == btn) { - btn->setEnabled(true); - } - } - - // longManeuverToggle and experimentalLongitudinalToggle should not be toggleable if the car does not have longitudinal control - auto cp_bytes = params.get("CarParamsPersistent"); - if (!cp_bytes.empty()) { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(cp_bytes.data(), cp_bytes.size())); - cereal::CarParams::Reader CP = cmsg.getRoot(); - - if ((!CP.getAlphaLongitudinalAvailable() || is_release) && !showAllToggles) { - params.remove("AlphaLongitudinalEnabled"); - experimentalLongitudinalToggle->setEnabled(false); - } else { - experimentalLongitudinalToggle->setEnabled(true); - } - - /* - * experimentalLongitudinalToggle should be visible when: - * - is not a release branch, and - * - the car supports experimental longitudinal control (alpha) - */ - experimentalLongitudinalToggle->setVisible(showAllToggles || (CP.getAlphaLongitudinalAvailable() && !is_release)); - - longManeuverToggle->setEnabled((showAllToggles || hasLongitudinalControl(CP)) && _offroad); - - hasOpenpilotLongitudinal = hasLongitudinalControl(CP); - hasRadar = !CP.getRadarUnavailable(); - - borderMetricsButton->setVisibleButton(0, showAllToggles || CP.getEnableBsm()); - } else { - longManeuverToggle->setEnabled(showAllToggles && _offroad); - experimentalLongitudinalToggle->setEnabled(showAllToggles); - experimentalLongitudinalToggle->setVisible(showAllToggles); - } - experimentalLongitudinalToggle->refresh(); - - offroad = _offroad; - - tuningLevel = params.getInt("TuningLevel"); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || tuningLevel >= starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "AdjacentLeadsUI") { - setVisible &= hasRadar && !(params.getBool("AdvancedCustomUI") && params.getBool("HideLeadMarker")); - } - - else if (key == "RadarTracksUI") { - setVisible &= hasRadar; - } - - else if (key == "ShowStoppingPoint") { - setVisible &= hasOpenpilotLongitudinal; - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (developerMetricKeys.contains(key)) { - toggles["DeveloperMetrics"]->setVisible(true); - } else if (developerSidebarKeys.contains(key)) { - toggles["DeveloperSidebar"]->setVisible(true); - } else if (developerUIKeys.contains(key)) { - toggles["DeveloperUI"]->setVisible(true); - } else if (developerWidgetKeys.contains(key)) { - toggles["DeveloperWidgets"]->setVisible(true); - } - } - } - - borderMetricsButton->setVisibleButton(0, showAllToggles || hasBSM); - - developerUIToggle->setVisible(showAllToggles || tuningLevel >= starpilotToggleLevels["DeveloperUI"].toDouble()); - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} - -void DeveloperPanel::showEvent(QShowEvent *event) { - updateToggles(offroad); - - for (int i = 0; i < sidebarMetricsToggles.size(); ++i) { - if (params.getBool(sidebarMetricsToggles[i].toStdString())) { - sidebarMetricsToggle->setCheckedButton(i); - } - } - - QJsonObject shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); - QString className = this->metaObject()->className(); - - if (!shownDescriptions.value(className).toBool(false)) { - shownDescriptions.insert(className, true); - params.put("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); - } -} diff --git a/selfdrive/ui/qt/offroad/developer_panel.h b/selfdrive/ui/qt/offroad/developer_panel.h deleted file mode 100644 index dc9665b9a..000000000 --- a/selfdrive/ui/qt/offroad/developer_panel.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/offroad/settings.h" - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class DeveloperPanel : public QFrame { - Q_OBJECT -public: - explicit DeveloperPanel(SettingsWindow *parent); - void showEvent(QShowEvent *event) override; - -signals: - void openSubPanel(); - void openSubSubPanel(); - void showAllTogglesChanged(); - -private: - Params params; - ParamControl* adbToggle; - ParamControl* joystickToggle; - ParamControl* longManeuverToggle; - ParamControl* experimentalLongitudinalToggle; - bool is_release; - bool offroad = false; - - bool forceOpenDescriptions = false; - bool hasBSM = true; - bool hasOpenpilotLongitudinal = true; - bool hasRadar = true; - - int tuningLevel; - - std::map toggles; - - std::vector sidebarMetricsToggles; - - StarPilotButtonsControl *sidebarMetricsToggle; - - StarPilotButtonToggleControl *borderMetricsButton; - - StarPilotManageControl *developerUIToggle; - - QJsonObject starpilotToggleLevels; - - QSet developerMetricKeys = {"AdjacentPathMetrics", "BorderMetrics", "FPSCounter", "LeadInfo", "NumericalTemp", "SidebarMetrics", "UseSI"}; - QSet developerSidebarKeys = {"DeveloperSidebarMetric1", "DeveloperSidebarMetric2", "DeveloperSidebarMetric3", "DeveloperSidebarMetric4", "DeveloperSidebarMetric5", "DeveloperSidebarMetric6", "DeveloperSidebarMetric7"}; - QSet developerUIKeys = {"DeveloperMetrics", "DeveloperSidebar", "DeveloperWidgets"}; - QSet developerWidgetKeys = {"AdjacentLeadsUI", "RadarTracksUI", "ShowStoppingPoint"}; - - QSet parentKeys; - - QStackedLayout *mainLayout; - - QWidget *mainWidget; - - ScrollView *developerMetricPanel; - ScrollView *developerSidebarPanel; - ScrollView *developerUIPanel; - ScrollView *developerWidgetPanel; - -private slots: - void updateToggles(bool _offroad); -}; diff --git a/selfdrive/ui/qt/offroad/driverview.cc b/selfdrive/ui/qt/offroad/driverview.cc deleted file mode 100644 index 9010227f1..000000000 --- a/selfdrive/ui/qt/offroad/driverview.cc +++ /dev/null @@ -1,82 +0,0 @@ -#include "selfdrive/ui/qt/offroad/driverview.h" - -#include -#include - -#include "selfdrive/ui/qt/util.h" - -DriverViewWindow::DriverViewWindow(QWidget* parent) : CameraWidget("camerad", VISION_STREAM_DRIVER, parent) { - QObject::connect(this, &CameraWidget::clicked, this, &DriverViewWindow::done); - QObject::connect(device(), &Device::interactiveTimeout, this, [this]() { - if (isVisible()) { - emit done(); - } - }); -} - -void DriverViewWindow::showEvent(QShowEvent* event) { - params.putBool("IsDriverViewEnabled", true); - device()->resetInteractiveTimeout(60); - CameraWidget::showEvent(event); -} - -void DriverViewWindow::hideEvent(QHideEvent* event) { - params.putBool("IsDriverViewEnabled", false); - stopVipcThread(); - CameraWidget::hideEvent(event); -} - -void DriverViewWindow::paintGL() { - CameraWidget::paintGL(); - - std::lock_guard lk(frame_lock); - QPainter p(this); - // startup msg - if (frames.empty()) { - p.setPen(Qt::white); - p.setRenderHint(QPainter::TextAntialiasing); - p.setFont(InterFont(100, QFont::Bold)); - p.drawText(geometry(), Qt::AlignCenter, tr("camera starting")); - return; - } - - const auto &sm = *(uiState()->sm); - cereal::DriverStateV2::Reader driver_state = sm["driverStateV2"].getDriverStateV2(); - bool is_rhd = driver_state.getWheelOnRightProb() > 0.5; - auto driver_data = is_rhd ? driver_state.getRightDriverData() : driver_state.getLeftDriverData(); - - bool face_detected = driver_data.getFaceProb() > 0.7; - if (face_detected) { - auto fxy_list = driver_data.getFacePosition(); - auto std_list = driver_data.getFaceOrientationStd(); - float face_x = fxy_list[0]; - float face_y = fxy_list[1]; - float face_std = std::max(std_list[0], std_list[1]); - - float alpha = 0.7; - if (face_std > 0.15) { - alpha = std::max(0.7 - (face_std-0.15)*3.5, 0.0); - } - const int box_size = 220; - // use approx instead of distort_points - int fbox_x = 1080.0 - 1714.0 * face_x; - int fbox_y = -135.0 + (504.0 + std::abs(face_x)*112.0) + (1205.0 - std::abs(face_x)*724.0) * face_y; - p.setPen(QPen(QColor(255, 255, 255, alpha * 255), 10)); - p.drawRoundedRect(fbox_x - box_size / 2, fbox_y - box_size / 2, box_size, box_size, 35.0, 35.0); - } - - driver_monitor.updateState(*uiState()); - driver_monitor.draw(p, rect()); -} - -mat4 DriverViewWindow::calcFrameMatrix() { - const float driver_view_ratio = 2.0; - const float yscale = stream_height * driver_view_ratio / stream_width; - const float xscale = yscale * glHeight() / glWidth() * stream_width / stream_height; - return mat4{{ - xscale, 0.0, 0.0, 0.0, - 0.0, yscale, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0, - }}; -} diff --git a/selfdrive/ui/qt/offroad/driverview.h b/selfdrive/ui/qt/offroad/driverview.h deleted file mode 100644 index f6eb752fe..000000000 --- a/selfdrive/ui/qt/offroad/driverview.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/widgets/cameraview.h" -#include "selfdrive/ui/qt/onroad/driver_monitoring.h" - -class DriverViewWindow : public CameraWidget { - Q_OBJECT - -public: - explicit DriverViewWindow(QWidget *parent); - -signals: - void done(); - -protected: - mat4 calcFrameMatrix() override; - void showEvent(QShowEvent *event) override; - void hideEvent(QHideEvent *event) override; - void paintGL() override; - - Params params; - DriverMonitorRenderer driver_monitor; -}; diff --git a/selfdrive/ui/qt/offroad/experimental_mode.cc b/selfdrive/ui/qt/offroad/experimental_mode.cc deleted file mode 100644 index fcfc892e6..000000000 --- a/selfdrive/ui/qt/offroad/experimental_mode.cc +++ /dev/null @@ -1,95 +0,0 @@ -#include "selfdrive/ui/qt/offroad/experimental_mode.h" - -#include -#include -#include -#include -#include - -#include "selfdrive/ui/ui.h" - -ExperimentalModeButton::ExperimentalModeButton(QWidget *parent) : QPushButton(parent) { - chill_pixmap = QPixmap("../assets/icons/couch.svg").scaledToWidth(img_width, Qt::SmoothTransformation); - experimental_pixmap = QPixmap("../assets/icons/experimental_grey.svg").scaledToWidth(img_width, Qt::SmoothTransformation); - - // go to toggles and expand whichever mode control is actually active - connect(this, &QPushButton::clicked, [=]() { - const QString toggle = params.getBool("ConditionalExperimental") ? "ConditionalExperimental" : - params.getBool("ConditionalChill") ? "ConditionalChill" : - "ExperimentalMode"; - emit openSettings(2, toggle); - }); - - setFixedHeight(125); - QHBoxLayout *main_layout = new QHBoxLayout; - main_layout->setContentsMargins(horizontal_padding, 0, horizontal_padding, 0); - - mode_label = new QLabel; - mode_icon = new QLabel; - mode_icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); - - main_layout->addWidget(mode_label, 1, Qt::AlignLeft); - main_layout->addWidget(mode_icon, 0, Qt::AlignRight); - - setLayout(main_layout); - - setStyleSheet(R"( - QPushButton { - border: none; - } - - QLabel { - font-size: 45px; - font-weight: 300; - text-align: left; - font-family: JetBrainsMono; - color: #000000; - } - )"); -} - -void ExperimentalModeButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setPen(Qt::NoPen); - p.setRenderHint(QPainter::Antialiasing); - - QPainterPath path; - path.addRoundedRect(rect(), 10, 10); - - // gradient - bool pressed = isDown(); - QLinearGradient gradient(rect().left(), 0, rect().right(), 0); - if (experimental_mode) { - gradient.setColorAt(0, QColor(255, 155, 63, pressed ? 0xcc : 0xff)); - gradient.setColorAt(1, QColor(219, 56, 34, pressed ? 0xcc : 0xff)); - } else { - gradient.setColorAt(0, QColor(20, 255, 171, pressed ? 0xcc : 0xff)); - gradient.setColorAt(1, QColor(35, 149, 255, pressed ? 0xcc : 0xff)); - } - p.fillPath(path, gradient); - - // vertical line - p.setPen(QPen(QColor(0, 0, 0, 0x4d), 3, Qt::SolidLine)); - int line_x = rect().right() - img_width - (2 * horizontal_padding); - p.drawLine(line_x, rect().bottom(), line_x, rect().top()); -} - -void ExperimentalModeButton::showEvent(QShowEvent *event) { - if (params.getBool("ConditionalExperimental")) { - int status = params_memory.getInt("CEStatus"); - if ((status != 1 && status != 2) && params.getBool("PersistExperimentalState")) { - status = params.getInt("PersistedCEStatus"); - } - experimental_mode = !params.getBool("SafeMode") && status == 2; - } else if (params.getBool("ConditionalChill")) { - int status = params_memory.getInt("CCStatus"); - if ((status != 1 && status != 2) && params.getBool("PersistChillState")) { - status = params.getInt("PersistedCCStatus"); - } - experimental_mode = !params.getBool("SafeMode") && (status == 0 || status == 1); - } else { - experimental_mode = params.getBool("ExperimentalMode") && !params.getBool("SafeMode"); - } - mode_icon->setPixmap(experimental_mode ? experimental_pixmap : chill_pixmap); - mode_label->setText(experimental_mode ? tr("EXPERIMENTAL MODE ON") : tr("CHILL MODE ON")); -} diff --git a/selfdrive/ui/qt/offroad/experimental_mode.h b/selfdrive/ui/qt/offroad/experimental_mode.h deleted file mode 100644 index 6b15f52dd..000000000 --- a/selfdrive/ui/qt/offroad/experimental_mode.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include - -#include "common/params.h" - -class ExperimentalModeButton : public QPushButton { - Q_OBJECT - -public: - explicit ExperimentalModeButton(QWidget* parent = 0); - -signals: - void openSettings(int index = 0, const QString &toggle = ""); - -private: - void showEvent(QShowEvent *event) override; - - Params params; - Params params_memory{"", true}; - bool experimental_mode; - int img_width = 100; - int horizontal_padding = 30; - QPixmap experimental_pixmap; - QPixmap chill_pixmap; - QLabel *mode_label; - QLabel *mode_icon; - -protected: - void paintEvent(QPaintEvent *event) override; -}; diff --git a/selfdrive/ui/qt/offroad/moc_developer_panel.cc b/selfdrive/ui/qt/offroad/moc_developer_panel.cc deleted file mode 100644 index f13e27b61..000000000 --- a/selfdrive/ui/qt/offroad/moc_developer_panel.cc +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'developer_panel.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "developer_panel.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'developer_panel.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DeveloperPanel_t { - QByteArrayData data[7]; - char stringdata0[90]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DeveloperPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DeveloperPanel_t qt_meta_stringdata_DeveloperPanel = { - { -QT_MOC_LITERAL(0, 0, 14), // "DeveloperPanel" -QT_MOC_LITERAL(1, 15, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 28, 0), // "" -QT_MOC_LITERAL(3, 29, 15), // "openSubSubPanel" -QT_MOC_LITERAL(4, 45, 21), // "showAllTogglesChanged" -QT_MOC_LITERAL(5, 67, 13), // "updateToggles" -QT_MOC_LITERAL(6, 81, 8) // "_offroad" - - }, - "DeveloperPanel\0openSubPanel\0\0" - "openSubSubPanel\0showAllTogglesChanged\0" - "updateToggles\0_offroad" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DeveloperPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 4, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 34, 2, 0x06 /* Public */, - 3, 0, 35, 2, 0x06 /* Public */, - 4, 0, 36, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 5, 1, 37, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Bool, 6, - - 0 // eod -}; - -void DeveloperPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - case 1: _t->openSubSubPanel(); break; - case 2: _t->showAllTogglesChanged(); break; - case 3: _t->updateToggles((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (DeveloperPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DeveloperPanel::openSubPanel)) { - *result = 0; - return; - } - } - { - using _t = void (DeveloperPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DeveloperPanel::openSubSubPanel)) { - *result = 1; - return; - } - } - { - using _t = void (DeveloperPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DeveloperPanel::showAllTogglesChanged)) { - *result = 2; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject DeveloperPanel::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_DeveloperPanel.data, - qt_meta_data_DeveloperPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DeveloperPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DeveloperPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DeveloperPanel.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int DeveloperPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 4) - qt_static_metacall(this, _c, _id, _a); - _id -= 4; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 4) - *reinterpret_cast(_a[0]) = -1; - _id -= 4; - } - return _id; -} - -// SIGNAL 0 -void DeveloperPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void DeveloperPanel::openSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} - -// SIGNAL 2 -void DeveloperPanel::showAllTogglesChanged() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/offroad/moc_driverview.cc b/selfdrive/ui/qt/offroad/moc_driverview.cc deleted file mode 100644 index 39e4d4208..000000000 --- a/selfdrive/ui/qt/offroad/moc_driverview.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'driverview.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "driverview.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'driverview.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DriverViewWindow_t { - QByteArrayData data[3]; - char stringdata0[23]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DriverViewWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DriverViewWindow_t qt_meta_stringdata_DriverViewWindow = { - { -QT_MOC_LITERAL(0, 0, 16), // "DriverViewWindow" -QT_MOC_LITERAL(1, 17, 4), // "done" -QT_MOC_LITERAL(2, 22, 0) // "" - - }, - "DriverViewWindow\0done\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DriverViewWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void DriverViewWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->done(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (DriverViewWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DriverViewWindow::done)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject DriverViewWindow::staticMetaObject = { { - &CameraWidget::staticMetaObject, - qt_meta_stringdata_DriverViewWindow.data, - qt_meta_data_DriverViewWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DriverViewWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DriverViewWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DriverViewWindow.stringdata0)) - return static_cast(this); - return CameraWidget::qt_metacast(_clname); -} - -int DriverViewWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = CameraWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void DriverViewWindow::done() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/offroad/moc_experimental_mode.cc b/selfdrive/ui/qt/offroad/moc_experimental_mode.cc deleted file mode 100644 index 0156162fa..000000000 --- a/selfdrive/ui/qt/offroad/moc_experimental_mode.cc +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'experimental_mode.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "experimental_mode.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'experimental_mode.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ExperimentalModeButton_t { - QByteArrayData data[5]; - char stringdata0[50]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ExperimentalModeButton_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ExperimentalModeButton_t qt_meta_stringdata_ExperimentalModeButton = { - { -QT_MOC_LITERAL(0, 0, 22), // "ExperimentalModeButton" -QT_MOC_LITERAL(1, 23, 12), // "openSettings" -QT_MOC_LITERAL(2, 36, 0), // "" -QT_MOC_LITERAL(3, 37, 5), // "index" -QT_MOC_LITERAL(4, 43, 6) // "toggle" - - }, - "ExperimentalModeButton\0openSettings\0" - "\0index\0toggle" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ExperimentalModeButton[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 29, 2, 0x06 /* Public */, - 1, 1, 34, 2, 0x26 /* Public | MethodCloned */, - 1, 0, 37, 2, 0x26 /* Public | MethodCloned */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, QMetaType::QString, 3, 4, - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, - - 0 // eod -}; - -void ExperimentalModeButton::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSettings((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - case 1: _t->openSettings((*reinterpret_cast< int(*)>(_a[1]))); break; - case 2: _t->openSettings(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (ExperimentalModeButton::*)(int , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ExperimentalModeButton::openSettings)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject ExperimentalModeButton::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_ExperimentalModeButton.data, - qt_meta_data_ExperimentalModeButton, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ExperimentalModeButton::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ExperimentalModeButton::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ExperimentalModeButton.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int ExperimentalModeButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void ExperimentalModeButton::openSettings(int _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/offroad/moc_onboarding.cc b/selfdrive/ui/qt/offroad/moc_onboarding.cc deleted file mode 100644 index 437d9d097..000000000 --- a/selfdrive/ui/qt/offroad/moc_onboarding.cc +++ /dev/null @@ -1,477 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'onboarding.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "onboarding.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'onboarding.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_TrainingGuide_t { - QByteArrayData data[3]; - char stringdata0[33]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_TrainingGuide_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_TrainingGuide_t qt_meta_stringdata_TrainingGuide = { - { -QT_MOC_LITERAL(0, 0, 13), // "TrainingGuide" -QT_MOC_LITERAL(1, 14, 17), // "completedTraining" -QT_MOC_LITERAL(2, 32, 0) // "" - - }, - "TrainingGuide\0completedTraining\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_TrainingGuide[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void TrainingGuide::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->completedTraining(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (TrainingGuide::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TrainingGuide::completedTraining)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject TrainingGuide::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_TrainingGuide.data, - qt_meta_data_TrainingGuide, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *TrainingGuide::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *TrainingGuide::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_TrainingGuide.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int TrainingGuide::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void TrainingGuide::completedTraining() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_TermsPage_t { - QByteArrayData data[4]; - char stringdata0[39]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_TermsPage_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_TermsPage_t qt_meta_stringdata_TermsPage = { - { -QT_MOC_LITERAL(0, 0, 9), // "TermsPage" -QT_MOC_LITERAL(1, 10, 13), // "acceptedTerms" -QT_MOC_LITERAL(2, 24, 0), // "" -QT_MOC_LITERAL(3, 25, 13) // "declinedTerms" - - }, - "TermsPage\0acceptedTerms\0\0declinedTerms" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_TermsPage[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 24, 2, 0x06 /* Public */, - 3, 0, 25, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void TermsPage::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->acceptedTerms(); break; - case 1: _t->declinedTerms(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (TermsPage::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TermsPage::acceptedTerms)) { - *result = 0; - return; - } - } - { - using _t = void (TermsPage::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TermsPage::declinedTerms)) { - *result = 1; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject TermsPage::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_TermsPage.data, - qt_meta_data_TermsPage, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *TermsPage::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *TermsPage::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_TermsPage.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int TermsPage::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void TermsPage::acceptedTerms() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void TermsPage::declinedTerms() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -struct qt_meta_stringdata_DeclinePage_t { - QByteArrayData data[3]; - char stringdata0[21]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DeclinePage_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DeclinePage_t qt_meta_stringdata_DeclinePage = { - { -QT_MOC_LITERAL(0, 0, 11), // "DeclinePage" -QT_MOC_LITERAL(1, 12, 7), // "getBack" -QT_MOC_LITERAL(2, 20, 0) // "" - - }, - "DeclinePage\0getBack\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DeclinePage[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void DeclinePage::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->getBack(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (DeclinePage::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DeclinePage::getBack)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject DeclinePage::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_DeclinePage.data, - qt_meta_data_DeclinePage, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DeclinePage::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DeclinePage::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DeclinePage.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int DeclinePage::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void DeclinePage::getBack() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_OnboardingWindow_t { - QByteArrayData data[3]; - char stringdata0[33]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_OnboardingWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_OnboardingWindow_t qt_meta_stringdata_OnboardingWindow = { - { -QT_MOC_LITERAL(0, 0, 16), // "OnboardingWindow" -QT_MOC_LITERAL(1, 17, 14), // "onboardingDone" -QT_MOC_LITERAL(2, 32, 0) // "" - - }, - "OnboardingWindow\0onboardingDone\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_OnboardingWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void OnboardingWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->onboardingDone(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (OnboardingWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&OnboardingWindow::onboardingDone)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject OnboardingWindow::staticMetaObject = { { - &QStackedWidget::staticMetaObject, - qt_meta_stringdata_OnboardingWindow.data, - qt_meta_data_OnboardingWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *OnboardingWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *OnboardingWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_OnboardingWindow.stringdata0)) - return static_cast(this); - return QStackedWidget::qt_metacast(_clname); -} - -int OnboardingWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QStackedWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void OnboardingWindow::onboardingDone() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/offroad/moc_settings.cc b/selfdrive/ui/qt/offroad/moc_settings.cc deleted file mode 100644 index a18d00ddc..000000000 --- a/selfdrive/ui/qt/offroad/moc_settings.cc +++ /dev/null @@ -1,756 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_SettingsWindow_t { - QByteArrayData data[16]; - char stringdata0[220]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_SettingsWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_SettingsWindow_t qt_meta_stringdata_SettingsWindow = { - { -QT_MOC_LITERAL(0, 0, 14), // "SettingsWindow" -QT_MOC_LITERAL(1, 15, 13), // "closeSettings" -QT_MOC_LITERAL(2, 29, 0), // "" -QT_MOC_LITERAL(3, 30, 19), // "reviewTrainingGuide" -QT_MOC_LITERAL(4, 50, 14), // "showDriverView" -QT_MOC_LITERAL(5, 65, 23), // "expandToggleDescription" -QT_MOC_LITERAL(6, 89, 5), // "param" -QT_MOC_LITERAL(7, 95, 14), // "scrollToToggle" -QT_MOC_LITERAL(8, 110, 10), // "closePanel" -QT_MOC_LITERAL(9, 121, 13), // "closeSubPanel" -QT_MOC_LITERAL(10, 135, 16), // "closeSubSubPanel" -QT_MOC_LITERAL(11, 152, 19), // "closeSubSubSubPanel" -QT_MOC_LITERAL(12, 172, 12), // "updateMetric" -QT_MOC_LITERAL(13, 185, 8), // "isMetric" -QT_MOC_LITERAL(14, 194, 7), // "bootRun" -QT_MOC_LITERAL(15, 202, 17) // "updateTuningLevel" - - }, - "SettingsWindow\0closeSettings\0\0" - "reviewTrainingGuide\0showDriverView\0" - "expandToggleDescription\0param\0" - "scrollToToggle\0closePanel\0closeSubPanel\0" - "closeSubSubPanel\0closeSubSubSubPanel\0" - "updateMetric\0isMetric\0bootRun\0" - "updateTuningLevel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_SettingsWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 12, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 12, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 74, 2, 0x06 /* Public */, - 3, 0, 75, 2, 0x06 /* Public */, - 4, 0, 76, 2, 0x06 /* Public */, - 5, 1, 77, 2, 0x06 /* Public */, - 7, 1, 80, 2, 0x06 /* Public */, - 8, 0, 83, 2, 0x06 /* Public */, - 9, 0, 84, 2, 0x06 /* Public */, - 10, 0, 85, 2, 0x06 /* Public */, - 11, 0, 86, 2, 0x06 /* Public */, - 12, 2, 87, 2, 0x06 /* Public */, - 12, 1, 92, 2, 0x26 /* Public | MethodCloned */, - 15, 0, 95, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, QMetaType::QString, 6, - QMetaType::Void, QMetaType::QString, 6, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, QMetaType::Bool, QMetaType::Bool, 13, 14, - QMetaType::Void, QMetaType::Bool, 13, - QMetaType::Void, - - 0 // eod -}; - -void SettingsWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->closeSettings(); break; - case 1: _t->reviewTrainingGuide(); break; - case 2: _t->showDriverView(); break; - case 3: _t->expandToggleDescription((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 4: _t->scrollToToggle((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 5: _t->closePanel(); break; - case 6: _t->closeSubPanel(); break; - case 7: _t->closeSubSubPanel(); break; - case 8: _t->closeSubSubSubPanel(); break; - case 9: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; - case 10: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 11: _t->updateTuningLevel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::closeSettings)) { - *result = 0; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::reviewTrainingGuide)) { - *result = 1; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::showDriverView)) { - *result = 2; - return; - } - } - { - using _t = void (SettingsWindow::*)(const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::expandToggleDescription)) { - *result = 3; - return; - } - } - { - using _t = void (SettingsWindow::*)(const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::scrollToToggle)) { - *result = 4; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::closePanel)) { - *result = 5; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::closeSubPanel)) { - *result = 6; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::closeSubSubPanel)) { - *result = 7; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::closeSubSubSubPanel)) { - *result = 8; - return; - } - } - { - using _t = void (SettingsWindow::*)(bool , bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::updateMetric)) { - *result = 9; - return; - } - } - { - using _t = void (SettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SettingsWindow::updateTuningLevel)) { - *result = 11; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject SettingsWindow::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_SettingsWindow.data, - qt_meta_data_SettingsWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *SettingsWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *SettingsWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_SettingsWindow.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int SettingsWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 12) - qt_static_metacall(this, _c, _id, _a); - _id -= 12; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 12) - *reinterpret_cast(_a[0]) = -1; - _id -= 12; - } - return _id; -} - -// SIGNAL 0 -void SettingsWindow::closeSettings() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void SettingsWindow::reviewTrainingGuide() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} - -// SIGNAL 2 -void SettingsWindow::showDriverView() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} - -// SIGNAL 3 -void SettingsWindow::expandToggleDescription(const QString & _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 3, _a); -} - -// SIGNAL 4 -void SettingsWindow::scrollToToggle(const QString & _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 4, _a); -} - -// SIGNAL 5 -void SettingsWindow::closePanel() -{ - QMetaObject::activate(this, &staticMetaObject, 5, nullptr); -} - -// SIGNAL 6 -void SettingsWindow::closeSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 6, nullptr); -} - -// SIGNAL 7 -void SettingsWindow::closeSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 7, nullptr); -} - -// SIGNAL 8 -void SettingsWindow::closeSubSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 8, nullptr); -} - -// SIGNAL 9 -void SettingsWindow::updateMetric(bool _t1, bool _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 9, _a); -} - -// SIGNAL 11 -void SettingsWindow::updateTuningLevel() -{ - QMetaObject::activate(this, &staticMetaObject, 11, nullptr); -} -struct qt_meta_stringdata_GalaxyQRPopup_t { - QByteArrayData data[1]; - char stringdata0[14]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_GalaxyQRPopup_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_GalaxyQRPopup_t qt_meta_stringdata_GalaxyQRPopup = { - { -QT_MOC_LITERAL(0, 0, 13) // "GalaxyQRPopup" - - }, - "GalaxyQRPopup" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_GalaxyQRPopup[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void GalaxyQRPopup::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject GalaxyQRPopup::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_GalaxyQRPopup.data, - qt_meta_data_GalaxyQRPopup, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *GalaxyQRPopup::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *GalaxyQRPopup::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_GalaxyQRPopup.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int GalaxyQRPopup::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_DevicePanel_t { - QByteArrayData data[7]; - char stringdata0[87]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DevicePanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DevicePanel_t qt_meta_stringdata_DevicePanel = { - { -QT_MOC_LITERAL(0, 0, 11), // "DevicePanel" -QT_MOC_LITERAL(1, 12, 19), // "reviewTrainingGuide" -QT_MOC_LITERAL(2, 32, 0), // "" -QT_MOC_LITERAL(3, 33, 14), // "showDriverView" -QT_MOC_LITERAL(4, 48, 8), // "poweroff" -QT_MOC_LITERAL(5, 57, 6), // "reboot" -QT_MOC_LITERAL(6, 64, 22) // "updateCalibDescription" - - }, - "DevicePanel\0reviewTrainingGuide\0\0" - "showDriverView\0poweroff\0reboot\0" - "updateCalibDescription" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DevicePanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 5, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 39, 2, 0x06 /* Public */, - 3, 0, 40, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 4, 0, 41, 2, 0x08 /* Private */, - 5, 0, 42, 2, 0x08 /* Private */, - 6, 0, 43, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void DevicePanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->reviewTrainingGuide(); break; - case 1: _t->showDriverView(); break; - case 2: _t->poweroff(); break; - case 3: _t->reboot(); break; - case 4: _t->updateCalibDescription(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (DevicePanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DevicePanel::reviewTrainingGuide)) { - *result = 0; - return; - } - } - { - using _t = void (DevicePanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DevicePanel::showDriverView)) { - *result = 1; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject DevicePanel::staticMetaObject = { { - &ListWidget::staticMetaObject, - qt_meta_stringdata_DevicePanel.data, - qt_meta_data_DevicePanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DevicePanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DevicePanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DevicePanel.stringdata0)) - return static_cast(this); - return ListWidget::qt_metacast(_clname); -} - -int DevicePanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 5) - qt_static_metacall(this, _c, _id, _a); - _id -= 5; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 5) - *reinterpret_cast(_a[0]) = -1; - _id -= 5; - } - return _id; -} - -// SIGNAL 0 -void DevicePanel::reviewTrainingGuide() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void DevicePanel::showDriverView() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -struct qt_meta_stringdata_TogglesPanel_t { - QByteArrayData data[13]; - char stringdata0[135]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_TogglesPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_TogglesPanel_t qt_meta_stringdata_TogglesPanel = { - { -QT_MOC_LITERAL(0, 0, 12), // "TogglesPanel" -QT_MOC_LITERAL(1, 13, 12), // "updateMetric" -QT_MOC_LITERAL(2, 26, 0), // "" -QT_MOC_LITERAL(3, 27, 6), // "metric" -QT_MOC_LITERAL(4, 34, 7), // "bootRun" -QT_MOC_LITERAL(5, 42, 17), // "simpleModeChanged" -QT_MOC_LITERAL(6, 60, 7), // "enabled" -QT_MOC_LITERAL(7, 68, 23), // "expandToggleDescription" -QT_MOC_LITERAL(8, 92, 5), // "param" -QT_MOC_LITERAL(9, 98, 14), // "scrollToToggle" -QT_MOC_LITERAL(10, 113, 11), // "updateState" -QT_MOC_LITERAL(11, 125, 7), // "UIState" -QT_MOC_LITERAL(12, 133, 1) // "s" - - }, - "TogglesPanel\0updateMetric\0\0metric\0" - "bootRun\0simpleModeChanged\0enabled\0" - "expandToggleDescription\0param\0" - "scrollToToggle\0updateState\0UIState\0s" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_TogglesPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 6, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 44, 2, 0x06 /* Public */, - 1, 1, 49, 2, 0x26 /* Public | MethodCloned */, - 5, 1, 52, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 7, 1, 55, 2, 0x0a /* Public */, - 9, 1, 58, 2, 0x0a /* Public */, - 10, 1, 61, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, QMetaType::Bool, QMetaType::Bool, 3, 4, - QMetaType::Void, QMetaType::Bool, 3, - QMetaType::Void, QMetaType::Bool, 6, - - // slots: parameters - QMetaType::Void, QMetaType::QString, 8, - QMetaType::Void, QMetaType::QString, 8, - QMetaType::Void, 0x80000000 | 11, 12, - - 0 // eod -}; - -void TogglesPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; - case 1: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 2: _t->simpleModeChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 3: _t->expandToggleDescription((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 4: _t->scrollToToggle((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 5: _t->updateState((*reinterpret_cast< const UIState(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (TogglesPanel::*)(bool , bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TogglesPanel::updateMetric)) { - *result = 0; - return; - } - } - { - using _t = void (TogglesPanel::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TogglesPanel::simpleModeChanged)) { - *result = 2; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject TogglesPanel::staticMetaObject = { { - &ListWidget::staticMetaObject, - qt_meta_stringdata_TogglesPanel.data, - qt_meta_data_TogglesPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *TogglesPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *TogglesPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_TogglesPanel.stringdata0)) - return static_cast(this); - return ListWidget::qt_metacast(_clname); -} - -int TogglesPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 6) - qt_static_metacall(this, _c, _id, _a); - _id -= 6; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 6) - *reinterpret_cast(_a[0]) = -1; - _id -= 6; - } - return _id; -} - -// SIGNAL 0 -void TogglesPanel::updateMetric(bool _t1, bool _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 2 -void TogglesPanel::simpleModeChanged(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 2, _a); -} -struct qt_meta_stringdata_SoftwarePanel_t { - QByteArrayData data[1]; - char stringdata0[14]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_SoftwarePanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_SoftwarePanel_t qt_meta_stringdata_SoftwarePanel = { - { -QT_MOC_LITERAL(0, 0, 13) // "SoftwarePanel" - - }, - "SoftwarePanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_SoftwarePanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void SoftwarePanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject SoftwarePanel::staticMetaObject = { { - &ListWidget::staticMetaObject, - qt_meta_stringdata_SoftwarePanel.data, - qt_meta_data_SoftwarePanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *SoftwarePanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *SoftwarePanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_SoftwarePanel.stringdata0)) - return static_cast(this); - return ListWidget::qt_metacast(_clname); -} - -int SoftwarePanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ListWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/offroad/onboarding.cc b/selfdrive/ui/qt/offroad/onboarding.cc deleted file mode 100644 index 139056667..000000000 --- a/selfdrive/ui/qt/offroad/onboarding.cc +++ /dev/null @@ -1,211 +0,0 @@ -#include "selfdrive/ui/qt/offroad/onboarding.h" - -#include - -#include -#include -#include -#include - -#include "common/util.h" -#include "common/params.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/input.h" - -TrainingGuide::TrainingGuide(QWidget *parent) : QFrame(parent) { - setAttribute(Qt::WA_OpaquePaintEvent); -} - -void TrainingGuide::mouseReleaseEvent(QMouseEvent *e) { - if (click_timer.elapsed() < 250) { - return; - } - click_timer.restart(); - - auto contains = [this](QRect r, const QPoint &pt) { - if (image.size() != image_raw_size) { - QTransform transform; - transform.translate((width()- image.width()) / 2.0, (height()- image.height()) / 2.0); - transform.scale(image.width() / (float)image_raw_size.width(), image.height() / (float)image_raw_size.height()); - r= transform.mapRect(r); - } - return r.contains(pt); - }; - - if (contains(boundingRect[currentIndex], e->pos())) { - if (currentIndex == 9) { - const QRect yes = QRect(707, 804, 531, 164); - Params().putBool("RecordFront", contains(yes, e->pos())); - } - currentIndex += 1; - } else if (currentIndex == (boundingRect.size() - 2) && contains(boundingRect.last(), e->pos())) { - currentIndex = 0; - } - - if (currentIndex >= (boundingRect.size() - 1)) { - emit completedTraining(); - } else { - update(); - } -} - -void TrainingGuide::showEvent(QShowEvent *event) { - currentIndex = 0; - click_timer.start(); -} - -QImage TrainingGuide::loadImage(int id) { - QImage img(img_path + QString("step%1.png").arg(id)); - image_raw_size = img.size(); - if (image_raw_size != rect().size()) { - img = img.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation); - } - return img; -} - -void TrainingGuide::paintEvent(QPaintEvent *event) { - QPainter painter(this); - - QRect bg(0, 0, painter.device()->width(), painter.device()->height()); - painter.fillRect(bg, QColor("#000000")); - - image = loadImage(currentIndex); - QRect rect(image.rect()); - rect.moveCenter(bg.center()); - painter.drawImage(rect.topLeft(), image); - - // progress bar - if (currentIndex > 0 && currentIndex < (boundingRect.size() - 2)) { - const int h = 20; - const int w = (currentIndex / (float)(boundingRect.size() - 2)) * width(); - painter.fillRect(QRect(0, height() - h, w, h), QColor("#465BEA")); - } -} - -void TermsPage::showEvent(QShowEvent *event) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(45, 35, 45, 45); - main_layout->setSpacing(0); - - QVBoxLayout *vlayout = new QVBoxLayout(); - vlayout->setContentsMargins(165, 165, 165, 0); - main_layout->addLayout(vlayout); - - QLabel *title = new QLabel(tr("Welcome to openpilot")); - title->setStyleSheet("font-size: 90px; font-weight: 500;"); - vlayout->addWidget(title, 0, Qt::AlignTop | Qt::AlignLeft); - - vlayout->addSpacing(90); - QLabel *desc = new QLabel(tr("You must accept the Terms and Conditions to use openpilot. Read the latest terms at https://comma.ai/terms before continuing.")); - desc->setWordWrap(true); - desc->setStyleSheet("font-size: 80px; font-weight: 300;"); - vlayout->addWidget(desc, 0); - - vlayout->addStretch(); - - QHBoxLayout* buttons = new QHBoxLayout; - buttons->setMargin(0); - buttons->setSpacing(45); - main_layout->addLayout(buttons); - - QPushButton *decline_btn = new QPushButton(tr("Decline")); - buttons->addWidget(decline_btn); - QObject::connect(decline_btn, &QPushButton::clicked, this, &TermsPage::declinedTerms); - - accept_btn = new QPushButton(tr("Agree")); - accept_btn->setStyleSheet(R"( - QPushButton { - background-color: #465BEA; - } - QPushButton:pressed { - background-color: #3049F4; - } - )"); - buttons->addWidget(accept_btn); - QObject::connect(accept_btn, &QPushButton::clicked, this, &TermsPage::acceptedTerms); -} - -void DeclinePage::showEvent(QShowEvent *event) { - if (layout()) { - return; - } - - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(45); - main_layout->setSpacing(40); - - QLabel *text = new QLabel(this); - text->setText(tr("You must accept the Terms and Conditions in order to use openpilot.")); - text->setStyleSheet(R"(font-size: 80px; font-weight: 300; margin: 200px;)"); - text->setWordWrap(true); - main_layout->addWidget(text, 0, Qt::AlignCenter); - - QHBoxLayout* buttons = new QHBoxLayout; - buttons->setSpacing(45); - main_layout->addLayout(buttons); - - QPushButton *back_btn = new QPushButton(tr("Back")); - buttons->addWidget(back_btn); - - QObject::connect(back_btn, &QPushButton::clicked, this, &DeclinePage::getBack); - - QPushButton *uninstall_btn = new QPushButton(tr("Decline, uninstall %1").arg(getBrand())); - uninstall_btn->setStyleSheet("background-color: #B73D3D"); - buttons->addWidget(uninstall_btn); - QObject::connect(uninstall_btn, &QPushButton::clicked, [=]() { - Params().putBool("DoUninstall", true); - }); -} - -void OnboardingWindow::updateActiveScreen() { - if (!accepted_terms) { - setCurrentIndex(0); - } else if (!training_done) { - setCurrentIndex(1); - } else { - emit onboardingDone(); - } -} - -OnboardingWindow::OnboardingWindow(QWidget *parent) : QStackedWidget(parent) { - std::string current_terms_version = params.get("TermsVersion"); - std::string current_training_version = params.get("TrainingVersion"); - accepted_terms = params.get("HasAcceptedTerms") == current_terms_version; - training_done = params.get("CompletedTrainingVersion") == current_training_version; - - TermsPage* terms = new TermsPage(this); - addWidget(terms); - connect(terms, &TermsPage::acceptedTerms, [=]() { - params.put("HasAcceptedTerms", current_terms_version); - accepted_terms = true; - updateActiveScreen(); - }); - connect(terms, &TermsPage::declinedTerms, [=]() { setCurrentIndex(2); }); - - TrainingGuide* tr = new TrainingGuide(this); - addWidget(tr); - connect(tr, &TrainingGuide::completedTraining, [=]() { - training_done = true; - params.put("CompletedTrainingVersion", current_training_version); - updateActiveScreen(); - }); - - DeclinePage* declinePage = new DeclinePage(this); - addWidget(declinePage); - connect(declinePage, &DeclinePage::getBack, [=]() { updateActiveScreen(); }); - - setStyleSheet(R"( - * { - color: white; - background-color: black; - } - QPushButton { - height: 160px; - font-size: 55px; - font-weight: 400; - border-radius: 10px; - background-color: #4F4F4F; - } - )"); - updateActiveScreen(); -} diff --git a/selfdrive/ui/qt/offroad/onboarding.h b/selfdrive/ui/qt/offroad/onboarding.h deleted file mode 100644 index db229c5fa..000000000 --- a/selfdrive/ui/qt/offroad/onboarding.h +++ /dev/null @@ -1,107 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#include "common/params.h" -#include "selfdrive/ui/qt/qt_window.h" - -class TrainingGuide : public QFrame { - Q_OBJECT - -public: - explicit TrainingGuide(QWidget *parent = 0); - -private: - void showEvent(QShowEvent *event) override; - void paintEvent(QPaintEvent *event) override; - void mouseReleaseEvent(QMouseEvent* e) override; - QImage loadImage(int id); - - QImage image; - QSize image_raw_size; - int currentIndex = 0; - - // Bounding boxes for each training guide step - const QRect continueBtn = {1840, 0, 320, 1080}; - QVector boundingRect { - QRect(112, 804, 618, 164), - continueBtn, - continueBtn, - QRect(1641, 558, 210, 313), - QRect(1662, 528, 184, 108), - continueBtn, - QRect(1814, 621, 211, 170), - QRect(1350, 0, 497, 755), - QRect(1540, 386, 468, 238), - QRect(112, 804, 1126, 164), - QRect(1598, 199, 316, 333), - continueBtn, - QRect(1364, 90, 796, 990), - continueBtn, - QRect(1593, 114, 318, 853), - QRect(1379, 511, 391, 243), - continueBtn, - continueBtn, - QRect(630, 804, 626, 164), - QRect(108, 804, 426, 164), - }; - - const QString img_path = "../assets/training/"; - QElapsedTimer click_timer; - -signals: - void completedTraining(); -}; - - -class TermsPage : public QFrame { - Q_OBJECT - -public: - explicit TermsPage(QWidget *parent = 0) : QFrame(parent) {} - -private: - void showEvent(QShowEvent *event) override; - - QPushButton *accept_btn; - -signals: - void acceptedTerms(); - void declinedTerms(); -}; - -class DeclinePage : public QFrame { - Q_OBJECT - -public: - explicit DeclinePage(QWidget *parent = 0) : QFrame(parent) {} - -private: - void showEvent(QShowEvent *event) override; - -signals: - void getBack(); -}; - -class OnboardingWindow : public QStackedWidget { - Q_OBJECT - -public: - explicit OnboardingWindow(QWidget *parent = 0); - inline void showTrainingGuide() { setCurrentIndex(1); } - inline bool completed() const { return accepted_terms && training_done; } - -private: - void updateActiveScreen(); - - Params params; - bool accepted_terms = false, training_done = false; - -signals: - void onboardingDone(); -}; diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc deleted file mode 100644 index 2816e3974..000000000 --- a/selfdrive/ui/qt/offroad/settings.cc +++ /dev/null @@ -1,897 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "common/watchdog.h" -#include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/network/networking.h" -#include "selfdrive/ui/qt/offroad/settings.h" -#include "selfdrive/ui/qt/qt_window.h" -#include "selfdrive/ui/qt/widgets/input.h" -#include "selfdrive/ui/qt/widgets/prime.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" -#include "selfdrive/ui/qt/offroad/developer_panel.h" - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { - syncRhdToggle(); - - // param, title, desc, icon, restart needed - std::vector> toggle_defs{ - { - "OpenpilotEnabledToggle", - tr("Enable openpilot"), - tr("Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature."), - "../assets/icons/chffr_wheel.png", - true, - }, - { - "ExperimentalMode", - tr("Experimental Mode"), - "", - "../assets/icons/experimental_white.svg", - false, - }, - { - "SafeMode", - tr("Safe Mode"), - tr("Temporarily force driving-affecting StarPilot settings back to safe defaults, stock tuning, and the branch default model until disabled."), - "../assets/icons/warning.png", - true, - }, - { - "SimpleMode", - tr("Simple Mode"), - tr("Use a more stock-like Qt interface by hiding most branch-specific UI, theme, sound, and alert styling. This only changes presentation and does not change driving behavior."), - "../assets/icons/settings.png", - false, - }, - { - "DisengageOnAccelerator", - tr("Disengage on Accelerator Pedal"), - tr("When enabled, pressing the accelerator pedal will disengage openpilot."), - "../assets/icons/disengage_on_accelerator.svg", - false, - }, - { - "IsLdwEnabled", - tr("Enable Lane Departure Warnings"), - tr("Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h)."), - "../assets/icons/warning.png", - false, - }, - { - "AlwaysOnDM", - tr("Always-On Driver Monitoring"), - tr("Enable driver monitoring even when openpilot is not engaged."), - "../assets/icons/monitoring.png", - false, - }, - { - "IsRHD", - tr("Right Hand Driving"), - tr("Use right-hand-drive driver monitoring. This follows the auto-detected side until changed manually."), - "../assets/icons/monitoring.png", - false, - }, - { - "RecordFront", - tr("Record and Upload Driver Camera"), - tr("Upload data from the driver facing camera and help improve the driver monitoring algorithm."), - "../assets/icons/monitoring.png", - true, - }, - { - "RecordAudio", - tr("Record and Upload Microphone Audio"), - tr("Record and store microphone audio while driving. The audio will be included in the dashcam video in comma connect."), - "../assets/icons/microphone.png", - true, - }, - { - "IsMetric", - tr("Use Metric System"), - tr("Display speed in km/h instead of mph."), - "../assets/icons/metric.png", - false, - }, - }; - - - std::vector longi_button_texts{tr("Aggressive"), tr("Standard"), tr("Relaxed")}; - long_personality_setting = new ButtonParamControl("LongitudinalPersonality", tr("Driving Personality"), - tr("Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. " - "In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with " - "your steering wheel distance button."), - "../assets/icons/speed_limit.png", - longi_button_texts); - - // set up uiState update for personality setting - QObject::connect(uiState(), &UIState::uiUpdate, this, &TogglesPanel::updateState); - - for (auto &[param, title, desc, icon, needs_restart] : toggle_defs) { - auto toggle = new ParamControl(param, title, desc, icon, this); - - bool locked = params.getBool((param + "Lock").toStdString()); - toggle->setEnabled(!locked); - - if (needs_restart && !locked) { - toggle->setDescription(toggle->getDescription() + tr(" Changing this setting will restart openpilot if the car is powered on.")); - - QObject::connect(uiState(), &UIState::engagedChanged, [toggle](bool engaged) { - toggle->setEnabled(!engaged); - }); - - QObject::connect(toggle, &ParamControl::toggleFlipped, [=](bool state) { - params.putBool("OnroadCycleRequested", true); - }); - } - - if (param == "SimpleMode") { - QObject::connect(toggle, &ParamControl::toggleFlipped, this, [this](bool state) { - updateToggles(); - emit simpleModeChanged(state); - }); - } - - if (param == "IsRHD") { - QObject::connect(toggle, &ParamControl::toggleFlipped, this, [this](bool state) { - params.putBool("IsRHD", state); - params.putBool("IsRHDOverride", true); - }); - } - - addItem(toggle); - toggles[param.toStdString()] = toggle; - - // insert longitudinal personality after NDOG toggle - if (param == "DisengageOnAccelerator") { - addItem(long_personality_setting); - } - } - - // Toggles with confirmation dialogs - toggles["ExperimentalMode"]->setActiveIcon("../assets/icons/experimental.svg"); - toggles["ExperimentalMode"]->setConfirmation(true, true); - - connect(toggles["IsMetric"], &ToggleControl::toggleFlipped, [=](bool isMetric) { - updateMetric(isMetric); - }); -} - -void TogglesPanel::syncRhdToggle() { - if (!params.getBool("IsRHDOverride")) { - params.putBool("IsRHD", params.getBool("IsRhdDetected")); - } -} - -void TogglesPanel::updateState(const UIState &s) { - const SubMaster &sm = *(s.sm); - - if (sm.updated("selfdriveState")) { - auto personality = sm["selfdriveState"].getSelfdriveState().getPersonality(); - if (personality != s.scene.personality && s.scene.started && isVisible()) { - long_personality_setting->setCheckedButton(static_cast(personality)); - } - uiState()->scene.personality = personality; - } -} - -void TogglesPanel::expandToggleDescription(const QString ¶m) { - toggles[param.toStdString()]->showDescription(); -} - -void TogglesPanel::scrollToToggle(const QString ¶m) { - if (auto it = toggles.find(param.toStdString()); it != toggles.end()) { - auto scroll_area = qobject_cast(parent()->parent()); - if (scroll_area) { - scroll_area->ensureWidgetVisible(it->second); - } - } -} - -void TogglesPanel::showEvent(QShowEvent *event) { - updateToggles(); -} - -void TogglesPanel::updateToggles() { - syncRhdToggle(); - - const bool showAllToggles = params.getBool("ShowAllToggles"); - const bool safe_mode = params.getBool("SafeMode"); - const bool simple_mode = params.getBool("SimpleMode"); - if (safe_mode) { - if (params.getBool("ExperimentalMode")) { - params.putBool("ExperimentalMode", false); - } - if (params.getInt("LongitudinalPersonality") != static_cast(cereal::LongitudinalPersonality::RELAXED)) { - params.putInt("LongitudinalPersonality", static_cast(cereal::LongitudinalPersonality::RELAXED)); - } - } - auto experimental_mode_toggle = toggles["ExperimentalMode"]; - const QString e2e_description = QString("%1
" - "

%2


" - "%3
" - "

%4


" - "%5
") - .arg(tr("openpilot defaults to driving in chill mode. Experimental mode enables alpha-level features that aren't ready for chill mode. Experimental features are listed below:")) - .arg(tr("End-to-End Longitudinal Control")) - .arg(tr("Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. " - "Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; " - "mistakes should be expected.")) - .arg(tr("New Driving Visualization")) - .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner.")); - - const bool is_release = false; - auto cp_bytes = params.get("CarParamsPersistent"); - if (!cp_bytes.empty()) { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(cp_bytes.data(), cp_bytes.size())); - cereal::CarParams::Reader CP = cmsg.getRoot(); - - if (hasLongitudinalControl(CP) || showAllToggles) { - // normal description and toggle - experimental_mode_toggle->setEnabled(!safe_mode); - experimental_mode_toggle->setDescription(e2e_description); - long_personality_setting->setEnabled(!safe_mode); - if (safe_mode) { - long_personality_setting->setCheckedButton(static_cast(cereal::LongitudinalPersonality::RELAXED)); - } - } else { - // no long for now - experimental_mode_toggle->setEnabled(false); - long_personality_setting->setEnabled(false); - params.remove("ExperimentalMode"); - - const QString unavailable = tr("Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control."); - - QString long_desc = unavailable + " " + \ - tr("openpilot longitudinal control may come in a future update."); - if (CP.getAlphaLongitudinalAvailable()) { - if (is_release) { - long_desc = unavailable + " " + tr("An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches."); - } else { - long_desc = tr("Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode."); - } - } - experimental_mode_toggle->setDescription("" + long_desc + "

" + e2e_description); - } - - experimental_mode_toggle->refresh(); - } else { - experimental_mode_toggle->setDescription(e2e_description); - } - - if (safe_mode) { - experimental_mode_toggle->setEnabled(false); - long_personality_setting->setEnabled(false); - long_personality_setting->setCheckedButton(static_cast(cereal::LongitudinalPersonality::RELAXED)); - } - - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - auto disengage_on_accelerator_toggle = toggles["DisengageOnAccelerator"]; - disengage_on_accelerator_toggle->setVisible(showAllToggles || !starpilot_toggles.value("always_on_lateral").toBool()); - auto driver_camera_toggle = toggles["RecordFront"]; - driver_camera_toggle->setVisible(showAllToggles || !starpilot_toggles.value("no_logging").toBool()); - experimental_mode_toggle->setVisible(showAllToggles || !starpilot_toggles.value("conditional_experimental_mode").toBool()); - auto record_audio_toggle = toggles["RecordAudio"]; - record_audio_toggle->setVisible(showAllToggles || !starpilot_toggles.value("no_logging").toBool()); - toggles["IsRHD"]->refresh(); - - auto safe_mode_toggle = toggles["SafeMode"]; - if (safe_mode_toggle != nullptr) { - safe_mode_toggle->setVisible(!simple_mode); - } -} - -GalaxyQRPopup::GalaxyQRPopup(const QString &url, QWidget *parent) : DialogBase(parent) { - setStyleSheet("GalaxyQRPopup { background-color: #1a1a30; }"); - QVBoxLayout *layout = new QVBoxLayout(this); - layout->setAlignment(Qt::AlignCenter); - layout->setSpacing(30); - layout->setContentsMargins(60, 40, 60, 40); - - auto qr = qrcodegen::QrCode::encodeText(url.toUtf8().constData(), qrcodegen::QrCode::Ecc::LOW); - const int qr_size = qr.getSize(); - const int quiet_zone_modules = 4; - const int qr_display_size = 520; - const int image_size = qr_size + 2 * quiet_zone_modules; - QImage image(image_size, image_size, QImage::Format_RGB32); - image.fill(qRgb(255, 255, 255)); - for (int y = 0; y < qr_size; ++y) { - for (int x = 0; x < qr_size; ++x) { - image.setPixel(x + quiet_zone_modules, y + quiet_zone_modules, - qr.getModule(x, y) ? qRgb(0, 0, 0) : qRgb(255, 255, 255)); - } - } - - QLabel *title = new QLabel(tr("Scan to open Galaxy"), this); - title->setStyleSheet("font-size: 52px; font-weight: bold; color: white;"); - title->setAlignment(Qt::AlignCenter); - layout->addWidget(title); - - QLabel *qr_label = new QLabel(this); - qr_label->setPixmap(QPixmap::fromImage( - image.scaled(qr_display_size, qr_display_size, Qt::KeepAspectRatio), Qt::MonoOnly)); - qr_label->setAlignment(Qt::AlignCenter); - layout->addWidget(qr_label); - - QLabel *url_label = new QLabel(url, this); - url_label->setStyleSheet("font-size: 36px; color: #8b6cc5;"); - url_label->setAlignment(Qt::AlignCenter); - layout->addWidget(url_label); - - QLabel *hint = new QLabel(tr("Tap anywhere to dismiss"), this); - hint->setStyleSheet("font-size: 28px; color: #7e7e98;"); - hint->setAlignment(Qt::AlignCenter); - layout->addWidget(hint); -} - -DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { - setSpacing(50); - addItem(new LabelControl(tr("Dongle ID"), getDongleId().value_or(tr("N/A")))); - addItem(new LabelControl(tr("Serial"), params.get("HardwareSerial").c_str())); - - pair_device = new ButtonControl(tr("Pair Device"), tr("PAIR"), - useKonikServer() ? tr("Pair your device with Konik connect (stable.konik.ai).") : tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); - connect(pair_device, &ButtonControl::clicked, [=]() { - PairingPopup popup(this); - popup.exec(); - }); - addItem(pair_device); - - const std::string galaxy_dir = Hardware::PC() ? (Path::comma_home() + "/starpilot/data/galaxy") : "/data/galaxy"; - const std::string galaxy_auth_path = galaxy_dir + "/glxyauth"; - const std::string galaxy_session_path = galaxy_dir + "/glxysession"; - const std::string galaxy_slug_path = galaxy_dir + "/glxyslug"; - - auto showGalaxyQR = [=]() { - std::string slug = util::read_file(galaxy_slug_path); - if (slug.empty()) { - ConfirmationDialog::alert(tr("Galaxy is not paired yet."), this); - return; - } - - GalaxyQRPopup popup("https://galaxy.firestar.link/" + QString::fromStdString(slug), this); - popup.exec(); - }; - - pair_galaxy = new ButtonControl(tr("Galaxy"), tr("PAIR"), tr("Pair your device with Galaxy for remote access to The Galaxy.")); - connect(pair_galaxy, &ButtonControl::clicked, [=]() { - const std::string current_password = util::read_file(galaxy_auth_path); - if (current_password.empty()) { - QString new_password = InputDialog::getText( - tr("Set Galaxy Password"), this, - tr("Set a password to secure your Galaxy access. (Min 6 characters)"), - false, 6); - if (new_password.isEmpty()) { - return; - } - - std::string hash = QCryptographicHash::hash(new_password.toUtf8(), QCryptographicHash::Sha256).toHex().toStdString(); - util::create_directories(galaxy_dir, 0775); - util::write_file(galaxy_auth_path.c_str(), hash.data(), hash.size(), O_WRONLY | O_CREAT | O_TRUNC); - - QByteArray session_bytes(32, 0); - QRandomGenerator::securelySeeded().fillRange(reinterpret_cast(session_bytes.data()), 8); - std::string session_token = session_bytes.toHex().toStdString(); - util::write_file(galaxy_session_path.c_str(), session_token.data(), session_token.size(), O_WRONLY | O_CREAT | O_TRUNC); - - static constexpr char charset[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - std::string slug(16, '\0'); - auto *rng = QRandomGenerator::global(); - for (int i = 0; i < 16; ++i) { - slug[i] = charset[rng->bounded(62)]; - } - util::write_file(galaxy_slug_path.c_str(), slug.data(), slug.size(), O_WRONLY | O_CREAT | O_TRUNC); - - pair_galaxy->setText(tr("UNPAIR")); - galaxy_qr_btn->setVisible(true); - showGalaxyQR(); - return; - } - - if (ConfirmationDialog::confirm(tr("Are you sure you want to unpair from Galaxy?"), tr("Unpair"), this)) { - std::remove(galaxy_auth_path.c_str()); - std::remove(galaxy_session_path.c_str()); - std::remove(galaxy_slug_path.c_str()); - pair_galaxy->setText(tr("PAIR")); - galaxy_qr_btn->setVisible(false); - } - }); - - galaxy_qr_btn = new QPushButton(tr("QR")); - galaxy_qr_btn->setFixedSize(250, 100); - galaxy_qr_btn->setStyleSheet(R"( - QPushButton { background-color: #393939; color: #E4E4E4; border-radius: 50px; font-size: 35px; font-weight: 500; } - QPushButton:pressed { background-color: #4a4a4a; } - )"); - galaxy_qr_btn->setVisible(false); - connect(galaxy_qr_btn, &QPushButton::clicked, showGalaxyQR); - if (QHBoxLayout *hlayout = pair_galaxy->findChild()) { - hlayout->insertWidget(3, galaxy_qr_btn); - } - - const bool galaxy_paired = !util::read_file(galaxy_auth_path).empty(); - pair_galaxy->setText(galaxy_paired ? tr("UNPAIR") : tr("PAIR")); - galaxy_qr_btn->setVisible(galaxy_paired); - addItem(pair_galaxy); - - // offroad-only buttons - - auto dcamBtn = new ButtonControl(tr("Driver Camera"), tr("PREVIEW"), - tr("Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)")); - connect(dcamBtn, &ButtonControl::clicked, [=]() { emit showDriverView(); }); - addItem(dcamBtn); - - resetDmCalibBtn = new ButtonControl( - tr("Reset Driver Monitoring"), - tr("RESET"), - tr("Clears the saved driver monitoring wheel-side calibration and any manual right-hand-driving override if the device thinks you're seated on the wrong side. " - "Resetting will restart openpilot if the car is powered on.") - ); - connect(resetDmCalibBtn, &ButtonControl::clicked, [&]() { - if (!uiState()->engaged()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset driver monitoring calibration?"), tr("Reset"), this)) { - if (!uiState()->engaged()) { - params.remove("IsRhdDetected"); - params.remove("IsRHD"); - params.remove("IsRHDOverride"); - params.putBool("OnroadCycleRequested", true); - } - } - } else { - ConfirmationDialog::alert(tr("Disengage to Reset Driver Monitoring"), this); - } - }); - addItem(resetDmCalibBtn); - - resetCalibBtn = new ButtonControl(tr("Reset Calibration"), tr("RESET"), ""); - connect(resetCalibBtn, &ButtonControl::showDescriptionEvent, this, &DevicePanel::updateCalibDescription); - connect(resetCalibBtn, &ButtonControl::clicked, [&]() { - if (!uiState()->engaged()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset calibration?"), tr("Reset"), this)) { - // Check engaged again in case it changed while the dialog was open - if (!uiState()->engaged()) { - params.remove("CalibrationParams"); - params.remove("LiveTorqueParameters"); - params.remove("LiveParameters"); - params.remove("LiveParametersV2"); - params.remove("LiveDelay"); - params.putBool("OnroadCycleRequested", true); - updateCalibDescription(); - } - } - } else { - ConfirmationDialog::alert(tr("Disengage to Reset Calibration"), this); - } - }); - addItem(resetCalibBtn); - - auto retrainingBtn = new ButtonControl(tr("Review Training Guide"), tr("REVIEW"), tr("Review the rules, features, and limitations of openpilot")); - connect(retrainingBtn, &ButtonControl::clicked, [=]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to review the training guide?"), tr("Review"), this)) { - emit reviewTrainingGuide(); - } - }); - addItem(retrainingBtn); - - if (Hardware::TICI()) { - auto regulatoryBtn = new ButtonControl(tr("Regulatory"), tr("VIEW"), ""); - connect(regulatoryBtn, &ButtonControl::clicked, [=]() { - const std::string txt = util::read_file("../assets/offroad/fcc.html"); - ConfirmationDialog::rich(QString::fromStdString(txt), this); - }); - addItem(regulatoryBtn); - } - - auto translateBtn = new ButtonControl(tr("Change Language"), tr("CHANGE"), ""); - connect(translateBtn, &ButtonControl::clicked, [=]() { - QMap langs = getSupportedLanguages(); - QString selection = MultiOptionDialog::getSelection(tr("Select a language"), langs.keys(), langs.key(uiState()->language), this); - if (!selection.isEmpty()) { - // put language setting, exit Qt UI, and trigger fast restart - params.put("LanguageSetting", langs[selection].toStdString()); - qApp->exit(18); - watchdog_kick(0); - } - }); - addItem(translateBtn); - - QObject::connect(uiState()->prime_state, &PrimeState::changed, [this] (PrimeState::Type type) { - pair_device->setVisible(type == PrimeState::PRIME_TYPE_UNPAIRED); - }); - QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { - for (auto btn : findChildren()) { - if (btn != pair_device && btn != resetCalibBtn && btn != resetDmCalibBtn) { - btn->setEnabled(offroad); - } - } - }); - - // power buttons - QHBoxLayout *power_layout = new QHBoxLayout(); - power_layout->setSpacing(30); - - QPushButton *reboot_btn = new QPushButton(tr("Reboot")); - reboot_btn->setObjectName("reboot_btn"); - power_layout->addWidget(reboot_btn); - QObject::connect(reboot_btn, &QPushButton::clicked, this, &DevicePanel::reboot); - - QPushButton *poweroff_btn = new QPushButton(tr("Power Off")); - poweroff_btn->setObjectName("poweroff_btn"); - power_layout->addWidget(poweroff_btn); - QObject::connect(poweroff_btn, &QPushButton::clicked, this, &DevicePanel::poweroff); - - if (!Hardware::PC()) { - connect(uiState(), &UIState::offroadTransition, poweroff_btn, &QPushButton::setVisible); - } - - setStyleSheet(R"( - #reboot_btn { height: 120px; border-radius: 15px; background-color: #393939; } - #reboot_btn:pressed { background-color: #4a4a4a; } - #poweroff_btn { height: 120px; border-radius: 15px; background-color: #E22C2C; } - #poweroff_btn:pressed { background-color: #FF2424; } - )"); - addItem(power_layout); -} - -void DevicePanel::updateCalibDescription() { - QString desc = tr("openpilot requires the device to be mounted within 4° left or right and within 5° up or 9° down."); - std::string calib_bytes = params.get("CalibrationParams"); - if (!calib_bytes.empty()) { - try { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(calib_bytes.data(), calib_bytes.size())); - auto calib = cmsg.getRoot().getLiveCalibration(); - if (calib.getCalStatus() != cereal::LiveCalibrationData::Status::UNCALIBRATED) { - double pitch = calib.getRpyCalib()[1] * (180 / M_PI); - double yaw = calib.getRpyCalib()[2] * (180 / M_PI); - desc += tr(" Your device is pointed %1° %2 and %3° %4.") - .arg(QString::number(std::abs(pitch), 'g', 1), pitch > 0 ? tr("down") : tr("up"), - QString::number(std::abs(yaw), 'g', 1), yaw > 0 ? tr("left") : tr("right")); - } - } catch (kj::Exception) { - qInfo() << "invalid CalibrationParams"; - } - } - - int lag_perc = 0; - std::string lag_bytes = params.get("LiveDelay"); - if (!lag_bytes.empty()) { - try { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(lag_bytes.data(), lag_bytes.size())); - lag_perc = cmsg.getRoot().getLiveDelay().getCalPerc(); - } catch (kj::Exception) { - qInfo() << "invalid LiveDelay"; - } - } - if (lag_perc < 100) { - desc += tr("\n\nSteering lag calibration is %1% complete.").arg(lag_perc); - } else { - desc += tr("\n\nSteering lag calibration is complete."); - } - - std::string torque_bytes = params.get("LiveTorqueParameters"); - if (!torque_bytes.empty()) { - try { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(torque_bytes.data(), torque_bytes.size())); - auto torque = cmsg.getRoot().getLiveTorqueParameters(); - // don't add for non-torque cars - if (torque.getUseParams()) { - int torque_perc = torque.getCalPerc(); - if (torque_perc < 100) { - desc += tr(" Steering torque response calibration is %1% complete.").arg(torque_perc); - } else { - desc += tr(" Steering torque response calibration is complete."); - } - } - } catch (kj::Exception) { - qInfo() << "invalid LiveTorqueParameters"; - } - } - - desc += "\n\n"; - desc += tr("openpilot is continuously calibrating, resetting is rarely required. " - "Resetting calibration will restart openpilot if the car is powered on."); - resetCalibBtn->setDescription(desc); -} - -void DevicePanel::reboot() { - if (!uiState()->engaged()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reboot?"), tr("Reboot"), this)) { - // Check engaged again in case it changed while the dialog was open - if (!uiState()->engaged()) { - params.putBool("DoReboot", true); - } - } - } else { - ConfirmationDialog::alert(tr("Disengage to Reboot"), this); - } -} - -void DevicePanel::poweroff() { - if (!uiState()->engaged()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to power off?"), tr("Power Off"), this)) { - // Check engaged again in case it changed while the dialog was open - if (!uiState()->engaged()) { - params.putBool("DoShutdown", true); - } - } - } else { - ConfirmationDialog::alert(tr("Disengage to Power Off"), this); - } -} - -void SettingsWindow::showEvent(QShowEvent *event) { - setCurrentPanel(0); -} - -void SettingsWindow::hideEvent(QHideEvent *event) { - closePanel(); - closeSubPanel(); - - panelOpen = false; - subPanelOpen = false; - subSubPanelOpen = false; - subSubSubPanelOpen = false; - - updateStarPilotToggles(); -} - -void SettingsWindow::setCurrentPanel(int index, const QString ¶m) { - if (!param.isEmpty()) { - // Check if param ends with "Panel" to determine if it's a panel name - if (param.endsWith("Panel")) { - QString panelName = param; - panelName.chop(5); // Remove "Panel" suffix - - // Find the panel by name - for (int i = 0; i < nav_btns->buttons().size(); i++) { - if (nav_btns->buttons()[i]->text() == tr(panelName.toStdString().c_str())) { - index = i; - break; - } - } - } else { - emit expandToggleDescription(param); - emit scrollToToggle(param); - } - } - - panel_widget->setCurrentIndex(index); - nav_btns->buttons()[index]->setChecked(true); -} - -SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { - - // setup two main layouts - sidebar_widget = new QWidget; - QVBoxLayout *sidebar_layout = new QVBoxLayout(sidebar_widget); - panel_widget = new QStackedWidget(); - - // close button - QPushButton *close_btn = new QPushButton(tr("↠Back")); - close_btn->setStyleSheet(R"( - QPushButton { - font-size: 50px; - border-radius: 25px; - background-color: #292929; - font-weight: 500; - } - QPushButton:pressed { - background-color: #ADADAD; - } - )"); - close_btn->setFixedSize(300, 125); - sidebar_layout->addSpacing(10); - sidebar_layout->addWidget(close_btn, 0, Qt::AlignRight); - QObject::connect(close_btn, &QPushButton::clicked, [this]() { - if (subSubSubPanelOpen) { - closeSubSubSubPanel(); - subSubSubPanelOpen = false; - } else if (subSubPanelOpen) { - closeSubSubPanel(); - subSubPanelOpen = false; - } else if (subPanelOpen) { - closeSubPanel(); - subPanelOpen = false; - } else if (panelOpen) { - closePanel(); - panelOpen = false; - } else { - closeSettings(); - } - }); - - // setup panels - DevicePanel *device = new DevicePanel(this); - QObject::connect(device, &DevicePanel::reviewTrainingGuide, this, &SettingsWindow::reviewTrainingGuide); - QObject::connect(device, &DevicePanel::showDriverView, this, &SettingsWindow::showDriverView); - - TogglesPanel *toggles = new TogglesPanel(this); - QObject::connect(this, &SettingsWindow::expandToggleDescription, toggles, &TogglesPanel::expandToggleDescription); - QObject::connect(this, &SettingsWindow::scrollToToggle, toggles, &TogglesPanel::scrollToToggle); - - auto networking = new Networking(this); - QObject::connect(uiState()->prime_state, &PrimeState::changed, networking, &Networking::setPrimeType); - - QObject::connect(toggles, &TogglesPanel::updateMetric, this, &SettingsWindow::updateMetric); - - StarPilotSettingsWindow *starpilotSettingsWindow = new StarPilotSettingsWindow(this); - QObject::connect(starpilotSettingsWindow, &StarPilotSettingsWindow::openPanel, [this]() {panelOpen=true;}); - QObject::connect(starpilotSettingsWindow, &StarPilotSettingsWindow::openSubPanel, [this]() {subPanelOpen=true;}); - QObject::connect(starpilotSettingsWindow, &StarPilotSettingsWindow::openSubSubPanel, [this]() {subSubPanelOpen=true;}); - QObject::connect(starpilotSettingsWindow, &StarPilotSettingsWindow::openSubSubSubPanel, [this]() {subSubSubPanelOpen=true;}); - QObject::connect(starpilotSettingsWindow, &StarPilotSettingsWindow::tuningLevelChanged, this, &SettingsWindow::updateDeveloperToggle); - - DeveloperPanel *developerPanel = new DeveloperPanel(this); - QObject::connect(developerPanel, &DeveloperPanel::openSubPanel, [this]() {subPanelOpen=true;}); - QObject::connect(developerPanel, &DeveloperPanel::openSubSubPanel, [this]() {subSubPanelOpen=true;}); - QObject::connect(developerPanel, &DeveloperPanel::showAllTogglesChanged, [this]() { - updateDeveloperToggle(params.getInt("TuningLevel")); - }); - QObject::connect(toggles, &TogglesPanel::simpleModeChanged, [this](bool enabled) { - updateDeveloperToggle(params.getInt("TuningLevel")); - if (enabled && panel_widget->currentIndex() < nav_btns->buttons().size() && - nav_btns->buttons()[panel_widget->currentIndex()]->text() == tr("StarPilot")) { - setCurrentPanel(2); - } - }); - - QList> panels = { - {tr("Device"), device}, - {tr("Network"), networking}, - {tr("Toggles"), toggles}, - {tr("Software"), new SoftwarePanel(this)}, - {tr("Developer"), developerPanel}, - {tr("StarPilot"), starpilotSettingsWindow}, - }; - - nav_btns = new QButtonGroup(this); - for (auto &[name, panel] : panels) { - QPushButton *btn = new QPushButton(name); - btn->setCheckable(true); - btn->setChecked(nav_btns->buttons().size() == 0); - btn->setStyleSheet(R"( - QPushButton { - color: grey; - border: none; - background: none; - font-size: 65px; - font-weight: 500; - } - QPushButton:checked { - color: white; - } - QPushButton:pressed { - color: #ADADAD; - } - )"); - btn->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - nav_btns->addButton(btn); - sidebar_layout->addWidget(btn, 0, Qt::AlignRight); - - const int lr_margin = name != tr("Network") ? 50 : 0; // Network panel handles its own margins - panel->setContentsMargins(lr_margin, 25, lr_margin, 25); - - ScrollView *panel_frame = new ScrollView(panel, this); - panel_widget->addWidget(panel_frame); - - QObject::connect(btn, &QPushButton::clicked, [=, w = panel_frame]() { - if (w->widget() == starpilotSettingsWindow) { - bool tuningLevelConfirmed = params.getBool("TuningLevelConfirmed"); - - if (!tuningLevelConfirmed) { - int starpilotHours = QJsonDocument::fromJson(QString::fromStdString(params.get("StarPilotStats")).toUtf8()).object().value("StarPilotSeconds").toInt() / (60 * 60); - int openpilotHours = params.getInt("KonikMinutes") / 60 + params.getInt("openpilotMinutes") / 60; - - if (starpilotHours < 1 && openpilotHours < 100) { - if (openpilotHours < 10) { - if (ConfirmationDialog::alert(tr("Welcome to StarPilot! Since you're new to openpilot, the \"Minimal\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 0); - } - } else { - if (ConfirmationDialog::alert(tr("Welcome to StarPilot! Since you're new to StarPilot, the \"Minimal\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 0); - } - } - } else if (starpilotHours < 50 && openpilotHours < 100) { - if (ConfirmationDialog::alert(tr("Since you're fairly new to StarPilot, the \"Minimal\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 0); - } - } else if (starpilotHours < 100) { - if (openpilotHours >= 100) { - if (ConfirmationDialog::alert(tr("Since you're experienced with openpilot, the \"Standard\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 1); - } - } else { - if (ConfirmationDialog::alert(tr("Since you're experienced with StarPilot, the \"Standard\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 1); - } - } - } else if (starpilotHours >= 100) { - if (ConfirmationDialog::alert(tr("Since you're very experienced with StarPilot, the \"Advanced\" toggle preset has been applied, but you can change this at any time via the \"Tuning Level\" button!"), this, true)) { - params.putBool("TuningLevelConfirmed", true); - params.putInt("TuningLevel", 2); - } - } - updateTuningLevel(); - } - } - - if (subSubSubPanelOpen) { - closeSubSubSubPanel(); - subSubSubPanelOpen = false; - } - if (subSubPanelOpen) { - closeSubSubPanel(); - subSubPanelOpen = false; - } - if (subPanelOpen) { - closeSubPanel(); - subPanelOpen = false; - } - if (panelOpen) { - closePanel(); - panelOpen = false; - } - btn->setChecked(true); - panel_widget->setCurrentWidget(w); - }); - } - sidebar_layout->setContentsMargins(50, 50, 100, 50); - - // main settings layout, sidebar + main panel - QHBoxLayout *main_layout = new QHBoxLayout(this); - - sidebar_widget->setFixedWidth(500); - main_layout->addWidget(sidebar_widget); - main_layout->addWidget(panel_widget); - - setStyleSheet(R"( - * { - color: white; - font-size: 50px; - } - SettingsWindow { - background-color: black; - } - QStackedWidget, ScrollView { - background-color: #292929; - border-radius: 30px; - } - )"); - - updateDeveloperToggle(params.getInt("TuningLevel")); -} - -void SettingsWindow::updateDeveloperToggle(int tuningLevel) { - for (QAbstractButton *btn : nav_btns->buttons()) { - if (btn->text() == tr("Developer")) { - btn->setVisible(tuningLevel >= 3 || params.getBool("ShowAllToggles")); - } else if (btn->text() == tr("StarPilot")) { - btn->setVisible(!params.getBool("SimpleMode")); - } - } -} diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h deleted file mode 100644 index 7630c296e..000000000 --- a/selfdrive/ui/qt/offroad/settings.h +++ /dev/null @@ -1,143 +0,0 @@ -#pragma once - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/controls.h" - -// ********** settings window + top-level panels ********** -class SettingsWindow : public QFrame { - Q_OBJECT - -public: - explicit SettingsWindow(QWidget *parent = 0); - void setCurrentPanel(int index, const QString ¶m = ""); - -protected: - void showEvent(QShowEvent *event) override; - - void hideEvent(QHideEvent *event) override; - -signals: - void closeSettings(); - void reviewTrainingGuide(); - void showDriverView(); - void expandToggleDescription(const QString ¶m); - void scrollToToggle(const QString ¶m); - - void closePanel(); - void closeSubPanel(); - void closeSubSubPanel(); - void closeSubSubSubPanel(); - void updateMetric(bool isMetric, bool bootRun=false); - void updateTuningLevel(); - -private: - QPushButton *sidebar_alert_widget; - QWidget *sidebar_widget; - QButtonGroup *nav_btns; - QStackedWidget *panel_widget; - - void updateDeveloperToggle(int tuningLevel); - - bool panelOpen; - bool subPanelOpen; - bool subSubPanelOpen; - bool subSubSubPanelOpen; - - Params params; -}; - -class GalaxyQRPopup : public DialogBase { - Q_OBJECT - -public: - explicit GalaxyQRPopup(const QString &url, QWidget *parent = nullptr); - -protected: - void mousePressEvent(QMouseEvent *event) override { - reject(); - DialogBase::mousePressEvent(event); - } -}; - -class DevicePanel : public ListWidget { - Q_OBJECT -public: - explicit DevicePanel(SettingsWindow *parent); - -signals: - void reviewTrainingGuide(); - void showDriverView(); - -private slots: - void poweroff(); - void reboot(); - void updateCalibDescription(); - -private: - Params params; - ButtonControl *pair_device; - ButtonControl *pair_galaxy; - QPushButton *galaxy_qr_btn; - ButtonControl *resetCalibBtn; - ButtonControl *resetDmCalibBtn; -}; - -class TogglesPanel : public ListWidget { - Q_OBJECT -public: - explicit TogglesPanel(SettingsWindow *parent); - void showEvent(QShowEvent *event) override; - -signals: - void updateMetric(bool metric, bool bootRun=false); - void simpleModeChanged(bool enabled); - -public slots: - void expandToggleDescription(const QString ¶m); - void scrollToToggle(const QString ¶m); - -private slots: - void updateState(const UIState &s); - -private: - Params params; - std::map toggles; - ButtonParamControl *long_personality_setting; - - void syncRhdToggle(); - void updateToggles(); -}; - -class SoftwarePanel : public ListWidget { - Q_OBJECT -public: - explicit SoftwarePanel(QWidget* parent = nullptr); - -private: - void showEvent(QShowEvent *event) override; - void updateLabels(); - void checkForUpdates(); - - bool is_onroad = false; - - QLabel *onroadLbl; - LabelControl *versionLbl; - ButtonControl *installBtn; - ButtonControl *downloadBtn; - ButtonControl *targetBranchBtn; - - Params params; - ParamWatcher *fs_watch; -}; diff --git a/selfdrive/ui/qt/offroad/software_settings.cc b/selfdrive/ui/qt/offroad/software_settings.cc deleted file mode 100644 index efb595286..000000000 --- a/selfdrive/ui/qt/offroad/software_settings.cc +++ /dev/null @@ -1,202 +0,0 @@ -#include "selfdrive/ui/qt/offroad/settings.h" - -#include -#include -#include - -#include -#include - -#include "common/params.h" -#include "common/util.h" -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/controls.h" -#include "selfdrive/ui/qt/widgets/input.h" -#include "system/hardware/hw.h" - - -void SoftwarePanel::checkForUpdates() { - std::system("pkill -SIGUSR1 -f system.updated.updated"); -} - -SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { - onroadLbl = new QLabel(tr("Updates are only downloaded while the car is off or in park.")); - onroadLbl->setStyleSheet("font-size: 50px; font-weight: 400; text-align: left; padding-top: 30px; padding-bottom: 30px;"); - addItem(onroadLbl); - - // current version - versionLbl = new LabelControl(tr("Current Version"), ""); - addItem(versionLbl); - - // automatic updates toggle - ParamControl *automaticUpdatesToggle = new ParamControl("AutomaticUpdates", tr("Automatically Update StarPilot"), - tr("Automatically update StarPilot when the vehicle is parked with an active internet connection."), ""); - automaticUpdatesToggle->setVisible(true); - addItem(automaticUpdatesToggle); - - // download update btn - downloadBtn = new ButtonControl(tr("Download"), tr("CHECK")); - connect(downloadBtn, &ButtonControl::clicked, [=]() { - downloadBtn->setEnabled(false); - if (downloadBtn->text() == tr("CHECK")) { - checkForUpdates(); - } else { - std::system("pkill -SIGHUP -f system.updated.updated"); - } - starpilotUIState()->params_memory.putBool("ManualUpdateInitiated", true); - }); - addItem(downloadBtn); - - // install update btn - installBtn = new ButtonControl(tr("Install Update"), tr("INSTALL")); - connect(installBtn, &ButtonControl::clicked, [=]() { - installBtn->setEnabled(false); - params.putBool("DoReboot", true); - }); - addItem(installBtn); - - // branch selecting - targetBranchBtn = new ButtonControl(tr("Target Branch"), tr("SELECT")); - connect(targetBranchBtn, &ButtonControl::clicked, [=]() { - auto current = params.get("GitBranch"); - QStringList branches = QString::fromStdString(params.get("UpdaterAvailableBranches")).split(","); - if (!isFrogsGoMoo()) { - branches.removeAll("StarPilot-Vetting"); - branches.removeAll("MAKE-PRS-HERE"); - } - for (QString b : {current.c_str(), "devel-staging", "devel", "nightly", "nightly-dev", "master"}) { - auto i = branches.indexOf(b); - if (i >= 0) { - branches.removeAt(i); - branches.insert(0, b); - } - } - - QString cur = QString::fromStdString(params.get("UpdaterTargetBranch")); - QString selection = MultiOptionDialog::getSelection(tr("Select a branch"), branches, cur, this); - if (!selection.isEmpty()) { - params.put("UpdaterTargetBranch", selection.toStdString()); - targetBranchBtn->setValue(QString::fromStdString(params.get("UpdaterTargetBranch"))); - checkForUpdates(); - - if (selection != cur) { - if (StarPilotConfirmationDialog::yesorno(tr("This branch must be downloaded before switching. Would you like to download it now?"), this)) { - std::system("pkill -SIGHUP -f system.updated.updated"); - starpilotUIState()->params_memory.putBool("ManualUpdateInitiated", true); - } - } - } - }); - addItem(targetBranchBtn); - - // uninstall button - auto uninstallBtn = new ButtonControl(tr("Uninstall %1").arg(getBrand()), tr("UNINSTALL")); - connect(uninstallBtn, &ButtonControl::clicked, [&]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to uninstall?"), tr("Uninstall"), this)) { - if (StarPilotConfirmationDialog::yesorno(tr("Do you want to perform a full factory reset? All saved assets and settings will be permanently deleted!"), this)) { - if (StarPilotConfirmationDialog::yesorno(tr("This is a complete factory reset and cannot be undone. Are you absolutely sure you want to continue?"), this)) { - Params().clearAll(ParamKeyFlag::ALL); - } - } - params.putBool("DoUninstall", true); - } - }); - addItem(uninstallBtn); - - // error log button - auto errorLogBtn = new ButtonControl(tr("Error Log"), tr("VIEW"), tr("View the error log for openpilot crashes.")); - connect(errorLogBtn, &ButtonControl::clicked, [=]() { - std::string txt = util::read_file("/data/error_logs/error.txt"); - ConfirmationDialog::rich(QString::fromStdString(txt), this); - }); - addItem(errorLogBtn); - - fs_watch = new ParamWatcher(this); - QObject::connect(fs_watch, &ParamWatcher::paramChanged, [=](const QString ¶m_name, const QString ¶m_value) { - updateLabels(); - }); - - connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { - is_onroad = !offroad; - updateLabels(); - }); - - updateLabels(); -} - -void SoftwarePanel::showEvent(QShowEvent *event) { - // nice for testing on PC - installBtn->setEnabled(true); - - updateLabels(); - - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - if (starpilot_scene.online && params.get("UpdaterState") == "idle") { - checkForUpdates(); - } -} - -void SoftwarePanel::updateLabels() { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - bool parked = starpilot_scene.parked || isFrogsGoMoo(); - - // add these back in case the files got removed - fs_watch->addParam("LastUpdateTime"); - fs_watch->addParam("UpdateFailedCount"); - fs_watch->addParam("UpdaterState"); - fs_watch->addParam("UpdateAvailable"); - - if (!isVisible()) { - starpilot_scene.downloading_update = false; - return; - } - - // updater only runs offroad or when parked - onroadLbl->setVisible(is_onroad && !parked); - downloadBtn->setVisible(!is_onroad || parked); - - // download update - QString updater_state = QString::fromStdString(params.get("UpdaterState")); - bool failed = std::atoi(params.get("UpdateFailedCount").c_str()) > 0; - if (updater_state != "idle") { - downloadBtn->setEnabled(false); - downloadBtn->setValue(updater_state); - - starpilot_scene.downloading_update = true; - } else { - if (failed) { - downloadBtn->setText(tr("CHECK")); - downloadBtn->setValue(tr("failed to check for update")); - } else if (params.getBool("UpdaterFetchAvailable")) { - downloadBtn->setText(tr("DOWNLOAD")); - downloadBtn->setValue(tr("update available")); - } else { - QString lastUpdate = tr("never"); - auto tm = params.get("LastUpdateTime"); - if (!tm.empty()) { - lastUpdate = timeAgo(QDateTime::fromString(QString::fromStdString(tm + "Z"), Qt::ISODate)); - } - downloadBtn->setText(tr("CHECK")); - downloadBtn->setValue(tr("up to date, last checked %1").arg(lastUpdate)); - } - downloadBtn->setEnabled(true); - - starpilot_scene.downloading_update = false; - } - targetBranchBtn->setValue(QString::fromStdString(params.get("UpdaterTargetBranch"))); - - // current + new versions - versionLbl->setText(formatStarPilotDisplayVersionDescription(QString::fromStdString(params.get("UpdaterCurrentDescription")))); - versionLbl->setDescription(QString::fromStdString(params.get("UpdaterCurrentReleaseNotes"))); - - installBtn->setVisible((!is_onroad || parked) && params.getBool("UpdateAvailable")); - installBtn->setValue(formatStarPilotDisplayVersionDescription(QString::fromStdString(params.get("UpdaterNewDescription")))); - installBtn->setDescription(QString::fromStdString(params.get("UpdaterNewReleaseNotes"))); - - update(); -} diff --git a/selfdrive/ui/qt/onroad/alerts.cc b/selfdrive/ui/qt/onroad/alerts.cc deleted file mode 100644 index d8244f34a..000000000 --- a/selfdrive/ui/qt/onroad/alerts.cc +++ /dev/null @@ -1,163 +0,0 @@ -#include "selfdrive/ui/qt/onroad/alerts.h" - -#include -#include - -#include "selfdrive/ui/qt/util.h" - -void OnroadAlerts::updateState(const UIState &s, const StarPilotUIState &fs) { - Alert a = getAlert(*(s.sm), *(fs.sm), s.scene.started_frame); - if (!alert.equal(a)) { - // Hide only incoming NORMAL alerts. Keep userPrompt/critical visible. - if (a.status == cereal::SelfdriveState::AlertStatus::NORMAL && starpilot_toggles.value("hide_alerts").toBool()) { - clear(); - } else { - alert = a; - update(); - } - } - - sidebarsOpen = fs.starpilot_scene.sidebars_open; -} - -void OnroadAlerts::clear() { - alert = {}; - update(); - - alertHeight = 0; -} - -OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, const SubMaster &fpsm, uint64_t started_frame) { - const cereal::SelfdriveState::Reader &ss = sm["selfdriveState"].getSelfdriveState(); - const uint64_t selfdrive_frame = sm.rcv_frame("selfdriveState"); - - const cereal::StarPilotSelfdriveState::Reader &fpss = fpsm["starpilotSelfdriveState"].getStarpilotSelfdriveState(); - const bool starpilot_alert_received = fpsm.rcv_frame("starpilotSelfdriveState") > 0; - - Alert a = {}; - static QString crash_log_path = "/data/error_logs/error.txt"; - if (QFile::exists(crash_log_path)) { - if (starpilot_toggles.value("random_events").toBool()) { - a = {tr("openpilot crashed 💩"), - tr("Please post the \"Error Log\" in the StarPilot Discord!"), - "openpilotCrashedRandomEvent", - cereal::SelfdriveState::AlertSize::MID, - cereal::SelfdriveState::AlertStatus::CRITICAL}; - } else { - a = {tr("openpilot crashed"), - tr("Please post the \"Error Log\" in the StarPilot Discord!"), - "openpilotCrashed", - cereal::SelfdriveState::AlertSize::MID, - cereal::SelfdriveState::AlertStatus::CRITICAL}; - } - return a; - } else if (selfdrive_frame >= started_frame) { // Don't get old alert. - a = {ss.getAlertText1().cStr(), ss.getAlertText2().cStr(), - ss.getAlertType().cStr(), ss.getAlertSize(), ss.getAlertStatus()}; - - if (a.size == cereal::SelfdriveState::AlertSize::NONE && starpilot_alert_received) { - a = {fpss.getAlertText1().cStr(), fpss.getAlertText2().cStr(), - fpss.getAlertType().cStr(), static_cast(fpss.getAlertSize()), static_cast(fpss.getAlertStatus())}; - } - } - - if (!sm.updated("selfdriveState") && (sm.frame - started_frame) > 5 * UI_FREQ && !starpilot_toggles.value("force_onroad").toBool()) { - const int SELFDRIVE_STATE_TIMEOUT = 5; - const int ss_missing = (nanos_since_boot() - sm.rcv_time("selfdriveState")) / 1e9; - - // Handle selfdrive timeout - if (selfdrive_frame < started_frame) { - // car is started, but selfdriveState hasn't been seen at all - a = {tr("openpilot Unavailable"), tr("Waiting to start"), - "selfdriveWaiting", cereal::SelfdriveState::AlertSize::MID, - cereal::SelfdriveState::AlertStatus::NORMAL}; - } else if (ss_missing > SELFDRIVE_STATE_TIMEOUT && !Hardware::PC()) { - // car is started, but selfdrive is lagging or died - if (ss.getEnabled() && (ss_missing - SELFDRIVE_STATE_TIMEOUT) < 10) { - a = {tr("TAKE CONTROL IMMEDIATELY"), tr("System Unresponsive"), - "selfdriveUnresponsive", cereal::SelfdriveState::AlertSize::FULL, - cereal::SelfdriveState::AlertStatus::CRITICAL}; - } else { - a = {tr("System Unresponsive"), tr("Reboot Device"), - "selfdriveUnresponsivePermanent", cereal::SelfdriveState::AlertSize::MID, - cereal::SelfdriveState::AlertStatus::NORMAL}; - } - } - } - return a; -} - -void OnroadAlerts::paintEvent(QPaintEvent *event) { - if (alert.size == cereal::SelfdriveState::AlertSize::NONE) { - alertHeight = 0; - return; - } - static std::map alert_heights = { - {cereal::SelfdriveState::AlertSize::SMALL, 271}, - {cereal::SelfdriveState::AlertSize::MID, 420}, - {cereal::SelfdriveState::AlertSize::FULL, height()}, - }; - alertHeight = alert_heights[alert.size]; - int h = alertHeight; - - int margin = 40; - int radius = 30; - if (alert.size == cereal::SelfdriveState::AlertSize::FULL) { - margin = 0; - radius = 0; - } - alertHeight -= margin; - QRect r = QRect(0 + margin, height() - h + margin, width() - margin*2, h - margin*2); - - QPainter p(this); - const bool simple_mode = starpilot_toggles.value("simple_mode").toBool(); - QColor alert_color; - if (simple_mode) { - cereal::SelfdriveState::AlertStatus status = alert.status; - if (status == static_cast(cereal::StarPilotSelfdriveState::AlertStatus::STARPILOT)) { - status = cereal::SelfdriveState::AlertStatus::NORMAL; - } - alert_color = alert_colors.value(status, alert_colors.value(cereal::SelfdriveState::AlertStatus::NORMAL)); - } else { - alert_color = starpilot_alert_colors.value(static_cast(alert.status), - alert_colors.value(cereal::SelfdriveState::AlertStatus::NORMAL)); - } - - // draw background + gradient - p.setPen(Qt::NoPen); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - p.setBrush(QBrush(alert_color)); - p.drawRoundedRect(r, radius, radius); - - QLinearGradient g(0, r.y(), 0, r.bottom()); - g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.05)); - g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0.35)); - - p.setCompositionMode(QPainter::CompositionMode_DestinationOver); - p.setBrush(QBrush(g)); - p.drawRoundedRect(r, radius, radius); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - - // text - const QPoint c = r.center(); - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setRenderHint(QPainter::TextAntialiasing); - if (alert.size == cereal::SelfdriveState::AlertSize::SMALL) { - bool long_alert1 = alert.text1.length() > 40; - p.setFont(InterFont(long_alert1 && sidebarsOpen ? 64 : 74, QFont::DemiBold)); - p.drawText(r, Qt::AlignCenter, alert.text1); - } else if (alert.size == cereal::SelfdriveState::AlertSize::MID) { - bool long_alert1 = alert.text1.length() > 30; - p.setFont(InterFont(long_alert1 && sidebarsOpen ? 78 : 88, QFont::Bold)); - p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); - bool long_alert2 = alert.text2.length() > 40; - p.setFont(InterFont(long_alert2 && sidebarsOpen ? 56 : 66)); - p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); - } else if (alert.size == cereal::SelfdriveState::AlertSize::FULL) { - bool l = alert.text1.length() > 15; - p.setFont(InterFont(l ? 132 : 177, QFont::Bold)); - p.drawText(QRect(0, r.y() + (l ? 240 : 270), width(), 600), Qt::AlignHCenter | Qt::TextWordWrap, alert.text1); - p.setFont(InterFont(88)); - p.drawText(QRect(0, r.height() - (l ? 361 : 420), width(), 300), Qt::AlignHCenter | Qt::TextWordWrap, alert.text2); - } -} diff --git a/selfdrive/ui/qt/onroad/alerts.h b/selfdrive/ui/qt/onroad/alerts.h deleted file mode 100644 index 16a9234af..000000000 --- a/selfdrive/ui/qt/onroad/alerts.h +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once - -#include - -#include "selfdrive/ui/ui.h" - -class OnroadAlerts : public QWidget { - Q_OBJECT - -public: - OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} - void updateState(const UIState &s, const StarPilotUIState &fs); - void clear(); - - int alertHeight; - - QJsonObject starpilot_toggles; - -protected: - struct Alert { - QString text1; - QString text2; - QString type; - cereal::SelfdriveState::AlertSize size; - cereal::SelfdriveState::AlertStatus status; - - bool equal(const Alert &other) const { - return text1 == other.text1 && text2 == other.text2 && type == other.type && - size == other.size && status == other.status; - } - }; - - const QMap alert_colors = { - {cereal::SelfdriveState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, - {cereal::SelfdriveState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, - {cereal::SelfdriveState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, - }; - - void paintEvent(QPaintEvent*) override; - OnroadAlerts::Alert getAlert(const SubMaster &sm, const SubMaster &fpsm, uint64_t started_frame); - - QColor bg; - Alert alert = {}; - - bool sidebarsOpen; - - const QMap starpilot_alert_colors = { - {cereal::StarPilotSelfdriveState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, - {cereal::StarPilotSelfdriveState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, - {cereal::StarPilotSelfdriveState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, - {cereal::StarPilotSelfdriveState::AlertStatus::STARPILOT, QColor(0x17, 0x86, 0x44, 0xf1)}, - }; -}; diff --git a/selfdrive/ui/qt/onroad/annotated_camera.cc b/selfdrive/ui/qt/onroad/annotated_camera.cc deleted file mode 100644 index ad5ce5b6d..000000000 --- a/selfdrive/ui/qt/onroad/annotated_camera.cc +++ /dev/null @@ -1,281 +0,0 @@ - -#include "selfdrive/ui/qt/onroad/annotated_camera.h" - -#include -#include -#include -#include -#include -#include - -#include "common/params.h" -#include "common/swaglog.h" -#include "selfdrive/ui/qt/util.h" - -constexpr int CAMERA_VIEW_NONE = 4; - -// Window that shows camera view and variety of info drawn on top -AnnotatedCameraWidget::AnnotatedCameraWidget(VisionStreamType type, QWidget *parent) - : fps_filter(UI_FREQ, 3, 1. / UI_FREQ), CameraWidget("camerad", type, parent) { - pm = std::make_unique(std::vector{"uiDebug"}); - - main_layout = new QVBoxLayout(this); - main_layout->setMargin(UI_BORDER_SIZE); - main_layout->setSpacing(0); - - experimental_btn = new ExperimentalButton(this); - main_layout->addWidget(experimental_btn, 0, Qt::AlignTop | Qt::AlignRight); - - personality_btn = new DrivingPersonalityButton(this); - personality_btn->setVisible(false); - - for (int i = 0; i < static_cast(favorite_btns.size()); ++i) { - favorite_btns[i] = new FavoriteButton(i, this); - favorite_btns[i]->setVisible(false); - } - - screen_recorder = new ScreenRecorder(this); - screen_recorder->setVisible(false); -} - -bool AnnotatedCameraWidget::handleHudPress(const QPoint &pos) { - return hud.handleNavigationPress(pos); -} - -bool AnnotatedCameraWidget::handleHudRelease(const QPoint &pos) { - return hud.handleNavigationRelease(pos); -} - -void AnnotatedCameraWidget::updateState(const UIState &s, const StarPilotUIState &fs) { - // update engageability/experimental mode button - experimental_btn->updateState(s, fs); - dmon.updateState(s); - - const SubMaster &sm = *(s.sm); - - const cereal::CarState::Reader &carState = sm["carState"].getCarState(); - - static Params params; - const bool hide_steering_wheel = starpilot_toggles.value("hide_steering_wheel").toBool() || params.getBool("HideSteeringWheel"); - experimental_btn->setVisible(!hide_steering_wheel); - - const QPoint experimental_button_position = hide_steering_wheel - ? QPoint(width() - UI_BORDER_SIZE - btn_size, UI_BORDER_SIZE) - : QPoint(experimental_btn->x(), experimental_btn->y()); - starpilot_nvg->experimentalButtonPosition = experimental_button_position; - - std::vector visible_favorite_btns; - const bool favorites_anchor_ready = starpilot_nvg->dmIconPosition != QPoint(0, 0) && !starpilot_nvg->hideBottomIcons; - for (FavoriteButton *favorite_btn : favorite_btns) { - favorite_btn->updateState(); - if (favorites_anchor_ready && favorite_btn->shouldShow()) { - visible_favorite_btns.push_back(favorite_btn); - } else { - favorite_btn->setVisible(false); - } - } - - const bool onroad_distance_btn_enabled = favorites_anchor_ready && starpilot_toggles.value("onroad_distance_button").toBool(); - const int gap = UI_BORDER_SIZE / 2; - int controls_width = 0; - if (!visible_favorite_btns.empty()) { - controls_width = visible_favorite_btns.size() * btn_size + (visible_favorite_btns.size() - 1) * gap; - } - if (onroad_distance_btn_enabled) { - controls_width += (controls_width > 0 ? gap : 0) + personality_btn->width(); - } - dmon.onroad_controls_width = controls_width; - - const int controls_y = favorites_anchor_ready - ? std::clamp(starpilot_nvg->dmIconPosition.y() - (btn_size / 2), UI_BORDER_SIZE, height() - UI_BORDER_SIZE - btn_size) - : 0; - int cursor_x = starpilot_nvg->rightHandDM ? width() - UI_BORDER_SIZE : UI_BORDER_SIZE; - - personality_btn->setVisible(onroad_distance_btn_enabled); - if (onroad_distance_btn_enabled) { - const int personality_x = starpilot_nvg->rightHandDM ? cursor_x - personality_btn->width() : cursor_x; - personality_btn->move(personality_x, controls_y); - personality_btn->updateState(s, fs); - cursor_x += starpilot_nvg->rightHandDM ? -(personality_btn->width() + gap) : personality_btn->width() + gap; - } - - for (FavoriteButton *favorite_btn : visible_favorite_btns) { - const int favorite_x = starpilot_nvg->rightHandDM ? cursor_x - favorite_btn->width() : cursor_x; - favorite_btn->move(favorite_x, controls_y); - favorite_btn->setVisible(true); - cursor_x += starpilot_nvg->rightHandDM ? -(favorite_btn->width() + gap) : favorite_btn->width() + gap; - } - - const QPoint screen_recorder_position = hide_steering_wheel - ? experimental_button_position - : QPoint(experimental_button_position.x() - UI_BORDER_SIZE - btn_size, experimental_button_position.y()); - screen_recorder->move(screen_recorder_position); - screen_recorder->setVisible(starpilot_nvg->standstillDuration == 0 && !(starpilot_nvg->signalStyle == "static" && carState.getRightBlinker()) && starpilot_toggles.value("screen_recorder").toBool()); -} - -void AnnotatedCameraWidget::initializeGL() { - CameraWidget::initializeGL(); - qInfo() << "OpenGL version:" << QString((const char*)glGetString(GL_VERSION)); - qInfo() << "OpenGL vendor:" << QString((const char*)glGetString(GL_VENDOR)); - qInfo() << "OpenGL renderer:" << QString((const char*)glGetString(GL_RENDERER)); - qInfo() << "OpenGL language version:" << QString((const char*)glGetString(GL_SHADING_LANGUAGE_VERSION)); - - prev_draw_t = millis_since_boot(); - setBackgroundColor(bg_colors[STATUS_DISENGAGED]); -} - -mat4 AnnotatedCameraWidget::calcFrameMatrix() { - // Project point at "infinity" to compute x and y offsets - // to ensure this ends up in the middle of the screen - // for narrow come and a little lower for wide cam. - // TODO: use proper perspective transform? - - // Select intrinsic matrix and calibration based on camera type - auto *s = uiState(); - bool wide_cam = active_stream_type == VISION_STREAM_WIDE_ROAD; - const auto &intrinsic_matrix = wide_cam ? ECAM_INTRINSIC_MATRIX : FCAM_INTRINSIC_MATRIX; - const auto &calibration = wide_cam ? s->scene.view_from_wide_calib : s->scene.view_from_calib; - - // Compute the calibration transformation matrix - const auto calib_transform = intrinsic_matrix * calibration; - - float zoom = wide_cam ? 2.0 : 1.1; - Eigen::Vector3f inf(1000., 0., 0.); - auto Kep = calib_transform * inf; - - int w = width(), h = height(); - float center_x = intrinsic_matrix(0, 2); - float center_y = intrinsic_matrix(1, 2); - - float max_x_offset = center_x * zoom - w / 2 - 5; - float max_y_offset = center_y * zoom - h / 2 - 5; - float x_offset = std::clamp((Kep.x() / Kep.z() - center_x) * zoom, -max_x_offset, max_x_offset); - float y_offset = std::clamp((Kep.y() / Kep.z() - center_y) * zoom, -max_y_offset, max_y_offset); - - // Apply transformation such that video pixel coordinates match video - // 1) Put (0, 0) in the middle of the video - // 2) Apply same scaling as video - // 3) Put (0, 0) in top left corner of video - Eigen::Matrix3f video_transform =(Eigen::Matrix3f() << - zoom, 0.0f, (w / 2 - x_offset) - (center_x * zoom), - 0.0f, zoom, (h / 2 - y_offset) - (center_y * zoom), - 0.0f, 0.0f, 1.0f).finished(); - - model.setTransform(video_transform * calib_transform); - - float zx = zoom * 2 * center_x / w; - float zy = zoom * 2 * center_y / h; - return mat4{{ - zx, 0.0, 0.0, -x_offset / w * 2, - 0.0, zy, 0.0, y_offset / h * 2, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0, - }}; -} - -void AnnotatedCameraWidget::paintGL() { -} - -void AnnotatedCameraWidget::paintEvent(QPaintEvent *event) { - UIState *s = uiState(); - SubMaster &sm = *(s->sm); - const double start_draw_t = millis_since_boot(); - - QPainter painter(this); - static Params params; - const std::string camera_view_param = params.get("CameraView"); - int camera_view = starpilot_toggles.value("camera_view").toInt(); - if (!camera_view_param.empty()) { - try { - camera_view = std::stoi(camera_view_param); - } catch (const std::exception &) { - LOGW("invalid CameraView param: %s", camera_view_param.c_str()); - } - } - const bool camera_view_none = camera_view == CAMERA_VIEW_NONE; - - // draw camera frame - if (camera_view_none) { - painter.fillRect(rect(), Qt::black); - } else { - std::lock_guard lk(frame_lock); - - if (frames.empty()) { - if (skip_frame_count > 0) { - skip_frame_count--; - qDebug() << "skipping frame, not ready"; - return; - } - } else { - // skip drawing up to this many frames if we're - // missing camera frames. this smooths out the - // transitions from the narrow and wide cameras - skip_frame_count = 5; - } - - // Wide or narrow cam dependent on speed - bool has_wide_cam = available_streams.count(VISION_STREAM_WIDE_ROAD); - if (has_wide_cam) { - float v_ego = sm["carState"].getCarState().getVEgo(); - if ((v_ego < 10) || available_streams.size() == 1) { - wide_cam_requested = true; - } else if (v_ego > 15) { - wide_cam_requested = false; - } - wide_cam_requested = wide_cam_requested && sm["selfdriveState"].getSelfdriveState().getExperimentalMode() && camera_view == 0; - } - CameraWidget::setStreamType(camera_view == 1 ? VISION_STREAM_DRIVER : - ((camera_view == 3 && has_wide_cam) || wide_cam_requested) ? VISION_STREAM_WIDE_ROAD : - VISION_STREAM_ROAD); - CameraWidget::setFrameId(sm["modelV2"].getModelV2().getFrameId()); - - painter.beginNativePainting(); - CameraWidget::paintGL(); - painter.endNativePainting(); - } - - painter.setRenderHint(QPainter::Antialiasing); - painter.setPen(Qt::NoPen); - - dmon.starpilot_nvg = starpilot_nvg; - hud.starpilot_nvg = starpilot_nvg; - model.starpilot_nvg = starpilot_nvg; - - experimental_btn->starpilot_scene = starpilot_scene; - model.starpilot_scene = starpilot_scene; - - dmon.starpilot_toggles = starpilot_toggles; - experimental_btn->starpilot_toggles = starpilot_toggles; - hud.starpilot_toggles = starpilot_toggles; - model.starpilot_toggles = starpilot_toggles; - - if (!camera_view_none) { - model.draw(painter, rect()); - } - dmon.draw(painter, rect()); - hud.updateState(*s); - hud.draw(painter, rect()); - - starpilot_nvg->paintStarPilotWidgets(painter, *s, camera_view_none); - - double cur_draw_t = millis_since_boot(); - double dt = cur_draw_t - prev_draw_t; - fps = fps_filter.update(1. / dt * 1000); - if (fps < 15) { - LOGW("slow frame rate: %.2f fps", fps); - } - prev_draw_t = cur_draw_t; - - // publish debug msg - MessageBuilder msg; - auto m = msg.initEvent().initUiDebug(); - m.setDrawTimeMillis(cur_draw_t - start_draw_t); - pm->send("uiDebug", msg); -} - -void AnnotatedCameraWidget::showEvent(QShowEvent *event) { - CameraWidget::showEvent(event); - - ui_update_params(uiState()); - prev_draw_t = millis_since_boot(); -} diff --git a/selfdrive/ui/qt/onroad/annotated_camera.h b/selfdrive/ui/qt/onroad/annotated_camera.h deleted file mode 100644 index 9709ab82d..000000000 --- a/selfdrive/ui/qt/onroad/annotated_camera.h +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include -#include -#include -#include "selfdrive/ui/qt/onroad/hud.h" -#include "selfdrive/ui/qt/onroad/buttons.h" -#include "selfdrive/ui/qt/onroad/driver_monitoring.h" -#include "selfdrive/ui/qt/onroad/model.h" -#include "selfdrive/ui/qt/widgets/cameraview.h" - -#include "starpilot/ui/qt/onroad/starpilot_buttons.h" -#include "starpilot/ui/screenrecorder/screenrecorder.h" - -class AnnotatedCameraWidget : public CameraWidget { - Q_OBJECT - -public: - explicit AnnotatedCameraWidget(VisionStreamType type, QWidget* parent = 0); - void updateState(const UIState &s, const StarPilotUIState &fs); - bool handleHudPress(const QPoint &pos); - bool handleHudRelease(const QPoint &pos); - - double fps; - - StarPilotAnnotatedCameraWidget *starpilot_nvg; - - StarPilotUIScene starpilot_scene; - - QJsonObject starpilot_toggles; - -private: - QVBoxLayout *main_layout; - ExperimentalButton *experimental_btn; - DriverMonitorRenderer dmon; - HudRenderer hud; - ModelRenderer model; - std::unique_ptr pm; - - int skip_frame_count = 0; - bool wide_cam_requested = false; - - void paintEvent(QPaintEvent *event) override; - - DrivingPersonalityButton *personality_btn; - std::array favorite_btns; - ScreenRecorder *screen_recorder; - -protected: - void paintGL() override; - void initializeGL() override; - void showEvent(QShowEvent *event) override; - mat4 calcFrameMatrix() override; - - double prev_draw_t = 0; - FirstOrderFilter fps_filter; -}; diff --git a/selfdrive/ui/qt/onroad/buttons.cc b/selfdrive/ui/qt/onroad/buttons.cc deleted file mode 100644 index da58f4d6c..000000000 --- a/selfdrive/ui/qt/onroad/buttons.cc +++ /dev/null @@ -1,143 +0,0 @@ -#include "selfdrive/ui/qt/onroad/buttons.h" - -#include - -#include "selfdrive/ui/qt/util.h" - -namespace { -bool ccmManualOverride(int status) { - return status == 1 || status == 2; -} - -bool cemManualOverride(int status) { - return status == 1 || status == 2; -} -} // namespace - -void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity, const int &angle) { - p.setRenderHint(QPainter::Antialiasing); - p.setOpacity(1.0); // bg dictates opacity of ellipse - p.setPen(Qt::NoPen); - p.setBrush(bg); - p.drawEllipse(center, btn_size / 2, btn_size / 2); - p.save(); - p.translate(center); - p.rotate(angle); - p.setOpacity(opacity); - p.drawPixmap(-QPoint(img.width() / 2, img.height() / 2), img); - p.restore(); - p.setOpacity(1.0); -} - -// ExperimentalButton -ExperimentalButton::ExperimentalButton(QWidget *parent) : QPushButton(parent), experimental_mode(false), engageable(false), steering_angle_deg(0) { - setFixedSize(btn_size, btn_size); - - engage_img = loadPixmap("../assets/icons/chffr_wheel.png", {img_size, img_size}); - experimental_img = loadPixmap("../assets/icons/experimental.svg", {img_size, img_size}); - QObject::connect(this, &QPushButton::clicked, this, &ExperimentalButton::changeMode); - - QObject::connect(starpilotUIState(), &StarPilotUIState::themeUpdated, this, &ExperimentalButton::updateTheme); -} - -void ExperimentalButton::changeMode() { - const auto cp = (*uiState()->sm)["carParams"].getCarParams(); - if (params.getBool("SafeMode")) { - return; - } - bool can_change = hasLongitudinalControl(cp) && params.getBool("ExperimentalModeConfirmed"); - if (can_change) { - if (starpilot_toggles.value("conditional_experimental_mode").toBool()) { - int override_value = cemManualOverride(starpilot_scene.conditional_status) ? 0 : experimental_mode ? 1 : 2; - params_memory.putInt("CEStatus", override_value); - params.putInt("PersistedCEStatus", params.getBool("PersistExperimentalState") ? override_value : 0); - } else if (starpilot_toggles.value("conditional_chill_mode").toBool()) { - int override_value = ccmManualOverride(starpilot_scene.conditional_status) ? 0 : experimental_mode ? 2 : 1; - params_memory.putInt("CCStatus", override_value); - params.putInt("PersistedCCStatus", params.getBool("PersistChillState") ? override_value : 0); - } else { - params.putBool("ExperimentalMode", !experimental_mode); - } - } -} - -void ExperimentalButton::updateState(const UIState &s, const StarPilotUIState &fs) { - const auto cs = (*s.sm)["selfdriveState"].getSelfdriveState(); - bool eng = cs.getEngageable() || cs.getEnabled() || fs.starpilot_scene.always_on_lateral_active; - if ((cs.getExperimentalMode() != experimental_mode) || (eng != engageable)) { - engageable = eng; - experimental_mode = cs.getExperimentalMode(); - update(); - } - - const cereal::CarState::Reader &carState = (*s.sm)["carState"].getCarState(); - - updateBackgroundColor(); - - int current_steering_angle_deg = -carState.getSteeringAngleDeg(); - if (current_steering_angle_deg != steering_angle_deg && starpilot_toggles.value("rotating_wheel").toBool()) { - steering_angle_deg = current_steering_angle_deg; - update(); - } else if (!starpilot_toggles.value("rotating_wheel").toBool()) { - steering_angle_deg = 0; - } - - if (params_memory.getBool("UpdateWheelImage")) { - updateTheme(); - params_memory.remove("UpdateWheelImage"); - } -} - -void ExperimentalButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setClipRegion(QRegion(QRect(0, 0, btn_size, btn_size), QRegion::Ellipse)); - p.setRenderHint(QPainter::Antialiasing); - - if (starpilot_toggles.value("wheel_image").toString() == "stock") { - QPixmap img = experimental_mode ? experimental_img : engage_img; - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, background_color, (isDown() || !engageable) ? 0.6 : 1.0, steering_angle_deg); - } else if (wheel_gif) { - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), wheel_gif->currentPixmap(), background_color, (isDown() || !engageable) ? 0.6 : 1.0, steering_angle_deg); - } else if (!wheel_img.isNull()) { - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), wheel_img, background_color, (isDown() || !engageable) ? 0.6 : 1.0, steering_angle_deg); - } else { - QPixmap img = experimental_mode ? experimental_img : engage_img; - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, background_color, (isDown() || !engageable) ? 0.6 : 1.0, steering_angle_deg); - } -} - -void ExperimentalButton::showEvent(QShowEvent *event) { - updateTheme(); -} - -void ExperimentalButton::updateBackgroundColor() { - const bool conditional_experimental_mode = starpilot_toggles.value("conditional_experimental_mode").toBool(); - const bool conditional_chill_mode = starpilot_toggles.value("conditional_chill_mode").toBool(); - const bool highlight_override = - (conditional_experimental_mode && starpilot_scene.conditional_status == 1) || - (conditional_chill_mode && ccmManualOverride(starpilot_scene.conditional_status)); - if (starpilot_toggles.value("simple_mode").toBool()) { - background_color = QColor(0, 0, 0, 166); - } else if (isDown() || !engageable) { - background_color = QColor(0, 0, 0, 166); - } else if (starpilot_scene.switchback_mode_enabled) { - background_color = bg_colors[STATUS_SWITCHBACK_MODE_ENABLED]; - } else if (starpilot_scene.always_on_lateral_active) { - background_color = bg_colors[STATUS_ALWAYS_ON_LATERAL_ACTIVE]; - } else if (highlight_override) { - background_color = bg_colors[STATUS_CEM_DISABLED]; - } else if (experimental_mode) { - background_color = bg_colors[STATUS_EXPERIMENTAL_MODE_ENABLED]; - } else if (starpilot_scene.traffic_mode_enabled) { - background_color = bg_colors[STATUS_TRAFFIC_MODE_ENABLED]; - } else { - background_color = QColor(0, 0, 0, 166); - } -} - -void ExperimentalButton::updateTheme() { - loadImage("../../starpilot/assets/active_theme/steering_wheel/wheel", wheel_img, wheel_gif, QSize(img_size, img_size), this); - if (!wheel_gif && wheel_img.isNull()) { - loadImage("../../starpilot/assets/stock_theme/steering_wheel/wheel", wheel_img, wheel_gif, QSize(img_size, img_size), this); - } -} diff --git a/selfdrive/ui/qt/onroad/buttons.h b/selfdrive/ui/qt/onroad/buttons.h deleted file mode 100644 index 8e7a10d15..000000000 --- a/selfdrive/ui/qt/onroad/buttons.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include - -#include "selfdrive/ui/ui.h" - -const int btn_size = 192; -const int img_size = (btn_size / 4) * 3; - -class ExperimentalButton : public QPushButton { - Q_OBJECT - -public: - explicit ExperimentalButton(QWidget *parent = 0); - void updateState(const UIState &s, const StarPilotUIState &fs); - - StarPilotUIScene starpilot_scene; - - QJsonObject starpilot_toggles; - -private: - void paintEvent(QPaintEvent *event) override; - void changeMode(); - - Params params; - QPixmap engage_img; - QPixmap experimental_img; - bool experimental_mode; - bool engageable; - - void showEvent(QShowEvent *event) override; - void updateBackgroundColor(); - void updateTheme(); - - int steering_angle_deg; - - Params params_memory{"", true}; - - QColor background_color; - - QPixmap wheel_img; - - QSharedPointer wheel_gif; -}; - -void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity, const int &angle = 0); diff --git a/selfdrive/ui/qt/onroad/driver_monitoring.cc b/selfdrive/ui/qt/onroad/driver_monitoring.cc deleted file mode 100644 index 330c70cec..000000000 --- a/selfdrive/ui/qt/onroad/driver_monitoring.cc +++ /dev/null @@ -1,129 +0,0 @@ -#include "selfdrive/ui/qt/onroad/driver_monitoring.h" -#include -#include - -#include "selfdrive/ui/qt/onroad/buttons.h" -#include "selfdrive/ui/qt/util.h" - -// Default 3D coordinates for face keypoints -static constexpr vec3 DEFAULT_FACE_KPTS_3D[] = { - {-5.98, -51.20, 8.00}, {-17.64, -49.14, 8.00}, {-23.81, -46.40, 8.00}, {-29.98, -40.91, 8.00}, {-32.04, -37.49, 8.00}, - {-34.10, -32.00, 8.00}, {-36.16, -21.03, 8.00}, {-36.16, 6.40, 8.00}, {-35.47, 10.51, 8.00}, {-32.73, 19.43, 8.00}, - {-29.30, 26.29, 8.00}, {-24.50, 33.83, 8.00}, {-19.01, 41.37, 8.00}, {-14.21, 46.17, 8.00}, {-12.16, 47.54, 8.00}, - {-4.61, 49.60, 8.00}, {4.99, 49.60, 8.00}, {12.53, 47.54, 8.00}, {14.59, 46.17, 8.00}, {19.39, 41.37, 8.00}, - {24.87, 33.83, 8.00}, {29.67, 26.29, 8.00}, {33.10, 19.43, 8.00}, {35.84, 10.51, 8.00}, {36.53, 6.40, 8.00}, - {36.53, -21.03, 8.00}, {34.47, -32.00, 8.00}, {32.42, -37.49, 8.00}, {30.36, -40.91, 8.00}, {24.19, -46.40, 8.00}, - {18.02, -49.14, 8.00}, {6.36, -51.20, 8.00}, {-5.98, -51.20, 8.00}, -}; - -// Colors used for drawing based on monitoring state -static const QColor DMON_ENGAGED_COLOR = QColor::fromRgbF(0.1, 0.945, 0.26); -static const QColor DMON_DISENGAGED_COLOR = QColor::fromRgbF(0.545, 0.545, 0.545); - -DriverMonitorRenderer::DriverMonitorRenderer() : face_kpts_draw(std::size(DEFAULT_FACE_KPTS_3D)) { - dm_img = loadPixmap("../assets/icons/driver_face.png", {img_size + 5, img_size + 5}); -} - -void DriverMonitorRenderer::updateState(const UIState &s) { - auto &sm = *(s.sm); - is_visible = sm["selfdriveState"].getSelfdriveState().getAlertSize() == cereal::SelfdriveState::AlertSize::NONE && - sm.rcv_frame("driverStateV2") > s.scene.started_frame; - if (!is_visible) return; - - auto dm_state = sm["driverMonitoringState"].getDriverMonitoringState(); - is_active = dm_state.getActivePolicy() == cereal::DriverMonitoringState::MonitoringPolicy::VISION; - is_rhd = dm_state.getIsRHD(); - dm_fade_state = std::clamp(dm_fade_state + 0.2f * (0.5f - is_active), 0.0f, 1.0f); - - const auto &driverstate = sm["driverStateV2"].getDriverStateV2(); - const auto driver_orient = is_rhd ? driverstate.getRightDriverData().getFaceOrientation() : driverstate.getLeftDriverData().getFaceOrientation(); - - for (int i = 0; i < 3; ++i) { - float v_this = (i == 0 ? (driver_orient[i] < 0 ? 0.7 : 0.9) : 0.4) * driver_orient[i]; - driver_pose_diff[i] = std::abs(driver_pose_vals[i] - v_this); - driver_pose_vals[i] = 0.8f * v_this + (1 - 0.8) * driver_pose_vals[i]; - driver_pose_sins[i] = std::sin(driver_pose_vals[i] * (1.0f - dm_fade_state)); - driver_pose_coss[i] = std::cos(driver_pose_vals[i] * (1.0f - dm_fade_state)); - } - - auto [sin_y, sin_x, sin_z] = driver_pose_sins; - auto [cos_y, cos_x, cos_z] = driver_pose_coss; - - // Rotation matrix for transforming face keypoints based on driver's head orientation - const mat3 r_xyz = {{ - cos_x * cos_z, cos_x * sin_z, -sin_x, - -sin_y * sin_x * cos_z - cos_y * sin_z, -sin_y * sin_x * sin_z + cos_y * cos_z, -sin_y * cos_x, - cos_y * sin_x * cos_z - sin_y * sin_z, cos_y * sin_x * sin_z + sin_y * cos_z, cos_y * cos_x, - }}; - - // Transform vertices - for (int i = 0; i < face_kpts_draw.size(); ++i) { - vec3 kpt = matvecmul3(r_xyz, DEFAULT_FACE_KPTS_3D[i]); - face_kpts_draw[i] = {{kpt.v[0], kpt.v[1], kpt.v[2] * (1.0f - dm_fade_state) + 8 * dm_fade_state}}; - } -} - -void DriverMonitorRenderer::draw(QPainter &painter, const QRect &surface_rect) { - if (!is_visible) return; - - int offset = UI_BORDER_SIZE + btn_size / 2; - float x = is_rhd ? surface_rect.width() - offset : offset; - float y = surface_rect.height() - offset; - - if (onroad_controls_width > 0) { - const int controls_offset = onroad_controls_width + (2 * UI_BORDER_SIZE); - if (is_rhd) { - x -= controls_offset; - } else { - x += controls_offset; - } - } - - if (starpilot_toggles.value("road_name_ui").toBool()) { - y -= UI_BORDER_SIZE; - } - - if (starpilot_nvg) { - starpilot_nvg->dmIconPosition.setX(x); - starpilot_nvg->dmIconPosition.setY(y); - starpilot_nvg->rightHandDM = is_rhd; - } - - if (starpilot_toggles.value("hide_dm_icon").toBool()) return; - - painter.save(); - - float opacity = is_active ? 0.65f : 0.2f; - - drawIcon(painter, QPoint(x, y), dm_img, QColor(0, 0, 0, 70), opacity); - - QPointF keypoints[std::size(DEFAULT_FACE_KPTS_3D)]; - for (int i = 0; i < std::size(keypoints); ++i) { - const auto &v = face_kpts_draw[i].v; - float kp = (v[2] - 8) / 120.0f + 1.0f; - keypoints[i] = QPointF(v[0] * kp + x, v[1] * kp + y); - } - - painter.setPen(QPen(QColor::fromRgbF(1.0, 1.0, 1.0, opacity), 5.2, Qt::SolidLine, Qt::RoundCap)); - painter.drawPolyline(keypoints, std::size(keypoints)); - - // tracking arcs - const int arc_l = 133; - const float arc_t_default = 6.7f; - const float arc_t_extend = 12.0f; - QColor arc_color = uiState()->engaged() ? DMON_ENGAGED_COLOR : DMON_DISENGAGED_COLOR; - arc_color.setAlphaF(0.4 * (1.0f - dm_fade_state)); - - float delta_x = -driver_pose_sins[1] * arc_l / 2.0f; - float delta_y = -driver_pose_sins[0] * arc_l / 2.0f; - - // Draw horizontal tracking arc - painter.setPen(QPen(arc_color, arc_t_default + arc_t_extend * std::min(1.0, driver_pose_diff[1] * 5.0), Qt::SolidLine, Qt::RoundCap)); - painter.drawArc(QRectF(std::min(x + delta_x, x), y - arc_l / 2, std::abs(delta_x), arc_l), (driver_pose_sins[1] > 0 ? 90 : -90) * 16, 180 * 16); - - // Draw vertical tracking arc - painter.setPen(QPen(arc_color, arc_t_default + arc_t_extend * std::min(1.0, driver_pose_diff[0] * 5.0), Qt::SolidLine, Qt::RoundCap)); - painter.drawArc(QRectF(x - arc_l / 2, std::min(y + delta_y, y), arc_l, std::abs(delta_y)), (driver_pose_sins[0] > 0 ? 0 : 180) * 16, 180 * 16); - - painter.restore(); -} diff --git a/selfdrive/ui/qt/onroad/driver_monitoring.h b/selfdrive/ui/qt/onroad/driver_monitoring.h deleted file mode 100644 index 5c0e230cf..000000000 --- a/selfdrive/ui/qt/onroad/driver_monitoring.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include -#include "selfdrive/ui/ui.h" - -#include "starpilot/ui/qt/onroad/starpilot_annotated_camera.h" - -class DriverMonitorRenderer { -public: - DriverMonitorRenderer(); - void updateState(const UIState &s); - void draw(QPainter &painter, const QRect &surface_rect); - - StarPilotAnnotatedCameraWidget *starpilot_nvg; - - int onroad_controls_width = 0; - - QJsonObject starpilot_toggles; - -private: - float driver_pose_vals[3] = {}; - float driver_pose_diff[3] = {}; - float driver_pose_sins[3] = {}; - float driver_pose_coss[3] = {}; - bool is_visible = false; - bool is_active = false; - bool is_rhd = false; - float dm_fade_state = 1.0; - QPixmap dm_img; - std::vector face_kpts_draw; -}; diff --git a/selfdrive/ui/qt/onroad/hud.cc b/selfdrive/ui/qt/onroad/hud.cc deleted file mode 100644 index 6ebb87867..000000000 --- a/selfdrive/ui/qt/onroad/hud.cc +++ /dev/null @@ -1,427 +0,0 @@ -#include "selfdrive/ui/qt/onroad/hud.h" - -#include -#include -#include -#include -#include - -#include "selfdrive/ui/qt/util.h" - -constexpr int SET_SPEED_NA = 255; -constexpr int NAV_CANCEL_HOLD_MS = 650; - -HudRenderer::HudRenderer() {} - -bool HudRenderer::handleNavigationPress(const QPoint &pos) { - if (!navigation_valid || !nav_hit_rect.contains(pos)) { - return false; - } - - nav_press_active = true; - nav_press_timer.restart(); - return true; -} - -bool HudRenderer::handleNavigationRelease(const QPoint &pos) { - if (!nav_press_active) { - return false; - } - - nav_press_active = false; - if (!nav_hit_rect.contains(pos)) { - return true; - } - - if (nav_press_timer.isValid() && nav_press_timer.elapsed() >= NAV_CANCEL_HOLD_MS) { - cancelNavigation(); - } else { - params_memory.putBool("NavInstructionCollapsed", !navigation_collapsed); - } - return true; -} - -void HudRenderer::cancelNavigation() { - params.remove("NavDestination"); - params_memory.remove("NavInstructionState"); - params_memory.remove("NavInstructionCollapsed"); - navigation_valid = false; - navigation_collapsed = false; - nav_hit_rect = QRect(); - nav_primary_text.clear(); - nav_secondary_text.clear(); - nav_distance.clear(); - nav_maneuver_type.clear(); - nav_modifier.clear(); - nav_next_maneuver_type.clear(); - nav_next_modifier.clear(); -} - -void HudRenderer::updateState(const UIState &s) { - is_metric = s.scene.is_metric; - status = s.status; - - const SubMaster &sm = *(s.sm); - if (sm.rcv_frame("carState") < s.scene.started_frame) { - is_cruise_set = false; - set_speed = SET_SPEED_NA; - speed = 0.0; - return; - } - - const auto &controls_state = sm["controlsState"].getControlsState(); - const auto &car_state = sm["carState"].getCarState(); - - // Handle older routes where vCruiseCluster is not set - set_speed = car_state.getVCruiseCluster() == 0.0 ? controls_state.getVCruiseDEPRECATED() : car_state.getVCruiseCluster(); - is_cruise_set = set_speed > 0 && set_speed != SET_SPEED_NA; - is_cruise_available = set_speed != -1; - - if (is_cruise_set && starpilot_toggles.value("set_speed_offset").toDouble() > 0) { - set_speed += starpilot_toggles.value("set_speed_offset").toDouble(); - } - - if (is_cruise_set && !is_metric) { - set_speed *= KM_TO_MILE; - } - - // Handle older routes where vEgoCluster is not set - v_ego_cluster_seen = v_ego_cluster_seen || car_state.getVEgoCluster() != 0.0; - float v_ego = v_ego_cluster_seen && !starpilot_toggles.value("use_wheel_speed").toBool() ? car_state.getVEgoCluster() : car_state.getVEgo(); - speed = std::max(0.0f, v_ego * (is_metric ? MS_TO_KPH : MS_TO_MPH)); - - navigation_enabled = params.getBool("NavigationUI"); - navigation_valid = false; - navigation_has_next = false; - navigation_collapsed = false; - nav_hit_rect = QRect(); - nav_primary_text.clear(); - nav_secondary_text.clear(); - nav_distance.clear(); - nav_maneuver_type.clear(); - nav_modifier.clear(); - nav_next_maneuver_type.clear(); - nav_next_modifier.clear(); - - if (!navigation_enabled) { - return; - } - - if (params.get("NavDestination").empty()) { - return; - } - - const std::string nav_state_raw = params_memory.get("NavInstructionState"); - if (nav_state_raw.empty()) { - return; - } - - const QJsonDocument nav_state_doc = QJsonDocument::fromJson(QByteArray::fromStdString(nav_state_raw)); - if (!nav_state_doc.isObject()) { - return; - } - - const QJsonObject nav = nav_state_doc.object(); - if (!nav.value("valid").toBool(false)) { - return; - } - - nav_primary_text = nav.value("maneuverPrimaryText").toString().trimmed(); - if (nav_primary_text.isEmpty()) { - return; - } - - navigation_valid = true; - nav_secondary_text = nav.value("maneuverSecondaryText").toString().trimmed(); - nav_distance = formatNavDistance(static_cast(nav.value("maneuverDistance").toDouble(0.0))); - nav_maneuver_type = nav.value("maneuverType").toString().trimmed(); - nav_modifier = nav.value("maneuverModifier").toString().trimmed(); - nav_next_maneuver_type = nav.value("nextManeuverType").toString().trimmed(); - nav_next_modifier = nav.value("nextManeuverModifier").toString().trimmed(); - navigation_has_next = !nav_next_maneuver_type.isEmpty() || !nav_next_modifier.isEmpty(); - navigation_collapsed = params_memory.getBool("NavInstructionCollapsed"); -} - -void HudRenderer::draw(QPainter &p, const QRect &surface_rect) { - p.save(); - - // Draw header gradient — constant stops, build once - static const QLinearGradient bg = []() { - QLinearGradient g(0, UI_HEADER_HEIGHT - (UI_HEADER_HEIGHT / 2.5), 0, UI_HEADER_HEIGHT); - g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.45)); - g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0)); - return g; - }(); - p.fillRect(0, 0, surface_rect.width(), UI_HEADER_HEIGHT, bg); - - - if (is_cruise_available) { - drawSetSpeed(p, surface_rect); - } - if (starpilot_nvg->standstillDuration == 0 && !starpilot_toggles.value("hide_speed").toBool()) { - drawCurrentSpeed(p, surface_rect); - } - if (navigation_valid) { - drawNavigationCard(p, surface_rect); - } - - p.restore(); -} - -void HudRenderer::drawSetSpeed(QPainter &p, const QRect &surface_rect) { - // Draw outer box + border to contain set speed - const QSize default_size = {172, 204}; - QSize set_speed_size = is_metric ? QSize(200, 204) : default_size; - - if (starpilot_nvg->speedLimitHeight != 0) { - set_speed_size.rheight() += starpilot_nvg->speedLimitHeight; - if (starpilot_toggles.value("speed_limit_vienna").toBool()) { - set_speed_size.rwidth() = 200; - } - } - - QRect set_speed_rect(QPoint(60 + (default_size.width() - set_speed_size.width()) / 2, 45), set_speed_size); - - if (!starpilot_toggles.value("hide_max_speed").toBool()) { - // Draw set speed box - p.setPen(QPen(QColor(255, 255, 255, 75), 6)); - p.setBrush(QColor(0, 0, 0, 166)); - p.drawRoundedRect(set_speed_rect, 32, 32); - - // Colors based on status - QColor max_color = QColor(0xa6, 0xa6, 0xa6, 0xff); - QColor set_speed_color = QColor(0x72, 0x72, 0x72, 0xff); - if (is_cruise_set) { - set_speed_color = QColor(255, 255, 255); - if (status == STATUS_DISENGAGED) { - max_color = QColor(255, 255, 255); - } else if (status == STATUS_OVERRIDE) { - max_color = QColor(0x91, 0x9b, 0x95, 0xff); - } else { - max_color = QColor(0x80, 0xd8, 0xa6, 0xff); - } - } - - // Draw "MAX" text - p.setFont(InterFont(40, QFont::DemiBold)); - p.setPen(max_color); - p.drawText(set_speed_rect.adjusted(0, 27, 0, 0), Qt::AlignTop | Qt::AlignHCenter, tr("MAX")); - - // Draw set speed - QString setSpeedStr = is_cruise_set ? QString::number(std::nearbyint(set_speed)) : "–"; - p.setFont(InterFont(90, QFont::Bold)); - p.setPen(set_speed_color); - p.drawText(set_speed_rect.adjusted(0, 77, 0, 0), Qt::AlignTop | Qt::AlignHCenter, setSpeedStr); - } - - starpilot_nvg->defaultSize = default_size; - starpilot_nvg->isCruiseSet = is_cruise_set; - starpilot_nvg->setSpeedRect = set_speed_rect; - starpilot_nvg->speed = speed; -} - -void HudRenderer::drawCurrentSpeed(QPainter &p, const QRect &surface_rect) { - QString speedStr = QString::number(std::nearbyint(speed)); - - p.setFont(InterFont(176, QFont::Bold)); - drawText(p, surface_rect.center().x(), 210, speedStr); - - p.setFont(InterFont(66)); - drawText(p, surface_rect.center().x(), 290, is_metric ? tr("km/h") : tr("mph"), 200); -} - -void HudRenderer::drawText(QPainter &p, int x, int y, const QString &text, int alpha) { - QRect real_rect = p.fontMetrics().boundingRect(text); - real_rect.moveCenter({x, y - real_rect.height() / 2}); - - p.setPen(QColor(0xff, 0xff, 0xff, alpha)); - p.drawText(real_rect.x(), real_rect.bottom(), text); -} - -QString HudRenderer::formatNavDistance(float distance_m) const { - if (is_metric) { - if (distance_m < 1000.0f) { - int step = distance_m < 500.0f ? 25 : 50; - return QString("%1 m").arg(qRound(distance_m / step) * step); - } - float km = distance_m / 1000.0f; - return km >= 10.0f ? QString("%1 km").arg(static_cast(std::floor(km))) : QString("%1 km").arg(km, 0, 'f', 1); - } - - float distance_ft = distance_m * METER_TO_FOOT; - if (distance_ft < 1000.0f) { - int step = distance_ft <= 100.0f ? 10 : 50; - return QString("%1 ft").arg(qRound(distance_ft / step) * step); - } - - float miles = distance_ft / 5280.0f; - return miles >= 10.0f ? QString("%1 mi").arg(static_cast(std::floor(miles))) : QString("%1 mi").arg(miles, 0, 'f', 1); -} - -QString HudRenderer::navigationIconFilename(const QString &maneuver_type, const QString &modifier) const { - QString normalized_type = maneuver_type.isEmpty() ? "turn" : maneuver_type; - if (normalized_type == "rotary") { - normalized_type = "roundabout"; - } else if (normalized_type == "new name" || normalized_type == "continue") { - normalized_type = "turn"; - } - - if (modifier == "uturn") { - return "direction_uturn.png"; - } - - static const QHash suffixes = { - {"left", "left"}, - {"right", "right"}, - {"straight", "straight"}, - {"slightLeft", "slight_left"}, - {"slightRight", "slight_right"}, - {"sharpLeft", "sharp_left"}, - {"sharpRight", "sharp_right"}, - }; - - normalized_type.replace(" ", "_"); - const QString suffix = suffixes.value(modifier, ""); - const QString candidate = suffix.isEmpty() ? QString("direction_%1.png").arg(normalized_type) - : QString("direction_%1_%2.png").arg(normalized_type, suffix); - const QString candidate_path = QString("../../starpilot/assets/navigation/%1").arg(candidate); - return QFileInfo::exists(candidate_path) ? candidate : "direction_turn_straight.png"; -} - -QPixmap HudRenderer::getNavigationIcon(const QString &maneuver_type, const QString &modifier, int size) { - const QString icon_name = navigationIconFilename(maneuver_type, modifier); - const QString cache_key = QString("%1|%2").arg(icon_name).arg(size); - if (!nav_icon_cache.contains(cache_key)) { - nav_icon_cache.insert(cache_key, loadPixmap(QString("../../starpilot/assets/navigation/%1").arg(icon_name), QSize(size, size))); - } - return nav_icon_cache.value(cache_key); -} - -QStringList HudRenderer::wrapNavigationText(int max_width, int font_size, const QString &text) const { - QStringList words = text.split(' ', QString::SkipEmptyParts); - QStringList lines; - QString current_line; - const QFontMetrics metrics(InterFont(font_size, QFont::Bold)); - - for (const QString &word : words) { - QString test_line = current_line.isEmpty() ? word : current_line + " " + word; - if (metrics.horizontalAdvance(test_line) <= max_width) { - current_line = test_line; - } else { - if (!current_line.isEmpty()) { - lines.append(current_line); - } - current_line = word; - if (lines.size() >= 2) { - break; - } - } - } - - if (!current_line.isEmpty() && lines.size() < 2) { - lines.append(current_line); - } - return lines; -} - -void HudRenderer::drawNavigationCard(QPainter &p, const QRect &surface_rect) { - if (navigation_collapsed) { - const int chip_size = 94; - const int chip_x = surface_rect.right() - chip_size - 32; - const int chip_y = surface_rect.width() >= 1200 ? 232 : 204; - nav_hit_rect = QRect(chip_x, chip_y, chip_size, chip_size); - - p.setPen(Qt::NoPen); - p.setBrush(QColor(7, 11, 18, 228)); - p.drawRoundedRect(nav_hit_rect, 28, 28); - p.setPen(QPen(QColor(255, 255, 255, 40), 2)); - p.setBrush(Qt::NoBrush); - p.drawRoundedRect(nav_hit_rect, 28, 28); - - const int icon_size = 58; - const QPixmap icon = getNavigationIcon(nav_maneuver_type, nav_modifier, icon_size); - const int icon_x = chip_x + (chip_size - icon_size) / 2; - const int icon_y = chip_y + (chip_size - icon_size) / 2; - p.drawPixmap(icon_x, icon_y, icon); - return; - } - - const int container_width = std::clamp(surface_rect.width() - 120, 760, 1080); - const int container_height = surface_rect.width() >= 1200 ? 238 : 206; - const int container_x = (surface_rect.width() - container_width) / 2; - const int container_y = surface_rect.width() >= 1200 ? 332 : 298; - const int border_radius = container_height == 238 ? 42 : 34; - const int icon_size = container_height == 238 ? 150 : 122; - const int icon_padding = container_height == 238 ? 30 : 24; - const int then_section_width = container_height == 238 ? 180 : 144; - const int then_icon_size = container_height == 238 ? 105 : 82; - const int title_font_size = container_height == 238 ? 75 : 58; - const int secondary_font_size = container_height == 238 ? 34 : 28; - const int distance_font_size = container_height == 238 ? 48 : 40; - const int title_top_padding = container_height == 238 ? 10 : 10; - const int title_line_spacing = container_height == 238 ? 68 : 56; - const int secondary_bottom_padding = container_height == 238 ? 24 : 20; - const int secondary_gap = container_height == 238 ? 10 : 8; - - QRect container(container_x, container_y, container_width, container_height); - nav_hit_rect = container; - p.setPen(Qt::NoPen); - p.setBrush(QColor(0, 0, 0, 180)); - p.drawRoundedRect(container, border_radius, border_radius); - - const int icon_x = container_x + icon_padding; - const int icon_y = container_y + title_top_padding + 4; - const QPixmap icon = getNavigationIcon(nav_maneuver_type, nav_modifier, icon_size); - p.drawPixmap(icon_x, icon_y, icon); - - p.setFont(InterFont(distance_font_size, QFont::Bold)); - p.setPen(Qt::white); - const int distance_width = p.fontMetrics().horizontalAdvance(nav_distance); - p.drawText(icon_x + (icon_size - distance_width) / 2, container_y + container_height - 18, nav_distance); - - const int text_x = icon_x + icon_size + 53; - const int right_gutter = icon_padding + (navigation_has_next ? then_section_width : 0); - const int text_width = container_width - (text_x - container_x) - right_gutter; - const QStringList title_lines = wrapNavigationText(text_width, title_font_size, nav_primary_text); - const QFont title_font = InterFont(title_font_size, QFont::Bold); - const QFontMetrics title_metrics(title_font); - const int title_baseline = container_y + title_top_padding + title_metrics.ascent(); - - p.setFont(title_font); - p.setPen(Qt::white); - for (int index = 0; index < title_lines.size() && index < 2; ++index) { - p.drawText(text_x, title_baseline + index * title_line_spacing, title_lines[index]); - } - - if (!nav_secondary_text.isEmpty()) { - const QFont secondary_font = InterFont(secondary_font_size, QFont::Medium); - const QFontMetrics secondary_metrics(secondary_font); - const int title_bottom = title_baseline + (std::max(title_lines.size(), 1) - 1) * title_line_spacing + title_metrics.descent(); - const int secondary_max_baseline = container_y + container_height - secondary_bottom_padding - secondary_metrics.descent(); - const int secondary_preferred_baseline = title_bottom + secondary_gap + secondary_metrics.ascent(); - const int secondary_baseline = std::min(secondary_preferred_baseline, secondary_max_baseline); - p.setFont(secondary_font); - p.setPen(QColor(255, 255, 255, 180)); - p.drawText(text_x, secondary_baseline, nav_secondary_text); - } - - if (!navigation_has_next) { - return; - } - - const int divider_x = container_x + container_width - then_section_width - 8; - p.setPen(QPen(QColor(255, 255, 255, 50), 2)); - p.drawLine(divider_x, container_y + 23, divider_x, container_y + container_height - 23); - - p.setFont(InterFont(container_height == 225 ? 53 : 40, QFont::Medium)); - p.setPen(Qt::white); - const QString then_label = tr("Then"); - const int then_x = divider_x + 15; - const int then_label_width = p.fontMetrics().horizontalAdvance(then_label); - p.drawText(then_x + (then_section_width - 23 - then_label_width) / 2, container_y + (container_height == 238 ? 66 : 60), then_label); - - const QPixmap next_icon = getNavigationIcon(nav_next_maneuver_type, nav_next_modifier, then_icon_size); - const int then_icon_x = then_x + (then_section_width - 23 - then_icon_size) / 2; - const int then_icon_y = container_y + (container_height == 238 ? 96 : 78); - p.drawPixmap(then_icon_x, then_icon_y, next_icon); -} diff --git a/selfdrive/ui/qt/onroad/hud.h b/selfdrive/ui/qt/onroad/hud.h deleted file mode 100644 index ddc7f0112..000000000 --- a/selfdrive/ui/qt/onroad/hud.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include "selfdrive/ui/ui.h" - -#include "starpilot/ui/qt/onroad/starpilot_annotated_camera.h" - -class HudRenderer : public QObject { - Q_OBJECT - -public: - HudRenderer(); - void updateState(const UIState &s); - void draw(QPainter &p, const QRect &surface_rect); - bool handleNavigationPress(const QPoint &pos); - bool handleNavigationRelease(const QPoint &pos); - - StarPilotAnnotatedCameraWidget *starpilot_nvg; - - QJsonObject starpilot_toggles; - -private: - void drawSetSpeed(QPainter &p, const QRect &surface_rect); - void drawCurrentSpeed(QPainter &p, const QRect &surface_rect); - void drawNavigationCard(QPainter &p, const QRect &surface_rect); - void drawText(QPainter &p, int x, int y, const QString &text, int alpha = 255); - QStringList wrapNavigationText(int max_width, int font_size, const QString &text) const; - QString formatNavDistance(float distance_m) const; - QString navigationIconFilename(const QString &maneuver_type, const QString &modifier) const; - QPixmap getNavigationIcon(const QString &maneuver_type, const QString &modifier, int size); - void cancelNavigation(); - - float speed = 0; - float set_speed = 0; - bool is_cruise_set = false; - bool is_cruise_available = true; - bool is_metric = false; - bool v_ego_cluster_seen = false; - bool navigation_enabled = false; - bool navigation_valid = false; - bool navigation_has_next = false; - bool navigation_collapsed = false; - int status = STATUS_DISENGAGED; - QString nav_distance; - QString nav_primary_text; - QString nav_secondary_text; - QString nav_maneuver_type; - QString nav_modifier; - QString nav_next_maneuver_type; - QString nav_next_modifier; - QRect nav_hit_rect; - QHash nav_icon_cache; - QElapsedTimer nav_press_timer; - bool nav_press_active = false; - Params params; - Params params_memory{"", true}; -}; diff --git a/selfdrive/ui/qt/onroad/moc_alerts.cc b/selfdrive/ui/qt/onroad/moc_alerts.cc deleted file mode 100644 index 14c21dd77..000000000 --- a/selfdrive/ui/qt/onroad/moc_alerts.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'alerts.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "alerts.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'alerts.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_OnroadAlerts_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_OnroadAlerts_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_OnroadAlerts_t qt_meta_stringdata_OnroadAlerts = { - { -QT_MOC_LITERAL(0, 0, 12) // "OnroadAlerts" - - }, - "OnroadAlerts" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_OnroadAlerts[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void OnroadAlerts::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject OnroadAlerts::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_OnroadAlerts.data, - qt_meta_data_OnroadAlerts, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *OnroadAlerts::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *OnroadAlerts::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_OnroadAlerts.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int OnroadAlerts::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/onroad/moc_annotated_camera.cc b/selfdrive/ui/qt/onroad/moc_annotated_camera.cc deleted file mode 100644 index d0428c97b..000000000 --- a/selfdrive/ui/qt/onroad/moc_annotated_camera.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'annotated_camera.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "annotated_camera.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'annotated_camera.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_AnnotatedCameraWidget_t { - QByteArrayData data[1]; - char stringdata0[22]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_AnnotatedCameraWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_AnnotatedCameraWidget_t qt_meta_stringdata_AnnotatedCameraWidget = { - { -QT_MOC_LITERAL(0, 0, 21) // "AnnotatedCameraWidget" - - }, - "AnnotatedCameraWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_AnnotatedCameraWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void AnnotatedCameraWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject AnnotatedCameraWidget::staticMetaObject = { { - &CameraWidget::staticMetaObject, - qt_meta_stringdata_AnnotatedCameraWidget.data, - qt_meta_data_AnnotatedCameraWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *AnnotatedCameraWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *AnnotatedCameraWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_AnnotatedCameraWidget.stringdata0)) - return static_cast(this); - return CameraWidget::qt_metacast(_clname); -} - -int AnnotatedCameraWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = CameraWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/onroad/moc_buttons.cc b/selfdrive/ui/qt/onroad/moc_buttons.cc deleted file mode 100644 index b6f0f8560..000000000 --- a/selfdrive/ui/qt/onroad/moc_buttons.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'buttons.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "buttons.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'buttons.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ExperimentalButton_t { - QByteArrayData data[1]; - char stringdata0[19]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ExperimentalButton_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ExperimentalButton_t qt_meta_stringdata_ExperimentalButton = { - { -QT_MOC_LITERAL(0, 0, 18) // "ExperimentalButton" - - }, - "ExperimentalButton" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ExperimentalButton[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ExperimentalButton::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ExperimentalButton::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_ExperimentalButton.data, - qt_meta_data_ExperimentalButton, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ExperimentalButton::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ExperimentalButton::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ExperimentalButton.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int ExperimentalButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/onroad/moc_hud.cc b/selfdrive/ui/qt/onroad/moc_hud.cc deleted file mode 100644 index 1fe14e341..000000000 --- a/selfdrive/ui/qt/onroad/moc_hud.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'hud.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "hud.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'hud.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_HudRenderer_t { - QByteArrayData data[1]; - char stringdata0[12]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_HudRenderer_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_HudRenderer_t qt_meta_stringdata_HudRenderer = { - { -QT_MOC_LITERAL(0, 0, 11) // "HudRenderer" - - }, - "HudRenderer" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_HudRenderer[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void HudRenderer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject HudRenderer::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_HudRenderer.data, - qt_meta_data_HudRenderer, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *HudRenderer::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *HudRenderer::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_HudRenderer.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int HudRenderer::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/onroad/moc_onroad_home.cc b/selfdrive/ui/qt/onroad/moc_onroad_home.cc deleted file mode 100644 index 5fb75f45e..000000000 --- a/selfdrive/ui/qt/onroad/moc_onroad_home.cc +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'onroad_home.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "onroad_home.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'onroad_home.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_OnroadWindow_t { - QByteArrayData data[9]; - char stringdata0[82]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_OnroadWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_OnroadWindow_t qt_meta_stringdata_OnroadWindow = { - { -QT_MOC_LITERAL(0, 0, 12), // "OnroadWindow" -QT_MOC_LITERAL(1, 13, 17), // "offroadTransition" -QT_MOC_LITERAL(2, 31, 0), // "" -QT_MOC_LITERAL(3, 32, 7), // "offroad" -QT_MOC_LITERAL(4, 40, 11), // "updateState" -QT_MOC_LITERAL(5, 52, 7), // "UIState" -QT_MOC_LITERAL(6, 60, 1), // "s" -QT_MOC_LITERAL(7, 62, 16), // "StarPilotUIState" -QT_MOC_LITERAL(8, 79, 2) // "fs" - - }, - "OnroadWindow\0offroadTransition\0\0offroad\0" - "updateState\0UIState\0s\0StarPilotUIState\0" - "fs" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_OnroadWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 1, 24, 2, 0x08 /* Private */, - 4, 2, 27, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, QMetaType::Bool, 3, - QMetaType::Void, 0x80000000 | 5, 0x80000000 | 7, 6, 8, - - 0 // eod -}; - -void OnroadWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->offroadTransition((*reinterpret_cast< bool(*)>(_a[1]))); break; - case 1: _t->updateState((*reinterpret_cast< const UIState(*)>(_a[1])),(*reinterpret_cast< const StarPilotUIState(*)>(_a[2]))); break; - default: ; - } - } -} - -QT_INIT_METAOBJECT const QMetaObject OnroadWindow::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_OnroadWindow.data, - qt_meta_data_OnroadWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *OnroadWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *OnroadWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_OnroadWindow.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int OnroadWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/onroad/model.cc b/selfdrive/ui/qt/onroad/model.cc deleted file mode 100644 index 7f0304b9c..000000000 --- a/selfdrive/ui/qt/onroad/model.cc +++ /dev/null @@ -1,401 +0,0 @@ -#include "selfdrive/ui/qt/onroad/model.h" - -constexpr int CLIP_MARGIN = 500; - -static int get_path_length_idx(const cereal::XYZTData::Reader &line, const float path_height) { - const auto &line_x = line.getX(); - int max_idx = 0; - for (int i = 1; i < line_x.size() && line_x[i] <= path_height; ++i) { - max_idx = i; - } - return max_idx; -} - -void ModelRenderer::draw(QPainter &painter, const QRect &surface_rect) { - auto *s = uiState(); - auto &sm = *(s->sm); - // Check if data is up-to-date - if (sm.rcv_frame("liveCalibration") < s->scene.started_frame || - sm.rcv_frame("modelV2") < s->scene.started_frame) { - return; - } - - clip_region = surface_rect.adjusted(-CLIP_MARGIN, -CLIP_MARGIN, CLIP_MARGIN, CLIP_MARGIN); - experimental_mode = sm["selfdriveState"].getSelfdriveState().getExperimentalMode(); - longitudinal_control = sm["carParams"].getCarParams().getOpenpilotLongitudinalControl(); - path_offset_z = sm["liveCalibration"].getLiveCalibration().getHeight()[0]; - - painter.save(); - - const auto &model = sm["modelV2"].getModelV2(); - const auto &radar_state = sm["radarState"].getRadarState(); - const auto &lead_one = radar_state.getLeadOne(); - - update_model(model, lead_one, surface_rect.height()); - drawLaneLines(painter); - drawPath(painter, model, surface_rect.height()); - - if ((longitudinal_control || starpilot_toggles.value("lead_info").toBool()) && sm.alive("radarState") && !starpilot_toggles.value("hide_lead_marker").toBool()) { - update_leads(radar_state, model.getPosition()); - const auto &lead_two = radar_state.getLeadTwo(); - if (lead_one.getStatus()) { - if (lead_one.getModelProb() >= starpilot_toggles.value("lead_detection_probability").toDouble()) { - drawLead(painter, lead_one, lead_vertices[0], surface_rect, QColor(starpilot_toggles.value("lead_marker_color").toString())); - } else { - drawLead(painter, lead_one, lead_vertices[0], surface_rect, starpilot_nvg->whiteColor()); - } - } else { - starpilot_nvg->leadTextRect = QRect(); - } - if (lead_two.getStatus() && (std::abs(lead_one.getDRel() - lead_two.getDRel()) > 3.0)) { - drawLead(painter, lead_two, lead_vertices[1], surface_rect, QColor(starpilot_toggles.value("lead_marker_color").toString())); - } - - // Adjacent leads may be published by radard for non-UI consumers (e.g. HumanLaneChanges), - // so gate drawing on the AdjacentLeadsUI toggle directly. - if (starpilot_toggles.value("adjacent_lead_tracking").toBool()) { - SubMaster &fpsm = *(starpilotUIState()->sm); - const cereal::StarPilotRadarState::Reader &starpilot_radar_state = fpsm["starpilotRadarState"].getStarpilotRadarState(); - - const cereal::StarPilotRadarState::LeadData::Reader &lead_left = starpilot_radar_state.getLeadLeft(); - const cereal::StarPilotRadarState::LeadData::Reader &lead_right = starpilot_radar_state.getLeadRight(); - - updateAdjacentLeads(starpilot_radar_state, model.getPosition()); - - starpilot_nvg->adjacentLeadTextRect = QRect(); - - if (lead_left.getStatus() && lead_right.getStatus() && (lead_left.getDRel() < lead_right.getDRel())) { - drawLead(painter, reinterpret_cast(lead_left), adjacent_lead_vertices[0], surface_rect, starpilot_nvg->blueColor(), true); - drawLead(painter, reinterpret_cast(lead_right), adjacent_lead_vertices[1], surface_rect, starpilot_nvg->purpleColor(), true); - } else { - if (lead_left.getStatus()) { - drawLead(painter, reinterpret_cast(lead_left), adjacent_lead_vertices[0], surface_rect, starpilot_nvg->blueColor(), true); - } - if (lead_right.getStatus()) { - drawLead(painter, reinterpret_cast(lead_right), adjacent_lead_vertices[1], surface_rect, starpilot_nvg->purpleColor(), true); - } - } - } - } - - if (starpilot_toggles.value("radar_tracks").toBool()) { - updateRadarTracks(model.getPosition()); - } - - painter.restore(); -} - -void ModelRenderer::update_leads(const cereal::RadarState::Reader &radar_state, const cereal::XYZTData::Reader &line) { - for (int i = 0; i < 2; ++i) { - const auto &lead_data = (i == 0) ? radar_state.getLeadOne() : radar_state.getLeadTwo(); - if (lead_data.getStatus()) { - float z = line.getZ()[get_path_length_idx(line, lead_data.getDRel())]; - mapToScreen(lead_data.getDRel(), -lead_data.getYRel(), z + path_offset_z, &lead_vertices[i]); - } - } -} - -void ModelRenderer::update_model(const cereal::ModelDataV2::Reader &model, const cereal::RadarState::LeadData::Reader &lead, float height) { - const auto &model_position = model.getPosition(); - float max_distance = *(model_position.getX().end() - 1); - - // update lane lines - const auto &lane_lines = model.getLaneLines(); - const auto &line_probs = model.getLaneLineProbs(); - int max_idx = get_path_length_idx(lane_lines[0], max_distance); - for (int i = 0; i < std::size(lane_line_vertices); i++) { - lane_line_probs[i] = line_probs[i]; - mapLineToPolygon(lane_lines[i], (starpilot_toggles.value("model_ui").toBool() ? starpilot_toggles.value("lane_line_width").toDouble() : 0.025) * lane_line_probs[i], 0, &lane_line_vertices[i], max_idx); - } - - // update road edges - const auto &road_edges = model.getRoadEdges(); - const auto &edge_stds = model.getRoadEdgeStds(); - for (int i = 0; i < std::size(road_edge_vertices); i++) { - road_edge_stds[i] = edge_stds[i]; - mapLineToPolygon(road_edges[i], starpilot_toggles.value("model_ui").toBool() ? starpilot_toggles.value("road_edge_width").toDouble() : 0.025, 0, &road_edge_vertices[i], max_idx); - } - - // update path - if (lead.getStatus()) { - const float lead_d = lead.getDRel() * 2.; - max_distance = std::clamp((float)(lead_d - fmin(lead_d * 0.35, 10.)), 0.0f, max_distance); - } - max_idx = get_path_length_idx(model_position, max_distance); - float path_width = starpilot_toggles.value("path_width").toDouble(); - if (starpilot_toggles.value("dynamic_path_width").toBool()) { - UIState *s = uiState(); - path_width *= s->status == STATUS_ENGAGED ? 1.0f : s->status == STATUS_ALWAYS_ON_LATERAL_ACTIVE ? 0.75f : 0.50f; - } - mapLineToPolygon(model_position, starpilot_toggles.value("model_ui").toBool() ? path_width * (1 - (starpilot_toggles.value("path_edge_width").toDouble() / 100.0f)) : 0.9, path_offset_z, &track_vertices, max_idx, false); - - StarPilotUIState *fs = starpilotUIState(); - SubMaster &fpsm = *(fs->sm); - - const cereal::StarPilotPlan::Reader &starpilotPlan = fpsm["starpilotPlan"].getStarpilotPlan(); - - starpilot_nvg->track_vertices = track_vertices; - - mapLineToPolygon(model_position, starpilot_toggles.value("model_ui").toBool() ? path_width : 0, path_offset_z, &starpilot_nvg->track_edge_vertices, max_idx, false); - - mapAveragedLineToPolygon(lane_lines[0], lane_lines[1], starpilotPlan.getLaneWidthLeft() / 2.0f, 0, &starpilot_nvg->track_adjacent_vertices[0], max_idx, height, false); - mapAveragedLineToPolygon(lane_lines[2], lane_lines[3], starpilotPlan.getLaneWidthRight() / 2.0f, 0, &starpilot_nvg->track_adjacent_vertices[1], max_idx, height, false); -} - -void ModelRenderer::drawLaneLines(QPainter &painter) { - // lanelines - for (int i = 0; i < std::size(lane_line_vertices); ++i) { - if (starpilot_toggles.value("color_scheme").toString() != "stock") { - painter.setBrush(QColor::fromRgbF(1.0, 1.0, 1.0, std::clamp(lane_line_probs[i], 0.0, 0.7))); - } else { - QColor lane_color = QColor(starpilot_toggles.value("lane_lines_color").toString()); - lane_color.setAlphaF(lane_color.alphaF() * std::clamp(lane_line_probs[i], 0.0, 0.7)); - painter.setBrush(lane_color); - } - painter.drawPolygon(lane_line_vertices[i]); - } - - // road edges - for (int i = 0; i < std::size(road_edge_vertices); ++i) { - painter.setBrush(QColor::fromRgbF(1.0, 0, 0, std::clamp(1.0 - road_edge_stds[i], 0.0, 1.0))); - painter.drawPolygon(road_edge_vertices[i]); - } -} - -void ModelRenderer::drawPath(QPainter &painter, const cereal::ModelDataV2::Reader &model, int height) { - QLinearGradient bg(0, height, 0, 0); - if (experimental_mode || starpilot_toggles.value("acceleration_path").toBool() || starpilot_toggles.value("rainbow_path").toBool()) { - // The first half of track_vertices are the points for the right side of the path - const auto &acceleration = model.getAcceleration().getX(); - const int max_len = std::min(track_vertices.length() / 2, acceleration.size()); - - for (int i = 0; i < max_len; ++i) { - // Some points are out of frame - int track_idx = max_len - i - 1; // flip idx to start from bottom right - if (track_vertices[track_idx].y() < 0 || track_vertices[track_idx].y() > height) continue; - - // Flip so 0 is bottom of frame - float lin_grad_point = (height - track_vertices[track_idx].y()) / height; - - if ((fabs(acceleration[i]) < 0.25 || !starpilot_toggles.value("acceleration_path").toBool()) && starpilot_toggles.value("rainbow_path").toBool()) { - starpilot_nvg->paintRainbowPath(painter, bg, lin_grad_point); - } else if (fabs(acceleration[i]) < 0.25 && starpilot_toggles.value("color_scheme").toString() != "stock") { - QColor color = QColor(starpilot_toggles.value("path_color").toString()); - color.setAlphaF(util::map_val(lin_grad_point, 0.0f, 1.0f, 1.0f, 0.1f)); - bg.setColorAt(lin_grad_point, color); - } else { - // speed up: 120, slow down: 0 - float path_hue = fmax(fmin(60 + acceleration[i] * 35, 120), 0); - // FIXME: painter.drawPolygon can be slow if hue is not rounded - path_hue = int(path_hue * 100 + 0.5) / 100; - - float saturation = fmin(fabs(acceleration[i] * 1.5), 1); - float lightness = util::map_val(saturation, 0.0f, 1.0f, 0.95f, 0.62f); // lighter when grey - float alpha = util::map_val(lin_grad_point, 0.75f / 2.f, 0.75f, 0.4f, 0.0f); // matches previous alpha fade - bg.setColorAt(lin_grad_point, QColor::fromHslF(path_hue / 360., saturation, lightness, alpha)); - - // Skip a point, unless next is last - i += (i + 2) < max_len ? 1 : 0; - } - } - - } else { - updatePathGradient(bg); - } - - painter.setBrush(bg); - painter.drawPolygon(track_vertices); - - if (starpilot_toggles.value("adjacent_paths").toBool() || starpilot_toggles.value("adjacent_path_metrics").toBool()) { - starpilot_nvg->paintAdjacentPaths(painter); - } else if (starpilot_toggles.value("blind_spot_path").toBool()) { - starpilot_nvg->paintBlindSpotPath(painter); - } - - starpilot_nvg->paintPathEdges(painter, height); -} - -void ModelRenderer::updatePathGradient(QLinearGradient &bg) { - static const QColor throttle_colors[] = { - QColor::fromHslF(148. / 360., 0.94, 0.51, 0.4), - QColor::fromHslF(112. / 360., 1.0, 0.68, 0.35), - QColor::fromHslF(112. / 360., 1.0, 0.68, 0.0)}; - - static const QColor no_throttle_colors[] = { - QColor::fromHslF(148. / 360., 0.0, 0.95, 0.4), - QColor::fromHslF(112. / 360., 0.0, 0.95, 0.35), - QColor::fromHslF(112. / 360., 0.0, 0.95, 0.0), - }; - - // Transition speed; 0.1 corresponds to 0.5 seconds at UI_FREQ - constexpr float transition_speed = 0.1f; - - // Start transition if throttle state changes - bool allow_throttle = (*uiState()->sm)["longitudinalPlan"].getLongitudinalPlan().getAllowThrottle() || !longitudinal_control; - if (allow_throttle != prev_allow_throttle) { - prev_allow_throttle = allow_throttle; - // Invert blend factor for a smooth transition when the state changes mid-animation - blend_factor = std::max(1.0f - blend_factor, 0.0f); - } - - const QColor *begin_colors = allow_throttle ? no_throttle_colors : throttle_colors; - const QColor *end_colors = allow_throttle ? throttle_colors : no_throttle_colors; - if (blend_factor < 1.0f) { - blend_factor = std::min(blend_factor + transition_speed, 1.0f); - } - - // Set gradient colors by blending the start and end colors - bg.setColorAt(0.0f, blendColors(begin_colors[0], end_colors[0], blend_factor)); - bg.setColorAt(0.5f, blendColors(begin_colors[1], end_colors[1], blend_factor)); - bg.setColorAt(1.0f, blendColors(begin_colors[2], end_colors[2], blend_factor)); -} - -QColor ModelRenderer::blendColors(const QColor &start, const QColor &end, float t) { - if (t == 1.0f) return end; - return QColor::fromRgbF( - (1 - t) * start.redF() + t * end.redF(), - (1 - t) * start.greenF() + t * end.greenF(), - (1 - t) * start.blueF() + t * end.blueF(), - (1 - t) * start.alphaF() + t * end.alphaF()); -} - -void ModelRenderer::drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, - const QPointF &vd, const QRect &surface_rect, QColor marker_color, bool adjacent) { - const float speedBuff = 10.; - const float leadBuff = 40.; - const float d_rel = lead_data.getDRel() + (adjacent ? fabs(lead_data.getYRel()) : 0); - const float v_rel = lead_data.getVRel(); - - float fillAlpha = 0; - if (d_rel < leadBuff) { - fillAlpha = 255 * (1.0 - (d_rel / leadBuff)); - if (v_rel < 0) { - fillAlpha += 255 * (-1 * (v_rel / speedBuff)); - } - fillAlpha = (int)(fmin(fillAlpha, 255)); - } - - float sz = std::clamp((25 * 30) / (d_rel / 3 + 30), 15.0f, 30.0f) * 2.35; - float x = std::clamp(vd.x(), 0.f, surface_rect.width() - sz / 2); - float y = std::min(vd.y(), surface_rect.height() - sz * 0.6); - - float g_xo = sz / 5; - float g_yo = sz / 10; - - QPointF glow[] = {{x + (sz * 1.35) + g_xo, y + sz + g_yo}, {x, y - g_yo}, {x - (sz * 1.35) - g_xo, y + sz + g_yo}}; - painter.setBrush(QColor(218, 202, 37, 255)); - painter.drawPolygon(glow, std::size(glow)); - - // chevron - QPointF chevron[] = {{x + (sz * 1.25), y + sz}, {x, y}, {x - (sz * 1.25), y + sz}}; - painter.setBrush(QColor(marker_color.red(), marker_color.green(), marker_color.blue(), fillAlpha)); - painter.drawPolygon(chevron, std::size(chevron)); - - if (starpilot_toggles.value("lead_info").toBool()) { - starpilot_nvg->paintLeadMetrics(painter, adjacent, chevron, lead_data); - } -} - -// Projects a point in car to space to the corresponding point in full frame image space. -bool ModelRenderer::mapToScreen(float in_x, float in_y, float in_z, QPointF *out) { - Eigen::Vector3f input(in_x, in_y, in_z); - auto pt = car_space_transform * input; - *out = QPointF(pt.x() / pt.z(), pt.y() / pt.z()); - return clip_region.contains(*out); -} - -void ModelRenderer::mapLineToPolygon(const cereal::XYZTData::Reader &line, float y_off, float z_off, - QPolygonF *pvd, int max_idx, bool allow_invert) { - const auto line_x = line.getX(), line_y = line.getY(), line_z = line.getZ(); - QPointF left, right; - pvd->clear(); - for (int i = 0; i <= max_idx; i++) { - // highly negative x positions are drawn above the frame and cause flickering, clip to zy plane of camera - if (line_x[i] < 0) continue; - - bool l = mapToScreen(line_x[i], line_y[i] - y_off, line_z[i] + z_off, &left); - bool r = mapToScreen(line_x[i], line_y[i] + y_off, line_z[i] + z_off, &right); - if (l && r) { - // For wider lines the drawn polygon will "invert" when going over a hill and cause artifacts - if (!allow_invert && pvd->size() && left.y() > pvd->back().y()) { - continue; - } - pvd->push_back(left); - pvd->push_front(right); - } - } -} - -void ModelRenderer::mapAveragedLineToPolygon(const cereal::XYZTData::Reader &line1, const cereal::XYZTData::Reader &line2, float y_off, float z_off, - QPolygonF *pvd, int max_idx, float height, bool allow_invert) { - const auto line_x1 = line1.getX(), line_y1 = line1.getY(), line_z1 = line1.getZ(); - const auto line_y2 = line2.getY(); - QPointF left, right; - pvd->clear(); - for (int i = 0; i <= max_idx; i++) { - // highly negative x positions are drawn above the frame and cause flickering, clip to zy plane of camera - if (line_x1[i] < 0) continue; - - bool l = mapToScreen(line_x1[i], ((line_y1[i] + line_y2[i]) / 2.0f) - y_off, line_z1[i] + z_off, &left); - bool r = mapToScreen(line_x1[i], ((line_y1[i] + line_y2[i]) / 2.0f) + y_off, line_z1[i] + z_off, &right); - if (l && r) { - // For wider lines the drawn polygon will "invert" when going over a hill and cause artifacts - if (!allow_invert && pvd->size() && left.y() > pvd->back().y()) { - continue; - } - pvd->push_back(left); - pvd->push_front(right); - } - } - - // Ground the path - if (pvd->size() >= 4) { - int mid = pvd->size() / 2; - - std::function extendToBottom = [&](int idx1, int idx2) { - QPointF &p0 = (*pvd)[idx1]; - QPointF &p1 = (*pvd)[idx2]; - - float dy = p0.y() - p1.y(); - if (std::abs(dy) > 0.1f) { - float slope = (p0.x() - p1.x()) / dy; - p0.setX(p0.x() + (height - p0.y()) * slope); - p0.setY(height); - } - }; - - extendToBottom(mid, mid + 1); - extendToBottom(mid - 1, mid - 2); - } -} - -void ModelRenderer::updateAdjacentLeads(const cereal::StarPilotRadarState::Reader &radar_state, const cereal::XYZTData::Reader &line) { - for (int i = 0; i < 2; ++i) { - const auto &lead_data = (i == 0) ? radar_state.getLeadLeft() : radar_state.getLeadRight(); - if (lead_data.getStatus()) { - float z = line.getZ()[get_path_length_idx(line, lead_data.getDRel())]; - mapToScreen(lead_data.getDRel(), -lead_data.getYRel(), z + path_offset_z, &adjacent_lead_vertices[i]); - } - } -} - -void ModelRenderer::updateRadarTracks(const cereal::XYZTData::Reader &line) { - std::vector &radar_tracks = starpilot_nvg->radar_tracks; - radar_tracks.clear(); - - SubMaster &fpsm = *(starpilotUIState()->sm); - capnp::List::Reader radar_points = fpsm["liveTracks"].getLiveTracks().getPoints(); - radar_tracks.reserve(radar_points.size()); - - capnp::List::Reader line_z = line.getZ(); - - for (cereal::RadarData::RadarPoint::Reader point : radar_points) { - float d_rel = point.getDRel(); - float z = line_z[get_path_length_idx(line, d_rel)]; - - QPointF calibrated_point; - if (mapToScreen(d_rel, -point.getYRel(), z + path_offset_z, &calibrated_point)) { - radar_tracks.push_back(calibrated_point); - } - } -} diff --git a/selfdrive/ui/qt/onroad/model.h b/selfdrive/ui/qt/onroad/model.h deleted file mode 100644 index fc9f846d3..000000000 --- a/selfdrive/ui/qt/onroad/model.h +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once - -#include -#include - -#include "selfdrive/ui/ui.h" - -#include "starpilot/ui/qt/onroad/starpilot_annotated_camera.h" - -class ModelRenderer { -public: - ModelRenderer() {} - void setTransform(const Eigen::Matrix3f &transform) { car_space_transform = transform; } - void draw(QPainter &painter, const QRect &surface_rect); - - StarPilotAnnotatedCameraWidget *starpilot_nvg; - - StarPilotUIScene starpilot_scene; - - QJsonObject starpilot_toggles; - -private: - bool mapToScreen(float in_x, float in_y, float in_z, QPointF *out); - void mapLineToPolygon(const cereal::XYZTData::Reader &line, float y_off, float z_off, - QPolygonF *pvd, int max_idx, bool allow_invert = true); - void drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd, const QRect &surface_rect, QColor marker_color, bool adjacent=false); - void update_leads(const cereal::RadarState::Reader &radar_state, const cereal::XYZTData::Reader &line); - void update_model(const cereal::ModelDataV2::Reader &model, const cereal::RadarState::LeadData::Reader &lead, float height); - void drawLaneLines(QPainter &painter); - void drawPath(QPainter &painter, const cereal::ModelDataV2::Reader &model, int height); - void updatePathGradient(QLinearGradient &bg); - QColor blendColors(const QColor &start, const QColor &end, float t); - - bool longitudinal_control = false; - bool experimental_mode = false; - float blend_factor = 1.0f; - bool prev_allow_throttle = true; - float lane_line_probs[4] = {}; - float road_edge_stds[2] = {}; - float path_offset_z = 1.22f; - QPolygonF track_vertices; - QPolygonF lane_line_vertices[4] = {}; - QPolygonF road_edge_vertices[2] = {}; - QPointF lead_vertices[2] = {}; - Eigen::Matrix3f car_space_transform = Eigen::Matrix3f::Zero(); - QRectF clip_region; - - void mapAveragedLineToPolygon(const cereal::XYZTData::Reader &line1, const cereal::XYZTData::Reader &line2, float y_off, float z_off, - QPolygonF *pvd, int max_idx, float height, bool allow_invert = true); - void updateAdjacentLeads(const cereal::StarPilotRadarState::Reader &radar_state, const cereal::XYZTData::Reader &line); - void updateRadarTracks(const cereal::XYZTData::Reader &line); - - QPointF adjacent_lead_vertices[2] = {}; -}; diff --git a/selfdrive/ui/qt/onroad/onroad_home.cc b/selfdrive/ui/qt/onroad/onroad_home.cc deleted file mode 100644 index 6fd83821f..000000000 --- a/selfdrive/ui/qt/onroad/onroad_home.cc +++ /dev/null @@ -1,149 +0,0 @@ -#include "selfdrive/ui/qt/onroad/onroad_home.h" - -#include -#include - -#include "selfdrive/ui/qt/util.h" - -OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(UI_BORDER_SIZE); - QStackedLayout *stacked_layout = new QStackedLayout; - stacked_layout->setStackingMode(QStackedLayout::StackAll); - main_layout->addLayout(stacked_layout); - - nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this); - - QWidget * split_wrapper = new QWidget; - split = new QHBoxLayout(split_wrapper); - split->setContentsMargins(0, 0, 0, 0); - split->setSpacing(0); - split->addWidget(nvg); - - if (getenv("DUAL_CAMERA_VIEW")) { - CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, this); - split->insertWidget(0, arCam); - } - - stacked_layout->addWidget(split_wrapper); - - alerts = new OnroadAlerts(this); - alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); - stacked_layout->addWidget(alerts); - - // setup stacking order - alerts->raise(); - - setAttribute(Qt::WA_OpaquePaintEvent); - QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState); - QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition); - - starpilot_nvg = new StarPilotAnnotatedCameraWidget(this); - starpilot_onroad = new StarPilotOnroadWindow(this); - starpilot_onroad->setAttribute(Qt::WA_TransparentForMouseEvents, true); - - stacked_layout->addWidget(starpilot_nvg); - stacked_layout->addWidget(starpilot_onroad); - - starpilot_onroad->raise(); - alerts->raise(); - - nvg->starpilot_nvg = starpilot_nvg; -} - -void OnroadWindow::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!s.scene.started) { - return; - } - - alerts->updateState(s, fs); - nvg->updateState(s, fs); - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const auto selfdriveState = (*s.sm)["selfdriveState"].getSelfdriveState(); - const bool enabled = selfdriveState.getEnabled(); - QColor bgColor = bg_colors[s.status]; - const bool conditional_experimental_mode = starpilot_toggles.value("conditional_experimental_mode").toBool(); - const bool conditional_chill_mode = starpilot_toggles.value("conditional_chill_mode").toBool(); - const bool highlight_override = - enabled && ((conditional_experimental_mode && starpilot_scene.conditional_status == 1) || - (conditional_chill_mode && (starpilot_scene.conditional_status == 1 || starpilot_scene.conditional_status == 2))); - if (starpilot_scene.switchback_mode_enabled && (enabled || starpilot_scene.always_on_lateral_active)) { - bgColor = bg_colors[STATUS_SWITCHBACK_MODE_ENABLED]; - } else if (starpilot_scene.always_on_lateral_active) { - bgColor = bg_colors[STATUS_ALWAYS_ON_LATERAL_ACTIVE]; - } else if (highlight_override) { - bgColor = bg_colors[STATUS_CEM_DISABLED]; - } else if (enabled && selfdriveState.getExperimentalMode()) { - bgColor = bg_colors[STATUS_EXPERIMENTAL_MODE_ENABLED]; - } else if (starpilot_scene.traffic_mode_enabled && enabled) { - bgColor = bg_colors[STATUS_TRAFFIC_MODE_ENABLED]; - } - - if (bg != bgColor) { - // repaint border - bg = bgColor; - update(); - } - starpilot_nvg->alertHeight = alerts->alertHeight; - - starpilot_onroad->bg = bg; - starpilot_onroad->fps = nvg->fps; - - nvg->starpilot_nvg = starpilot_nvg; - - nvg->starpilot_scene = starpilot_scene; - starpilot_nvg->starpilot_scene = starpilot_scene; - starpilot_onroad->starpilot_scene = starpilot_scene; - - alerts->starpilot_toggles = starpilot_toggles; - starpilot_nvg->starpilot_toggles = starpilot_toggles; - starpilot_onroad->starpilot_toggles = starpilot_toggles; - nvg->starpilot_toggles = starpilot_toggles; - - starpilot_onroad->setGeometry(rect()); - - starpilot_nvg->updateState(s, fs); - starpilot_onroad->updateState(s, fs); -} - -void OnroadWindow::offroadTransition(bool offroad) { - alerts->clear(); -} - -void OnroadWindow::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255)); -} - -void OnroadWindow::mousePressEvent(QMouseEvent* mouseEvent) { - if (nvg->handleHudPress(mouseEvent->pos())) { - grabMouse(); - mouseEvent->accept(); - return; - } - - starpilot_nvg->mousePressEvent(mouseEvent); - - if (mouseEvent->isAccepted()) { - return; - } - - // propagation event to parent(HomeWindow) - QWidget::mousePressEvent(mouseEvent); -} - -void OnroadWindow::mouseReleaseEvent(QMouseEvent* mouseEvent) { - const bool handled = nvg->handleHudRelease(mouseEvent->pos()); - if (QWidget::mouseGrabber() == this) { - releaseMouse(); - } - - if (handled) { - mouseEvent->accept(); - return; - } - - QWidget::mouseReleaseEvent(mouseEvent); -} diff --git a/selfdrive/ui/qt/onroad/onroad_home.h b/selfdrive/ui/qt/onroad/onroad_home.h deleted file mode 100644 index d6b6d68a1..000000000 --- a/selfdrive/ui/qt/onroad/onroad_home.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/onroad/alerts.h" -#include "selfdrive/ui/qt/onroad/annotated_camera.h" - -#include "starpilot/ui/qt/onroad/starpilot_onroad.h" - -class OnroadWindow : public QWidget { - Q_OBJECT - -public: - OnroadWindow(QWidget* parent = 0); - -private: - void paintEvent(QPaintEvent *event); - OnroadAlerts *alerts; - AnnotatedCameraWidget *nvg; - QColor bg = bg_colors[STATUS_DISENGAGED]; - QHBoxLayout* split; - - void mousePressEvent(QMouseEvent* mouseEvent); - void mouseReleaseEvent(QMouseEvent* mouseEvent); - - StarPilotAnnotatedCameraWidget *starpilot_nvg; - StarPilotOnroadWindow *starpilot_onroad; - -private slots: - void offroadTransition(bool offroad); - void updateState(const UIState &s, const StarPilotUIState &fs); -}; diff --git a/selfdrive/ui/qt/prime_state.cc b/selfdrive/ui/qt/prime_state.cc deleted file mode 100644 index 4dc17d757..000000000 --- a/selfdrive/ui/qt/prime_state.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include "selfdrive/ui/qt/prime_state.h" - -#include - -#include "selfdrive/ui/qt/api.h" -#include "selfdrive/ui/qt/request_repeater.h" -#include "selfdrive/ui/qt/util.h" - -PrimeState::PrimeState(QObject* parent) : QObject(parent) { - const char *env_prime_type = std::getenv("PRIME_TYPE"); - auto type = env_prime_type ? env_prime_type : Params().get("PrimeType"); - - if (!type.empty()) { - prime_type = static_cast(std::atoi(type.c_str())); - } - - if (auto dongleId = getDongleId()) { - QString url = CommaApi::BASE_URL + "/v1.1/devices/" + *dongleId + "/"; - RequestRepeater* repeater = new RequestRepeater(this, url, "ApiCache_Device", 60); - QObject::connect(repeater, &RequestRepeater::requestDone, this, &PrimeState::handleReply); - } - - // Emit the initial state change - QTimer::singleShot(1, [this]() { emit changed(prime_type); }); -} - -void PrimeState::handleReply(const QString& response, bool success) { - if (!success) return; - - QJsonDocument doc = QJsonDocument::fromJson(response.toUtf8()); - if (doc.isNull()) { - qDebug() << "JSON Parse failed on getting pairing and PrimeState status"; - return; - } - - QJsonObject json = doc.object(); - bool is_paired = json["is_paired"].toBool(); - auto type = static_cast(json["prime_type"].toInt()); - setType(is_paired ? type : PrimeState::PRIME_TYPE_UNPAIRED); -} - -void PrimeState::setType(PrimeState::Type type) { - if (type != prime_type) { - prime_type = type; - Params().put("PrimeType", std::to_string(prime_type)); - emit changed(prime_type); - } -} diff --git a/selfdrive/ui/qt/prime_state.h b/selfdrive/ui/qt/prime_state.h deleted file mode 100644 index 0e2e3bb04..000000000 --- a/selfdrive/ui/qt/prime_state.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include - -class PrimeState : public QObject { - Q_OBJECT - -public: - - enum Type { - PRIME_TYPE_UNKNOWN = -2, - PRIME_TYPE_UNPAIRED = -1, - PRIME_TYPE_NONE = 0, - PRIME_TYPE_MAGENTA = 1, - PRIME_TYPE_LITE = 2, - PRIME_TYPE_BLUE = 3, - PRIME_TYPE_MAGENTA_NEW = 4, - PRIME_TYPE_PURPLE = 5, - }; - - PrimeState(QObject *parent); - void setType(PrimeState::Type type); - inline PrimeState::Type currentType() const { return prime_type; } - inline bool isSubscribed() const { return prime_type > PrimeState::PRIME_TYPE_NONE; } - -signals: - void changed(PrimeState::Type prime_type); - -private: - void handleReply(const QString &response, bool success); - - PrimeState::Type prime_type = PrimeState::PRIME_TYPE_UNKNOWN; -}; diff --git a/selfdrive/ui/qt/qt_window.cc b/selfdrive/ui/qt/qt_window.cc deleted file mode 100644 index 8d3d7cf72..000000000 --- a/selfdrive/ui/qt/qt_window.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include "selfdrive/ui/qt/qt_window.h" - -void setMainWindow(QWidget *w) { - const float scale = util::getenv("SCALE", 1.0f); - const QSize sz = QGuiApplication::primaryScreen()->size(); - - if (Hardware::PC() && scale == 1.0 && !(sz - DEVICE_SCREEN_SIZE).isValid()) { - w->setMinimumSize(QSize(640, 480)); // allow resize smaller than fullscreen - w->setMaximumSize(DEVICE_SCREEN_SIZE); - w->resize(sz); - } else { - w->setFixedSize(DEVICE_SCREEN_SIZE * scale); - } - w->show(); - -#ifdef QCOM2 - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - wl_surface *s = reinterpret_cast(native->nativeResourceForWindow("surface", w->windowHandle())); - wl_surface_set_buffer_transform(s, WL_OUTPUT_TRANSFORM_270); - wl_surface_commit(s); - - w->setWindowState(Qt::WindowFullScreen); - w->setVisible(true); - - // ensure we have a valid eglDisplay, otherwise the ui will silently fail - void *egl = native->nativeResourceForWindow("egldisplay", w->windowHandle()); - assert(egl != nullptr); -#endif -} - - -extern "C" { - void set_main_window(void *w) { - setMainWindow((QWidget*)w); - } -} diff --git a/selfdrive/ui/qt/qt_window.h b/selfdrive/ui/qt/qt_window.h deleted file mode 100644 index 6f16e0095..000000000 --- a/selfdrive/ui/qt/qt_window.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include - -#include -#include -#include - -#ifdef QCOM2 -#include -#include -#include -#endif - -#include "system/hardware/hw.h" - -const QString ASSET_PATH = ":/"; -const QSize DEVICE_SCREEN_SIZE = {2160, 1080}; - -void setMainWindow(QWidget *w); diff --git a/selfdrive/ui/qt/request_repeater.cc b/selfdrive/ui/qt/request_repeater.cc deleted file mode 100644 index 7aa731898..000000000 --- a/selfdrive/ui/qt/request_repeater.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include "selfdrive/ui/qt/request_repeater.h" - -RequestRepeater::RequestRepeater(QObject *parent, const QString &requestURL, const QString &cacheKey, - int period, bool while_onroad) : HttpRequest(parent) { - timer = new QTimer(this); - timer->setTimerType(Qt::VeryCoarseTimer); - QObject::connect(timer, &QTimer::timeout, [=]() { - if ((!uiState()->scene.started || while_onroad) && device()->isAwake() && !active()) { - sendRequest(requestURL); - } - }); - - timer->start(period * 1000); - - if (!cacheKey.isEmpty()) { - prevResp = QString::fromStdString(params.get(cacheKey.toStdString())); - if (!prevResp.isEmpty()) { - QTimer::singleShot(500, [=]() { emit requestDone(prevResp, true, QNetworkReply::NoError); }); - } - QObject::connect(this, &HttpRequest::requestDone, [=](const QString &resp, bool success) { - if (success && resp != prevResp) { - params.put(cacheKey.toStdString(), resp.toStdString()); - prevResp = resp; - } - }); - } -} diff --git a/selfdrive/ui/qt/request_repeater.h b/selfdrive/ui/qt/request_repeater.h deleted file mode 100644 index c0e275827..000000000 --- a/selfdrive/ui/qt/request_repeater.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include "common/util.h" -#include "selfdrive/ui/qt/api.h" -#include "selfdrive/ui/ui.h" - -class RequestRepeater : public HttpRequest { -public: - RequestRepeater(QObject *parent, const QString &requestURL, const QString &cacheKey = "", int period = 0, bool while_onroad=false); - -private: - Params params; - QTimer *timer; - QString prevResp; -}; diff --git a/selfdrive/ui/qt/sidebar.cc b/selfdrive/ui/qt/sidebar.cc deleted file mode 100644 index ae5d24045..000000000 --- a/selfdrive/ui/qt/sidebar.cc +++ /dev/null @@ -1,336 +0,0 @@ -#include "selfdrive/ui/qt/sidebar.h" - -#include -#include - -#include - -#include "selfdrive/ui/qt/util.h" - -void Sidebar::drawMetric(QPainter &p, const QPair &label, QColor c, int y) { - const QRect rect = {30, y, 240, 126}; - - p.setPen(Qt::NoPen); - p.setBrush(QBrush(c)); - p.setClipRect(rect.x() + 4, rect.y(), 18, rect.height(), Qt::ClipOperation::ReplaceClip); - p.drawRoundedRect(QRect(rect.x() + 4, rect.y() + 4, 100, 118), 18, 18); - p.setClipping(false); - - QPen pen = QPen(QColor(0xff, 0xff, 0xff, 0x55)); - pen.setWidth(2); - p.setPen(pen); - p.setBrush(Qt::NoBrush); - p.drawRoundedRect(rect, 20, 20); - - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setFont(InterFont(35, QFont::DemiBold)); - p.drawText(rect.adjusted(22, 0, 0, 0), Qt::AlignCenter, label.first + "\n" + label.second); -} - -Sidebar::Sidebar(QWidget *parent) : QFrame(parent), onroad(false), flag_pressed(false), settings_pressed(false), mic_indicator_pressed(false) { - home_img = loadPixmap("../assets/images/button_home.png", home_btn.size()); - flag_img = loadPixmap("../assets/images/button_flag.png", home_btn.size()); - settings_img = loadPixmap("../assets/images/button_settings.png", settings_btn.size(), Qt::IgnoreAspectRatio); - mic_img = loadPixmap("../assets/icons/microphone.png", QSize(30, 30)); - link_img = loadPixmap("../assets/icons/link.png", QSize(60, 60)); - - connect(this, &Sidebar::valueChanged, [=] { update(); }); - - setAttribute(Qt::WA_OpaquePaintEvent); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - setFixedWidth(300); - - QObject::connect(uiState(), &UIState::uiUpdate, this, &Sidebar::updateState); - - pm = std::make_unique(std::vector{"bookmarkButton"}); - - QObject::connect(starpilotUIState(), &StarPilotUIState::themeUpdated, this, &Sidebar::updateTheme); -} - -void Sidebar::mousePressEvent(QMouseEvent *event) { - QPoint pos = event->pos(); - - static constexpr QRect cpuRect = {30, 496, 240, 126}; - static constexpr QRect memoryRect = {30, 654, 240, 126}; - static constexpr QRect tempRect = {30, 338, 240, 126}; - - static int showChip = 0; - static int showMemory = 0; - static int showTemp = 0; - - StarPilotUIState *fs = starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool simple_mode = starpilot_toggles.value("simple_mode").toBool(); - - if (!simple_mode && cpuRect.contains(pos) && starpilot_toggles.value("developer_ui").toBool()) { - showChip = (showChip + 1) % 3; - - params.putBool("ShowCPU", showChip == 1); - params.putBool("ShowGPU", showChip == 2); - } else if (!simple_mode && memoryRect.contains(pos) && starpilot_toggles.value("developer_ui").toBool()) { - showMemory = (showMemory + 1) % 4; - - params.putBool("ShowMemoryUsage", showMemory == 1); - params.putBool("ShowStorageLeft", showMemory == 2); - params.putBool("ShowStorageUsed", showMemory == 3); - } else if (!simple_mode && tempRect.contains(pos) && starpilot_toggles.value("developer_ui").toBool()) { - showTemp = (showTemp + 1) % 3; - - params.putBool("Fahrenheit", showTemp == 2); - params.putBool("NumericalTemp", showTemp != 0); - } else if (onroad && home_btn.contains(pos)) { - flag_pressed = true; - } else if (settings_btn.contains(pos)) { - settings_pressed = true; - } else if (recording_audio && mic_indicator_btn.contains(event->pos())) { - mic_indicator_pressed = true; - } - - if (!(flag_pressed || mic_indicator_pressed || settings_pressed)) { - update(); - updateStarPilotToggles(); - } -} - -void Sidebar::mouseReleaseEvent(QMouseEvent *event) { - if (flag_pressed || settings_pressed || mic_indicator_pressed) { - flag_pressed = settings_pressed = mic_indicator_pressed = false; - update(); - } - if (onroad && home_btn.contains(event->pos())) { - MessageBuilder msg; - msg.initEvent().initBookmarkButton(); - pm->send("bookmarkButton", msg); - } else if (settings_btn.contains(event->pos())) { - emit openSettings(); - } else if (recording_audio && mic_indicator_btn.contains(event->pos())) { - emit openSettings(2, "RecordAudio"); - } -} - -void Sidebar::offroadTransition(bool offroad) { - onroad = !offroad; - update(); -} - -void Sidebar::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible()) return; - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool simple_mode = starpilot_toggles.value("simple_mode").toBool(); - static bool previous_simple_mode = simple_mode; - if (previous_simple_mode != simple_mode) { - updateTheme(); - previous_simple_mode = simple_mode; - } - - const SubMaster &fpsm = *(fs.sm); - - const cereal::StarPilotDeviceState::Reader &starpilotDeviceState = fpsm["starpilotDeviceState"].getStarpilotDeviceState(); - - auto &sm = *(s.sm); - - networking = networking ? networking : window()->findChild(""); - bool tethering_on = networking && networking->wifi->tethering_on; - auto deviceState = sm["deviceState"].getDeviceState(); - - const char *desktop_fake_wifi_env = std::getenv("SP_ALLOW_DESKTOP_FAKE_WIFI"); - const bool desktop_force_online = Hardware::PC() && desktop_fake_wifi_env != nullptr && std::string(desktop_fake_wifi_env) != "0"; - - auto net_type_value = desktop_force_online ? cereal::DeviceState::NetworkType::WIFI : deviceState.getNetworkType(); - setProperty("netType", tethering_on ? "Hotspot" : network_type[net_type_value]); - int strength = tethering_on ? 4 : (desktop_force_online ? 4 : (int)deviceState.getNetworkStrength()); - setProperty("netStrength", strength > 0 ? strength + 1 : 0); - - ItemStatus connectStatus; - auto last_ping = deviceState.getLastAthenaPingTime(); - if (desktop_force_online) { - connectStatus = ItemStatus{{tr("CONNECT"), tr("ONLINE")}, simple_mode ? good_color : QColor(starpilot_toggles.value("sidebar_color3").toString())}; - } else if (last_ping == 0) { - connectStatus = ItemStatus{{tr("CONNECT"), tr("OFFLINE")}, warning_color}; - } else { - connectStatus = nanos_since_boot() - last_ping < 80e9 - ? ItemStatus{{tr("CONNECT"), tr("ONLINE")}, simple_mode ? good_color : QColor(starpilot_toggles.value("sidebar_color3").toString())} - : ItemStatus{{tr("CONNECT"), tr("ERROR")}, danger_color}; - } - setProperty("connectStatus", QVariant::fromValue(connectStatus)); - - int maxTempC = deviceState.getMaxTempC(); - QString max_temp = starpilot_toggles.value("fahrenheit").toBool() ? QString::number(maxTempC * 9 / 5 + 32) + "°F" : QString::number(maxTempC) + "°C"; - ItemStatus tempStatus = {{tr("TEMP"), simple_mode ? tr("HIGH") : (starpilot_toggles.value("numerical_temp").toBool() ? max_temp : tr("HIGH"))}, danger_color}; - auto ts = deviceState.getThermalStatus(); - if (ts == cereal::DeviceState::ThermalStatus::GREEN) { - tempStatus = {{tr("TEMP"), simple_mode ? tr("GOOD") : (starpilot_toggles.value("numerical_temp").toBool() ? max_temp : tr("GOOD"))}, - simple_mode ? good_color : QColor(starpilot_toggles.value("sidebar_color1").toString())}; - } else if (ts == cereal::DeviceState::ThermalStatus::YELLOW) { - tempStatus = {{tr("TEMP"), simple_mode ? tr("OK") : (starpilot_toggles.value("numerical_temp").toBool() ? max_temp : tr("OK"))}, warning_color}; - } - setProperty("tempStatus", QVariant::fromValue(tempStatus)); - - ItemStatus pandaStatus = {{tr("VEHICLE"), tr("ONLINE")}, simple_mode ? good_color : QColor(starpilot_toggles.value("sidebar_color2").toString())}; - if (s.scene.pandaType == cereal::PandaState::PandaType::UNKNOWN) { - pandaStatus = {{tr("NO"), tr("PANDA")}, danger_color}; - } - setProperty("pandaStatus", QVariant::fromValue(pandaStatus)); - - setProperty("recordingAudio", s.scene.recording_audio); - - if (!simple_mode && (starpilot_toggles.value("cpu_metrics").toBool() || starpilot_toggles.value("gpu_metrics").toBool())) { - capnp::List::Reader cpu_loads = deviceState.getCpuUsagePercent(); - int cpu_usage = cpu_loads.size() != 0 ? std::accumulate(cpu_loads.begin(), cpu_loads.end(), 0) / cpu_loads.size() : 0; - int gpu_usage = deviceState.getGpuUsagePercent(); - int usage = starpilot_toggles.value("cpu_metrics").toBool() ? cpu_usage : gpu_usage; - - QString chip_usage = QString::number(usage) + "%"; - - ItemStatus chipStatus = {{starpilot_toggles.value("gpu_metrics").toBool() ? tr("GPU") : tr("CPU"), chip_usage}, QColor(starpilot_toggles.value("sidebar_color2").toString())}; - if (usage >= 85) { - chipStatus = {{starpilot_toggles.value("gpu_metrics").toBool() ? tr("GPU") : tr("CPU"), chip_usage}, danger_color}; - } else if (usage >= 70) { - chipStatus = {{starpilot_toggles.value("gpu_metrics").toBool() ? tr("GPU") : tr("CPU"), chip_usage}, warning_color}; - } - setProperty("chipStatus", QVariant::fromValue(chipStatus)); - } - - if (!simple_mode && (starpilot_toggles.value("memory_metrics").toBool() || starpilot_toggles.value("storage_left_metrics").toBool() || starpilot_toggles.value("storage_used_metrics").toBool())) { - int free_space = deviceState.getFreeSpacePercent(); - int memory_usage = deviceState.getMemoryUsagePercent(); - int storage_left = starpilotDeviceState.getFreeSpace(); - int storage_used = starpilotDeviceState.getUsedSpace(); - - QString memory = QString::number(memory_usage) + "%"; - QString storage = QString::number(starpilot_toggles.value("storage_left_metrics").toBool() ? storage_left : storage_used) + tr(" GB"); - - if (starpilot_toggles.value("memory_metrics").toBool()) { - ItemStatus memoryStatus = {{tr("MEMORY"), memory}, QColor(starpilot_toggles.value("sidebar_color3").toString())}; - if (memory_usage >= 85) { - memoryStatus = {{tr("MEMORY"), memory}, danger_color}; - } else if (memory_usage >= 70) { - memoryStatus = {{tr("MEMORY"), memory}, warning_color}; - } - setProperty("memoryStatus", QVariant::fromValue(memoryStatus)); - } else { - ItemStatus storageStatus = {{starpilot_toggles.value("storage_left_metrics").toBool() ? tr("LEFT") : tr("USED"), storage}, QColor(starpilot_toggles.value("sidebar_color3").toString())}; - if (free_space < 25 && free_space >= 10) { - storageStatus = {{starpilot_toggles.value("storage_left_metrics").toBool() ? tr("LEFT") : tr("USED"), storage}, warning_color}; - } else if (10 > free_space) { - storageStatus = {{starpilot_toggles.value("storage_left_metrics").toBool() ? tr("LEFT") : tr("USED"), storage}, danger_color}; - } - setProperty("storageStatus", QVariant::fromValue(storageStatus)); - } - } -} - -void Sidebar::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setPen(Qt::NoPen); - p.setRenderHint(QPainter::Antialiasing); - - p.fillRect(rect(), QColor(57, 57, 57)); - - // buttons - p.setOpacity(settings_pressed ? 0.65 : 1.0); - p.drawPixmap(settings_btn.x(), settings_btn.y(), settings_gif ? settings_gif->currentPixmap() : settings_img); - p.setOpacity(onroad && flag_pressed ? 0.65 : 1.0); - p.drawPixmap(home_btn.x(), home_btn.y(), onroad ? flag_gif ? flag_gif->currentPixmap() : flag_img : home_gif ? home_gif->currentPixmap() : home_img); - if (recording_audio) { - p.setBrush(danger_color); - p.setOpacity(mic_indicator_pressed ? 0.65 : 1.0); - p.drawRoundedRect(mic_indicator_btn, mic_indicator_btn.height() / 2, mic_indicator_btn.height() / 2); - int icon_x = mic_indicator_btn.x() + (mic_indicator_btn.width() - mic_img.width()) / 2; - int icon_y = mic_indicator_btn.y() + (mic_indicator_btn.height() - mic_img.height()) / 2; - p.drawPixmap(icon_x, icon_y, mic_img); - } - p.setOpacity(1.0); - - StarPilotUIState *fs = starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool simple_mode = starpilot_toggles.value("simple_mode").toBool(); - - // network - if (!simple_mode && starpilot_toggles.value("ip_metrics").toBool()) { - p.setPen(QColor(0xff, 0xff, 0xff)); - p.save(); - p.setFont(InterFont(30)); - p.drawText(QRect(50, 196, 225, 27), Qt::AlignLeft | Qt::AlignVCenter, starpilotUIState()->wifi->getIp4Address()); - p.restore(); - } else { - int x = 58; - const QColor gray(0x54, 0x54, 0x54); - for (int i = 0; i < 5; ++i) { - p.setBrush(i < net_strength ? Qt::white : gray); - p.drawEllipse(x, 196, 27, 27); - x += 37; - } - } - - p.setFont(InterFont(35)); - p.setPen(QColor(0xff, 0xff, 0xff)); - const QRect r = QRect(58, 247, width() - 100, 50); - - if (net_type == "Hotspot") { - p.drawPixmap(r.x(), r.y() + (r.height() - link_img.height()) / 2, link_img); - } else { - p.drawText(r, Qt::AlignLeft | Qt::AlignVCenter, net_type); - } - - // metrics - drawMetric(p, temp_status.first, temp_status.second, 338); - if (simple_mode) { - drawMetric(p, panda_status.first, panda_status.second, 496); - drawMetric(p, connect_status.first, connect_status.second, 654); - } else if (starpilot_toggles.value("cpu_metrics").toBool() || starpilot_toggles.value("gpu_metrics").toBool()) { - drawMetric(p, chip_status.first, chip_status.second, 496); - } else { - drawMetric(p, panda_status.first, panda_status.second, 496); - } - if (starpilot_toggles.value("memory_metrics").toBool()) { - drawMetric(p, memory_status.first, memory_status.second, 654); - } else if (starpilot_toggles.value("storage_left_metrics").toBool() || starpilot_toggles.value("storage_used_metrics").toBool()) { - drawMetric(p, storage_status.first, storage_status.second, 654); - } else { - drawMetric(p, connect_status.first, connect_status.second, 654); - } -} - -void Sidebar::showEvent(QShowEvent *event) { - updateTheme(); -} - -void Sidebar::updateTheme() { - auto clearMovie = [](QSharedPointer &movie) { - if (!movie.isNull()) { - movie->stop(); - movie.reset(); - } - }; - - if (starpilotUIState()->starpilot_scene.starpilot_toggles.value("simple_mode").toBool()) { - clearMovie(home_gif); - clearMovie(flag_gif); - clearMovie(settings_gif); - - home_img = loadPixmap("../assets/images/button_home.png", home_btn.size()); - flag_img = loadPixmap("../assets/images/button_flag.png", home_btn.size()); - settings_img = loadPixmap("../assets/images/button_settings.png", settings_btn.size(), Qt::IgnoreAspectRatio); - return; - } - - loadImage("../../starpilot/assets/active_theme/icons/button_home", home_img, home_gif, home_btn.size(), this); - loadImage("../../starpilot/assets/active_theme/icons/button_flag", flag_img, flag_gif, home_btn.size(), this); - loadImage("../../starpilot/assets/active_theme/icons/button_settings", settings_img, settings_gif, settings_btn.size(), this); - - // Keep stock icons visible when a theme is partial or missing an icon. - if (!home_gif && home_img.isNull()) { - home_img = loadPixmap("../assets/images/button_home.png", home_btn.size()); - } - if (!flag_gif && flag_img.isNull()) { - flag_img = loadPixmap("../assets/images/button_flag.png", home_btn.size()); - } - if (!settings_gif && settings_img.isNull()) { - settings_img = loadPixmap("../assets/images/button_settings.png", settings_btn.size(), Qt::IgnoreAspectRatio); - } -} diff --git a/selfdrive/ui/qt/sidebar.h b/selfdrive/ui/qt/sidebar.h deleted file mode 100644 index d999da4f8..000000000 --- a/selfdrive/ui/qt/sidebar.h +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once - -#include - -#include -#include - -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/network/networking.h" - -typedef QPair, QColor> ItemStatus; -Q_DECLARE_METATYPE(ItemStatus); - -class Sidebar : public QFrame { - Q_OBJECT - Q_PROPERTY(ItemStatus connectStatus MEMBER connect_status NOTIFY valueChanged); - Q_PROPERTY(ItemStatus pandaStatus MEMBER panda_status NOTIFY valueChanged); - Q_PROPERTY(ItemStatus tempStatus MEMBER temp_status NOTIFY valueChanged); - Q_PROPERTY(QString netType MEMBER net_type NOTIFY valueChanged); - Q_PROPERTY(int netStrength MEMBER net_strength NOTIFY valueChanged); - Q_PROPERTY(bool recordingAudio MEMBER recording_audio NOTIFY valueChanged); - - // Additional properties - Q_PROPERTY(ItemStatus chipStatus MEMBER chip_status NOTIFY valueChanged) - Q_PROPERTY(ItemStatus memoryStatus MEMBER memory_status NOTIFY valueChanged) - Q_PROPERTY(ItemStatus storageStatus MEMBER storage_status NOTIFY valueChanged) - -public: - explicit Sidebar(QWidget* parent = 0); - -signals: - void openSettings(int index = 0, const QString ¶m = ""); - void valueChanged(); - -public slots: - void offroadTransition(bool offroad); - void updateState(const UIState &s, const StarPilotUIState &fs); - -protected: - void paintEvent(QPaintEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void drawMetric(QPainter &p, const QPair &label, QColor c, int y); - - QPixmap home_img, flag_img, settings_img, mic_img, link_img; - bool onroad, recording_audio, flag_pressed, settings_pressed, mic_indicator_pressed; - const QMap network_type = { - {cereal::DeviceState::NetworkType::NONE, tr("--")}, - {cereal::DeviceState::NetworkType::WIFI, tr("Wi-Fi")}, - {cereal::DeviceState::NetworkType::ETHERNET, tr("ETH")}, - {cereal::DeviceState::NetworkType::CELL2_G, tr("2G")}, - {cereal::DeviceState::NetworkType::CELL3_G, tr("3G")}, - {cereal::DeviceState::NetworkType::CELL4_G, tr("LTE")}, - {cereal::DeviceState::NetworkType::CELL5_G, tr("5G")} - }; - - const QRect home_btn = QRect(60, 860, 180, 180); - const QRect settings_btn = QRect(50, 35, 200, 117); - const QRect mic_indicator_btn = QRect(158, 252, 75, 40); - const QColor good_color = QColor(255, 255, 255); - const QColor warning_color = QColor(218, 202, 37); - const QColor danger_color = QColor(201, 34, 49); - - ItemStatus connect_status, panda_status, temp_status; - QString net_type; - int net_strength = 0; - - ItemStatus chip_status, memory_status, storage_status; - -private: - std::unique_ptr pm; - Networking *networking = nullptr; - - void showEvent(QShowEvent *event); - void updateTheme(); - - Params params; - - QSharedPointer flag_gif; - QSharedPointer home_gif; - QSharedPointer settings_gif; -}; diff --git a/selfdrive/ui/qt/spinner_larch64 b/selfdrive/ui/qt/spinner_larch64 deleted file mode 100755 index 645bc4430e67739f5c3ac8708c06b11e0e62e7bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2807984 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 St9j;W(IT=poG{`%U?40aWhs`htK&vek>KaG(sI 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

HE1Sz5-ML|IzKsJF;1=L^x2?&Ce z5IQ146bp6~RK$jg1q-5LZ`crQAD_JocKsCp?|Wu;@7%!e&-1W3bKZB(^x2uSvwQo+ z)cM^>8WM=~-Q157?R1vXW5I%r|b*#2c)XESQsVDt^h7f510UqzM?Y<5W2c;ASZ1$n^Rs)eaz zs6IEK>!j1q=v(ow0eyHmGKDo@fBQ4?E!hL~=R#RODsq6D;Xxi4x7C+X-8hvA6}gg{ z>vYmAuBox>sJ>0t;hiuUe2f{nmHI$oyRgr zDtt{gzK9m9YKTr4c#@1Q$gjoF6&u(|XzPQAfg)c{52$!fs$x{+RgyR9{6ER`p5aB; z2}e}b3kXMF#U;ktiM&hxE!qO{Ahjy{XAnLlG?blskaTJ;8R8|nQ;R$#royW*>cg?A zpOHJ$)KBCah6Y({jL3d!Mg{9EJtDtJG)ERAx*z{d&5NRt)?`hYdI(_!6MyX*E?nwB z;lOkhDi+8hWA4^8h6-PZVueD1Jc8A4)&Z|z8{|ZJj6C`Yuo$IEN|Qtq;C}?>v_rjQ zj>MNaF*kIGWH*Gk1!DXB%y6uIR(vgFj;HqZRs4F$oq@N{3r!D)+ULYKK*6riKB3}w zLM|oP0BreQuf9Fvy9T5@0r;4_$VOB|$DR&PJL>XBo(0fxcR)0&p;pngxMtsk%gcZ| zg)_o^P}Dueo#M{`WnPLqtN2U!%a$$f7K`up$l~}dzvIK4 zl!vW|uYtZZ<&m}VeV>iWHLFT|M9=9dl2{Ok@@fnZC zhhXI;c^khY-W~c<#+|rRMKd7eoD0iQR(&{eG=`C5wWFh=9YDG8OHhj2%jlLK2RKrL(h(y6q53a< zkB|W`Q6gVZeUes_XgbpASy1=YY7%9R!0qEZ(0^r=nnSS2PU_#YI^VQ^sQE}Vkq9jg zaAd;tC*fe{G0b;&T%&wFBa%f{Tg^(JeKj?bPeLpG=4KTmM`z+1lgLep4YML&4@l2* zI-T`QM`roG%-QFMR8kvS_%@|hkxFVxbYUe!QUF#UYNHt7@gywQ1gTezMfy-52+B}Q zjmO9Us)yI9yx<9VGeKqd!}Yy;@!+UvM!WWSHxuGfF8E^@=b^*KiJVRB%){kR8$D_& z2(w9gqD~$)9$83ioP|kVj#>%zT0-0ELXqpKK3Z3^+&`q3Neu@!5Sx(doU9BL*i7wt zJs<{oZ;^`%+)wS|y4r2jj;L#42epq&-KQ)>UZnP9-NNaO6I?Y8sa0K$YxHVdVmwM8 zc$55(eJd)khl;b)6VrFXz&=7#(sO5^uLzAfT&&1`LL;oYX@+-E>@LXPsEV=(fxk$7 z%Fm3hl!$|yO~;EJSqDgWDn|rWHHy)gVkAaFwIg@16d_Qb>b-UHByl4R3Eizf-0sIP z1Y}o$l4p2>YEsiWuT8`lqI%0a28b?Q?_OG5;&jQmr`0Ls{$8N zdv8jsxpS#~C#BWgMb!S2(ps5YNvOt=g@j+LDsmIm+w@Y#SDS{oo!AaXmM(R$?6DJ+ zx*vGwWH#??_d$#vnSCL&k5Stwn@*@lscjS9id#oGkX;MSPJ)Hm?846wJSzKkXkVwc zaW=Y=dX?G^VzXQQkm`DZXiuToL&RYePZIGAiaoQxf`vVZ*0sIlYBw!($vz0}m(+HU zTzyV$x9q%$O8rjl(UP5CsqLQK4%#S<9V6KZLyVq~-5c5hYR{I`@~Q3Legw4h@H%-Q z(-HL?$kErcr$BuK7~PWD^c)nC+&X(Pw69|`*sW1E*8;CXjJD0b7TN|Ape>Y@Q!d14 zyX^a*?LZ5S#e>q07LFEUT_JWoO|&Od93bLQil>V>j^e=V1F&!b#ZHo)$q=Jmv!iD! zwHFC@Jyx>w9`kTqc2j8aT>#a!vt*|U^Kg82XK1Twp^Ic^9xa@hJpkG@)K*Grmr<+p za4of?ayH;k;7(k+&ymHr%uup0p7|iP^OwRxl<$EBwj+G}WFhdP0?$*S=QOQ&oeI6h z(~8|xOtqqXOvN-y@dXuCmf{C0rdx{NsJPHl9He4~rHEkRdi+dFkxj)#mZE@)IhLY1 z74t1c8!8s16tc+e7r>*RX!h!}aK;5|`JQFj*FroI;z`*#o$#kqU#fo%1n-7kMQ7t0 z7);f>Vo9`-GAe%8lZe)gq~=dc6Btj;`&Oh$RD7-{KpklcH6Q3mMQ7tSa3n6OieObc zh*7>S7nw;`7ySzuayJ#5p6fn629iptlUNY-KqN0 zdv|6^MeZlI&%%zYggV*-*O=7EHWKa+u&lb7B2Q7XO6PS3c!%Wm7Yz8wIb?ldwZP2h zq3P9;$##03Aby=gMoOd;t8kE}n%Y}LLcDJ61>U8JQmIaz{T1ZR);uv5*a7cX&ntwY z6(5murLWLwcKVFkhfU8r>RW_lXujoS4yd*M%Jf4;LB z=tr?cmTi1_Gsueylu%nL3i-tv^XoREIObe1q7(z=q+Kdaz!j?sjG$t*D9VL43fGu$ z#}b+)zl0-D;4CWUT8ay(sF3=U?%>y~UKD49*MX38N<2Obe_60o>cQ&)`B@}#N={5k z!Iwc1-5I$Be=;3iRi6Xb%athKDb4;BmluHdi^(G6ImXx>zz;X6(<&OCXShL1D!T=) z?|^Vx|7dH77il|zPpO(K9fubc`%ixqe=(K{1Ijq4($nl!E@^nqU-v#ecDZCfX$rlbO!sQxXb z)y3UH?J0H1*<M#V1tE_6@1Pw^Znbi)Q>n z#UhLG4;9NTMFfLlux?2mB?pRu$5Gb)1itNzk1vvTyRTJ&mQ>tnDH4p=g>2JHcQC2z zSvakjwcq@RVG;(NsUPB(#D2#Al7_RN!t2OOkHb&XHe@SZ+zxmww-2uPHz&tPT@Y}l z1b>UFX82#ylx3J5u8%jn)_cLZfy?OPov`4*!qt9J{qIPVB#d#N8oOcjhz@J+E7=jWs%9CQ%is(-s`nRA2qI~33 z{W>lVU#yb2g%C7Q<2;5<%nw96Ln%KS*U9ZB5qDXhrx&BP6Z=3*XWePw`EdkR6jr+U$60tj6y8I z!}(_k@SU6#5N$scZgv;C7^NtsO8%H$_2&pWd=o~4w6$Jk6eV?2!cizIj5oH zIwdEehvLhAJ=q>7YgxWmR~?H0<|}KdHjqKFTiT$;36f0CWSfIj?*(uQt7EALq=v%H zsiAPQ{FGXad`rZQw6GViao||o1vngBN$`VRPSRUfAP?R5HwnSG&7iW zp;ZVyvR~9c=TvYym~(cS8Hb-Lbf&yt99FG5;XT0<#-U+nx5MjF*Y1umh$(Gua7}Hn zNkh!WCvL;~sNyS5Hi2xB~JOhm@a!WHxviqC#c&8}o-N3yW(-3Dc_j3q6 zD2#y6A3}Ko8=B|fcHG1ulS%2IOL&*Zc~7q zHNTXnD&h z9f*tiSF{;!>xOtcms<9sVrX$wXynEUbWN7>9oF&CN)5gNE^BZ&-(Iby7Tx7)DE*rI z+wKpjxv>DH<|-y5jhNNd6CXEqzekREdqFYSneuEHov9Bpk=~io80buMz>v=LAcXY# zwW-pXz5qo!Q}blqIxbs^Oe9U}O^_X_gHrH#dqds4gFidG8v7Y~-ls}8;j$lEe37QH zyB%8I>D)^o?0~>{3gfs4kF%xz+cpX--m^@j{cY0o8m(7TtI>vfk>b$$jaH+z8SXvM z`i-^)TFLO5W>%x^gH{@CIJADFXijs}XeU5OZ#0`KjWz`oX|&rRqz?>fw7w>F-ZrET_JU_MT5psW zm5-iMWHnk9w9;t(pp{0;fnYbc#@5S?#_B42Jz+H>DM?w#TA4eEt_x}6wrvIP7x!Q1_hmiU>f~t4{%JGKX z7tu?GIBti+u;NOh^fp{}A@@ZUfv7tXTCPB(tKu9cwHfX@Xrzy%{G-hNT)R_gyq7`eq!TIEUorat2L=E6(18_jQbAY3|b2u7fvuWqzNu=*!-y1LB9wqVDxTKPGyAT@*i%?oNW?9RMm8!}{MQRraIYEm5}%z{{YQe-+n2 z3gxFpY>C^*eGQCTpqIsp4JQ7H<+#@Y)wi$V&vnO?g?cX;*~QIm6;=ljc5{ymtA8Mr z-USoILCg@}7G%54+l19)P`Kwqc$UWbg^xUwGHWDp6xLif0Zo13W1W>Tz!~m4fTa`1 z+v-lN%6Rj*!SG@<(>_qotpe;%NNFf0q>}*Z0+jLN8+Y4@92l<6`L^^|4?;GL_??W&#+bARzn8HTwAA-9 zYH5bw%g9EgJ80$s^cneH#uRAMzn3w?&e+LLkvkt;^Sul;d>4As4wx$$nd$aGnLk6= zT?XNM2<3m`BK@q$Hj<5g_9`gS&*Zxv`Di=vs=|i_gj1n zmdke`g_9sOgiwA2E@e;EOy^)tYaT##~vh@H2`IN^WR$2H_l^Z*H_t(+LOp}IsEVn|Q`4O16fKFtV!^L5B z0kb@ZS>{JzY-(aPZV}x^RhgXv=P z^v7U0&hm_!Yh-@pMj>Z1%w9ufN+*+#+$3!pK629)H2KKQc@Sij$;V^*T8Z%EF_V!6 z-XPs~Aow4T@mR7h$H!xi11KMlxdlS%<1ziMH2LwE=&@dv@=iM_4YfWVQ^tMaXI670 zve8K#G?wfOyFsw_g~KDLgrX4pYJocqDde!{Z-meYLMi95@jw&bV*c6-t;}Cs=e9B_ za9_f8ZV!O6WRmVM#?BpPx9rZ|>^8p^=0==?a2q5r;<&E(vJnKCF{|uYe+Dw$8$t7D z%rq1>clkDDu9$5{4hJJ{2&Sbe-|XVen4H|^*}O=wp&JC8n%tJ8!x6VTU}>H6A?V4C z6K}1}iv}a*(j9IBM^C!!T23SZd9js zH)H5-2>uxIXxmxj8q1l;HARb<#%=}817pTMY8%i1f5l8 zX1`6t(zy|gutNE7I5(~}uwF7U>NeCK6EI@G z1ehAJtqM}hEpCt=0IJs`vTrRmuyj#uftvKGy9G*PU<))14B59XgOI)jvZ=BK+6Ibj zfqsCHz6BB|$SfS=h#I;p^rJKZlTi{DD;_NNTJt3NH4Tal|sJ)iWFM) zJZz!!>J+*&Xnvt>Pzrr6P`}U~>J|ECfPSIVKot62fL5W4>J&P&SKUIVF;M6}U`U~7 zK}avOO_f4#21N?J55i%(_my=Dz2ju7&^9QAz7(imXb<%YJshB4=rj<8ZUN9L^!hr5 z{uOX~_fBJ=(CzSeKni^Zg!Dq&R4Mcoph%%#fN+>XZ>&@3zd-X_+6JZ29s62^_E4|T zX94sJod%-N*8;Q(y`@f}Uk99C=rjfj9qeZc-5o-Dp>3)Z`g~BN(CZ-_rqEmK6#8w@ z{6gEH6guNntI!_m6}lHdztCwQ3Oy5`Rp=dc3Vj#g^g^dGQ0V`HAuU~STHQk1R4Mf7 zph%%>ARMO9J5B21!p7|VAZUJ}ZBPpR6;Qu>d#G3Frv0r#r-3MRDL|{xyG*j)Eo(X8 z^g^dGQ0OPXkU}4TklxZZRSMl|fGPAy2z3hmBGwBZn$+pFD>=i#Hxb{1w(Pz-5I%9; z5ZHEN*IO71ock$$oqiR}-v$8xM*oUSJ#!Zy-NM0-e0YHl$K#D(FVGf`O!j$!|03=f zbNdvZQpjXX0(o|zl^y8f1-2la-d=zoN!(}$ypAWG3c+U) z%ft1e-9Mo~~|{VRh$u8LFgmvG~NM{)$I|6Pe0Vr;Eu$7lh^wM7*M{9yo6^ zg5p0DF343Dd5I&;N}8D$L<+)`6x8Uak;lGYlaOO$vD%Oqa1Ka4T)5wZK+>ESG zL%p35vLoJwRyIoS!k6e2;$0|2J6PU@3VOn37`Ciqr^nq^7wF!m9bxP)9z$koy0i{V z)!ioL$x5TpleHZb_L@2ltTY}v&848xfo1uvMnENfg>`E4S*NW4%EoR#aw&Dn>abY} z?9E01^!8@DO6HkDN)cEkPl6&p6E14B{F9ES9!tQVgr$f+_!)M00Ob)XW<^IHA z1DqJj^`wAfX@z>Y@09Ee!IiI=m&}p5=?NH*jl-jbIWjx{h~Pv{P7<8gb$VDWzX!p& zL}h--$wc<%#oc=W$^7yQgmfQhcaxy>R?aVTLD9Z;`muVX!x`=g7n*9F0wGnc;^6IT z$TGa>I9(5pcJQ*7^+s;QVcKh^nUv~5NS~Cd$YJ-|JHt#$w?jD0q_mzy^sfs6i-WW` zggTSb+eqG@lxA2Z;iR+&Y0IRPd67LS&9-Tnl%|6wlhSPvw4;%e(mX?Ji`L=f)DuQz za+(Gq-JxnzWs=$micC`PL6Au*KFgYK)FvxB2h?sv zk^$9Ywlzt4ENOO3QX9aMNh$-Z)FgGcF(x!jQd5DZCaEoHs5MEc(MMyD6&o0LTqEK6 z4+hyT+;OE>FOW6It*|M*dV%!ncM+6cE$F<)7n@#PL$spic|5u@*4WKT7UsAmpsa>o zr}~SZY7xK0i+?)RambORx`gi?&R&Q}lIjvkbt{6Bs-W}!_EKFcsa_B3-HkO#by<#k z@|>{R|Cap83I>6LC2jI$TjOR>)?Ohz-YvS(Id13V$!fp=;yCIZ+!pjf1 z$b*iZ#*j4Qg>Xk^fTtG`{LH)>%ORwm0Q_QToZ!nbFdqXd1M_eD;1BC^9fz2r@8>AaM1dKWE=W_a~X& zQmcX-OU(h-yv7W;QV4PfqifP*nUSO?eEF1po{8@b#ifWQL-A1vDfeX3ruk3lP)b=5 zykk{j;zBg#26Pv>{q2U3nx|F8kuTyIkFmwNEU9(MyFjF-4Uk0 zMZP)%z(29p+gOwJg>TK)TGnhet&MWdGPcy5p~g@X3{_`Jgu{mauaKeBY++c{{)n63 z72d-9qfW^ETAuzJJ{_5@MaL_-GUm<#aUQ}IU-ZK#6|B6CSrTyjEefmOp)cDEh7IOq zgzC8opj!bfcVbVqr=8vvF&4=s2fe=9<#VxeeK zWs~Nd)6m@vQXcdqHOF5VE5)B13{8yP3S+a8{zT!$rr=LSdy6Et&T8o11I~$>b1MGG zzu^}{+9Bo7bN7L8J;HA5#rUlh2*aJ1;N1o~c56LXEeWekgxxBjc@UO4MYxuJj}jJT zIcmrXr_g;2*zZu39s_77wHG-J-BS^@JEN|G(1(%Ug!LN2&p0{mZfL)O0-yZ{_Jk=L z=Ptl)-6l)1UuWzg5N1M(yLCdkfCA$%XS0Tu=8=IAAghvryz?NRVRqO?+m9fG`ExEdh`v4+;N-GN> zdYH1ununRLzT#BuOZO-2e)$Y8522% z^dz+Y!L8oV%Auv3FVRjPIc--3tvGusp{27&PTQ@g7B2duq4YglRaUL=xx_E9u9pCl zr=i8t(5CJZpw_{y6*dfC_8wSHcLAj_-~!5BX%?CyNUJpY^cLB-4 ztyL!VCa6TIgRjA}4sPx8YHa1D*1;`R-yGa3hgQxM6+y5MZWV(e_5TzA>$KfhCcP!5 z(S8T)ACVmIMe4B1YP4Fd&2X=S)^D^O&`O5qU1l}ferTo9PJz~Mv?8of*l2Mm{YJ}c zriTYRJ{#>#SWh)tQ5xFRodDEov<^0mMtcaB(;F>~fkyiQ4Ds8wSzWi$Y^pTcC{U!) z)RVGu);hkwX?n>)Vy#4VF$XV@@~^LMDY9ArwGR!-wL!4>>KlslMCd za(r!<@I4UDr0^b$PlZt03YVf>G<{xX%)K1iV+cGqMr{E$_dpFvR+1<%=$AN1O z$_$^e6{ibeq~yl7?$3xSKelxI71oa}?Xsiu$Cf4o)!Rd!CwwOz&TwxAycB@@7KGG! zLYX=D*ku0LQh2TDmGWatwJZ&PZ0YJN%_?*#g!CU<+CdIip>aU63f&1ChgpU0ClRaA zYQVAz?GB;ND)d9x@K>Rs=BW|GRp@}L%qnyqgw!fDX49|=y$`6YLO+3!T7}j#v{qE zt#+~0T&>=NNU}ZT&jZS8m5iwvlmYt4YV)gMsvOmrDgw_-pch771AxH6yy zLXZJf!2z|=@HwfJY^?9@1u6rp-gRbR^@hNKrNm|SgyGB0c|%+GLZEb@q+DhmgSUBc zYGmC|*JYMQVW)ln`op@+(s<~zcYs#MWp*J{zRS$!vk7|xlqRePL7I>*Gn+-1+3hGo zy31^*DWtR>U1obh;htfXQ(^5GuzfegVri_u(NHa5;mU z_^S8lUZDJ8qK_^|AXKEs8C+dP;tJ83+6ZxuWxV^v^R~;gdcRmr-WXPMw_~DukS>FH zgAu%yKKln4#Qf^KlZ!_ajbVrfT=k1!5b#PHbT!UHcn|8vI8Yvr74$1X`3ck-XV7O+ z^+kQ4JXkAe1Wm2Kh#KV~-pYK0WBiHI%I1`)o1_6qQR*t&b;ac*qFo_P;-zvBg9Ik= z7b`1AGk9V*1bL}(UO~EDVZh;OUrDzbf|4YwyP#`3Jdm3zOm)8qbo3#LPF|I(ai(pF zs4)b1j#hv|G+~MSs9xKE{DxJHGaWBkR*}R`T<3+&hz*o~&I(OWQ-x~ZwUi?&Qk+b6n#4e%nW&@nTWhhwnW*X!H z(Ud_+{KpUzU+KtOazBNZfT3c1S+4qd#^Bv5RpRQ8sN?xiUsrN1e(EsM+mUxpZ?a^u z-doP9r_N>1fHT=7!j1~Ky*mf+s{mBlZd|Jj%*`U;95+#c{R{wiEmHc9LIpH`KqwDA zjK$;Gxa8n>I&v?GM%{g*aOZ=P%q#$U4(^W1lpIOaCeM^lMzB` zE;vlCg9EBlc@H~J*W7Omb2(m<-ZL-gsbE0kL z5pEOE^npY=0Jd6%PqfKw;eH8o0+()wiS^7t`^tf~ou}2vYfPgQzRN392pDqK}lEJs1&=btB-l1|U0wG&BRRzMcqF znnvUG(qp%9cYC-r-E0FF(YV)iKQ85?c+ zN;unn2!FbMoN`ZEZF zOtw_5v)+jFfH_mH+Jc9l(G#&cS?w&oQO`}B^oG8Kz&6ZHxmO0)W#WbBng(zgbiFC8 zo}_Y4l*-cJE7&9^FwW;jL+)IFSx~r7Lud%0?9-RwH8jb|%yVfV;6`tT9}0kb0)*cn zls!_H)*oxdDL}WAwjRRE6yAogoBVlo__FPft`Dnaq@4g^4TUKXu7iMorM1Y;cxH4Z za!|Sf05jSg!UhPXlW?geya@1jx8f-Y;YT1WCfo~`9f0!>I5Bq#w55cHKo|{ScuQRN z11`8W?iNDX6=8W3wFq_AA`-6WetL`LW*G{txLNLo);|dKp{XYhce-0<0`%Q29w@yV z?v|baQ|^|1CaOl8x>2B(yJf!(!`-qJrA~LZq%n9*3Jh_#{0t%8M`lx{-dk@p?v}9- z>bP5YsQDL@IwxPLi(2sf!(lcmb@CigzfL^VtCPO~`gP)gUY&Hj&90L_>_X!#^jScy zItd-2rwg%+I=L2bdYz;(P$#d0A$1bGy>6Y@RH>70pok0Vdb|=tL1qhg&8xvRNilOf3@^ zGAe%%`_QP~GBK5js4Vla^t+w0^wMvIwe&NxEd8{MWnKeNxkmC=b0u7f zhvR_X?crRlm2fu1Pq@qPuUBv3GLb7JKfb!$SsE?nHjgVKUoFvcuaQZ#MCQ(GaOe-_ zB)N4#srTwB_4NPx?PUUB)-zAeGI=i*fx_pmzB=+p6uL|_t z=1)h}yR8B6_9j0J^v#Z_W{ibq{EujxmP=$a8s!gG)Hs_FBf=QGZ>Gnng{Gt^2QkJt zI?4%0GD@#!qACxP!#i@9FhWOM%h^T$lB8tk6-GUmQK##zZ&ZHqVpo4`tLx#JdL=KD zc&T-Y%+T8;TY!Uzc~!=v`MlA7hG~JD0J+iLguqI;b8`oTmS^L}d(s_Y#UF@9co*Uf ztxARWmLdFbD*PYd!}9MBt1B8I{xuoACzoZuic>Wv>2r{K=o`3SBT_p6ZpTe{wn||l zgkBUjK^O>O#3}b+{RW}*cig|W;3k!OQJ}#60I);td(iHqwl5wewzv~70z+|y<9vfZ zrCV^x$-^D;2`uC%0enn@&&nV5I{x5a>Dt$@-UlsrRv=XV00M3f5`7#(`3tM&X^3gnhwPfA}L?=5dR*VsJ1<$N;i6>dhYw8q7qiO{hSR2g3cTwy29x18?;oO%(kHXRPQC*NnB z&>w;)PH1`W@JgG4o4{un+`FL_ga3sw@Ebd2RA{pBl6Up@%{0*hj_2_5#bxxIgQ$~GvGr)VGaQ8!am_j%B z=ANN255nsZMl5+EtlozpE`>j=EaZ00D0W|a#B(XoI}mEA7hrvnMsBx^OjkW>yab&g zh?ih41a4Hz=q0fEvSHlh?-rLrm9T9wPTYBVU^R#k9YWmCAlS`Coft1@maJTM2jkgdhjK>e+Sjmp;IH=zF3 z!b7F`u-$6E)tc1OKul`m0qWL~S0(pYU7O#Fx(aam<{^!N&BM!J$mZc+2#jqbgw`y|gxsr7f3j(zW2FmlQ3k-3Q;9RO_*)!F^CJu7g(*!FL^`QQ$f#7q`K` zporVxSj;=V+rZ{Z`rU-woLyvZ!nD5ZVd*HQbdYB7+Qhi z4~8^~KNt=?X$=OOk{S%#LGcHJP2pg;6revCJkakJ!-4wU!bYWAv;gXN3lH_W#dnw! z{5yOah;H!+K&x9^X-`!c3@cIY^udtEz+iX^3>gf+KuGT%HdO{go2SfR7y}`_i^yPD zXHxe|y#_qL)HW)meg>#tY7g~F{VPDf)M+3}-F8P>sW+yVy3SxoL%qQ;8Wz$^YtvGL zVKsQ^B}Ko|gJF|NmGgdTFg%S2{$NO>_=DjWP-HN)dDEx{J)+&v?BhsCl5O(egN`?IP4Nm5ms4CT-x!xCC(E6Z zTYrl%!1`2IIuihmYQ(R!JL8FrY9v67<2({kIT=v%B)Irxh82fYJJ}b@BVl>;H%)$~ zL3@XcEMMlGZobTW3iihGYh714KOjA{TH*z4{i&{=h>Oz>LHR*v{?5G^?*+~HXKsn8 z(NpR4(J`W{PQiAYaVuRKU~rP?XsS}Ar%r}6jVPrkFOx(%zAu241Sn0CAWc__^bnS& zm79o)6sMI(7^D=XZW1q19*M5pMS#*I3Gxyx?hT+4m*@{fCCE#Z$L=TbQproS-itsb zIJp;ejTsb)K#f!HnTUD=Jcq}pr6x)s@VU5D#?gT*Vcl4*T-OiMY+fdUbiou{g1q1d zU)!K+=L2zgYFX@D4q<$UucB(qg0bXC#LDX-#tvXOSMm~-csmi<;gMyD_bG&u#fX=4 zQ{ZzTC6}h;mCh9mtQSDXu4I0yOFF>>Py31q`66<46?Hr&EINMswq)PeQ8i?lb2bod z3MYjbP}QqQ=D}d!fPDCQ$kR@t!vea1V!xe=EK`z8_5TobcpO;bR6vk8dxpenb57n?g6S?QjEXgsqk(Zo+j-%X-nNIx0hz-s1c zT*0N9=?)vSVGJD z6ZGDPqSpaP|4{VCOi;O4lVs@W5^nBk0eY!a^*hA5v#5iw(D-5pEBfDlh^ik8z~d@M zc=Chy)yE8ij+=$H{CQ@7o=BDD8sRN+j_wblPtsqw{?SQg{6|L{e1e(b9;Qxa=9|pE zJrFouT7pYDY}SHGenlH~R{0A%;v#2$s(v2V$&i-+xT8Owy^zV!ndT>hlTGjlI&{q) z_SWYUOT;BOBS4p+C(|A1$#ey-bQ1UmI=psL!;73NTEq1C`fxP1Tz@yX$l$;up(=R| znQB?$+)rJN)9CrAdY*dvyCgwzkbd6`Ud~GAIZdhp>9$rN(QhUsxR72IW{>QUy1+^@i5oywhEEqCAIISfQYg#w&Csy-*BF!sRl>dq2R~=-( z>L5!B)twt6|8z+n)^@5LN}9q$GC`_X*Zl;mO(sZXczQ9s*lD>uvh|m!`l|p5(4W_3 zZ;P-xLLARs_Cf6YAWEpzao<2b?f@>57%Qga!6U*dd#m#?s-xryEx#|-p8b$>1!`oK z1K~~x_zrr@xsmc;qpBzN_zr!GRx)DRw~9!!oWYpkOK$3jA4{F((1l&ny(N;G<88mVX>4?RwKwjFw$o&(SKIHjTVIMo8x+c^E! zNqX!S?q41*Cm^~Q*mEGcyp}Pj!ic@djps;`^C!gxXo0)X0@Fc}GbpvM zm=<^x8ovd`gC{NUK458qgMj@Os0A!7(CSsw0)1aHEwB=Tw7@P1(gF=%HZ5=g$ZP>Q zMY4k?Scks@7C%`#Bqen?7DB2H%hGG%Sa%E}_;r|uvJQ6wwd!z8dh8bN8V{E`+-cw< zHZ+`Yu6ondVP^c~3X`3YD^b>|&Sflcu&(v_yDg&<9F6wIWWVu@{s-FXdQzbVpCX$qiL zQ>;jj-NOA1sR%AjvChC=cb2nQa-e5KulG|;AP24fuuSDX7^_!)KZ?rN8TXs^oQ%-0 zYteGGY^R%aI}JtC6g5IS-4g3iKFV*Wp<0#YZhyv1C>{4yN?1B>rm~X7z7; z$EyCMjk5Zu0kx{XiH-9p+(}4USHJkL4ID$wNoVMZ=+YT7AxLL<4}$It-=MlXm--4mrtn4^6M3ps4bFYfU+^v`@`mlw{&PG!64BQ)v+^b`m zZp~|^rAl8nEj1V#wv;@Wu=&zrO+k|uD+G-#CJ!cTnzYbgp*e%@eJX{9gMgt$FL0>~IyapXTAMLWkG$_`}xmZQ8 zsbozukZl%?VSP}2Q*!_uWdfWfz~{{XOd!B%G6mE+Ij!{+)dh=oXUa7|TgQ%&Magsw ze*eMzqX@_%WT0Mz97Ooy1crF~7*{vLF8IKlkUJ{I1@|!Zp*bAaF2(~M!zLrViL1q9 z^_0Ngm4n@9ZpT=byWu0#tGMGgP!_act_8WTH@ndB{VAn*eK^juwykk?gY z><_h4%Po!_;hu(E%h=aPY7NYJ2XKS(8)3>EmSw}75X;nuWj}*qX_Q8vSdF3@n?@M~ ztqk#n5d20d1}u%T6zMzzhU} z_wa2ayf_nF7HWvCPw1(~mD)_<;jX(?Q{PUl0QJnZ|1;TGVW z=zPdnpZXUEkyP*m;Ioe5gKTEO4$w z3z>WkhGrJEi*-dXo{pTc80zN;Etd$vn;}2V@TJ;-B;mK4ihqTu52Nb@4rbnly>GqQ z$U#;OF7b=Mz{lTi$4_NdWWS;u6)L#1eko4q)mQN)Kt3FY^F||cHn%~Xra1kxoiC~7 z#)cx3@ioAEIT@;8Orl;JU~L1AAmN)MfE$Ef#Mhr<1y|>7XVc_A%kPvyD%hYJ5-GSL zw*+Rw)P)BI5ksqQw$v`uQSp~R`E+bd6^w}AjWi!%?4dbpjt;3dXzPN-(B8u`y`{B{sZ9=nRra8QO+hLgV?yC&q#0B{ zY>^92!!MErnc8kkn|z~dNWKGDaI0-1*&hztKJdg9Gz_grhtQV8l4|@>6zicYfsIa- z;9azWtbo&qLrj~MF(y?M-HR81`rwVFf&wQ*H4nI2Bw_BkhQ*r;)_=(SS%^HpT9_N8A*tOBGuMy}O6hLDu%?QV@KKoW1UH)9X~hHgxQv&7t~E z7gTbW)9NqNbzjU0dp#olI_i7Ja@5k;=s>jW*)0&Ox78x4%&FuC5SFtDKZdM)>Ef+J z@p2-t^I^ckr2iMbON{OPZ%`Lo>0xr8V}i-W4@A@!_Q3z9b(H6zmIR-(6O=hNIT%Kz zk|rHeNt#eUn4u$oVn>#KA@z}*ospqd;_gy#ZC!#2zK1TF$-3y~kSu-Qu8JmjJME7g z;E7D$7wT4+Dm-UEhI*$G#`}d$Q*+K&$<5G9qPNn&Dt= zBlG7FwW*3iLI%IzMS?>J{k5xPvPeNp9B)yb$(1Wjyg{0y62R78G+_H*%8MxD@QFg=&>)P zp?i7}J@aydzWibus!k>P!@~w`izhC&I6Z!)?Pq<7d_kyKp7c+kS%W4ko!U3u$WN^l(73 z5I%=RmQEDRMm<;4d{wv&`jg}(`~$L;>R&D2{{sCU)f`B?j?NWcAF_LzRNw2}nMfP- zG(l56P0%6I(QG$%%rn@6HK0k zPPdViUxIH)(+MTG9qJsm=-;B&5&iL*s=rojSf#HjHWi7uxYq>&PMov$`IkE?I;1GH zr%6;Lvlcl`PQWuf6$pNu5mjB{QI&PKUTyYi1a+`KG@^Y-Yd2GyaTB!flDkc`!OtQ0 z%|!SaXC<~f;X0SA(RIRNFV?rAUNmOi;KX(y;g=(bb&V5r5nC+0^nY8Bw1W?T`4iK6 z{r_a*6|{OWmGv1W#_N%^I#Pl^m|%E4b+Naw#p9|n>kdcb|MT$8%&w5MohX(Vv=bKK zVIPg1w;jtiRBhJvj%K#@nEa(elZ)d$-ODLm4^Ky)PO6#Y@zj7$iCod^YSZB9hk#Ne zI_WW2GG4SbM7Q2M;X3+DNKaA|*R#p>0QpR94&IQ*ddS=8Nt8SgG6K z3&~pVB%kmoor0eTC5c^&icQ(4)LPt#vTk*fgR-OQsWGr}f^8*vk*7Yzj+wj#>buWG z;Rgjf^Zh5?Wn!126eFnK=p+Z!HO;c8F+n5{R>w*%mmMzHn10afx>sJNER`qVa`JTehg z+y95A_%5jLHjh9_AimJ9!>$ zO@i%lRy>uw+EbrvMN!FTq25~w_KY<451x8K8oMwrDht}I%R-wEdSzG1exCaB&}*XB zH8>4wuC%joo76R^N7ikgev7B?!0}PI2l~&L^XH9TC8POK*-K=77fKDbFb9=x=Hz&f z5D(WSh|%OWkI?uKf*#Lp8k!`!970IV2FZnBeZ#3@ZC#d1zUyK4*2N^Js<1;rRF)!H z&tWMdU5QheDjWqpw_jQB8NDi82Gw);pVcj5X3|t93iklW$M!R;w+*Vo_Rv*Qf1a&3 z17RkBJp?cJKvq=hKA{S~1X{$Qa<#{h@s&Ily7Q>NHo}3S^P`e;q56pGmm{=fvMFt% ztNc5FC50fo{eKX~0=$ZZy^(rwJX_sfHrwz3VhuotPu6Wt@>US{k^Gq^>zvE2FZmPn zM{&aV-eAW{N9qdIRI2~+3dEbeN-luzOEzLg)XF(UG@^&qtBXmas^~FTi_|W_G?5q8 zZTK?UP~ZBZi#@Eljme!a#2Ya8CLy_*!~d0>aWJMH!T+pndd#){|sl(CC)S zI2RbbD(`KO6~kSE@4#OE4((O zE~_TDC%c~xER{g`l$2(b)(lQ*YPH5qX|7CZ!a`K>ewfo_rBv1+bPy}1WL8D~Ui{^1 zDr=O=|HP9=$MV1PgcN`hPVrWF0@36$VXNvYhXeSk+Uo>(qM{cz?wfM?* zn%z%JO&x7ThmO#p@D!TRsy0R?E?KSWV5w|sC!?R0irv+yq?&c??iS0A-OuQmc37L( z!W^Ei^(wd>p+Bf8b6Ee9@33Sm8bW93i~m`pjS&(wR#*!C6~xYR0#=+u`!GD|4MI`n z#8x=LKJXFz4{607cit(0srzsX2nSfM7;h46k65kaS7+=}C-`r`M0u%BlyElVMNbOi zpg8god)LwC#IV>5E&#?wLhMh6C$YkXl9D%L#BO$ikAZP-6pr0MU>`Fi41f4ZM(#tW zi{0z^tK-;ZPIUgiF*O4JW1l!uV4ixk#+}XxOQgqVwADEoDjWY}Kc@I861^vzQA{VZ zs!2C)NSvnghlf<=N+!fQt%>Wmhl*FD z$3KH;@#6R(q;k@?j>;a`Alw{(o$TY=zKt@>M+Ie{=;XYE9W{5=**z};Gj|c|EzXJk zA#4w_d*u8DYy|OBQh10sXRo6uOa$tv_(O<(FPux+B@M!rRHY@Pat?m&CG;OAw5o1G z$NCAS@Iw@@PA}WWgtei*VUI)v0Bt8f$T|NrPd055i z2Y7cr?kxW{2zUO6(Vvu+i9~K}CIsXwScUu56b~_2}(4p`-4wie{sgJksq_=VT z=j#Zs8On=9wd!4?dMl;+#Hbc@N0&=k)2V!8KuJKG_`$NO6W02lEYr6B58J-jN#w3T zsXAbfDdkDlF3|lk|0HJ*@@3gq$w-aC`q-FcKRMUKhS(U(p_1W+dali{a6UkNI=LUQ z#L1;lb61r=(aCQ@wd5dv7f#J`SCxNj@_!!VeCIe}NW}O^Fu1A8-;kWXNbjlgXV^B9 zUwG>IcEsf9#d^b(zsy-~r8vB;-c#k@o_xz=ta0wNQoI-pZmII`NS?k#Z=Lej**20- zdFos2h{>)?^^Pk4uC$EY12uP4`CHS}EtlyXRsNG{Ms9$bJF5KW)6@-?>rG7l8{+No zs&ysQ{Jp3Acbv&h{o0OSbCh0RhW9Yp?xfeTY69Qw23_rb)S3z7S~ zlJ!;@+U!88|4B+=;U?ep2rYt3(2>nph>D$~I_gO@|J>wfml->4ZCWmAh2vHmtOvHF z?B8KMB)<3bqk?tQ7W>H+YfQwm4k3u;Povg5JtbpsTRyF%}3@+V-sCJ{MFsKVXQb61l;+2~br&{~YODpd5$(9g|N z-EdZCrRJ7FeO~f;Fm754aegSj$Y*5U303lxE2HvkJipe?iO%KY9(HFaH7l6j)8#5` zGwQ+Sc2hd5XWa{|(FMT1KGfzhR~sxKCDmie*t`$ekg15*Fl^Pd&P&H@4A$<@cw2xy z`Y)!b)58BA=XW0+uNe0j!OjYYq-&+}DQ6qzFAXXGmLFoJ&0GeJ+*Pojz$1cd=i)Av z*y^7O@xxp|3Ra$g@wi{}?hv>l(|`~cQPiAS7d zlde%UjdHiZCKz{e?_mIbt&%kL%utr54^X|2Y&Vl65pxieC z22Tl`2TDL2jNt~SM#A@&*zOdrI4-I>RzN;2py4o?s<3nSsCtn4`RV#kpzl5s`W0#V zaww5|1aBd4&fzd z^v5`;1UAgZxGXY;wszGkq(skP^4B3)RGbHL`QgdI?L(t#OX-#F}qc;Ph zrzUY_P^)!}Q_G^NA!hBwHFb>X-027M^~(+E`XFmTI=XaD=|uW@d+-C024Nmg-2DHs zv~jp0ZTP<}B@WQaUAUvmY^8(unxI~`&tQ=>@PG$MF}04~YiW0jx82i`7q$RAWz*#9 zl+hP#ohCPvT)k>4k6f9T&664d-#i4=Pih3*n`Tm`?!02*mNE3bSC*^T^>|T*tMfCRXuRTc4VHCiyqAD+^_IvrE4$Pjp1k;cgXNi(ot4jSQ=;mD`6$B@bDBZ- zl2@Uo4=AxBYz-?J?a`4JMAfxiw_Ov~U4jhbg3g|5up4bmhII5YY^|AFt%!crTzDZN|Q)QSqY~G^sHeCKCP~ z4!ZCpNGkax;@Vi|I#CNFFX3l2@INsjV0`|EO_q1Vy2(bug?Ts-lt>2J z(^~FK#}l&S{s*jy{5j)digORtU-y5 z%X$z*&t>iHCFrt#yOr;$N_^-{Hk>KUS$nyNJsg4|YB%!fr2jSCetYY^MD69q~{KOX}R+D*uF*VMX^$?t4Ye zM&E(sv>lz?vspN)0<9`Gsu|2haCkF4-{j75=0Ks@Ux?*t%?-5Ff||jXsiF&!1>UrB zHyLA$t3u31-~MK|+8;uknm^gI-adL1^TW)j#JMj=Rqj?N*qSeDHKMMLeGFgJ*4g=oV{0Nu*(40Ta5cwYvy;*6xw9P0ghbOZ?mHPg4%V;?R@FHCIhx$b z-QKViVrGx9Ur_lf_NXHn(M@4(@4Baym%D6c#T7M zwnP*>SXjfxNIh7%2c*=41%|>8P}OD@ICC<(tkKNW~=-G+$RQ?Lcamwe%;{KLvQvMa5dU8(wb)GyWnX>`1 zY}Tq6Da;GLEaE9=ji8bj756u1=j1d%#$|6-ZAI$uDVL@qsbaona52n<5@*&w7k^d# zDqI~r5E#~3SACqmlvLICVe~W3|n3GWe7XDDafySi5t2Om8+|M#AizV z7s;UNLw^jy`zMLj`Lp3Bm(q%4Wqe9Yo??)>$PSUHNG1L z-R~BrkT>7SyPqWrmLbTeKzR$rk(@gceAzSUjg#C-C7TVxHwD~VkH73ciOnj%6f)P9iMxs#5>MQdJ6|#?fvpk6Wik)Op4!OA8jT@_9Jgn6#2cFKPfs~IYqdV@h3%51h5za|?nR@PTgmY7fq#&~qQ!um9V@x5tUTQXSLM(3jY($OBDp@h~gi7SU zP83#0`b0!cD$3*`xG5!0by_T~45=dlC2(@H*<}bM%AMR!P^bPCB;}Kk-Y_TFsKhWXbmr0q%Mj+Fe-&H_ z=p9C$Yef$J&(kid8^NDVWAw6#$I*3A&(92Gr72x$y9@k7K#<^DW#F2|NU zvt|r@uoKS1B{3P7&~)gsX5e+gaMQV%Z1d)Z^3KF+T?Gft!RnuL(}K`?=KeP3O;#Sk ztsb;Ebe|8&qDOMkZ5bz{@XU*8?_5!Fy({-|nW!?e7a-}Omoe3U+F~5=WWxcxQf5vz z+=~o^@!ZB+Ch|22Z<#1B8sd~Lmx;|0SE9V+q(?E!#G$~wlMP}{SbCYb7?@cmCXYvQ zefZQUZJBsK7-pIH*#D#KJK&=z+W%*ByUAT>Ia-czKqwkOMLN()^=KoF471gXba z5ClX-l!yft6bmY-*cA&(5qrUcSg_!0?;_aiYeW5izt7CCG6;?CCz8tqf}#3-6s-yit0QxCCnR8*&GP`Y56$uS@5>1Q!5@Y#gKkHh_K12D zvzo5~A(jl4mydz?CnUTX*il`R=PeGBB=!YJ(u)VM-C>wMgHiWK^8Uy2YEgI^rg;m= zn~3~jPOW^F)f0d)uAmoiTX^QtmOeN_Ps;skD7J@S zeA4R#zmz~@UEuwQdhY@239#;;^9*apXSJ{BUOGI?x}b;8x)@RK6kt68)-Aczu=2=> zs;M|VD*629$($j*Zyx-c0{9az$*82b>GJKLZqz!kZb)>zQO^k0P8-o z)v)puj3_*GbXZ~8`L7kOm<)vv1J)B@-4~zu->miIv^%ZS3s||EQ`J4~9mC4gHInNw zW5c=1jvbwAjDx_|+7!%6^%;`&#l`4orflb|lxy{dKPGxHVMg z_s1sO|Mmu4)!o$D&`;TJ=t~BLwWRxPxSrbzu7<#R2jM1KsSeY7!s4z&H_P)*Nxsnw zAgAMIoSr)NT|^tafY|%&$gf5lyk+CB)ok(*&sWWJ;`@M8M|{rILMJOvITWX%oqhw9 zXJ5S~Sy}KBLzo`XsGNHB&H+y(gz0<^Fw)hQv!{X24Y0b$6{}r2YB2sDcFsxm#czSB zWeh5OXCR3qkg6mkX?DM8!VB-hYJM(;gVmOGEr>oR;YJJj1*zV-fNVC9qTxu%VDYRT zD}H5}8%hnlEE;%O96j>Zf{r%{-mV;^LztkmV}`v9wc>aaLaKkT-f%O@*Pt;3Bf`N4b2G;keW-~m1Y0Ug}vV}?NAxOj8SeOhw8rI&z z+6wQx6xGR!N_=69(mm21c%6e8)sC!Tia8*R6VZwJ7B?b{lPn500w-hfc$+mvtHk$! zOZ85T==$v};I23gB?IeBGk6lLr;EfQi%W-bGU$ftwVt;R)#kVrB@EpO@op5XYP^ku zfHiU)dUm5x^N#nk)8$u4Y>b4r-(j8O!4DF{3CPM~dqhlAblq}=tKNm2czG<+YkhCX z!2Hx9x&{ zQ_x=!-R%!tv%1BBk6@*tr~xV-XKz0#MV`Ug+u=OQ=byc0${Q7caQ0R}`e>cH>|mT@o#wciW0#Q2um!t5 zgYtQlb!|VENsh9%q$nO`ZHuw(e;;LS&2k1uS()?>BP=mLZj5xLTLOR+4{*Uz)(|_7 zvI>bl7%8V?d6ZRPx}LUMk>7?z3VlHyR`2|ytRgls9w2j+l_hfGeW+NA+X2ov$|~T* zPXK2eW!2!)deO|ItO72$9ALVha+Fn6WFbRGSp_x#FmseOAN3qQ%1SZXqWvi*=s0zc zM#FhMF{)*@oCq~7=hZ@O$kEWFV4b`R$I;L|FnK3lpQ=P@1@>s@sJy5>8rl>{LlU_M zU~@E-V9j^{ePnBpJsOHW%be+iT0@h(tP@(}Q`Ak3n&>Lo-scT*4~9jZ=6`+Xs(CDO zG)wt~LXSEZ1Y9=#l(T5CcDI2g@Yn8`^2n`MyW5DggHI7zl)rW-yuNDnyxs@J zki{A9x5%RTWq9lN&vz>I>7BTv#dhS}-}WfA9zt{5cb9p%X5*+T^lD}$nL>Zy_O18; zRPM;Eyh8Wg1ba*Etokhn0(%J8UF+`!GCxZ>2NCJjgPXgLO0nfs;$y%DHv+stmR6WJ ze5+~%VXd=d!lq*JZwNnXHo!7rA3{`?6GFWL6yH3_m0WB7&+wD=8s^w6%hA3MRn^5)+3v~t zw8Cqhq?9*uXfvd}bx!;t5=onB&~*m%ILjGn2dZ1{@RYaSVYPVA5ZaO>^$mq^yG0** zU9xb07YMmXa|g4keNj#uK9X2*AHM4(u~mpgdwMj#yxN!KH0SrTcS2rm?3V1c1&LSC zR<$q1q~F_%N(fmeqM4oA3%o`&;b;urn3(S(yb8^`KycGMzj^}mo=*I>rXi#Llj_r` zt-lAO9tr{)^)`qN8TA;td%jUK<&j$zT?Tq>)Z+nk;sMGxYTEYlVrcV$@VD zej(vU#hYgubqIAjP+_AEP(3~Ys)|wjSYy=VQ7mKB4Uv=1&aWiDMM6eB_ujy$FYTj^ zTHoVo2b~H_A&qaI?RINs>|2T+*!Of&O7r>lEuh&fa^xpezOirCkT-|WkbP5FHT!PU z(%2-MIl2~&5!mEF!NDf22}BtYJZ!Si9d-*AFq_rLN}e!;Hdprx%uUVC!dSGI*?-OK zHSBB)O7SgOkgpc$L{aW1Mszi&M4X%3_w~M#}2l;XSYc>Y1q~t+%b?~Er z>8FQv^PbF6&E{k|2lJzXjpUY8Z!y*MayyCvWcQ8KyuXty!@K5HBrOZT}Qi%N6*_uspC|Y>Ekhp1v z`eOJK#9jWvOL63HEIT3(0bnf8(7c<4Yp${ zB&^xZs^Ke$H#r7=MiN0d5O+ zr*KgH6RAW4&iZAD6&?*#D?uHdA3?|lC_Fm8of1F)3#3Z*@xBs~1G2qJ7-f}pFkXF;WQb>?aB{^@l_z;Fn(4!)C+u*#UKra zai%7|yUw9Nf z0SkV?Fup)=7{-YsXOs~;jAwhl;6uc|zx)`pq-$Z96k(HVKtP+Ue@uo=7DS<#?^-bB zky{nL0eWqd%>Z=b0m`>Y;dSl$Wj$}qd~K7>kcHUf;d4Va+4?KI!4g8PO+L}Fx=r>5 zXBC^AFv8m8(66i6X2!ZA=LRmg>5oG_4pd7 zDmLk3jZIEQv5ZZ=iHg+O`IY3iNXRBr^8%Z!b#~Y$^%^i0mO|>~U)bbHhZ~!eq6aqF zhLqBLzD)|K9g7@k2QFiitRb%xp&^^3uxd8h{0L){Z06{%XpF!nj}#ni(wab&k-#QL zl!R<@9J8cN+O=xfy<3w#oaEh1ld*OG7rf2PPGRP-~MzyGK=*D)(@^!5P?OYu>|k8)a>B#kbXLavzmq zA@LZkt8bH9VdARTBo&K)L-M;kXDmLk3jZJ^AF%6akH-VcV~w zIpnrbsxYwahnS<7fp6OadYn}kxd>eLwvdF+5E`;=3ae(@SK$^fGM)!V|>{%s-T z`L~68(fn0!3pc@XEqZwm|APkJ0@`^nYcSL-JiP+t~OB^LJf`-xVVxGMdG zip4J>{HTvX9_}Y0)WANO{Ukv3xErV{{lv$besU0sWp4|Slg`esB)>&M{p9BrK|i_W z*>E4w52mQF6w=erq|Pl5_W}LfE1;1y`an)E(+8w_f<7>g(xi#~J|LjuSuK(6Xdu%E zSc~3tLPLFk!m9OwKFlh-G*Vc#4;0!yFdOpxKJXQqwrU^v0@WvdfMykKg~w?@AIRxT z9QuGYxhNw+AE-Y#)Cbm3ef9zSzz%(2!ypJiA9x*NLw#T$3+eX(raW@1qHjU3`@lCy zV`309i;McyD#64|Mzi??i!6+XoIF8dU?U^Z}^I)AcXoDsIdPMpn420 ztJVj6tmy+!fyDHI`%q;%JHL|r776u%Mpp!V;EHd8E8UvZ|ba9>1y1+=H zD-um?0*}-B9&CBKyIFk?wTV(!_3dgCeUTVw6aA1l)+VsHU3vl%B6=Var`W_GB$n93 zVDPL$q73!c^k`tNwU{y_HrNC<5tVMSiE&W$37f#7)Y6?cF%g(oYyumP`*x@uRmV{D z@ve$}1k9f?S2bYvhT+*8s-o$kI^7KE-uO3duhRn&Pchv?r%y%v8m4>e^sR_T zkwMd8I=vI=dB~&b2%Y{8>2sJKrPBpyv)=eOJxSEp zJ`)2UGO;A`xaob7b4y+w=6HL12{s%f!QFEtxc34H?z>rn`=66w(+3i4{;vdEYT@n9 z{foA?lHh^v5^S3z!Gp^rc<6cw9)4JYN8Xg+Q7=xu$C45}(Nlt_CP=XTbP1lmQi5kT zN$~7037-2zf*q}^m{EvKi1jUDPUsHmyK${AGD++np0Dr)7hLIxGJHhgUiUt8hp-|p}!VDI0q z{Xz*kTp>Zn4H9&EQi9GeN>Kc!1SOwH(DfS$y1Dhq-n~GABil>RqrU__$4SsT3wNab z+x3|)snW#~^u0`i{JuBpp>Ec5)3;`g5jkIvU;Pt zHFisJjkYguFdQN6s{L?PLRk9|@u8rSH}b0dseoKb=&=G-`8OcJ9UkpRX+YkGNbn(J z`!SRf9|2y~LJ}4)+uj%Krq#SuZ;j}0UpK#?X@KaXkEzeDFaAn)Iyc)kQB7c=P8>pBT~Z5`g8nt|MZEr<1~idi;NcPs>Mg9cg4N$jaCsI! zb=JS+iUtx~d6)!idP#8g7zwVKC&AiFCAj_`32uB;f}3_qaPub;-15Byx7Kb%nYXo- z;P(C!+YXNrXHJM$#`-dQeT8+VO_ZQYwBJj}gE!glTx z5+3fpCSeEnGYLDozesq58*9$|I=hV}EOrl*u*B^tVOMv!gx%aJ5_WgzNqCgIT*4mi zIthEanj&NU>@L2aN2}ilHmdt0gd$5GZxup`0bt@#Sa8H$RynCU9 z6WkjmoajCz;qmTk5>9r%kPz>WZ$)`i-GqeG+(RUs?)H#yraN51S?&}GQ|>$oPjr_{ zc#?aygeSXqNjS%ST*6b`*Cd?l?vZf5`up*+@B=8#^q;n2KBnuZ6)Da z_ecq^b4N;ey?cs;H@Fu|c%yr#gg3d5N_eyTiiEeipGtU}`-_CPySc3?_fEHogd5z> z65i#ONqCPtRl*?mRAt?nlhKH&aW!fkG>4R>w)H5&Io zQ5@ZvGBRq9Zp@s8d+4i6;6%tVi|F#4;OGXQfbj+EJi77xv4&-blgVO_Zj6fhM>j;A zQ0b!^Zv$tJZoJ0q?nic+M>obpGjnufo=@RQ{&=t(aM`^pE++g$`K&4}F>&(0UC&5&DTr`r)`rw(E()JDS zp}0=*k3r{=-y@OI;NBYiImI@-n}q!ZqVgU?g2gBu`ZbW6OuVtY5@gQZb*0DtU@d77rPk2PFAsnK*fi1~DL*J?VuMC@|)T+>~Hm`}IoNlj;$(Oj+`YPzQo^Xc-r ziUj@aQiCifX}V{z`ry;u)(RVOK*#M*QV#CC(schp%%@vctm*8|50{%+G~EWo3>|iI z96c2^&JCGePokyChRn@f&|ch-`3zwHdqd`fAPsHEWYT+#u*AZNx+(E(ksSay@c7 z^TF(B-M>+-UU4?|_)u@1>}HZ4YZEVgA<2=MB%>_J*Ca{gPBx}DDf>qNv^3407-Mns z!Z^)$GjNR`g^uTC&rPE<#D5iWKLRW!up-->2M}=oDN%JL{@zM?Il7@PxDFuM8NANw zSnxGKVl3;eo>U7jIY#Ah*7okqmI8a+kDxc*`}G+Z1!jfK(@-#M2&ZyA}k>zg)7g3X$t=i{7_c&Q&2{~9u6d97^f#tazn+i>3>OF z&PkQOK@r%g(fIi)VnY2$b3C6V9NAva6h~k<4lmC19f$REV3+H=pA92rqGqy~ zq7FVKD5{7PDqYlFz?q`{!t6RByUe1NLo-vV0qB@XDO8eWZ2&Rq7j55`3h2ry{qx^pT!IevYq{ z@sTJJKGM8-$iw(Z69Dpkq&;8~ABpvm=_5@6okxC;M81zC;29KaeI!Cu-U=w8eWVkS zjtiOgkrXo5KGLZcqjFn7rty(%J*wR6;3GXVpFUEdJ7@{y(F5o{-}eBDdqNv}0M7yT zzdeBNAPso{OnSWtOT4;JD+&)_FaSa94+bBvOmb1rHk^?jl$-`nz-j)v9;^_cLdD0Jadpejf1v z?nkkG58wm{77xI;tAF$WW>W9K17Ol)ZH7F65D7g1AvuvGiIOvnolMG}3xL51dt#}@ z%?sl+-}As358yOxuyW!HMO^*GRXhL6oWty-_gj0kD0n2Own{ua^$au`D~BOcpaOZU^3a03uGP^t2d5zGhmiy$IRWMs}Ig z;s8*XY4KhvBouyqa*M41XWaD(IN_aNWz5&$(Ew+R`2sH30I)yi zi;65{Xv`Pb*?^fb|K$~#V?M>0G5>k&=Ax4kbnm(+qE%$f=c+<5=Ic#wB06*^zv#LH z66>9I0kIqhsC)md2PD>8?gC;-E8I__%JuzZr9YbthU!kdoaL3BXm&Okdagg492by8 z?f}@#CIo9ne=l25=qj_xXy(k>#8ywR>rG~pt5Ko;Y_bA^Wj66G_8(`HRn$9}O_=o9 zPNCT(M8erbNUk7B;x9BiM@Mf`_O$>QoUkW`TwrkX!Z^*h1~@aD%tFU@;x~x6&jHT3 zpVZ)P7gm`~1YB?-!2WC^Iu^VIkUyJWWav_a+A*+jtHw`pb*Tc1JAV>bEuVknQ< zgxZB>lkX|bpG}zZ{u_WWn+QntXZ88BiNJJ^olmiPHpvE&p%)Q}+bpik3E@PRKbwfC z8sIduiPgR7$><=QO%BvQgemABP1~S7(Gh~k)5R^k?pl!V`iy~ zF861t!AoJB6U$IxdY0M}x_SEwID7N<(-r>BTPBN{rB1&xn59IVQ0ZC9y~>}ZHZi*e z$S!l1S`G>`OO5g=T*;p|Z(Jb_Zr&O~d)~YaJ6lZ8ei`WmO7(BvnDS;4RCF;^r%lzk z^i-ssc!2V6-h@{cV)f12>R)iT1UB5fZAGOGxSBU_XCXhwSIXSHQ6z5Oc3guz%+1?+ zfc%@c8^I(uZ>*2Zo3~p*=aJtdk$>|h;0+XOZ{7&O8w#NWi%~lCKBVJ9CY>g47&6y4 zZ(A)!<$i$t%*~svN0s|5Zr+x!?LH$@+gZL(MG< zEYD{N2VTr|i!sAHZ}QFX73}}^ww3#4$l=F2OVVYHv-GuP+2Lfe7&Gj6b6|!dPN=jQ zE&|RtOWl_tyGM~-rWrm03S)-vQ6Zu5yJgM@C_W1c&{^WZ5;#jzOs&5RoKn)9Wp_l? zJNQ?pm+>G(FX@~w%3^9g{?+NF1Bd7(oznrEdmG@-kBC`)0wSf#U$_n4-R=M0#*+Pk z+E@_fr$fXO6m#IAMsu4smPDcZ^?fi_dWmP_8H+N{1}36;=_S@V@87({2SFP05}EWK zBP?;uUAhw>S^r3@=f@iPr(nSQ*gZR`*o#5(Qi^A7I~06cwpa$V(L1TYwoaaXIQ) zHksRJ14PN2VEm2G!L(hs<^9H&<1?keOVr!KMRe#*NUOFVkXY|C4~S)-xhnMbY(TH( z_rG7e(|7!CfHruLz#_=@YwP$O23oU>aBn~oSq`v$kN~h|JU}_BIDQ?_M&kHY-|8)n z-w3fq`yc^=#qslv@E;w&z0^B!{FwAu^&!VEL?RCoNb)sF63?O~jpO$t0CY))hTO(1ug5t+&BO6qzX{62@uPMj$8X>yNb?;(ro6HM#0LokjV35?`~;>u zVH=9oj^B6?8F~?s7-MmGkPzTRmhbq9sL9MjFC$o6XnGKAo(|f9OkS7*lW%$%Oujm; zw)lWnTYQakp;dY3&9G$r;mplCANAqa*@5!2BP>r;SZ7Z9UiqP0qUu8YF~Vkw(axL@ zS!YfXc*n$}W)^MokUxv&Ux-PoYz8VpJ9DGamUb59`5NoYo%yiu%w@8eSv2dBU=|f| zLZxTX3xG4T=u&1k4cTSRqBWqInMGUr6t3h?XO54t1845G2T=?-b4_rtCA1QM45j+c z98=zCf{F^Dx_0J{N7{)8DBqbAUU^!sow*BsRcak73C>)}V^Q@q{-qPkke}l#Wt=&R zgfrLs3FKj%xs?F<&fLjh5@(L}k?G7`4mywg9*KNsPQX`FtaauHQF$XD*TpCudOgx{ zA=A#>^T23l?q-Woxf_t5apr72s@!j9EA`V;;>j7`+(T4MldDX1ER%#tiSELPFtp%bX4`MAeZ{fX)^Ni@=$aVru!JYen6zKlJ?1KumSo=x2*Jiqz_I+t_clJi?|{Vm98y3m=a5vP zxAjGI7Wzo*V0>n?#ZIZ8T`Yne&#^wz?;tTg(%S(^WE4agABo_&F!~34f^t;xks@d# z@sVtagQGy=BlQ=Es?1^73ZeDf>r}_H5f+6ZrfRw_mM=@3TCT)B&&PVBy663&w)%{ zm;#e;`T|V8I<2<&fL2?4jdEyJKIA`9mGdUJ9?H7-QqHQnVhD6;7?B7S7R>davCZ@`$#{ACMTZ1v_8@cANoF0 zCX1Pzj`=8Z>B;F`;LPN7GqW3x>@p{(i68ru(*U2smHg==@sMQTBYpEeiUA*~ z_vINr(ovM^`$$ZAeF!R=2GzBXGz4iU9-w?5NqA+ap!Si@`c0|5s3iDEm!Q&`eM%qc z6y)dlN*N!CBH<(5@EP(jKGGt9d>?5wn8Zh7ePsGbXMxTmzegh9M-p%)#abVU5S4c? zlwdJRhhB(uT*$PK)Eb#+63vLoww8 znW5NpIbLR<9>o72%usV1A4xc}y?#F%Gkonw-wdC`Ay)6w1-=<_NU=VWbVK7KHTcOl z!%P-qhGT)ZK9YzNDs6^00%y$d&?}MMmB=pB3_k;f@sVDlLPFtp%bZ0}{I?&pkHk(J z_()Prt-lP0QqmkXE~c7QXdfw)UOHrmUeY=5Opd9?@TZSt=>sB|nRn=2*oB)nvHo7@ z&o?i<&xav-$Mx|x5YcaN`BT3}RmXd?RsMVVT!eF6zOVic#N4T1cn6)yf5rW9?PdJ^e7%VI={?z6$iDxhkbT0ag?u3b)sQdnqQ)yW;6qMZUcZWptd3{NQ#$E4 z1GcO|vaC)5Z}6AsaD1{)4S0e?*jDvxBfN~Nb|fmZwsQ>owhg+GwlqRBzo+?7yjgXutvJrt$i^51CMtCmZJnf7FFK2B=ko-x8eMo=Zv=RsF8)sXu3vMc0VC(iOTfl-#mmsx+DNmt z$6SguTRgJd<yW4YAWQBWn+lU%F|6js2 zFTs2!0BY=4i?h^O1YhJfsK~~Py#4@S?D@m-GBQB(?{i`muK~ImfQsu7S%=8DnYesN z^jldKT>(59X{E*=Hw;;rLcmH@{zh^`j~PHz%m(2cL?$f81=QsiIcj8xI&!hwvLYL= zwi^qC8arZ5mdcv~#V&DcRdfY-0ss|D5ShWq(}>JPWbCFoS*jQ4@;`I4Dr(${k6{8( zF&vQ{jI2RqHzE^0!bS2t!Q>gGhJBpEiVr{{c|xhFXqEE}K}`@uRwDPhx1oqYRP;mS zbVSBqh9X!pDd{tAVZ{Pq*Xgp2Tj{6=jF>!%xzzP0I#W^rkMCavmw#zi47lL{Pr7?p zz$bD)DHVz&W4iJ4lVf_y)(;!Z!$Nnb<2_E3H1?{z2q3fP3KRbYOiD)#Hxgy#UO zh{Hx+C)tO%j9*=aEc%91Yr=J;>kGQuNw*0X`5oUHcK4jk@t+4N`E+j~P4NOZ+8Bew z9ca7Ag{~?e9*L<+{A*3hk#nAYr*mIT=sT5R+v<2k^9FR-BS9Pk%(Gy01|1fW*OWej zgo=EKYa=(N26d1ZW4kY+)4l|QU0o6B4~-s-P!BD$rOULI zY2qSN$5r{P?3h}If2~vgcZHr3s!$zAh3*EUGiYVFLjMa;-yG<5+5fFVrE2lUfO;{t z5r50}Z?!7*i>h6Wte#|coBnszZi)m|YvNK3n>BnMMd-M$=53~$Yer*gDgJ}r`rp<3 zR;ZdyT;#v4;UZth)##Jg^p@Um0(ym$K5t%3{e=IZMN)z>ZNH5vv4%yW+L&{Y7KiezN`&~8>0zFqhyIwIKE>Qp!Z88c0#f$@Xtse6ompN zU9Brm1Qa_l5fBFY0y2PsfVr6h3PeB{=nKdIih!xq;JmN^CG264&z=F)`LkSCh1t70 zttuiv#Z(ax_(>&S&q`iyEBOIi$$y0_d6%i=zCW5uz5o%wlD`U9vaO>q(AO~o7}Svp z>sajQItl}Q0U5wRz`(Eo+st90FCYULRC4{W0A0ypkk6h03@W)*n4Oip3-x0vd73lk zaZ^Evz8*yP2hlvk4}$hVv~Lg{6GTrAqRWElO(t4>tasTh=kaq|<DW2flLz@nL4h@r`3U8 zL$LTWI$S5CLv^C#s{AKVF33ZjJpTV%Cy$5fW=_{Nv9E-`3(RSk0J6q zB4Z!fouwuLoqueiennz`Og#rc#VLrqipZ4GKV#~@jGT|i`;0h$$5hrEhzvmF3qZu5 z-)?lIyPjWEqj|;ikRblNpm!Oxc+9P9w5Z5~IDL!J2eMXDfkSH4tjPKcl?*_|%fKJY z$V-46kBAz79j+gS1~Ra*SYAbEV9m_{{r0_?+|4VlvH0;PGK*_< zJ;Uo&`G?iWt-zNO)I1<6UPDorA~NNAL@pvJYK|4VixvBvlV8ylq*Ad<5b-NkZ8H`7 zG@w$kHJn^svBMFOioFsMso3`rk%~Pwk}DNEmQ~Z9B3LyKXXWau`4$nWniil7s;1Cr zFICK{83j7OYBI2_n)87TRZZ(m?&cLOEnceTNP{l4RdYA;ma6#(5viK`ZmzAG@pM`y z8J4raf-34*F#rVOy{tmSpI9xKbv`QI0d@@LZtaDH)ZzqHk>};Aqlo3aALjKiQ&sc> z)=Wv_*~|^GCo$<(dRfKO33omgBC-{QH7z&=?Yn*|B&6L%N<9!ila!f%U~^V5w^(U~NT+hZJH@a`Jw_C%}AsvcV#{%tWU<$7~9q zj|b7$O|<%FwQ=+Eav_g+cX6Qyq*TrvbYFKtS znJi{OvTZXwCyn6+^1B@^PN?*PZg@Y?emDb-&WXUe;cprXD|U9XGZhqMz9Q2x5O@X9wy^t$-*`|%P+ zR1((3$2O0t&+#vvcs}xTe5K5~I7MPzd}2%FVb;Yz0?1z%-vB0A7iWEBu8Z#hokxC; zME<(CfWM?zyDmBP(Z%s_Z36(anzkxF*R(LnEI}_Pu znph8LW=!l!DkKzsS#w?nItd|s&d-|Qnzs~6YfhcHVtYnMQ@*#_`Q^KU8K(HrJl%yR zX9wluS5IvD`nLDGP$r8h-%j9d`9z#h>GF;0;FnK9q_+&&WtQ)4P?++qr$R#EO8)FZ z+wl&EpbJfc_UuB}LRP2?olL2I7h=krM^Mpwhubc+1ZgK8p!_Z*yzBJY1pW`cKx)4R83$^MTbfLQe^1INtV3IDx`pE1;_k+$Ozegg!3kmoE zinU#c5S7=VlkGx}A{`ep-G%M|Mt7m7EJo!X0-2@@*?LsD)6s>l#m8-U5cZm$kjJeY zeeYvE$}0<&J^*dFmE#q_izMxB6-7UzQ0Y+$&=B)tm>OYH2b z6~$JL%K^}&8W(Kk2(fc32b12_fk{gCO7n?@0K>c%hwqn@m(>Ax%vT z_Oi6vHv?w2a&$yJhqrQ2jM>UzKQ|LRh_Cw^sO3;p32Z*t%E9|hrA0Rc!hArd(5paQ z%kGSxU1D~3Mj9F5IXktI@7UPg8P|fu?9MnNAc_12u-TnKux9kXgcGQyALZyP29w*E zGmkFWLImH;k=+^ld(gbh?u>gNSaxUlcJ+_DGd5B0U)mA!O*VRuFw5E*(Ak=SZ+WnrAi@^@#5sCLX&@6NEg zH{A_0=8lU4S+OvMthmNruzq%0EcK_wyEem!Mm~sw>1mPeW2b#7lX=vg?CVd9nJi{n zoD9637Db#;>1lBTaAw-i--7IpLw1?d;Mb1u4`A`bhGj<;7E{!k zkKj47aiT?>2-Zct4meZPEZo|9eAyimEab-C(!JB~rO8ahy(-fcl#<$Z?hi6dfa=ny_^mq#tb+ha|XDcKUh zXJ4LN?lgDw~eqiGwx})&V7~0X%`wEU26;o63A2?X=E9i^2eQWdk4|Gsv zo3SNe;9%xi#%(qO2Mf47IW49t@E>|xMC&6OhpR-Mlg2@!_0e?0L?06ueQp>2Vb9%= zt%lwnp-!XzU`1~dxGKLL6812oNB@r*X*!*eiAzS0g)(|fGEy@;PLHWM_zyil66~sw zisXP4l;8opkb)>vL3p zbk5|ru}HK4H^KbXbGP)5sjHHoHYmUzqoaxbOf|TE9NwDD_@2B5$%d|ue_q(&^_o$& zl<>Xn8+?TL(|87-+&8SjH;BK8rx3|6W;CR{eE+X~=8PT)yvcuTxfxVm956{q&bHdmcfqjSAk5*`GG>rWL*xnf6vp;6v zN4~KD>*1^BsGXWQQB~(!2>7HA>3bjNI^K7^fHz>rmzLTtkDF(0H_#ae~1f$r)LL@EUWG z!8%j9+~hX_??lfYqp{NrHlJ0YL5mEColF(|xW*XlnKW1@-h_nhcS6|2LUhIKW9rnn z8dX-O4z5m}hPYcu7l`2-9XbOl27jR#yn&7bR1E#% zu!M5~6$4)>25x8{0#pq9QZZ};{TxuS*41LI2AYKZij`g|Rw__!-bEcOYE1|w_EEeD zDCyDH>IU$nCl@_y!E2+i1JgD|djRdX7KOiw4^thnePQrkdy*|W9XP??s_`_gFn&Am zhpq$veY7sa-x19oCh7tLA$lN0M6FCF>wtfQ-TCpL{ydgT6>SBIk3_SdsD|1F6d%lG zKUod652&f+da4>K>pFB_qPABIBsN_-DTuLXEY>RJn7zDz%mP7f#_= zU^>OU+?#jGI3J+q?8F{X-cvuvVM}*4O%&pig6m#09<}Rc52|xCLRDuZt`26aRIR9b z6#|k!$0E1c+3M7Jfbv@{$!5EhuY*}+ja8t0j<=5S&bSX!ZAqJa(uw!vT@l5pxha68(uIr&Wd#3} ztXAoCvok8aF$EQhY-tBnx`5<{wDVVut5rI+j2}XV&W#|S&O)fteXObU(IBZ(=~YNN zT?Ud+r3dKDO3!jxT&Z+zi4WsuC@*HPDS!=>r`C*G&CKH7i6h<>LBe? zB=504MF`mnNGZm>%mG#D_()xfc_Tp~rPydFvZ_$Dr83F;@fr}mFHPp+xeoy(?IN^9 z*ml_jRjYJ{?m%a>OD_uQM<%~B2xu@toj0_s)-J4u_%Ok~1#Fde@v){|@}WYNcBw+r zX#_|@?Gm6f+r@EN+)%rmgD)iJCATEMdRE#+9cJ2Pt8Ev)5-k1;HJ#TANKSpp2W-29 zkbQxaVr;YR;v-GFoD2#n#e=q8s!+70GRcRXxD!QnibFK_Y=ER)gq8@~E*~6PtzBgB z3lCE7L2vJ4D(|<8fIgR+|IZ=S+J)5+|5~sv-lf^rvUGD0vUFGC6;z?xXc?C&!WW(nM>!nz*eb$A8YFW z8IV-5=v^7wbswTiOcfEd!F9mASJEj5P>5X{|O7^v5T7 zGwWaO*TeO{m9n41U3_5w0+LftooDu~R{tzo{9)$O`6pnj)W454^}n)Twfe6@(y1-9 z4Ap;t&a8jWQvv-k=;w6ciI@f1Ud4Xe?`Ws_@*0lf_>-(~RPzhYbQEvI zljEFd^FeV}QP1RfC$D+@x2WP2keuKonkSI>X)Q1lon)jr5=-$)ZWnD0Z6?+0DVf+$x}&v zqZDZdcm;9qO5sg@GXPmjXxA)XITg7BkcOy$ z#XmVq3gEj;lAjdYlZDpE3J~qrgcK@^fo$OrA@2rMWC6U(59xHylA_AGauq_Zl&Q#< zAUbxC5b}Obj!0D@-2MW_QKjae^k-C^hktUYXz2`Fx(iJ=)ZtUyVU6-|H(=t;gSc9_ zDHhY#I>#w%_5+%C4hP1vE4~H&99qKg>#+))Je78E`l4+=XDbeFi=IS;Ys8Con#k$H zU&E?ra-O~=QVXXxGIGx}a?fOk*K*Gcc7d-B4pZ zB5D%Vs2L`E%V>do&uo9Aqm~q$7*iZPlI0ve#&rb4N>m1t6|Y0yQ519LcYqB4cpt{0 zVYKK;bubnU35iV(YgBPH1Qh^Y@ggFv5RobhQ|06IQ-wOo6hTe8ab1==*+?mbLdj9_ ziX(u&8}JDa;4=Oj9E%H6{Z@sJI>xzZ79ADMcDsmZG8yB2tpQr<#)RFr=lIbAUg%iHZow4;=1 zX_|-%5-7PJDPKuT>nqtF=R`!wDTs)YS0a*Gla|R>awkYK zlzY)n)(lYr<9sx7Y zQ1U7>Q%J`-CSGw3Cbvu_!xW)bPm9$L0lDj}+ zm4r7zx9$Zq2#sW2o)oKCivd8!^j(PfV|tiM#&mC~8PmHUB4hgXi1=f=rI(yJrl*0G zoX6Aad(&jfL-6ALy+*V@wnyjbc}BQ7wr8Im9@}dgv`o>N?p=L@^4+^v!KvR;KoP^u z*lx)r1B~t7IpMKA5zZcC`)shv*xnV9U~Er@$wFhhS~wVw9ONFhvvX{+GZ);o=iZsl zv|88_cO`-zL25!xZP18A0G4EYoKF38Bw}ax`XBV4q)Fhb@sG>A*+-DbC zMh2~2aOSkQ242cC8voczy-_FFFv#jvQV06IEb@e}_~q#_ReJ_XbY(yv5GhsYO{|3t zAa&|R4!O{E6)T`l!-&eNdj(Q;a5EI&jeBHukR%T_N$+jK5?x`R=?P#sBGT{!>iQ|c z(Y9C%V$IcQ7D?O;5^h+oQxfSKBIyhg)^nZ0NaA~tti;~3I^84RfZt@8IP!M`?i1Pm zz6I+A`owbJUMI_d43<|dcxZK&CV%LM+I2>RboHKvPAb|9+Pq68n?@2dL3cqe;-f>N zHCj&ykF?bJ4N z=zS3B(9p{ac>tji_tVz%oc7dfzI!#mJS3Bw1lSC{7*20)nK_)UrcVBF%9OW8Kz2A4 zf}(!S?QmN73G3xX5*~u6%H_shGn}4|s2NTlwG5Mn2Mptc;Wkj2;gpMHW;pHA!Vaf8 z2T>(7oNff(4yS@6nHf&op-|!Bl-eoTUo6Lj>UquE<*4@c4qxt^TJEZkfUVaBi>qfM zQLkJ4Z&K^TQIgObtMYmuifzLr>BSvLnk;Xd1@`4AA9t|{Tjh1cNeX^(xZXfkhM~OO z0*A1`nljL-v0HXTW=k}oD8D6`@>&SUwuBHAU5xhC6Wbl1vL!l@a5JJR*X{_%#8wQb zX^DakhGEh>0mB|)=ng8=61@;LEpaOt^u(rf5LH4gaYVVxu@S@J|!mfN!8`pSIHR0%aN7FmZKLJ3~m5&9$;{{!L9l&8P>Jy~HUQ}yH4tM2g zNQb?s>yQq0Wo9T{nU5246WI8(;THHzN9C3x%E_x{kKDVVr1qZbc^4l-#plavy!7>Q z&{;Rj!_u1eqH=LG-TGG35oMFtJW_81dh=?m&^GE&=OKiu&eOO$bzZ_X3uDFE4Y8*s z0)w_tor9yo616K+b zm~liiE`szC&3fLp1ojBj8(aV4fhbl3jw%}vt2aS4eDpp~)teN5n__ihiX_aS@kU?b*Gt~m~7FpnFteLn_`pTop1~<)YvK;Qv@dp*A zyqW^CO(q0Iw>P#;_V->kSzi+7?qieL6E$eEL4cYj>)ymLOll7*!_ZwAhJwm8*$6~U zlPv**ZZe&Ns1jegelJaoh~Iild4~$fww@3a&B8_>-Qgbjf{ihggwG+Wa_y&q(RwEWYFh7X zY-AFKN#6tvzX`*spfatu08!I=PlG|Xp3Xs33AJ7h6t}G>IFgyxD+4avdejb60(NCd z>y4PHzZ1;XBQR(^`7Ur=#D%^ST+e%;^}n>j^>88f+HQt+(hawq7>w z%Drum@awhBWYs7&iMK-9F}TVT+wr*jZhLamn%#ck^e zj%23wjsq^-delz&AHOW#eYXC_BU_Ifse;y%Z#u?BT<9B*^}K7_|4Zw2We&FWm@ut( z+u<3lCuDh_S)gvc9^}nyi7a&MG3U6ZoM?fkv6A9K>6Zho_jz$<>rJC5zx9~%QUbEA zCj>=fu?0!DUe|BfdRLLKFQO{ferF1;w-!*-dhcRSly1FQ0mD3DSPv>Y*&%9LuNf56 zt*3JkRYI+IJn**l1V=K{dba`>Zar$J{ExyF@3~Qbbc(IV&09h1$+@<;hzmYCRlMX* z{n4rF^zvz@5WS>}lV$p&Q`PBZ!&iu2(#0-6g|%h*5dv7HH;O0j>g2TMtVf*OaeV;Aw26_y?r)>k-z| zvS+6C51MJ!|ui>R@+1}2O(9M>zu8iXwGDht%sa29#<-ULuv14|Oulns%u08eA3$A!|b z7g)n>gEFn*MvC&s5~jS{1Z1s22#SiZolB1;l|RrLc9U==qAJ(E!W(1B+khHtSc@HO z+8VY53{MEd2cR<6@F}9k8a@Prwg#Pps1mY<7Es(;gWyPJtYHRlVQZjv%75Q}aVg&A z&G&iJ8tnVF^{tz{&pR&Sg7KRPiwI910q_(7e`~a z9jxK5an>4kA{MfSe5_ad*1&|ZhCPEbtU<`~iXcty{i9K~cV9!;_Zi?}`AOpFm{@w5C+Z0^g z@0}vS#&aaNZ=D49KaSvhXJ36+eTZ12&VM7e@bQ;()ED^o8RwKOxr^bPw%AuyDN)(3 zws7pO9CZf%eL5MEP8azkoixe$KyM@o9^i2>pt zvAs^`AgY9V-FLv-UMDz`nO=7i3Ki~k)K0k-Qiv@Y&tu zBbh1n8sNgEW@ak*a%^MwrUx@i{p<8_shRTr6p$^o5ES)&z?S+wDMZc;5bl*i*sr)@ zUa1MFDfJ_kVN&hiSZZNtgs94mgUXb;F`}l_CEIMNbq=CRsMPlYZ`)dMBr~Nx4224p znwhEK6Kjp#FW%2A^(XVfrDn?8D$S{Voei{R^O`)PGop zN$&3~wJ_8{RORjml__=hX@05azh_IWa}ZTRrTzhUTWZ0P%#`{R6e?V5W~PFVrZjeM zz^e$ti*Ki`440ZIZ;^m(sfD2E(JrnT&2~s3DoOad6ru!cmZo1{0H`VT7nWht?*W7N z2TRQjyr$HbfWfqNJ`~dyu5%DoLZ$8pye+lhNM=es54dotsh#qdFVzLk5ttUHaB3L( zKD0Gs{m@{nA1Y)01nI;e2I6pHfn& ztYw&_>v>1;>Dl0e@)qUCR3Z^mgWGZ~NnYVP6(EV6j7a=7d=Dh_R{FeYcvrz4_!|a3 z!4n2X0tTk!6$q&2#_nrLWENUy9fV^CfxF0*H&j5jsfD0uK>^+qg;l`VxJ~Zb7IqU4x&n^sXqeVHnreL zW}13D3Kec@YNvv?A2xQ!waYAZ!>!>`GvzfFkS(jSy%R9(5r)G-WlG%@QB&$YV9*Axa}ZTRrJj6PP-?-E%#`|L;KHS* zb}D#bT|I9e&aOIT9a_M4g#mnd#C)EtD>TJnxX9I3g;WgEXK#B2^9!A(e!X6hI zrYjxBQ@o_R@iK#W#!_<_Th)*>OwVTBq?Z#oq!D7P7~70k>I&Rqrg@*4x|y*0wL*H< zy4guRMCfQhQ#|oBo0OG~(DRb!ZiCbZ#Bei2dLLr~<7L*W=4jApI{hJtFbb>L?62wC zj0udFH07qIv!aWLV64)S97~v{f|U;U>ZArRJqocjpJ}BhvU=sBZjdwV`*}y`7k)Ol?aK+?3^a!*}>PiwZ zR_W;Le+lI!-JP+m#7puC#ssz#vFNKPVhqn}>OSm5|ATmh@kgB0UXs1m68v9v0{<^e zN{p9u55j6>0mfLRBWbx55}0=o>S;6zB$AJD(mVx{>Q2<(h(&WPD%VNxD~7yLL@}0H zRD$GGCWU7aVN^M_kgx$Qn44(Ni{B0FcF0OI=St_HL%{F`ZR!p()a!!eCdLHD`|i|J zOuoYyPoB*ttkMw-FKGf(cQgU|E21|eR_XAX+RrpGl}`JnNY}*dIQt>QkgZ(Bpk)-{ z3vjl4o}(JJOL4DSil3HA%R6%(q(=S8DY0RU@gZkQE)$tN>q!vLWGvYYvFC9~Enre& zyrhXpk)+a*C@=odmFS%28xqnR$Rn{Wj6L=+V2q_D_B>%{bLX9GzbnSRqV)8h5X1TZ z1y8AhLP@87B;gmmfc}#)(xezmF_z}*HB$|7$3DA8ZzOq19mFINm5!tZLz*<-wU;6$ zO`0^^2$dQ^YKieu>F}B+FqJ0eIIyH;o8Zy!5-m}=tRQ*<(cDUS(k0IQcm=_|0D6Bp z(O9H#BXr?!_GZ9V$SEz;r}NZFE1jd3XRB9%Y4W?8%_onuS@7BSP#!O-NBbekeUoXv zkRd(bDZm)R5Jq4w{EXQIruk4b-H6GxU`dlN?exXvlTxsBBtl}mR64w-2}}(krldcT ze5r4$f=R|I9ZAdOWCD)_P3m;UCX@QNJxHFzCR3uwdLkH0F_tDrO4#@|=XA?~ zlrKO=Ge){Rm9D=RG@nv}#Nq>x6h4+Vy$>9zEKGH?O9lb40mP{|lZ>VLpfSyt6r{Ld zQz<9d((Q>RFx`zYp^*#uQW7H~#Y>t}QzCjhbR;!B9~J|A)?I>)<)X`sM&upi&rEOVWG3l1L6SP2*n>v`u?NJdlbK{J&8Hvf;vKjwBTQl! zGbRYRkT@kVB2v7hDJmuM?x)ahqo|Pp8O^Z&)+)W?ThM$;sS?{w7U5%_X*C+MvSPsU zyV~hi-ys=ilCd-wgl*EWg@sg&fl*r?!+S5Ibqk;ltG(*8c zn8o*?siahi{Ye(#bH_r=IwJTz%XG&dki3gY#?o9KPV;DT`U%1$wv#bI$c4lyi4l?F zB~4K&k@x=?dlxvXruTn*uQT`Qo~G$C)kN2+G`g8cO}Q0arc!eDoa1C%(#%naTq@Iz zqRYfcjVNg-g+ZvV5OV#55Xvnm3-XqJVm=y3YxW+4-fd`hRR`mTIxepZev_bbTi?8>JVX7zUE!ogXmyYj%I ztkJGKXk1nd@}#=R!x^!xDUh$HeAa}l8zDf{LtvAU{XhUY1n{b@LkK;#FB} zhb0e@wOQ>Tv%k%Y)?}RonO~mfUAQT01jb8}x7gOK0_fjm+>5qZ@hK3xUk=N0R(&Qv zhQ15G+Af>89{;6cYF$Bifzn8&LAPNTmNV((?FAG-Y;vDdIGh>T~M< z2(fG_XHhS9ma3tU<0BE2kzJ|2Chs(d$EdC!o>LF{GaNmmiV@U6(m_P{m66K-4OXgc zL_Rd!cbWQ&s!v5#sZwcnh+_4pd`Yt+?T3UCaiMFe`T;-Umq_92k=@B*ON}H%sZ?2H zw3ALFr4t=F-VI@y6TKC|kw*0MfCW+vLlI}Pm1;M$x$oZ<*^x#L_BQ)j%SlB)Px+o4isDp?+*am8Sg3B4wsFP}YZ!SXS5E<4qmBd5{w$4WGCrXsP7=OIT5N< zcT?ZZsqz<*?G*7zeSO(LRjK<)8Si^Js|Mv*UQ9US0^uY_35^0EJmZ}o`7oUKjERLXicWlsErQTt*&pd0;?4st9V6x68 zF;!|0v3M}2F1DXoac%J`)gfZ%8&&oPauD!Rs}VBC@>HomNPgbSl2c2SO5r=D&ezMp z&bixrAqt9h3S%i41ikc7}87@=k!NCsiRw@5#J{&qIU=Bh3lutJK9*uJIF~AzYPGs$cijOdRT~ zseZ&)Yxa#)@ATE0J&WqUe6^X$TZxscCVT`e#g;2G@ph<_8&;}&32#>NgxG_f3p8;- zTP~tist3r~s)_?9G$(WwI+pazD}X%)TDNAI?0+AH*tUJ<9BBWK+UA*yA#S3!Y!fsBI~I;C5=eip@Tlv~)j3w5L<-C*nwor-^tW#r~PU z!@@2^>)u6j^#LvP%52a?S>I6GRdThD+CG`>p*>7(H_6Vg)D~o(3T+yVohaE!f!Owx z%#qM$Q+tV|mPPGg5vP5gW_3S5^C}SDYJrJX^GuFMwnJ>&DRUmQ$Bl=!g^b@CL2R3s zc`vkGVd40enRNd=8tW!=v))YNY|##)I7GxEisy(JrFd@U9$2`7;z=^QD}&g!cjj-< z?nc7hdq{RZWFAh=ted5*)=0Q}PsvUW^Uyc*cxY$PLNCeAG+H<{vjEz~)Lts7Eu_}T z!*XiF@xR8Ss~iVb8KqK6bCrmKaQUVC{h(Hwg>giR87rzQY zm3j_}p0b?bI8~K;g&LArK>R)SVa+7(V?F4wY3O@^v(6G@8C z739N7KhczOCX>DZ;dPALDJi}L@+zm9_9CG9zL{|Af9IJmvGhJK=@C?e<3p?{>poRX z{pBIYUt0fM2NlvgMps0o`i?(`Ci!nOVFW}~I4R*Rr%Lsk#B{nf?W#wq zdQBoH6s<}n<9(^#Z%POEFRUK18)fk0VW`C>RL_uZ)mO`8`%H|BPD#t0iMF>FNT;2b zxd7s+5c}2deiHs`eFoLPhEi5SZ^cUyR;gjsy)W&6s4LZZ)Esv1O0Bwps^1M&m5NdI zks0qYYW6wzn2r~x>SKL_w}ivDK>&v!yi~QvkNC9^E7dh5_Hu3=xu9aWIoVa}MuNXF zjxzycxe+J7G1O-{>5(bmU9>in5i*=)%^coB{Z)=$Do+xqR12xUImGrV>*X;9DEpW0t9n61cnay0Knn2#y#znbXy#iJL?o7P(TSU{6oTj!?ox~a)>X2DK zQkk>J$xN)wD)m0ijFRfr1(`?Ybq-TI|5mJ3o_4#CwB}QiDm{&pbnCs;KBYY~=>UHH zLQPd5FRlNeE?-HNr_fDMK*c=wGAiA7AKm|Sd=z;Y?l1(@MN7&+)W(dy!cWF^qPtad zA`i2=t5jRc&q!m!0LgZu=BC72sZ`ymA7f-k{7hz{RjL4B|Bh02UtOsdVRC$0Bq4+D zjP@cLyvP8>E!`p%0v$reOSLAMG!j^t_-hVsCOe+`OKY>NXWOM9Od;t%Mr7YY*+*aV zrs$BBYz^owZ9W5Nx=?ensmZ5Cw#7)%oZi%&>Tz84sZ_7@)G*eOn*OF{8Z~E|no-nT zXle?nS#4?_7?xxWs5UiclC##+xLG)d>Wh5!_BOm5dC{s=5wS~rj9RD*`{2vU37#67 zu_Tt7nqq3M@H8nW0FYEGhNkf~Wi&AGlN zlj1}u2QJNI|8h0OJJHUPH^%2xshOgYK8OKwFi$kn{V;%LF*WC#vF;R&8Eb`T%vkqR zbAcIaooLKhHKH+NJx$FrGu9T-n6X|IjT!4TYPNZ?+zb7VsJ*Bulu(|JMeW5;p#=5x zY#7<=8G&XWiF>{H(0nHvFDf)YQnSyD^^0iCSbvDdjAh{nmjScPSSg}0W7QFj8LJUB zQ_Wb}qA_E&7L6aPQnjb%EN30Yk6Wqo9K9FWsUGyYj@~oj)K8`AL;Z*ZJ5E(ss#6>= zXw0=ZzyX66U9)Ep9Fkxb?e7prAG8Sl2uB|@2K^Z7hyL46*wO#XPR!9K*r`&NQh$e6 zQLZnQi8{dwmQzHXV5CyrKy@>xQKc#5uiQ}43{hEu!jcFLh|{6pfcKH1~+c zOB05wsp;noN_BD@43$o9qoI=ID%BRM1_dH+GgLa_n}$l~^8>1GF!T9|Xv}Wy@hw9o5v$anRJ|_w)I*_vL?ijsnq)RIuS-5fQ>ikj>EQb`8`49E*ae1)vMK*YBll^OAVX6JZ6qPsq@-qHJI;IJPFZFKaW z377vY^-T;rGAO}wEl2O$(faL<-nXL%F*~V0;8y^8LeY2z(6)Rf8ZRnxbL^Y^RNX317FyxCx_R`l2UTMIPd$oF$ z(6}J9Miq4&h}yviR`{nT-3YiNwx+Y+*q37UqVN}l{t#lr0J-F3kaHHM*!f?lShN`F zkpQL~PRg)LfHEtQoJ91mq(Sylpv*r0aNK=NX9Mr7!Go&R4{xPeQI;?x&n-(1qzNgD zlZWG-5$BbzYSj;)H$9#PTE0gc1ZhmmnNx*T39MSp2CGRwu*Q0QmiX=X{eU9jLFMLl7c#HnPXWpKYZi8qzUev3TB}}1$#_Zl ze(O5b{Y}ft#RN0wul!hBFw1pG@%j&RdG_(&q*%;->W{&~L8i<^YphCw) zNi5VunmrFFixioPV1-8WiGC5PV?PU&g(x2ID|Yqf6!*3ayZ!zY>s2x;htx#~ zH|WSs5P486EjAarty))?x{K26afrHvQE!8=0)q25eq$G9{i3Bx9Wb?CV0bSPsl;7xni3X#*tXGLFw&Q61ooe&~dCNR>ss3y^Aq&$zh zxtYRL2umQ~FJe6vvMO~Qb!Ad(L#cKOGSUP<`02jN+Hol^Y@1NXeiuo+0)-Wx2MqU= zmC`Ph9K8oW?8vS(YaL^pi69?P`d*bDjS|WOGyy_!7X&dt8Fyschmpc5`0fA2zQ)h3 zIwx}b@9Sni2HHQ+M>FuQedMVGM$2@SY?p%aHYvLipoYdiX<6H}8N8v20~hlm4H9&6 z(NBXiQh;-lO}1Qg8_MV<2qLfJr04+5i+&Kw=x+!jZz5MFEEoNED5FW_G(b?UOhUXN4+^rG;?M`>0egvf(f1aZ0EMc)c#Y>|0U&*|zIClDnA~{W}=DhlS=v-(_3~x%eZIP3Pj5;E3c3_u|jM5BvW< z#!hY!!VM7Ya4-Iegl+*;0HOFhSZ+AMx%lTn`8$5wtza|>XlyHfePSe;^I|8vEm&_u zZ~VpH1No@Q`#R6w3?m1jkN$=ra(@Ctd}IzNTS$2Yf%Xw=x^6|F$oa!S^#l^J)ap)P!3310C9qc0eMbPqn+ReD8&h` zgiX&0n&=dz0e};n4VLQ!;+S;}f;eV>L>I@@eo~x|-RSoqk(>i5b|XX|fZxSU5j4D9 zSy@k~*&icDd;AU`tsk-qp=`W9Db22iwhp!DAec<;+EB9nIBNa^C}OLwS5|>en>F9K zCe40wPnxwJdifLI%r$Zcr?Q72deApbhWO@jpcuYcd~kZmT7~49{T4{zPyCj%7TOu9 zXFsko?EOGxGu~ETU<=BT=-@9$5TNZ2*(1P`0~@T!1x3orH*%Q$7_96=`V#=yvp~EG zLUcL;%PMYw+S#EqatJB3#_#a2^>71CR93ycD$RZd+GJ`!hBlwtR?yxI?RQWVzknb{ zZF$HZ3FQvP#b2z`5@n6k`B(-;&Vhz@@t0}V$x&TpA zKEgO;3DC;{6qo±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�$NY)n znV*rL`X!*}6Ht=f&w+(3Ug&fnGE)aXp5+Z=;%}()Xe3Hrh*Txi@lL0YkePZKD0`XM zfW$uqt>twTHK-}tipEa1w^@_$95^_S&~BE1xcj^T*1 zCKWpU)jrH#~tu639r6MdA@8O4=3Mde!^0PvYyO9RO{4YZb+<>y!8t_}c)> ztyTF?V#1?>(iN!%=o0}(&ZN&Om4Ff^Z9kHmXOlzz&eukceb z>}h<>00qjPN$Y6vI&QK8@MYwueu>0uL@0~ijKvNIe@LV!$+kMkLNf!ke4mul^G}>@?AV=+#)v4nE9CWju?;k);rpI)qpIzFw;Hc*ig90G+J0wm;qOA8J zt{+6Bb0Pq6DDqRAkvI~GvcDf3$Leujo768rNfxncfYk|!lJWR4e`AmcFVAd~I{taM zV~Exki87)sji3!B+S_nyoDFCb0JDz$tLHs&AB>VqvQqCLa}u6Y_plNq?(*m0*Zk!p zF}AEt*}6y`nLc(-n^fnYWqDVy=maEgj38|GXZOVn?m56HCfNyX_OEB|h(k_Nob8_z`}#`DN(0FZU|6d&<8U z55@G1nlxRbCjC4Uv%Yv5h<_JQeLN}{L4}v>ipI>&~D?w zG%p@kTWF<<#pf&g=8fWp-R9p9e~fRjjOi*~U*aWq`5N&M^wZCL3C`R57vPKbOgxN4 z@uW=1ZdJhN;?pAOSxld)@|U!+>1opts+d?4bjFA6rj;^XCuw|y5!>X){DKkwYfqx3 z0e~x-rDh2>kMMtoR?xk{UjkzmFocZCu9}{DBvhFmcf+^6vs;!|bO?)2`Pe4Ch1+nB zsQPy|!n8X5G5mZr+4o{cqLW_DpXTEp&EGD;wDCLo2e$7N2JLgZ_GsVHKOL^|jM0A3 z9x7z8U)w%te`L;4ITJgL>3%E*EHm^bLTExFT;wAok%810B-(TVL?OfAA=+@{W(@`y z6@)B)SdQmqyE;{kIi38GIYIlJ95&;5Z3|Fx6cX*)c|rS$otVqV_PU}RRjPxnCRC)c zZg~3@Egdsrb>_LMj_p1MWE6DpyiV=Vkf}YttB>A{%rR7SjPtcqQiR*bMl67Oc50|+-J`_q>!-OGFIuknxe~S9cKa={Ql4CFTWr0_W1GDZvhQc){2(zBOI_DownI?^tut*DZe%TyC!mZQ-0u*7tk1IJ-4y`YKP zh}ptwNPk&+8IoQ;LOL}E3%6I%6Y2fIrMVU}qN*y{D;$beQw9B+CsPF#&mSvwEU-jE zBw2UWQ8Kn?s@ad_*CHs1MA2$D^T%}O%&!>?l50shWv0 z2Q)11jQScWQZmC)YDs62gtJ^9&5T*fqDB!cvt>}ratlEPXN&a9bUEh;>G`>X(NWF_ zGZrh%d^Z^@HHKZ4R(0~I$X5HNsGV--`JFKqO@4GZWgf0U*7#1na^_-$*7}@UYQb9P z>zRe-J@0&t<#`t%)zQyO6n2~2Y2(=L!vMSx#WK1wb&{65~XvcEv{r$aoxy#T@ZF@u5<#;+Obk7^)*+8%0Q;vgPDP5ZLXo^0`H{|0H?SJdyGFWXcyXr+==OE}q^MotF-N&pit> zZa_Wk?u{tVW@5(leX`eP)1A+%b}oT89Odp*?l=tR5R1tx=d!lbTbpyV8D1Y+&1;Ib{KI% zdzHZzNj2$=IJFMtnYElMLCiL77RpkcZxst*ouigfm-xET)tDl!*=unF3AUP=L?oZO zzehBK{ES&_rjz^IPKvP$yG^a9&R#>wUXkA5v9}uur*!+cOtn7swKZFf*DumL)N`QK zzZRpvvf&Sk^bLpuT-|C}IoQ>0I&w(7yW{|jHZwg87R)xsB^YeZpc$M_3|ThBSi3_l z)GGL4&eS-}nE!`cLd7uPg5?Z1Z7a|UjhJrM3LWXJ%_B6G+VmJ@_bsDs{d$(Lg(IVT zf}_&*1Y@FAkts);J;5g>l|g#E2I{Fij^hOgd%9(W*Js zST(276!B+5QbHT@+d8xJYxQYKU$V7CR%S(b+glOffNKOu@5g&6uTsX~dwBHGP?}b(SkM zV-uWh>e5EhIcAAJ*BC%B-&7M^3RmVpY*uL#3nDE>Thtce!hT-F3ZUuMs;NQ)j`ceG zXRSpAEw!>cQX8FhX^ShYI#1P^hS=(=``_scF{>a)P<$ayg;L7h@~Xv)nQe{kU~jRw z8V%XrO1$i9WHBX*s@pB2@de=j{k{-ou(22HJyz9d26gKJkse{y?`ipgZI897Q_4Rf`aV%pikLd;Trn#f9OS4g*%YM;u8_Ppcp9pwyik^&xtan8jLBm*w{#ok@*irw8R#UX!o;h6V?H?G%^=aY*}pb zAY-{PY0kD*3Ube(K?dK6mNe^dUlEaRpsjT6xqhxv2F7YXYU!Nk+v+i6n;Z;NgyHwqnNw`sRb%x^*q?RM5K^Oc?wquf*#TQOE9$E*o=MmtO^ z^{z;rDq^8c_BSb94HHCPGK6GXTqr8dRO)$}ry;LkP7Q zm1Xotm$-q4keix1q?2X=TsSU+Qyc-ecpc143%S9Kqt?v=OBImzkMstQ2iV?-P3=s} zNcfSuZ`-=nTYVy(MYVn1j4*xdr?wRbM!E__7iiOV*+H&uGfD&Ey(dGQ6UVB3 z7^IFzFh!k>G%%eQGHVd6Tm}i8^F}XHaNRfyW2o7Dd?(}6nav|Km3q@M(z<8T;%zEq z3;WZBY)7ZLXAo?2(oCitW!y6{$BnYc;JS&%3y(2U0LP6QUCMHyviy&8LtrKot5;U1 z1TKzu7#t*7p2Yk_{LLApCt8DayfRTHD7#^zu^Wn%nKH?lDU+R+ZaOz&KhIKEH%Yq-W>7Q7?hSi8&$swf1MMnfb2du>atlu zm(5CTzKAWcN}2Zzw^@Rt{+9EwG_nC_nK&;_n#W~Lnro)jCG#6SFlMiwP&2lT=}=^| zqf9ickMwaFhGtQW++%jSFy$DrYa4-x(a_G?5VEmpuQ<}d<_c1-k(a$?oR#&3;^POtiI!SzF^voiP#)aFtW`;6aIsBBy#U ziy`X?d?;pl=wmb`S%`(rtOxE4i7cGv{D{`;{at-Vh2s2(%On|Wcfb(LkAovkKz$wJ z6r74!9BS8ZK+~fTu1+&M2gg^~w8JCtteEMnh@fg8W=x*LB4yFo;ZZ&jak!{%Xyy^l zI}{B*m=$Q0B}?lFc6M~!MnLR=)0KQR?wq68p7KPnz!-}mp|7K()Tm|c7`?J0F47_Z z;TAmf1Z$e987rBq*Rv_lFGmx`HI<86i7ikT4KgHE*YQ19Z4 zxMZm_1<3KdNyf!CS*;A>2-B{NDZ1YxTO5Ux(pM|2kv#ZN?AG42Rg!_DQ#iKf7{jSl z)yC&@n(|4V?v{dS%FzTTiZQE=#JbRi9a)kz!#S>I#tVsYkTN2UyX+J%Xm6A_8?DsZ z3Rnq^X{-1QABt!K8He(gnob7H^XO1fs!b3ptfrI4xz5W{>HJNIZJ4&qG-YSzcMyNm z0%iYKIcxAtWydU}9a23SKQ-y=c&)7w?BV{hj*CfsbTNs>FbsDQ#Q?pszg$e!DLyAr zsaOxACl9b98fGX}b`~uptcXTgs@!E(Li8xXiDG3iN6X;Zj(FusI!Bo`=PI)duS=T4 zPAi>Rwn~{et0}aIThIZAwa)H;&E#RQLM@eckyg9Qwb)3TX`g}8>tdVS^L=F^UJ$|J zxf5sFToiNCTV4%w_@lOKi0!Rqs)CcOO!ZS#$2vlE;wtV1&w7yY_AZP z%ay(|VCW@L%(n=1mlz9$M@fwR;XEVsDzx;C7|9-g35A`Xrl;-@ZdR0uGX zlp%8ynq&cLsGFrKBODaH?;|H|3}|7c9Wzlr0v<9^J^{K&sMj1>w~Ft>2$*t`Xql9j zowG#7T8%Rgn8X_wU&I}HVCg;B%6e@8?oN3!y}8R*(#MzmVihUw@Q4ZLyFqu(5m-RX zR7Bisd_Ve>3fv=l@X4R;wq`M#NYedj4vinAS!)k~NX4cHW0*YU^q*OB*0TAUbH!0J zC(D>QayW(bB7Wv1l1t`)7&~)XOU;*#HbYM#)}7}v6;>x>B;_kJw6jAn6R(R={2Ua# z;t@4vx>>bh=V^Cii0o&|!HeM*jDm=H0)o;)W$#-35LB%3{ncr=uW)!Ugf zv2Ym-zDSekfHV8VB!Ssy77$Z+E2baUl!Kh5GQb#7@M1(qk7&k=Vb}UYo!U0G%0OKe zH1Hs!_*Lty!JQt~n^I!{ie*cTp=S3mjHQhcaG0?`4mU>J@VLD;LMiU3Wim3d@djIu zpb;|4Sptz*S#)`Y<03jBqG`YNDPf3=G7rotVNpfL>4jDv#=3S4^6}AK#W;-&S%HD4 zY@idJaWGz40TYxJFwt27h=mz7tLDKZu7!ws85OB=rzm4VxiF00G4rB0x(YJhIW@XV zKSiy;r@9sRG`9k47Y1umhsgM@iXBLb_ZfC#*+p);6C=I)&u}>+Sg;Tg{W43lG6+&p z4pL>#av6LyM^ThbFxwS}14B6z%H7I6hf~_@*eaZ@IhQs>rCECogXWn9d%p55EHDUU zu82$(eG6x*rFo$l5(}-SjfUgEW~r=oi*p@2Ve)atB(hAYWe+Y3WlSp1dxPEN%GP%= zVRRZa+I+Fpmhh2vnIo}hIh!-?vQSH|c37AtY`NMY!zhcIvFAi8mDbOV?5rhY1q+az zm1;}AimmE1qHtJ5dq*s~DvZif7Ajp8O*VZ8eUTn^d;^njk#C+z7;mCl} z;JJbn3Xlhe$!}NiDuJ1a+v1?GG9zf&sa5}48ynfk7OnkpUCgjZi*|9L#tC6L7jN`54E=oIB+{SrIc$H4T*=~l)paPm#2$j>FmUvO1_mo?J4O@-5K%z7@E5( zA6Pe~Q=*FwVjpU}IM=zJ?PvTvJ>m;ifpORFZ|tT6thLqC_>p==4XoaVbF7-0w2v}u zoYyDXw!Agu=8`EBF#t?fn&(ISK59D>31pa_A2I|SY2D`&4;;$kpMIJ+>iq%JhuG28 z*1*un=mRb$0H*{=#mhrc29URh8(U?#F&d(tA7UH(;Rs_tjEY!HVBu(It;8Z0WH0v5rcVy8y(XbDv zXcS?bG!vX7qxB=GMr`5(XiWwsCu|eG9w$-Cz&R=Ehk~C+X*Z`_#S((^M=e<#OWHG2 z+@w{4PjljSV4JDIG#HL<24rbou0}v_e$Q?xI>Ka}q~ZE#nn5tcijLHRa0p+K zUFmEoghPy@gBFHcP0v${w-k$-73r(4asqMvp{TC2iz;mingkbc!Ic+=E;KuMp5C|! zi0Vxv#a@S+))Jms`sq&1_H>n!Il$uh`Hs;ei=t1vp2L z5mNer3{cs22BxQ8?@r-ehqllsqKuf(&SuogP*n zW?MM)RE|-cZS6wX&MbuOqYGgNvts7j_Apec#g1mVg+D-z1M{gzJ4I;4W4?)%bau0k z+7he1;+3ket7}4K;IxC&fu`>6Y9-#!!3?BFe7z}fTlv=f1CC;N2DsApiWCP6-3uzR z!G|{>offKTIYNs!eX(ikXI4lP0+Ly;)J}i1XgUKxvytqIyqaRR_VEL@j!UXK=L^t_ zc`O)2y2K>-S=vIrZQA&di#aR5g!U(-4^9=$2F;%lNe z$E8JY#>S0~<6QwWu;bFQAUG$e7)$ic7BhcfQ7C*)mx<1}fagJX#flMG=T6~@Q7tPD zYzv2~R8ss1t|dr^tYBFfHW{r3lR`}wZBVEIQiC{$N zz>$iPGFXDpkukVAJ8+_cLq^4HJVA?{Rm1nY8d)HHi+~uC6Ad#ZDEIEAW{4NZ5O#)> z31%!~&}+HPm2-h-b5Vu~VHQ=KrARkXQF4VHT+|I~LKzi!F(!H*VYRgc&P&^uHzD4n z*2Oi5$*_jCzOvBP`6_C~cU)Yz)Jk%J@1$HChZjb&j44P@1gWRIDqD~~30E0=eu>ZR z>!rTh5wF*)J8uHG%y-*h8WgNay~ltiIcggs)zcf{Ov)=`!K|xd!7OW1*roiM$SLD% zb*O8jMBuFZ!Qx(T16~X&nTe~oa)WhNm?iy29RkA%TRr26DSG5)34tM$gx+t`fv{Ul zmCnFr)X2DLZiS&_gu%U;EU_U@Du#=k$#}c=>9`k=(*lO(MP%iRyEDyCa#zf+!Z1u) zyhwR)_(HPsaouCBxOtYzGv>e*#?Pox@#Gz*83RlgPD`oIQR@7h;DvJD;}2XgWVbsCAZknYboD(>oA@ zh3WJUyw-((phGBuR*%|ovLZc zK_N|59PRUh@`kxf%NxFN02Vcl7&5i-_&S66T^KZ^a+zkc;af{`ReR%?RDCBls7}wV zoU>%U=j1Ok&fi498C7%VS2ixjJ1>n@)q@vMlovP7t*S#3cf&1iY*<5NK^5Sw0@PM6_3**F3XIL{ z#)fi;KJszFC3;g)S39q2J|44hGNycSRmE)3P*uwuAe1-O)gWtWUBg_3QdPHjHqclv zz<6qGs4TBx<*L}cr9=d1!BYI24NJsUhgrNx*H^J@*|1@NBTMJFI#mX1TqN|UXNA0| zp>keD-ICfy{aD`6P`-R_d1JYLo?l%zr<`0x#pImstW-9yx_myn4Nz5WRby3ob=BFG z4YRAO7B>o9(OF&9SlM8zSVV^Ds^=_ktd!>Tb8UG|<>LDC3UY!yvv5|Z^IURqWA$vQ zxv{Q6_&3`OELarx* ztFN3Z<)j6cq%eRw$fQQ9s+(JRR+Swlz$+W8YE11l<%V?&$`>!tMH;|sovZ<)t7^5_ zEUKGxCP0{kEi-0U)zoXjTLhk$SDO|VLxd{lMr3qJgTbrBbgP{YHk@UUYbqPdDHxWJ z`Binbc)%tQ{Hb0(-#*Q&6P^g59E_`Ms4s712bfb+jw!rMKVZJsE}mD{K!!xn^%Lts zs|{5Z>=WV4sj8hvg~Z2-x@r*=rW@u{(dbn9$l>~-zS7V*r(ub3ktp@$Rc7uqLOs{j zH@dzouB%vB*;rfGST(Q83|*S?s&A-ktV82y15#BF9#+nSRLq@SS5HbImbFW2DnYjs zZ%9$)vWiM+Xm))gTL+rxY9!$)n?1W`&SG#FdI1^Gu4#`IOF7{w(GcNAgCv>22N|;? znweS~N*4dI_t4K3D#uNTK}#Y)B@_f&@j!(YdbF98v@Sine2(rVYlVW>`A7|#S6x?5 z`qh%aoH>i3nkqQ@$a8Cl5LCyKvuDq%hvL?~CY>B!AkT)jp9{{;t|?yzy-+p3R*;}r zSQr4+ZuRUrRsn&fiX_xPPDQ(*9$fYy!#lDE{a$EDsNftV9{)9&dR~GTn892InX$OO zvH~q(uqqZb)YVFN7FW%mt=A3Rr3z%#mRAe4l0p&IBa@G^5LvV^I~HJqR+GV`i_a{` ze^oJ^LY`4y6%`&f$%~fC;teExx}~O0rY+c^^#Zb~f$FQ4DXoG@APWZTRx2x(OCX_y z5`o$CuzZ-Mn2SJp^?Z(taF}cGY-q`|DjODK;;{3Yp!eY1-)^TVv*!Ly4pyN2z8TUPKnH&~O=oS7H)3AQHogyRxLncc#y zM6h~!5i%zPtJ^eZWWv&x}SLD|V|;n9iau>GF!=%TQFQy3(YOZK8v zyWq}nPneU~gF<1~MDY8wi^8#qHW+g5s! zA7%$1WHx6W8|DNLo>LU&CW^vNMWlLQBDj2I69Aop&wS}ezu?l9MLI)Jj$}qS3`}cJ zy7q=`_lDu4iD2#?Fe2C=%xSYG5zJ}IJSps*2wn+UxJ|J09LWf7%q$8+FndIJQX+Wa z+&#bwgYz?`<^zH+m+uMNfMb~?F%dkJNT)Hej#Tytu36a>9)dCG(HtI9ggUwLDuFBv)lW^Vam1eRz--Kg5#Zbbm@v#MYQppzN%;eBCN?L6QAOc?YY92ADLf!J zvWWlY;$QGLc?|Q%HHGaljA61FlXX%UJc@rfI(zYNQ@9_pD9d>o`|(v6pWrDEEi{E4 z6OV?$8vH|i^Y30f+j5-3iQuo9$uWuGnX{XM$3h5$hzvTj9ukE)9NeC4{&rIsBG5kA zwX!)p7%h3hX3%tS@CIn=145g^wtFBeVL<}InB0~K)?)VMhq%yuV@6Tt*l=|4XRjy` ze06S9SeSrB6(MI<5liF-pF?OxzTR7zF+j=Jrd60bqG|qPnc6QA90_riA;9lj9=Wjz zM1%Y9czZJ2hKFYdZ+g&Z+344wydvcE3qHd{84!GLSWzZoh6e-}PQ^&)1iQ{H%EV!# zMDQa_so>h>MZw45ehx+{xhCv@F~4d#=xrOePXx_}VUU7dr-{yK6Z{xzxNTSvyaGP; z4K_fD;NAQ-!QGgO{Z@x5vtO8z2%Za@kaMfAo4<3pu;KHS=v|xOB4ne%MDSZE4M)d4s0F+tN0Py% zz>%8nM;A!l=5wRC_k#|AgL}fJR-g~91lRryf#?Uth80PMI}AP~(~uQhhrUAqa*)#m z6)brhRbHpyBb7%c{*n_Q_z)E2g@**!uP6$S#U#uX6_S$(?md_5VBcWfx0meTOUQMb zH8NB$Llmx{ZeF{pNa^N8(6K4Zc??7D1@}UNGO-+h6foy*KFI@A*g{MQMRjNBAvNwV zdrc4QOC5hlN^e;CN>;;KAd#Qr5*RW3)BO4RubI#X`R$&Su*^Jbl zj3n)d^_$`>3IWOFmM-=N^gX;01_ccP?KOY6ASlf)Xp_F?7uFYx+a`W6KOPcV>#7ZPl`+Vp3I(*ir^1{ z8qD!6O}Cy$}sCct4>5ijmTJX{Z7sG zjR9`q}vEK1#;2xo%%Bf$KOfq7VlP6|&8mKVX6_&X+AG0dbccqob(ll3c9H61fM zgx#})7rf@oj#vk$WDN8%58DM>!i?dV)i5K6Q7B(IyBTp2-~SvYai*6KL%O9OIO_Cm z#jX0^>Smp?{vH3T@UB&t>3`V2s4F(w zomPY(;_NrOHSNWL`!(Gui7dUj)J{okBvl4?p=nM@mXA0krMieylF!yDi3hc*#$FB^ z&!~fv6&nX7&{{Ysx&4j!YU%h>J~&jxHq?W2UNVoq3=Ou(X_MAU%}c+88douDLN$&2Q;a~m2jAv`a*bC8l%lhdfCFIG z#f7xE7Oaa4I@q|lP@jew7Z-ur#RZ^saiIm{A7WCuxKwHAKQ-2e|k7rUd~T{hdg zyEHeHyNjfWy9;>M-Gxl;?s9_=ad)wda(AIn3r9D^C+7AUhy{B0oqB;D4Qnx*mm;*= zlX+^Gn;jhDXAXoVd`6M%Xh*{bK|AzsVOBOg7x%()gW>aQ7<5@!uRA9uD;pJN2@Ja5 z(qv8Ehy8FTR5)Z0%5)0-i^EYThWlgT?<@vw$7a>e8LAyvP24%Bwevc*1Zd}WY&s(C zyvp4K+PM?E2-QyVo-k|88`b5L7 z(Gd7|Sy2BQi~(8cqqJcm`o9q_L`^%8No&B;CZfxlS%EhXKWCCmtBb7KKdjxUw*yA0^Zb9iFzJ147G1 z$Dyc4Q4gYdI&vB{zffno1ws8DvA9|q6v&Ah6sSL~eNpVy2v1cqo+ogGCJ@1zvt-^p z6A~qb^On?NfsoLirdb6L@X*2#1f>%DhjD;KhRLeN<>W~`po+HRHZ1B&w{vL`NjR0o z)67~Lm=Uvy(Om^Fc+unKDstrV%<+p?5*CA$vYS8k7hKC>FG5PBc!hF*qfiME5wA2WKqbL)K^zhl$I>6 zTpT+j0$}^1~xCGsZHPSaTB zkX8*d+YkcvHUvPs4M7WL8^Wa8hN#lYvKJD}HUxb$+YpOmw;^f@#wvf_ z-Q1nA1Af&%Gvl&4&I+79Re;;1# z9&ol^i^Bk2QN{T<4A46~D!2_E<-WnCVKdR>$N;f$WFQedhA;$B5f#e7(~nl{K>>uC zcO{E53xLa$1HDleCkOt=%Yuo)y(4Edz-VmUhHI(r1N|_HTm! z-=SLOU?(04*bASBj!WFZxz}RSVqWG3w_=v%<9x;5Weob{2bT=xbDQ9=CrjC23#NN( zvlem5;NBI@;bf?gBbvg=O_?JZG`tAvg>t$bA@P4lIMgVOgbOD46!BNifuh#tKt4i> zH&72%>Mm(D1c7`AVJZm-D!l~ip@k$K%L6W1*%|#hh2h>u9}Ru@k4lrzCT0x3uU4ns4VgCRJTaeX=vlEkWJYi4Rf#I*ol5CSexNe$waR$=`bWFHk zHe5iR5To^ilX1={Kv=yukLLVX4vMr1o?Y6+jG!5+hkSh&)2BB$dLhoyApYJiIDZ9{ zWX`0C!nU`;gLJk@f1tt`dLPM|h%$&l=ZD>bf1J(doM2t3&OwOJY6nzBet2~7;WAV_ z0>g9k9)!GD4o4PvOhQI{SR(imhpdEzizy!aB4HoXde66-l%S$jt-H^e{7r?Z;ITU8 zlR=}&?RGdj0>RMdLIA+QpMRpWWK~m$Q#jAyY(jP-0H+eccCZO3;0KiN5m>Z_i9pLZ zf@9}djtxo#|1uoA;Qv1y8>2Y3T12XIaNaper2dr&-n7Ce9L+kWDI5+y4JitT^Op<< ze-VmSl7(<{6IN`IthN8&<`d)sx`cBNZrf*Yye4d)tcPXOEWJZNVS(&p-e|$p3xQIM zJlU8&!&{qP-+B4^rsXG2TnjsBpEL4*m^j*UF$3@aE^$^WsF-LKC3pS@1d6&E2J7l% zS&N=UL?aK2QJV`x9A@)z;A%ULm;^g;)?~Xn(e*1}1dM^)vkJ=XHwbm)1&fPpfglUH zcdSB%D8tfH?dvEsBD*;}0V~vaXn8O3S(s#W~!O3vi-lh%B2p9y6vWvoDSXzKdN5 z#S+I|^n7k@+tC+iUILzs;kJXPUf3MWe>pH^_GQe&;uFiG!NbF>!6J;>Kv*F`#_&Aw z9LER2{U)TENd_y&`Mx+Ic6#)UoVyWo{98~UMy`qi^~SDq_Y->8`69NR6S9Nd=RzB{ zwna;TBf)4YI}FhI8C+cs3BH1&JQnA2pE+j_Y@f%lR^Vt8gthhko29=s#fbVw1#cuF z1`jO3{!eY{{wMW=;>iY{5gYoHW=annQO1EY9;(X?KH;L*4dQ}xkPx=35%nvWl!;qb zGJ+d2lZ{wCfYt_4!~l4CFwpS-Y#d|0iiK~-0qD|jNYJZ@&mDqBIjPqscoKF<7Om1Y z_*Y;sY97TTK_fwMAx<8$(%{EDpas00>3G;iuV{*pUi`Es9mmof>7T_(Uk}pzPr_N< zCLtdu;4-0Po`s2^dhjlY`S0n#d8Px;{2LwMYXfD^X!_qnAhiR`@L(dC(Os9u9S(4k)zR6#A?^L$;q` ztF;Kn25}Y{Iy*CX9mEa_Zo+1RO6B9TLF{U%z7CYL&)Z{fGgSqDS=A0x)%uQp*fBeJ zAHJPLaOv4NBZ*_a9jQ2Rymt}L%aagH?y!J4chIWsB>`_G_R)rwQVSD_qMmOs_<6mPICmrTX;Z|aBx z-Hw|6iKB=eXsU0AFAK08b$sc7xM9xJaL`3C=y858H~0d}oFi~|y;A<~Y69;Q0zVM~ zuOWdifk3GSs*|h4ZyUb3t*NT5Bu-}jysnx11^8spzh}|Qw!wc1Pr6`P#wmDV8+iFh zJ0benx=07VO=BPwMZu|uRPTR|Cuz4?w+oIi4=cyx9dR^3qW>J>-Op(WyQY&5f#{JP z{GkRbTv<3W7!36he1xO&$PPYQT!hRH!A2~fIGhh1)B&!5D=^Hc`Mv5r6Ta8h)j`g^1UdOuO#6!>Y4uzhPMOt9c= zEY+0NH&AH@^x*b9)cN~rfUq)jLTj&87a^gi03DyXD^;&LW`<#(?4WCNMj;LvJc_tt zrWYc-+48`_HypG3-?NtPegPFEcLzpeA^-pINP?>K-+0&kf6rR-S@aRHm$ai1P%ddfaNsB=|37io zQb&UjU#r3SN^^b!kLgiOP+_8)h-3Zl;mZF#TFY7~?KR}D=hcLsSJ*J;7F0 zM-N}-{#^4Z{TO7S21JfQ{vYnn1kUcF%J;WZeLLxfgiZhhp@o2exB%&F1O^?F5G38% zNC#Zz&1-KuH%Uux^pX%jgk}+Ualr*0!F^m1SF{0%`?!q6Wps2<85MU08^mqY_x+vv zFZI9oe|rf*ou?nt_h0L&Q>RXyI_K1>O>t7-1}XQ*E8;d5R=85$8dpeNDfh-nv~jF= zrF{F@5?^l16<qj0)1RUrVmO`yCu=-n=%*~Q4DFdxAf_l}Q#g~c zd%$1mT8$r(Z4-%~0U|)}2wpmJGZ+}&iGRYjz_DfrDJSC}R~qSw;xJKtmu&z z)MMn=X!#X>jZulfuaQ!!BL| zz{I+V@2Od;$*e%uZBrNFCuqo}b`XkfsCRHcrnBr^0)<8%>48LRV1Os|3Y=C!c2 zc&PU!ku4gyI=Z?)5XUGhgxC(fWnb zH2oXOtrIZVzm4lFry(VwIXb%GYIJ$$ZE`nAvpdJ#B?Hmd zailsfwA|=s{2S3eQqt|??+k9gzkkMPasFK>^H9{dx1i!V6!lO&f(sE+iU;3LnS*An zKoe7^d-AAnE*~dp23AE`JU)jC^EmI75nT??089vQg)6|0jM5z4Q72046B|a|St(ou zD(FOS?v84!e+CAGBN+E}#e>f+a^YtVz8DYE`~r!w$Dk<(C0y{Q@b_>9X>d2&NSfUy z{4u~a3foVh2z&-=!at&*RlSWA-oR+*a8=v@buW{C>oeGAkW?FVa|i&><1UZG%FUhW zgBq?WHeHFWm-c4k1ESa=S2wtJQ|zsv>bbfngxP~ZJZ&@{dSvE_hECHn8DVkOT~Gw^ zIT|*poO=Kx8(D|DS1`AY?G5e&%xI0-X>F$#=Krtg{gddm*&AoUR^W_bH3_x)nT-nbRa6CZa z1@1cfIl^55>W*IlL0{47|-?Etoh$IkWO!)Z+ z%}JvvAV)EMrgVjtl?(`%ie~^Fci$UF-8<2GN0cYJsA??m=E{&{RA;<8-{!53a*1dwDHP66Idq36-zRWG&x`50-g9vAk0cuPg#R z9*U6m9|1&pM~^b9qT34aG#?`@il|UgIdy-_Ls;M*r??*0e4-%M46%^zse{BJ=_Xf( za4Huz25ll!G@$Th4aY0o&_rYaVebjT&oOTIBVFeV*u5WOsk=&ObPzF?1mg&Xz%03V z&gvNz!4pm_9^M3N6FWcB-HflQ8heLq?6dxnOs*~dhRh;^dod;?LJ%?TYw#|caXhT` z`pd`N{YLzBv`$EAb_5{+GcRY3*&c9xQ!pp^O@n(F-TF9QYA=MBVYT{g9Tus*Dti?P zjaX7;W5)<_rA0Pr!1N*Xw75^fPM2&l?9#zZ_YBWC{|mZ_IVb6~^A5P&Gvq7vUo_N5DaI*Um9m3ji5S!Jp)%6>~Pw_5cC5Fs@1E}73CDt=Fh|Ye$Mg-3PIA9~Jl2VIe7=OxP;=ZvkC&MQ&aKC@~3XBn%q7pZh`wanN991q%UyqzSJ`&tw|ZOz?d?>NWm8O?_>tMD@Xzq z>+oeP1htRBifM$?X@^l>v-^m(`zlagz2g=aoRe@okuaNZ?tr6>8Pnr2_*pg(aRe@V zOdE2@Oq^Dlc}Iw_A+kET6If2T&O9sG1G3TwfqNP$!#X(9ZIVP2!T(t;l5nrk>VAlS&^P{AoQk4Ed>=dr7nag>jlr39gu+U8vE&QVaNv5>a}+lsj47=SQ?_|~!t!I&XY z9<3Q5)ERCe3IDa45wm}fFKP=~T$h1ad$ora6t%9Q>!9nDFfQ}p?Qp_$OY-GDqQ-ziZ5`J%>ppC+@|uNn9#HOgK*Y#&z5?2KETRBW z#O^Rw_YcMfo88xugXX(8vHT=l72L;>nZU$DjZnplca1$tY{tY~;`+ER8odQ1?CFh( zX?EXcK@clSDLS%b$a3mysLs8CJ{~jc`_|CS&r3y={bWl(wvRAhE$+2AEBvovMJBU- z9U-DpWD6G^3;}O51iD~R)>!*zKH{}6@ulE?k4xWia*sEvT=aKJmEsdOK}IKSEFN}c z@uc?RVQcm86K>bmv6q27ffI;+>o{f6?MRz#2SP=zIuCwwH!?Dt$IX6!bgxIm$WXL+ z_lLxbzw})86buLdIs;ObTb9neS_Icym0S03GmWTr>f0!zIhH69{l zJjAe{e<>sU24}H<(i!4mj%ke>@XQ%2a_NEN;BiV-V8`S{5s+uF^;GPro@rz$lBi{H z=Xr{~aXWPOdb)yZzZa3^e;e2SD1>+79Yx);(?GAl7qTHX6xom;&Y zLhQ_r;iMc-2uzlaPST3#SVSOWjF{>JvbjF8L&x9M?#{_R z=b-TzPaHSYRdB)Suz-J$Sitk2ry#O{0wPeQ!ho>VRKDo4V&pVg#vW3S63d=rz1q`;QwPgIV^BL(HS#Q%98Oo zohT$Fql3(qk~x&!e!`gPa^424RpM1vZZ&Rcrg+A>>BrGnPphMomL_)X0-;h0DSxDuu!S8EjR#bd54y7uCe+Ux%hdRtVC@FDjt^e@tB0FS8vYa<8V z6zgMkQVx~V|BP<#MW*9iz8tw;XcP%QNdN)U}&ouF=+~J%GXPt7ddyIpway# z8r|1sD&{EH)*zij9bD`&4sYD~aw^BT;QokO`~)(tqep%Jj_{Tm(c9sbCs6k1a`SvI zA0#%opA`7Q50s*)sqS{tuB$$pyB9D=hhJGd>{>0Fx1nc1jGYNo*AYp4wz~#Z!YQsv z>MZLATLnI$lzbxC2a{`xF_<`(yLh(#@7xzFGa>tgi!+bM>yD#$z?4-i~6tt$0Gi3-}gU z5lWmm)g+yUgv$sSuz4lN<6Y+dXBJ-a?eaYr!D#C*ev$?CH3WT1KgN9pOrHP1cg2%zo#3u%=(%#u%WA9*_+dG@Y|C$j+lU)cl7X2c^ z#+#b!pe4Mrzd9f(kRZjV^ab^CT4kE$!5ip!Uo$B9 zN`D(a0$Nz~%a|6L2{Yd0?ii$@8qC3l{(8Ll#g%?^h|qk7dnX7!+P!NwJY$`|CGcc! zz!0$FFeY^tG;jic3+~eZVZQwU#8m>C;L7Stp{&QcAF;Y(l4x{)Iat2+$oFt+H36e9 zKDNC$x7}RP_+m=6&0p+ICMWYITX8nBE_ajEAY6tRpCvYav;L!JHoa}2iNEB!^o2Ztdy3>rnmz*el7 z_nQUS7(%cF7TzDB=R?J4;MZQpjkbwL9&t*h?(c<9wj!R48=E@B-NoM53}-9OI!l1w zfu_6YK5aV}_*lnQRe_FZO^73$^*|0sKn|HAM`-0f2Yf8A|uNFFa{0z zyS&aKUhpQitNrE$a!+`6a+Bj2&Y*Y{K>OXiw;{!cH%?2U`ugRlhq0~dEQg?M2aO}$ zuPwp+6i^;NcPz3ra1i`DD^!}3_vm=|%ICJ3mD`Spv=ruO!}J~x^m06f)k(3qn2-oa zL}~(q9BcM2lf!|3D=Q@zgxu6EmJ4%&4JzT%|?s8qN~;nF!slj$oJ{PV*f1 zGLn;FE^$APCQ|b(YB-iAwK^EO&V_ljPdUT$635j^0qX1Kkv?P?S_OmE7maCpR4<>3 zS}QBXM?!vMMn4fwrBf45Q-amEC&q{dj^$~ElvUK6mGKIaH++N+AK{FGss*FWO4F#- z(xhbj1;*`$b5nD9)@bt+uc)Yb1gw}!!}h1lL!wzTY>Xuo<}s>hJ!+JNV*E2AVHu7M zikOXS>DZKN2y6VZ!TL;H&8#0Gtke21veUA*aV0z`CT+>9Sz3+xuclbMNXrH$7Bpa0 zU<(aI6@uk^209u$yK$j30_9e7zVWR@i$jlV39BiivQM~~XItt^A)Vp+Mwz@vmCfPM z$|U+Bi=hbvnB1usa57I@JTH}L6yx7iYxkZzlYUk%l1OV z3wGeU%(beD#trEp0>22sER=aZGKWY>6An56-9U{8ZCiM>|3-8j&Gb|mjkv6gT*l+H zxTnBrY+yDG+UA6V|68>FdC1v>2T!EpjnU#t>I!CNG^S29#ipkT_NzvNjj*N3 z2{yZ_4l^T5cs4bCS;8PncMh}viLF)6qxR@%HUu96Si+&w=@t&y7|7YBJ$SnxZ?IDj zTeD>0_9F&o7!DYMpJ*17En!d%c%E>xBoISwf=49$`8A(*FkKEOaxsA7Epe*kV#Aqk zZ@`HPKRBz!Z*LWKJ1c4kel6*1 z)h7lVFC$P!xbWHOE;DA7mC%F`mh#g5gLc%U;>?aE>hr>$Wtyy34&#}PqyliQArnpfX+jN4x=E?9 zCR@(JFlGE}am#C4WRf{{3DHv^(CJBoQExV$F?88Bn|4mz@4jPf8~4$4d5$662XcZ& znInW4w}@Lv=6V`+r;BIn!!`z!o3cE|Q@Y7!F^@5-OgFBYXPNAx&v4ILn=R*(O67KUvEF+pg6%mci;O9sO@$J7f9S~Vf zkh6pK3w!bdw1KCim1?{z5 zF;V+vSaC#oWaEjKY*r5vk0M|l;U1hyD-~2%d2Und(gq4GCMs67lCTgBLySBc^Q7~V z;e?Y4;`rz1$r00L>zWDM&`kN3>_Su8LJuI;_DlMW_oRq1*xZ2b{F&c>@l-_mSysPY zAo1ewZq`7cotUE3o#Jb%)8tp-^+rVkLbCosam_xzv^?830pF0Z(&#eODMpNV@(%xo zqa6F2lD;U${V0-E1BN#dt2i)=+>^}&r|n0&$n)@8^Zb@O-h>zXBYCP3&)Z;fNyt$3 zujqH9RSLT8Sd_CKV}(zJ%vLQs=63XGugJJliBZg%xWT=q^tStCIZJXh9HJp|y7KU- zEqB9QK4FSKWHcMc;|KA3JzMa8G;Alx8}Ta&e)m3^Ml}=OE~P2>N5FHBlU2IWyQ3s` zfa6U-XHeY^^!G&c*mzY1HF=K8X=}&IaC_a17uQ)i83xmalXBj*==ft5spOxz4_zH- zEsSsRcN*Da!nh=l_<6C(o;^zglS~|XWukZ?=_76-iuW^2OB(28U}t|{nTP^Ir#@$> zzpu6RZyT57lHQBBW3NC0nJ5y9J&+9pQWXP$A{ObuSNHJ}{BK3?AaF?(sDrlS`}>40 zs1DQtfrk+}Xx1WfSdb743K0hsptg^laU8Fk0L^y zyl0~NMtaMG-Cb$S2m?nimcGcicRU?$`x!A$rK6(+$<;_xIi zmAplzr6@9sfcD`@C?M+P`7)A$HV#kX)5Gv2pv5o6;2B)fqVObwo@~OCP&0Uc%EJ}E zt{laWQRCe^I-`dIBaFroNqnY%(+QB1h$aF*ifBR+|0{WL3P92aoP4`HPsorWs*K;@ z%LX9Pc&mbqkQl@>iD2AKSRGm;L=n8lzvM{hB~f?WvPWMWtp^AT^@qwa=+}{B(9w0g zUjLw7DCaJc{^Egi76CZRNnt8V`z%4V8YUawN;6;?t*uDyg^T<6&@XHaI;c#KR0oCHe zdq(*&&fhlv+Nf|*-J>Dlll4SEXjG&ThUL-sapIZOyR*j;jz%wQlSDPc-Gq1GA?_wZ zRvhI%jyKzaJ3z}`9B-fOKFH@$Yl|nZMSURa-#Wbqb96hQo^Qtc>nQhQZbl!j`_&7u zfHE6I(52^t-4_V{+(eCob*pu=Zc?8@4F87p#hK>o! zfCy~G6mcssTsL#ye_a3J&D;KwJCwIZZw)IobA3kYrHsneeneMZM>8f{h0gTWHh)N znDNbk_B&|rFg&|IhnJAP>4z~t+ZXzAVVuOrx_9e7f4kKqHu5!A@FToz5SMIn4;RL- z6%DxNDE>r50aoW*gdwrsxaxZVyE_ygy*EE^98W9*1=m#&SJ!S3+{+M_aA687D`V-FmcHBWvH|C%Jr|fDeRhN zJo#{u!5ekQ)&X}L%%TO#BaHSNP>i;?9~P7&M_H(kjAFz3StEMPL6=Z|QE1c0EA3L+ zul&dLeAGW30+pihP&|RZ1Ty$`iY_n@S6SVUm`5BN7JwDtE)Yo6tw~~k>%9gTmAj&7 z_rDd}T>NO1mdO1n7Y#&757cw(qOEue<``(}0MU@#w1pXa1d3_G3-ibDstjLYQX7bv z0ljJlGP4?ap^3%GFn?lnr}T(o<62ss>9&k-sG?$22V4Gi58}KTvfLz1;R*}ifMQ2D)D1xgNVwj&pZ*9!vwdk=b zV%oPwJB-cfcr>G|*SrZ0dzcyoF;AFyK1EP?80!AVICRC)7u1Tf#{On-Sd5C_LgKdF z{-z!_<9Aza1liqoUR%3L;WlktQd9guw9EBUE!gBls==0aB8!g)Tv)Wv3^r$TuJAEc z9FwJ(D%uq)W2&6UK7|psM(8Y8bvsEB0Ten*^)}k2B&`mG&eDGIM@)6vFUDtyI2+wZ zck6q$`y%^kcJoj!uFXa$*Rca@T^z7wpSSYzNx=HwkHz;V7_fGOqhii&E5(ws8w5zN zcPAr&>2hDRPh_PV17Qk#+w@nB?GyfT(&OZ5U08`sStvNYH335o-Y{R>?t$6k*W@7f42*c8faThP- z^BxZx(zEL#Jp9dvbPN_Iwphc7jH%ptj8~Jg7~9zd{hIQ?&YJP}GO%jyu%C0a(EWcm zq(c4wcSE}O|F0p5S?(=Hv!pkLxOZ9OO`$Q~6cS&@!~Rc?*MV}LySt+ek^F(i@rS1M zh>*_Duihg`1+(vC|{Sf^J)d9yqXulp6c#q zlaZ)B!K*{MYjkfzG&ui&&@A37;sqhGOYXDU?PopcVs~csV9?3#9q{PzVIhgEt7}Mi z`?IBLj2!vWTa_W_)~;G9p#xmeeRKBMjKi=%)N8^Xm>G@f&o0{CepaWuM6clzmOV_P z`^B%){nX!~*FY?M!68V_C%c!(6#O&P59klB<1X^a?glgyoEW|zr-?r|yBqCDpEEI< zmS9#!-A{SA#^&Qtn7fFh+5HRmkSiwEqygR3tu?XrC+Py^HHw$`IFu1rGRw`geyqFC z?zfi`Gv7`#%suh6E*n+U*VpLxPcIwuJDuivQ)7e^z5TPmzx^XS(na+Pyb!^Y_8Q%PqsbB5fA4VHIkt=ao{dcz{-)R@ zPYIcz{w-c=o$3L9A*axLcp2P3HY6PLrc;7r?w)jW(v>|c#4q0ns1f2gg{6pNxBd9Z zT04#Iz7n*s)-)?TQWO&(4_ehaphNJrH5UxX*3moXdG*1Ky_xeGnf30EbNvzcHlCiE zWcmru2~7OXk|?P8;E00K_rXxOCGUfI5_tJ8a7lbvi>a8;y@Ey3;vVKK zl3g@H5&;(VRM~xfVtD{pLE2X0YOWfKFTNRW74gNOrP?j?ST9GzpAfq-eS{2}Ay&dJ zaj|@u!BTCG8xjwo&2oR9trfk*{rMu0@ypBFY7OC4bL>p`AANRp;7xP=#bX3!J*6f( z{*48B5~Ep&V(gk8jdX$gquBj7yIH7HCu-vcv~sduhLb)nd65kj-}{JX5k2CjH`3Je z)x=X;kzqL3ToWVva8K7F%oet8ae#rnQGNJqIcNaf9P& zIN;4AeD{{w2F+&~CK$Z4d2Gf)ZF@q~%MXdr^iX}o;{SB1>D!u#=_ZaopD@TGrFwTC zFAFxfi^jFjyVqE_iCOMfijeUNbk=lyzv4V!e`y;(qKnBoE%uX*L~UPsi!u5-obcBEOZrPn3bzZ~El6dDqW9M`H3}?oc-xF4=xg3l@{_n66IQjK z#3T>WRX!>*6|aKGV_=e&Q~!fU;xFLgc_b~IdSC!KHF;DHTjQxcJ-d2OZe4V$es}eh z`gWY!y66=Cf9ipFSmx378#&cK%u?mrQ5YEPvIj=$f=5u5p#ARtA+ws&1lfTT0ACdrd&}SE?fKrz0#m7f4uz}=e*;n~oE|Ej7-UlpTt)Du zsPJhZ#Tvy(JLtiy=z|tYJ>5I{%G)}(j%?pvRw>dnh`>()NU}aEBnrlBg*tL@(G53{@2h_-V z8(`KBy$xjguJ$${wWhZLd5O0HzY}i*o9NKd0%*(?U{Xg56^x!y!CpS8pF-qmAjtDP z4LnTdY2X)t{fzqX&K#<051G)N{+cs~)w2btr09(wmE1Yl-)HU&6}}3}i(XHm9si3- zP^XF4PG-dndWQiD0JuIxM^p1_0Q~sXK>U9Ea$`YyVjl{q(*Ha~PpB~U{tJ>l=#4H9IUBT?yaVz)J|CtUxn#W_v0o?2|$q=;or=2C%h zIqMQ7?<%_W?Q0)wz{=rTWxAjBUd(%v!)9H^OUVjhx@Js{+MHYnb%n=+p84J&aq$C} zx3v=r&y4XaM^Op=BhCe8?OEckq@bB*8g-(t-{9VI**Nk{~nnO=K70vvu3WX`wvZy&)XO^$4?he*(Gb04P4CIPmW@5k~V zU~L-3bbq9KowFv?1m%uX*9Skpt(^!k1ZTH=5CiCBEyOH4&HNSDR zzC-QZNFN&!fj)qQMS@-KR~U8Dz<~?`KjO4~bR4i{o>@;#t>iw6a)Fo03EIxzHs9RK zkw_Q-Yk;+SM(svTxlP_Taf=QZ<=$MS!eKfi`ovBT@W`B>`VM*zQ0)@ z-keTI|B9*KDV&TRsWFlH6b#hM8^)Ot)QArwu+9UKao}-D)Tq6Jz~fBUdv^1n$V9xsakmeQwOm~wl{Wgdbt`q^t#VH9aesh>9L82 zBFX$DWZ&dIjuX!UH^%Q~_poKgFC$2Uu#em(NAR&@+_$axhpl-0R04Grlf0?wkpu(S zKav0(ifXTuHZEC0;8=vfOmycMe1WaE5D0{lqBVFPAzq^@_YYdPn7yW%=2yuExp#aA za;du-)DVErw5Le`Xi?w(G)`MpfcXyR%6ILjpvzvnH;)j|ibD%i#uWXTHGOc?jHQR# z3n)Ca18d`9t5La{xQ1Ex6=z>noCnDgSFH}hF3h?`T{XFVIJeNkT)jFVHx`0IF{qiW zfkUpM#1gsp80G1OhH6Tbg&bX9`nZ%}QLrW`%Yrol<3izC2FsKVWw5lcRJ6z&E(*P) zFgQ%Fzq;w^Q=GneUUa5#ONTVw&iw>l;=r1^0WSAG7^x8X88!)}zu3~9 zyOn1G7Q)>**|RVGBM;NCOEt-_KzC?$2{L(DMT<{P09slVP5{L@YYnhxgnj_Q;IfOX z)*!xOjn~6+;8{!|?p_S&a6A^9U{8M`w@D1@=Mm^Ppe-oO+8q_Bf0n{pHMp{7p9OL) z+a%63MO^6EDhdt1DXy@$9v&tf)>3KPi}*3RhO0mqC+-taN!Do#)F%8f(#4T*-dXO4 zdjwnJxwLx(%56XADA$CCGi8ykU@@lR7HhZ%K(##Qs%*?%S{&A$U@iU=TcmWQg zldjOm1XZ8Wkc46tD$uah@xB8iAbjdfsbKU9u0kXJg1RJe0|RnuMpW1~T3qCM+BVSR z!EFR}oe4p+FS@-npr;{@CPo(oa*(^9?ehOJhK~{0o^R-T)>V)=BrkufjoNh;*Zoj% z{{oEZP5iO_z1h7UpFQXf9LC&CuRnJ}UW>aIcZ?0iE$*KLV52)lh--G= z<7J}_Jdi_Op_}TXe{(qlfa;9CHk!O5C$ zm1+{=mwU8|n%%Wf>IPWCANL5o4T}0k>VF+N%KE+KLgb@V%XYqL*^>90stK3sS)P<# zw)uNwoqG@h5Wjyt?~|R6OcyQQ^(qhSw;VcF0sGf`>_xoqF!KxndV7r4$sG5(9uvuY zC?}?5Gs_zxy6KKPi*H$cE{%&UIqA*jnq zMgMd8(WgBoyuJ~=`8TyP;^@;=vI3Nxz66-^>q^{+J1Y9L>POM1qaB!x$9dYHH2U=U zQZp+0G_SlBKwGkTX7^>={=AXy0!Dk*!su8c!zG(ylRI#ROVL0@SQBT&i-$aOvwSBeqD>g11QfCg3Mnq%l{^HQDwRK(uLAzOPcSz%PAtQl1WzywCs zL{t#kWmFaYT?N1*N#cNe`46Ki2N{l1_SiZ&I27xlHb{3L%MvF4MtH}GIuvjm?6pzK zUQ}^zjK&_ybMSJHRI`<18gidx{}C(`*j3}{_jc82UfBh!?5cC2w5(lKTh2QVl~(}) z$!#)ThkYo7$Pz0=TE;$Cd-KGGOHJ3l$3@ds%W$coomIGsgtG%^-f$^-aU#Q|205YOQrJulmt55_ z!=*^K+He`eR-0|m!iDp6C=v2G+fTp zGL_+St`_R86B;fxs?>1lN0BgI&2Ap!7OUGo!=<0Tz;HP^MKOxNaG6i|H4K-RUL>p7 zdr<4uu!{X{txAusm4|zx-Gkd?q#53mxn=u^2E89Pu!%1p9{}^7H)l=37@1?Xl=8eZ znBK*#BOx&4AR<<2pD7}9l$7yRN_6sq`>&>PmKNO`mdLCy`uL_gL(33a6eEj8st_f0@=kB10Ps zF@w#W1#-Llx`(@I^^)>nXAcGdyV{w#b4(A}yNzHZMLh-vT8XfZB|s*oihIwL@8K@w z@Q~W}W-fkI-OZ($*pOzHH?tIta0|DOK1ivufdN=-1H-hGHDY1#3yoN^2znzHJttRY zNsWzIW<(3G%#xQFvG|=BvCOm)8nJ*ZHe%USD-VEau+q}T0Ani_B@-(aCF9$+`sr`m z`lh^P)?kZo-l`FAN3kU^EbHybu|>t>O)06#kF>}hCM0-!7_A34Z~gGh2Cvc$F`^C(%Yq89fg!2dPDFmRY-CsBE4rG?FRc(P z%-DlQx`fXtsnoNhA0n2Snv{XTGB)IHS#A3V1SM&rq3*uz{Q@+$67e%wl9Y>94d$nW z{AFUNdZE6B&3)73SNfyri*O{tU!}>tqOq>N1*zkH+>8o5U5XkC4Y7Pqc&l(G%1ZgH zjGF>pJ}ax(y5+M{#5Dz<6@6xXR$7YOhLtjlMo>A97mH&&8jbo@&qfy)H8^=wJ*ZAD zdSsn^$U36J`jaDy+XW#(L^0GzF}0A>O^P-dBwf`jFkvjm{A0^%x0eq1n_6aj2yK zTW@dIBUmz0zVz_%pPy?QlBto-N9aXz2!zHhVg6c6IB zF6R`+v|MYGZ2r&R<7pwDOZh4mjv3fg>Su9QSnX%xPF|na#Qs2|{U6=CY4k^PK6Q$0 z5w@<;dpd@$+iRlhhic%D9$nYQ==z1BYleFt&q_7A|G?o(gr}ER=DJVu<&pg~6zdSm zYzFu$H1}?o=TKo!FP|m$wAMX<2fq!Qw3kI`zYfw~8l{Z~X)lS=9t_f69Hl)Jq`fFg`%RGc z!YJ+GAngT~w#xlBNV_gd`<>G6D7K;SFJRMc!iM=^{0CmgP1`p2WSF7b!g8x*i}3<| z11~aCxI=|cR^g5b3ct}8-mJo>sIcC+tJU(q_`*+D;U}o@((&W z(f-AtjmO%K)|jp(9OthZIZn>siboU!!J)SRFv$gG@fw&(_T?@P0t1x5AbMqIr!0fwNN6-OT zYIA4HT9FIsn|RIO(YPVhHLNcl z{k&owUL4X<%C_>};)1J+^FOA44_;qvzRI@T<_7E^H(vrG?&W^MeD^6^F^%p{FkZy9 z;$zf3*nJmw?MC-zHn;h(+&2Sg3mU|?!}*@z?z@ah7~^K+XU&vPb02%If=+yX2I;qn z_rbUQYb88xZtuR&kL=s}mVMjNMP%Pr`&+#~bzf_>bEViYDqdvX#c zLgjP~cNG^LqA(FkvfJq@n1+ea3bQZ~Em(a%R`08P?-EuT7c`Vfpavh60eAx4X9ST~ z@6xue$m_bvgm9(TE%KoW^R4G=eQXBX0Iw(l)NH~r9E$n#lF@`t8nTyX?S)952+|C^ z0wav3SJ5h4AkVuYNrzQXVK?S8Q!HjbQGN=d$AMJxiCa5Q@F-9Y zC8nG>)$H5ZZ4Sd=*gWH;!(ahz?zfkWx))%HpWX2M1~-0*-ZEo>e@~Y57JC0KHxdrJ zN}&!UEHt3 z%x`$GID4%}#WEpFW^Ir|v>UNU2`{5yA{Aa*FzX`7B0K-{C|u>ebu?DRRT#5-DNZMc zIo^9wYpk)jH6W7MD7Muot9~qu`$QrCSP43f3ISY^>E#oRZHcY*M8Z6s@DotSz0k_> z?l)p|_kw4p;)CYa!o!*7?cgO%+grp0G1pat&OTO8IlDnZ7@fpZN%Zpt@Cf}d-#>sH z=ejo*NBLzVgxn%&|9y6}m|%$V)oAfUJge3SV;p%2OlI;wF?mmRhX9bp>^U+H*TY+w zOzLKwsRY+8%sfOQUkxol3#)Ck1=hLR`D*qKEw0zFxWwG`?id;FcN!SPZtUdK_&rR< zPw*yW!-#r<0-#3=z+?1W8GxrnlVUxHq+nQ|n|2SGvBV+NH4;5lq7nRn`8>>ablU&I z6xyd2n>Av>UupBJhlhU+YCK9@fbbHK&o#h2`x=Wov(~r-1p7O3W+SOX!vE@*>pi;6 z^43eWi@NX7z}%~em(%8MW&wYX&v|gAqpqgSUs{{5RLy^(CM)nhWfRmUY5Zr__zfy@ zBSl#4KV=Wp`g{S$xE8kM-$K0pTg0H%FM%Rl{dOv5^>4Sc)sKzSnAjj$A`?uZazChG zVoa&_2fs3nv*9!V5J%uz=Q-UA6E^0l7Kb9szYV-W>%2axt@!gZpufLA`30W`FHOPF z4xHe^6g>c6P2Y|N0UwwN0$#j}jqy?F5QHD*Zh$Jpn8(roOe!g<;6Hc^XoGtly9k_< zTXF=0S$KQ>Ikfg($y>&3FpK?;?S(fmA;WWM`X1y0f^Lu&$+2v>mhml4RrS}3d$@bU zC^(_)70NJq5?7e-WgI{|+`W!iHoEJ?v%*&uA9ELb275Lu@#dl&P{m%4Zn&m+xMYnM z3E|(qgeRvtdN80PY%lmG)609#fP4}K=i-=(Kn@4y)SrYJdm0>Ep~f@-g&Gswiv5)< zL$uG1I93qw29!0Iw+N?gOO_uN1L?8_* zEZ^qq@QE{BGpbSzv8@{ zg#QZ#4%^MArR>qR83*2s_e8H~nJtmyO9-}R{SkC;HtDw>O&?1v@xbI}dZ4QEbb-XB zz0S*KCUeCJiT9wF#JK#;(G?aXR`;-i^S|SgHq=LtY(J(Mu|LBVZ9N)|>XddsKxN&* zpagD&G|6~|QQXKKR=5MvOOAlzC%LlEj4Ch6^d63WzJM%5XdHqvq`}Fyr!YTM>}7iM zSb3c}LZ79(EK+{O(M{2u{9vY!ipgSWaBstNK3pyF#E*s{L09>ZpkeQmZLX0>elDx; ztZ_4g*_!xo^Z8`^jMs!$Ny;zut!~zEle_0K;%{)r2`e4oNsq@x4R_z7edwZIX@pyG8Z=*ey2dl2d^z2(r(>+p6=A`IchuV73}hes`-L@ zn8Hkx(o)504UlLvdDTP;5<4`ze*|5x=JbCMc4kgjtbzN%4f@%YE z2l`GR1e3G}*U5L$?kc@YBNL3;*{fmp#3Q&dBEQSc_(@%zA>bPz01d;#GvKFwTF{I> z*X+;t%^*HSaiN9!d_9_@AHnzLG;EX(MBoz##bnXh?)}K38qeKG6v*u8Gg{m}%(=SW z#<>v~uS8;@m$z{LvZ?B}nwcN`ZMFGK32%kPDpP+aZh-=ppm5M_xMSRx&?hvxii>b9 zZl}NDrUwB78CVkDN2rF;mL`aIC|r9JMsm+BLO+CWx@^GIb6v9RzZneS#f{QMYdPPI z!kF}1i#nX1f`|{1rt5x>SokSipcxAipKbfqbgd8CkzV^emQZSSU`89cm z>hM`lkv82u$fn$`d~XPu)^>X>FdpVUQ%}rq zu-M$d9b{Da{5%d5HKuB4i%HSbRnb_$=40J|aQ@FAqYlNLX)ax-9Oa`eqIy=IJ*~q; zlMFnOnI&SZV=-d|(_FmL#{XtW$F_kQGRULAVFTBPE4+=g$^A>c)O+6_(X6jU;%C7& zx(D4@{Sl}FKg$t?L$$k$Gc}y$54uvtjUbUD=zXoR*;Nk1xDwoTgw%}<`HS4|r6plT zV3>p`;`B{DH6cD@>Z~zaS&CYXBZ+&6HK<1ZJWF$C&Pt?n*?bO%qet0jSZvuGF`+45 zv=yKFit&g^@6`sJ$`tkYaJ~|Yxsj-O#Z%pzU`@K#%n@oowS6$oh>_VgqN}>uLu$NN z=*W+wjj_8}p=j?TsDR!_5cvK^zp+1-Ex0k<-_&)4j*Y51QfxnDmXklo9k!L?QQ zATiY&-AkSUJ9ZB}ew>2$KNI>M+hw|5&l){b6~CR7sRDg)c{rBll^E$BArEL#G7a>> zbs>Tzib5V0bMjw_GHh#1Zd^-e6HjC2#&zwTXmX_GA+jQkGlgW-7F~I{r+~pp9oqQRs5Eo!$y5}7-i9IH7m;mC}I%G84U1{brjNh<52_TXa0s(|Fhc~!8A|?4> zFwM%8awU8HeD`Cdtw&cd$*kuo5<-PY;?W_IB=v%bRSqnoUt`wRB*FJ3d$BXgB=r(Z zQpmjz>8#CgKg@7jFlv2KHYQlr;)V^D{%#c62gF`MAK&2U(ZWrf#%uaVdVc)`%2>FV!jnPod z*gW3>RgV(e0T)O&5!rpJh8ihZu6BS@u$7QW)>_+1VF^ZmFeBi_c4)45UwQ7VAG%$v z`_G|-@`{EwT~qXnJFb|~O!zZxjjS3~jX&Ju#vhB_+%T4FU>E;s z%!5#e(B<59&%gGC#rYVBSx$3txt=f12y}L_+TDQLwCq>^3Cmn+mW)3WFi|0b@7H

={^j8rCZN7i1sqUIpjcP(1YGO8FrS>`?ax4ZPt6hOR4M z*0qQ1(dBUy%Q(|PO^nxx`lyB0zg6Ah3f{e{XYJuctZ>Cg@IlN1p~IdIn-9y?4W;%lHN6oV!g^GE5MxA6tS*qMAOU4c za>ieehj<){3n;A5bW|ANG!+@Wi~S2PY4fTJ)I=r}{QcPY7~o&s)nShNs9gH?R|gc>elm9Y(e7o&fvj-H#!+-1v~B%{ z%N1Py?`Z7_QwpN{cVT6IBm}Yl3)LUKZ4;iDPkCrDpUQPN$##P2b1^mW??^!le0?;`(`19Wn%pTV9rgn&V!786Kj*KG zdrs$HEsVJ)na+|Ey0;$M0X#MlhVzsov?Vv1cVMF7 zykIAlMkFq6UWuAWB9z3bSTY?$GOZAUV!Y#3^?8`qiL&1`;Aa!QXW^j?e{aY^l*;U0~5sg*8vUNR<3Yd0fLcm6u(YQy+%$OAHa(l0T>msokJRV zaVpe+S)V_*K4-f>NU!cBI0=713_F_wh7+bg~*xRJukEAF%tNv)y-gc|P$~&U>-Ww=D={ zNppv}pYt^4?5lyQ(fvxXLj}SFu`inmxi^-!<~7JtQcO3w8s-{}__=to9}8a0=J9m0 z(8J_#By4bpjTN^r#P#ynZb#l9Ek0R4*VWSA1g}3#Dfh0;NLP6(~-DKNGy=peKUwrRJp`xRs_OM5@;2<+w*D8Jy7S%F|zr% z{SCT*Jrdo&{&GS0uN#`&3uWq)Iq$&UE{g1X_O@o^a#G)bKK`B08=cXtR|Fi;EZh}A z^L#FWLt0Jlb9-1abGR1`ojp#ft$!9_n*oN|xC%%e?q5Goq-7BLYBuGJWAa;h)0K1J zZYld;gu%ukbgmQj>)rc_?HBAzS?ScaAs<&vsM;3;_d{0of~GnjUrm?T?~QZbKu%-R zp}vlC9*A>pW`uULaJ)FKn}x-b+KP+yV2JxNHjK4^@|E2(ruuk+x+jQgaoYC;X{ZT{ z4KXa&LeFT%+uXmShct(+x73Y!L<_E$?~V}tR^U3Mco?;cb<}P&J3R@CkQINY!?`uC z_ODcfdYjzubrFi2n)1KJ0f0dzvil@-L!4V8sSC<9N}IhIG@#(U88xBs`V-uBSD$rBifk zocl#`XX^2>GntR0-OI74wm^mtu=&WF)>{ zJ<+H=>9waL-WTVH^yU?hXmY=9kViy4F|5%w!3o|wGzya3gEQqZvan$@^F7D?r@1^d zx_y_7rt@C7Bp{c0#nYPHmlZa4;btn*0<^jo71;G)O0R$u{D}Ko+!1Y~AKah0mredG zcMn!v-5Gc*!5Q`aUB2f*0r%nWHl`NjlkS5uy$Ic@n*0-rLm+*~ZjeGeZ-f&pDJ**Vo)eKlN zpDU~SYYU@!jC)zbcv^KJuKF_w3+LM=?6hI91F>pu>d-)og+kZ;oljZli55-(VsbbW zB5KHQ_bXnwBsv% zClX&HYEp5`2;(OhWIUEA_aX)K^)Ja-+$i)2b>3t?BEI!E?e4>s@cFBKk`C2 z5H5NdPmRD6Lo(o_cbzs}*e}04B7+}52D6%w<3t75uuMG>h(&%9%p(psNXwYw0!5B6 zw-68?`-gI_4ueF-hj3xbt}EwxsTeNhNF!f6Vhkwc1Qo#VU*FSJ;>msNUp4*nfz02N zW<+*(WWo`txv5>dKETbH=TM~|m7s}UQI18goTL_5@>4vk_zSzbU+_f<3s*)&@($L^ z$+6(0oSVX&Cxtn;#yRh%&djF6($@CIIUnGGt<{n^UwxVQ$PBka(?8SQ=AwODJ?x81 z-$gqIH|;Gp++N?#9`Zqa0-M===1Ydcoe{43SPAx58Bu+~ZyUM|ji=$45r}54OWEsL zqtSS(#I;Rv4tr)+kb8EVgTR!{8HjU&T_`;_jiyqO92M@ydYJ-pYh3lej0r~)rG~vX z&Z$EAzAz_)@_XZ)DwIDE=S&IZg{va;96*#0#BElg{E9e7C~qdB@j1-u5%8a2v$`oR zBjl^hn(8up<1$P`@eHneGfnPo(Wd)#EP=_9Kr;e2$Bk49YH4uZ)yNS}lQWji&BCi= zEYRMm?7=66d+?$-_v7Twj0ryzYdQNAEcDHBB6$kduBlYS+9lZJ8|@5`eF|2r_mPBk z&}lI96l}zsy^;++kURw&^M-kxkCLZg4~H5pLYLx4E21(RMAHF`s4ST%ji@YZo+2s> zXhl@kBr2k^l)FJh<-;+UDx$I~XCf;5`pSqSD$|0GsO+0S@KZ$PVq6s*9QAZl^OK!a_J_WV<@ zvi{psuo7AH6s$7z6zn{3aXsq+Q8hngv2CeS5GIUsYCE2XM??A)tZ+O*$l@5k7=e%z zBE)eROc5771&d5t5wci&m56UDyROYBWSmj)YVch5(o?Y7&*GZTzBu)b092v2J`wh^HPlh6_zkD%DK?jyUsRQG$-#Vp|NJtXfpeYJe4>w1+HhU?ewqmmad<;+)5vCZGe;!5x??d8V?P`3xg^_jWqiYy z;!{uvsjnvYeK%g5)n1&T+o1LCojhiV9|7TVq7y4;AR^FuWNHB{dU34hhd1GruaFNua< zwO*Rz9NAmobWQHc223C_@!fZl7xO;6IXT$|Vjh|S?bh(P@0tdh>DOCO@<)A3U7LRE zZ_1*d9e0E_#CP=P;Qy^JyyB2gQ>4qqSJ z0iT_1VzTb3YUbxgX#3W<>MMZ#C|s5ReTh3I^X#9v5zqeNV!;E2cjFCW7m}wIjns!E z;c%#@@Y1Vx+4U-btJmv4xL?5%1kU5dN1}+<#3&R-<=k8qfz&#qm&oB$(O&K``f9e& zt@^%6cW9~EC;GG4Fpb4CU7LI!>)j_5yiS}TP~E;Pnw@~<&H7<&j;9HZIUrR1W25S2 zFlQN9PQoAG+?2kEN5*3JVKlgn?o-5~Y-B{&$3eo! z@qL^lfL!rNy+b(5{X#BRx4_Zt!v7ag4IP3Q{9sY<{c=}>i@~#4WbhM={j<1mP6&BP z6(ElrxKDE2i=<`}IiA)RxZgPDU%}(wZkDGe_w9sHHiDizaYJVXVe&M^UL~6>TwjY# zHitPGHn}j)3E1TSvO|aG*zu`D`^8zWh!8O)mc1!1eSlcDAlMtX8Bnd>EM}ul1CPgK zs*O4&TUiSqBa0=}>tjmeHYD=343Q}7kBFBixvMalakYRf6H>p3N!$W>-bnfp?q~9z z`{TtH>0lgv*Gz&!5JE`->8{24?*4!eApVJ0;Ko9hemP_<&C-uud06u2+U$xz_EaZW&ivIy0*FKfQPh^<%ls(FQgYlBx4CZ)A$ptK*SKQ@=hYQEt|kdxVlvFYTQLtE#RG#DdQ`ao zL?b`lCwPD25ces5&vReGqmO4Nampiv{1JGD72G>667z81nL|Twxrl9gj&Aq6&r!13 zE+5X*Rm7m-g8LI_Dw8E0aY3q&qUwi2WXGcq68dcbYA`-rc7iU+<+#OYj=_snlz~ za&$?MbB*VIU8%gDn4b67M?L5XuEYRv%M5MFOL(P2Z_%cYX(Fq-BdGaaF0<0gw;<&B z$zR)Ho-xjzGEX*rAGib{^tNU#nKf?@6si3{izDRS#S&$+C%iL=nHpS9FyXrTmz4=Tkj_V(uIVNX0 z{56VFxPA~jy~XPEt$+n~<8}L=sxopw{AUx^>_djSlG??$` zF!%`FKUw+*yD{Pv$g7TR<1>mV22|Q!Zfl6#K*iT@y)lCQv+w{rv)+T$YYxr;j|Xus z3kq0RzFCNuWZfHjSrH$#E6|W$g)Nm4&vdQc-o$(3bX{rgt<~`HYMAm%Ts!meOICSq z>&L5gq4OJt&ix@Zp2`@kBrhUJjk(X`K45R8FclO`gSbbRURDb?(bXJy66=C zfAZ3its{NIBdrSyL*<_B+XlOLl}{b%KJ}vEQ-=n+`})d*r|=NhsoP4!rBnL{%6$Xf zJ^jP>j8>uZSsRw>J+0+C%ERTpU8|OLU3_tC>zYmNT^+5R1)r#A(s)_Sax!ntovCO3 zp1hFkGtLNJ{IlezM(N2bdp>pHQwyEjdrCWo3Y}{=b`F+H_NZ9;QSPIwI7d%{+1KvD z?%{H0#V3!E1(|Whts~phg8GOvhDy7FCbpKkE*u$1OIofK?JW&n2zIS$|GUu1;JW(& zyt}8|*B=dFaiO!nhZoAWZyzcTgC2f#^0#YbkQdH+Mtb`SBYi{NJ9x!x;n2?hL9%uY zm$vqllNy!^gw$QRdGpF=c6O|N)|$>O&)l@8v(tL#)wK)Nq-rc*s$U?ctAAU$YnT7M zyL(%?Q?m+4gXQvIdB{KZmwfrw2TI$P6*@=yc$;qj$`Ui(>rM^2L^W8dx89@ zBnQ#K_JX}bSJ>UtIWX9N@t#hQ!b5>QNdlF&^=#TzfU*X8Ic{*_wsH@|ROnm{b!<_S z9mB1y0e!6PTC=<~B;2go+_kyAE5FF%@{tvk@|sxOGdyAbXX5Q&(>dNLm*U z_lpvFSd+)_7<+diOvvxJwUsiwT^QHtQl0p_R+aKaNfC9UDF~ACYb`1FZ(p-3Kku}@ z{^3sL3+Cu|_(Z5@4Ta7vgC)Hu*||~=4$@S|@M&&Hzqh-qb9etBT(6^ZXir~Pd0Xf1?%|!C{z=En*Rn!AQde~M z4;jB&sQ;}CiV!P zbS!jU)VZtFGs2H&ZD?I|o(E{-z|h+6HH(*Z4{a`QhphnBY5@%5Hk5|hT$t#Zd3i0J zmQ(ua%=I~Nt^Bs)+?>{0S9A|;DGv>=?Az8+9u5GiOw6gfcu`n4?!-VyYsblX^;^4# z&M6Of?NsORx^mEcPI_JoODbB3dov(1ZNxb_t+bw=wz6{Dwj3yu)STLjgHcc}?k595 zkX}g1;!IeF(XhQ(+glb9ukY+;k4kvT<(-}W{m^K0HQv1>lL&Do^b6fxpd~y}f%d!t zUAwvgIN5aQUn9L>g0f`iH3TROpf(tmnOAXOfQm5yPkK_#HmqEY&U<@_}`8=U^`8QwwLOZrdX3RXb%sW^*6fnJ$-2z1K5>^N z&TmzVrVx!%>V_JdS3Jtx>NUDt;hXIrtl48fN{bpDPE@%@e-VrqPtYNGHG7<}dgt0L zCKAgvuFkpx~=Vq9&VV z>*?pMDh+jat+dn9T9q#k(z@s1Cc)Gy67M1ctY$l{t=c+P`u&W3H~3P$T5Y#3wjFh| z-|`Ru!p{ji^rGtoO~)c>t*$3NnoZE~;z>?o6I5NovDJ%kID#sEf zP6LhzADiubQ)^B`9H!%+dYyE zDv~FfgvHs05}almngUf-G?XAZ+fbA|4Tuu#XB(OdebrD(OoY~&nurN1wfc<`q@$#$ zo{2PZqETlWsh$NInZg`o8mXQE56PrUI~-0m_Gx4)xKA4C7};8llQeN^IH7zsPSV6F zH&Trg56RSVLiuW(q={351X8KSNt!t2MyhclB8(2gQ=?deM8ij5h*^qDfd^Jwe z#0iIUTHNWz!D^HwX;W>Y8X+48r-F|x6cy+&C?>^5&_p#dHV#f}%{-$&2N`MNgxE+H z9_6diktR;Lk?J+$A(<2-Atco(p^+)zBvu#Jk_Td4X07~KYdAsvgz`qLF|1i%TEhue zTCC}-RX^6^)yg*wUCwc1!aieL3~*ggtKmf9ozu8K>QrQ?$I}x-%?d0rW`jw^@SMy< z0?)78+KQ>V0}G<;&}+8hERcMuxAvSCTQQg~KkW<8F-Vs*+8qQInHHQttddEZ2VYVf8e*5Tm)!RT?ODbr0{^ zTplV9?gFm!qJ!r-{ev9L`Hvhs!xF>Au-oCw{9x>|m zjr8;gLK)cx2TOa-#%#Y-wtIi3YM)9v^40ngb0RQ=MZXQZVfEIf+sebGuAQr+A*|^w zWD}}uwE6<)$TNesgD=eZ{pORgeRxo2!nNDCmwM3fq7&Z6g!K27dd^hNlNToL4&dR* z3;E}%g&2YaiDub_I{N!I4(Q*)dFs;OS!O@|(Rd{Cn1CkZMA*Dndw6_1^A6;yhHET;L(reAxyK$iP6J^tV6^{Cp@?XlDs*v(FyUVqdz8k{;t zsWEK`yZV{8cn&U~9)x|vLEU4gS9gW9RN{>Wa{Qq-rc6MmvAxGF*j^vA+9|hyt|Zwy zJ*NbKuj+3nN`asgtcdBT3P}TS{9;dQ8eJti!ACoHFA3 zYGlOj(vI@x^6F zW1!r{Stjk{ymf%v*Qx{|uf4T3NLex5@3X;j{Ij~$X(N5zat@|Y^vhf4OIk>2t$K@7D5Q=h=*; zx72fX_YQmxqqKG9VIeO1+Bm$Ej|3l`YPcMHYl?!;1fK<~sN)Cb{GRBG(^qe4IQr-q z86522AvZ=}G;(S@pW}&7*w8<`(j1MMCl6HT`Aphi7y7q2VO{_3Y{HiA;hu6>Vtqdc zxo*Y~HQ@)eX{4`fc*LkoF!n({OnsPoc4=s5CSfDK_nCy%;If=aS?f34^G5m^RoK`$ z-Rw-&$sU%DJ-u7|dpg(S=~;+=uLd_bZtjV{lR-rJzG6xkr*FfVr%PutC?ok@IJ?2oE&6w*rL4A;RZ6g5Pq%+JTHd@n3Nr~|*~Pux&^O8hEnG^5pJBPyou#4mQBjHoUty^w+#A3np2Ztaa`+vVT%IYp z1sPNtfuJ%;g$@0z{IoszYhOPM2$XKa(+&$RU z!@3_~Ir8t;!Ug3)v_=$sI=31M8(`P{y9=x3!#`X&N32-tf|Ooc7i|;Efw7Kg_S27` z%xQ2-t#0z8U)fCK1(s>Qf=s#18y{E=r?3*qS6B*J-Eqn)ZcDJ0#h*_b z8SEXoaA)xS9BqNg_r}5QJxOa@O1<4Zam_8|o{=3R@mG7PudlQ%DY?GXQ`*CSy>Wg= zcON%Sl6;^{x>#50k4tUo-iqEU8TI--r9SSe#JNu^_Ydv}k%BkhNCMBA;ho+611VZo zGZp<8mLX6-RgiZHGVWWswSN%0gBQm+8+YtX0o|;vH_mC_*(=)i4Xj63*xwWO-;LZ5 zAiEuj=EC56RsTSLZ~yjWbmyicduB5FjXm4e4l^N1pHJ&&Aj#L+QeJX9DT0A@Tk7fG z5r5L+NMC=_!K#s+-3jSYbZe<^cY^ZO{pjnGcGq?HZcQd{OR0NZf+ua}rNLEk7w3z3 zf{GnGOS=LbY#iz>^`#WDde6XMH#gHFa9431q(?l$V{p|7cxOQI_lELrb&XOoD)2N; ziJ&;>ZVUT11k9%Bo9NiX#kcMa$ZH`6H|a86irsd&ZU4|t@EBKH1%|_(SC90SySF2W z#056(>}SCt(j~;VX(uPvO$quoT$rG_W2A3eDQsJ2k|$6ZrvWya$J(_B^e1AWp#z07j<v~m|( ziL~OH9ebdPQs21q~o5{b7CNc%1B6DXC^ccfT zds{{ZFHAdV=ZZ>51uW3GEVQ|^H>tV4#GIz}KQWxy+YSiix*S0QbbE+{2S;p~xto_;uF z+{zlt52c?^L+BY!sd7_kXKDA&bJ>lOZrgYEKPRPAzwTGYt*xg##26x|8zL{K9jr&I zU2gBbuyo-_S_(lsX<;x~G0e*bE>Kp^^M=w^SZ2`VrczJu9>lZ+#hXeatGoNoEhU6U zODuM-T*bX?8Y=a0RAG1_A#`+a+ZHT>_MIc!O1okIajh-ggFCUq#Gg-RhWd7_W{%^O zl{@Z`QPX)?xh>czSFtl* zI5d*Z3rD*yoo^!s2+vHw-Z;c@IL_Fj-7w+2>mdc!+S6p?iA!w2D3c(vqkj)#YcfO6 zV&B?Yx}-GNanT5Za#Y3am4O)4x->eNBI@b(GV)M1p>V!G!Xg+!t=^6nC$)CACfSQS z7X`mtI~ONkOM;vwL5(FrnWaIQr9qixLHe>xdfNW-pv>~1%<`c9<(*3scuot-uLyph z9{g@y#78RFhNt~BH8|aq=+E+bX|0Q-;EB`)U4`@`=wW&HP^4<~KY}dWLpem7;yU`3 z&9t*S^M;YvPVp&#GzzU(VHeI#; z1j$P{vjIs;p_m|6tK?4k8t7M=x15yC6t^sXq&ZcHFguT@`PQm|hnbb*4D&MM3Nuy= zmhC1}I_x1VOVx=1fXjwr&C{0t^Sg$Yt{EOKR3uGQx`VsELH?4RnVEb}A@dy+T-*~* z;&bpnNar*yma6!IQ3mRrAT_H)2{ICmMvzvey9o2Lx{5F-qn!vdDiji7R<#Bq%neWe zL3(o9&!+ih8Kh;;_F+c$I3MK12lybVYBLM+xL;-3x8Z2>O82|m^mOVH_8T-tn&-Mf zTFh*NBvqA0(i=r1WpBb;gMu*Jh@)l`BmNj9=5Ws-mkvFz%%;IsP`G5%a;6|)fni}S zeH(3TXnan*)kFy?uEYuaK*F+_lx$%?z_4&8B`qu$@$426R?5vO^mfWsgg zldehZcA5OV>ap3);zQ&W@J2Vw&at0$t%)1(u`Y6pM0UH{ZB*FpY8MQRbu}SAa5lQG zHIJT+j<%<1qoYQJjjn4NHo6+*(>evaoI1|hVh2#NswAaW-)T*cK~x zyD#x3w#(0xh0N^JM)-@;Z}0SIdmVPoq!`Ijyp@X7jecJYQiIgM9F7HViHc5n^o;6)~X7g9IG99w9dY?cq;$-@yMY##mWb~`D z&(nr38Y!2}n=JZO)qdA5utM9hyU9W`cQ4c|EPP^a>0Q;OclCE~^QA-hG9ClrfU_Qm z32slfuFbqG3k8OHGq{SDg4%4;@-qYo|Dy^8PV@3Sc zwJSSYfUg2cK4fl;FHEq3iLjDH!W?xaKt07`2c(&OvXZ&k0NAURW`QyF&E~A_Wte4l=4CAD?Y3*5{Ha33X|kvb^x_ zU48;SzXAvEK69?))@t-qFokouR0xdlXz*?hbCa`~wY{-+R(oZ&0NToGK~`n8!S3E( zZ;|!C1W`rxq=@j4>6K~f?j7in&xahZ(~qiFDoR#jv~`JywQXc**tgZ)wY88*F+_#P zXkBV#oUM{gQk}5MX#<00%mLe2=h3g4CD41P= z=1`tzl*sA$v`lUl5`yf!&Xa7#C#=~qff%cW@1!aQAqz*Fn4n3{80jS{Hlj z_lIDpGyJq!%dM3?VAnuy<-Jc$YHn*)hw$h^PhR0Hk>r&~&gixJOUWs(x}CghjA)`f zm_@9MsZl##n+bEx>pmz{n=C^y$n)vkrs5?$VTZ|X+C5=0%vF*gR_d%1|E#sDxY%N4 zQEK@%lkZ7tZ1nWbkbDikYt>keSB!_o|EN{&bY-8@Jvbyk$mDme(koPA9f$I$uzuDm z8}hb1^n2zI@xHtQiSEFVCZe0= zUGd8GKWeYf@V;D4DI$`(YAy0fvhnJ$tLFMs6AL@wZ9I=gBmRBrHXRGRn9co zD-_AjI3wmb#w_xvXemB@QpD66)$(a|mt}KL_0|pI(`Es!+1X^koYs{<6aA{$)UvK< zVD?wV@tr?As z%(1j!Q)VBvaTzq3hsCAR=ubdHljVDZSR{}bJQGPIt*u^ciU$yU)tZLZMZQqfMfy>5 z$Qf<2NiH>uraIw?%f-6#TJy5Z-U>kQoUB07P2OCbK7cDJ(cv)x`Etp3ZRA)HZ%zv8 zSVFBzp;aoERfh%g;0(=CljP@RpFYq(Kqzl-8B2cGf_8;UL}s!0XKgf>quaAJ7=Tx4 zO>lT)4+M?1&o#b*+5&0MP&9S%K6<8^5%bXCi%tLw4zCy3w?sp!^YQ7o&vESRYl#YR;#(8oEC*xShFcm8b(UID63{4 zOZzw)@vIU;&EN?BbLjtCJMFv_k$5)0W;;u)+%_)AR5rttH+rY(|55jC&5h&8n*1sK zw6QyJBG&ZX6}=tdvQ=FkU#sNmIx{Z{TB2>1Wl^n*UG9hZ?fYfomH-KgqCB&)6Fp@S z$V?;>2_TUG5;`YF;7FH4?*us(`a1*srzp@HLNV+#UOeH)^nni1@!j+@z3gM1l!gXQ zVR!&>Qd=0n=$RmFoss0yfoO|u2z0?mgw&1B0s+V_vNzn`>A@5?Xt+9B57e>HG*Tjp z!CpV#cUDZq=_B^L+NHPk+G<-b53_p-u}Van6bl8s)zgJvgBEADk#>yJip|gTz{0{Tj01tvSB|>z zL@H@`TTH_7WMGtSB`Y3!o#K$}2Qk?dA+ysXn#&%JXfAsvqPaLT%{XjDJ^1z(n{aq0~nOY;RGX;T)2pgkKeaeb8|b^s^4+f*y}hMCfM)1T23O zF#J1NB2G~iG~J?$=aUBkZa$Mg34{J$DS%F>GgX0RzeUtR8ylrSMR13K;}8DHoYc|< zWF6U#vjX!4QfIv!tZ`jH5HQT{plUTf;L@%EZ%uT@u$ zv)7szbJ(<<-2GU3D5RD2{qT8hv08-8Q&Bm^S}yGLatN>?@vNjVKq~<4&62|cCcw}6 zPhLmkZ)Mch*?d66vqSL8Ly3#g@cY8CtA=DU;pxZ@Js28f5nWj--Q>enn%*2wpzyC4 z04_*JP}SyK9nl|AoS)I0w`k6N^(33&epJnZhYfcWZJ4#;52~O3uGD10@v!KKS6D}# zQ&SV2Q&SV2Q&SV2Q^#(2<)p%ja(QU=p$4`+p=S0b|Aqn$Yg8c<0M?OyC(m|A+6Q#U;d{5{*T`*6}vY}22i+fa&|M+Z+q&QE(QeW zsyT$khFBdT-h&<(*Mwkz-wEcIc7OSsa(2av;r(bdMKoW(o!OAjy(pG%c0U{P89!P_ zI7`NfjuoyV^~FeGDXH!x#Q?BF$pF#(vlRre2|vbx4}T|2idibH+z6BDLYcKsX-%~w zPn^E=1m$yIP{C+J;@*@xL8f=y>qP*l)oKSI);rT_1_;rCSE+v$oHXhj@SBy602;MU z0W_!`0Gjnq0W>Kdl|h=E-RMq@czVN zq`X|1SH)gK@ECgZado=|p@@*S`12+l71%sbxxtP?1jXAumJIL9U1P5l7q7%^a`2H- z|MO;{W2cInE9yCcFIOc(NFhpEvG`b)V_Z^VzmF`Pc5L~GF%jIYvI#WKdR!}!K)Cr6p#opg7~h9_Z`wpcXbp)vyH-v;is*}sro31F5jgI z=*qM@x-#F~(Dh`xi%`9E567qLrPa{&@@wfHxGOmx=}K~idL3p}AcrHg_5hPIx|R7! zq|VbF9hO%q_dY^dB5E(7)Q>tC>2M0ry-T?PWgDWWrda>vZOD{6R2vj$&di1gavMC% zlUv{cIq&!Z;uR~AAX?mO1QVJt6_LhtLbRQ`Ex0=uABv~gU7TDAwpVX-w zuMXt&UfdsY4d_ReDEXT&5Iui<_>rd)@l^#Tauo80Hje2BK~#fL{8$m}!ppBi*Q>Z2 zbs@VFfBZ*}S7j=@CX&Su7wkgcSB{c6j{^k3F5-Z0ad)H0)m7>Jf?fRhHwL=^?KOj4 z03+}`{Maz*SX`+`5h6;~D%b^xwFq`0H&cGYZ7+BF!=4QJp%)qIT#TQ5t?y}x zRC6f>;1!p@UmA62fvCf$TS5|Rm% z&TCYW5uTj%(Sk#gex`T9#LtqqN&K8$j`)HKtHrY5MC{F1Gs8XkDulfLq2>)i+ur#I z6j2c|tUusc!95O7m7$f(v(Z$1h6WrxDKAzNw0rOAg4|sVGQFkAp~Vpr_nLHB{wL7$F<@F+_pVjUkdv&%OCk*9Udq zz4;OE*Ec^Zqk*~a`a|#IiQ;S)TZb}3MH~sm?w$9R;NsA>6iaaYJJ3#Xl3UP{2e?JD zcWxVm{9;@v5BNta{YIXeu4Kxi(xN=?gmg`MwFx{wQl(?tqtU%e19?88=Gs*AhA7h?pRh1t|q%BTbHgDJu|x@;g={EnF3oRi`2Bv@g?%*$z|Et>QG{33T5z6 z>U?CmHnBPfgFr?0z*lLK0j!(&&@Zi<=!d!*?cO)Sf{-2DqArKz!egYb<^cN-<&t9p zz7(y)&z@-RFZN&fVD;G#oGJd{4iszCR%Ln|RE`zP0qi$@uvliku_hm| z=Q-GlqP>T$kxpP&Kw^1LzPjE`-3koHx>a_7mcm%Q&k%n5#2o|XaW6~`@o+qJ`X-Rh zf8gc}7NuTtfP~Z3bA3kGjIB~n>W<`sqB#)nH3(6rx1yZyg^W|Z@h_8kw2G$JWT-Gp zH5oe2QcaExro?$3S1y21HBSW&s-vg9hwwC1s%axfHOGyTBJliG9nk_8Sj5p);npi! z`?1;pwWaSSs`mAAI2|kH2*hd>LbR<;iukKvDVo=9Ne?lh{k`w1Hh7k)r+C7e^wNFX z)XS1arI+E1J+n2qdSjE{T(cYMys5=Wyss`k8}~Mqe6{aEALfs2aB9#NyPO)bVXIR! z+O)r}owBPoJat(sc0Cpc*$pO_9wzp$4jX|J}%9#h$3)Y{kZ?25Z_K z_1eeNRJpA1GJ=JLmnWAN{+uGMz92^$ejYVpy!j|@Gp{lN`u?f_&EFlA1G~4n@R<-x zgvTab6$3T&qFMU%{D78zo;9_2bPH+f zNQ|g>kmJlSH7W+#2Z6!mmsxYU#0RLkU*ZGQTq5xSYVM%;05w-he1MvpC_Vscp^saH zTb*D(k^{CPIjB)2hwe|9FzY@Cs6!-&B`i14>y(M5yb6c~xeADzV-*k!bQKUciwE>C zaYf5q{lNh(H?D|8bG$_)1&T>>5V<-^xJfbFEb5k{OQi_kYUyCoyt5}J(esXCA*R++ z{#;~Iy^WJfVzqY4yR6c=%Nd-YCz@mvM3u%YlUCW2(F_I~GCI}Ujj=TRmx2sse@jFW zs7tHvkto=3hexGWw|6WX)!iFzGs91?;iAad-4;v5?6nv){$^vyMd+qSbnrENQL={~ zn2YMaFeGWzp~3MKQ>OB*NHyb19d73gOTXrQkN^`LoA;DF4v;QF4SO|_L493G zc)UkGpyUw?UV`=VaIc}hAbsLV4-ldt|J_%Qn0r_!sHS*aC&=+1*aOGkg zX8JGfgt@qAFJ9%XR1aNNWaE*~3PkmRVowIeFr>8Z0$_FUm`FuSHq;)1@2z zU=%=YvU@AaBM=^YvGD$Q7fF@_igxy@AqN8re_H@~LduLfGR*>tRgZxaNfvA;n?3Y? z7KNKI{H(Wl);ON^9M3A^SwG@g^LW-Go;AWT%UH$YIeL!N{&im*G{{CtdMl(jly8GY z;ixEcZ_TtIx0cRWk+(X#6+~O0HQ?3*)zC%)hc9zH%sW}!ljYi991R99*n4dS&VUZ(h>sRWI1%7&fq%`W&b5D!K0T< zWch5F90`AD5~&tU$*P&%>(^@7u&OmOu_&ya>mUTiZLtpSS2`H2Mk$y#F;qN8g{2%W zT0i5Up?dF~1R+sj^SH-$EJ1aLVt~_6Hi;0uLiZJIJ#k2y*i*ER%ZFIY`NZvF?Ob{U#7Ik$y*Os_O)79dy(iMpm9x++Bu0H;H74~sE*4ihsPSxev8B^_s zULvLDP*siBMhhytHa^v}C6YY_v}PSO-dYv3Wwqx{g}--!J+3f0r#pSzqgZ^*=^c06 zXOGm>Y*xBq;als0)d;6wu>dC{_JCLXE7i(Z!s* zx{JUBb|+~${Ix{o(AJidL~ZKnQu8qB-&jki()IkMlxGP@Uy&pj`indye;YvbnP3k< zsI?y8(>>3EHaLYhsdHV$--QO$_8R4>3%FbQZsC0qgl17;C z?qwiHlJwkaGDBW&390%1PhUv>-6UBt_3qDY*}E}gbYhY!isc-8k|*Qb^GfvA+7enW zu4TIP@(cc?i(e#5|GrEXj(U+Sef~1J9@-vMS-UF>%%+~~3CiMhvtledFEeb!k@(yo zWiF8WgEqB|B4hR0p~!AkP7lX)@hLxk#oLn{n{eg@GppuS6gfh|UMsXqsVJb677>?n ziK3YGyaW#S?}T>359;Elg?%04fQYUZ=8B+dVHOQJXFA|oO`eTj7UqE)7eFn{tb|Of z0AL`r(a<&e9ZK8wEv!h$+H& zbo?Z{gQ^h19aNRd+tF$ivmEp8bC4F83Z`TvbKqDwiu5lYIc@edTi^yPy^5xPNw%?C z$QL&nLJW^C)gzYf;exOC5-DCS_ES9ShqTS$=f{?^RY0Cwj*9su?h-y{V-~Ca?Uh23Gcb2VO#s<;OtG{0E%1D^ zkgrSiidDLMHW8o&ct1M9q`A06bmN|Sm-lRf7hjQdy!dB6E6wj~IDZimn{&S7q5zkw zJ_*+=NsPjc#nH(weyK=i4fzr zzFpc1JQ%&(m!oFUHt_qnhlk++3I@(1Vp1S2giX@o=QPhI%J|aJ>JbS$LOO(Bk7YBa zb!E-qw{8|Et@Mxv{pC2DVLri;kU7GHb!DTDmSt&`qUeVqsV}w!{X&;m{P#3})eb{G zbF5?b+b*Q0G8I;=CNFp%(4v{iO~fM$Z)2YcV0UVWj#$SbJwHY>sCH0x5d4Z7HvH}!)aL_VdcZ0h^rE-lsQWxL02+4S!jWE;s z7s4FlV`!W1-+d3U+?{ScrZxbmT804PvUZGwxqfZCV}*u&A~*^X+$|0%co&Q#e0cYa zBQV~r;z}X*;Xlk@(62B*xTqaw%bUrSy!mT}2gub?sxVU+-(b5QMwlMg_i7@l2b4<_ zErd!xacc@S(S{6p!$(tQm{U9FI@5Ks+Z z{tI|fKGlHM5|~f71}{`aDf0o=w!nNOwl#3|0lp{~=IYBTp#hF{ZWWxl{?Y=j6+PTy z5m?))tSZ$hw|o8nCaa;3Nx!=3@W3m#1GMBM1ytm!jK0cZcT`l3dojP zTk6N?YP;u_7d#<04|*Gtdd(S@CimCFJTIO?EHkPuUTlSkz2b#Yh*I*lpelTbYj9zn z+@fm83$wx~3}Jo{zoDvFB2q($t3o71EN&Giq25qci1h}IeG#t4s;hef&W>Sl$lLG% z!MTz8kq8?SeSYqZUR|>zW!)gq_`+KapY>0=)c~&dj2oSlG<;S9ESMFq|7e?)PThlT zbqqzGXsZLQyv5c6sMc6-dUdUi=E|4W>X72^n$@*<<0ES8kq@3tvn^5=pTVEKh_OnC zOuIghwmz}gJ6yGtHhAEy6TP*VYkY33;Yqn#&Kilu*z(OWYFT@bh}>7~lM2VzI;iV9 zAa})?Xvt-z(YA=YlIrL2;cx?AZ3hDKZgpF9HEXEX&kR1*iAR1@nTlN0yb!@!EikdD zHy%{AVE055F6$dW9l-{mfL;TnBX?fsT5Z8=6wQ>HRyHO`HB2sLVm*m}N%TRg2Z)o~ zYT;>tY>K6prul4E&Xh+T?i=wX$%kN~? zsjY=4o>jmt%d`z$$GBG@ZkG)g*dWpOkVOzG?8BygmHBCmTXDTaf1RqhQ0CK~S~dx1 zli_$d$}jSaUbgG!(;&mVU?*~Dz<>FP_283E&^J8gf0%KZe^~L6DXR~ajQV9ug*mZ zx6ut(QH;Me7oi+~W-fxT#tU<5J`Fmf=$YzqIa7`u9pMBSG>(mOz7bev4(x(kH+HwC zBX4w=+IY7)OrrEOnKb_vhn*D<#t1!zJ9aRO^e=BJIh;{|GL>(BdI0;+#fYRE3p#((c)-^%8sMyX{LI6)26Dr54YHAaa9axn8{#rTf{_)HWt;<(obHhB{(U)L6!!(auC2H6 zY@Vk~G445lnhqc`>s!?xV?iKuzY|zgRbTAptmfR}*ut;{*l;?&QiniR>lGRxuPHtP z4=AirVZv^_M^mY)66=~w>dw%1=BpIyd^c3E>_J9b9fZua4T}-6<^*J%SRFJGwgbJs zYRqz=255EPSrRzpyUJwxtw+P4)p4V{_=fy!LdA;382Nm3-4~9>xfDZN99u|TE3H#t z7yNW#w{r3cA9nEH#q|q3lb!#O&*;EyFL9_z1#56xlXg;* zc3uZ~UIXb18bfBz&jDw3XD!`osSM!&menGfFI zQa#-hm{-&(o@y6$mnEFy1mzGm&Ca%d56_kX3;jD;JNzDI@8%U2u=`G42}z+?j9sda zg8~1qihq|T*?{?NpH~NLO(hsY_dNjtG@U5P(Ip=tTk}OAR`I+`tMTcz4qlpa>tME? z)2oHHT$>vCdzEWv3{Y@5T;SoUt2LvQ@&Zhr2cvNwD%b?hT}HXDFq5_rZ}g(9)QBjM z@fR9iB7m~VThaBa;cH%aBiEFTkvO=GYjT2{xF$Kgg)7p%8@MLDa{Ja~)ZVTJO)}*5{-fdfxPFLX&Q?loeLnaj?p%|S^syf;oQcy2%g{k9O3eUBvKWkIpYE$q1 zS;(+93X&%(TxP(rP7OHLsR742HQ-pM1{~|ufMcDiS+j!)j%5ek(^E^Ft!~Q30qLe} z9OG`v##!v9Y=jZ6$u>=kqZXLKrDE{mi`dkPOb^(u`2!+0Jw8i2?}$gyBsUA3j-yBSeqn1?;o~?EWBD- zo69Hqqqux3Kbp%2{G++m(9~jN@%BGWJ!%vE6XpiA8kol9h!f=vN%91_0i#WEadO-w zyVKm}nD&~FkFeK@o*hv?njRcchL?VCMBmAv-Qn=8`q_T1y{ARgZvfy^a~RX|LMciy8C!uhB%4PA|-(1{tSnN;)pBDzJMo1Yia zP`Jx8PC}l4mF;2FPoDlaX-*}jMO_CO+z&7W7q`DyElR z!L5H%PM=2NRV3axQ=hPm(TE3w!SLtLG)=dm`NdF&+dM;T)HGG=pjlQd=4Znm9$p*v zaGXSnh*rXu;Kx0tq;%FuA?1}5V7|8~^))Q@l}df3Qfd9=s3elvU-g1bA4nElo1EV& zXO%Syy#x0;R}n_NdSQj=N^=#Hsa~7yYyQ5$o6h7KrF%LLD|$Mon&MwqRZA+F-~=0m zqn#|Nt*Bh;eA$>H`r!Tf!9q2WCg9%Y{t74WbMmiA{yMP0+tN9%^&KeWOJ^9rX#*1HFrr+yW|U&G&4-f)t;Sw@GcuY!heGSvk!f z;I&j@gzz$iE_k45Fb%ogi=fyU@ghWS>mo=PUM*NGRrV>lEzxujM6>a0_BJ2ne=a%5 zOOUb_sY$tboRzNweuA4>lPRVruTr}I`bBj9%fSe*Yfi_@IShxpVlr~dsT0)jAd&|s zFcoSra!hQ)+*I|7;v3JvG7pV$T~1Y2^W_~( zsvc0)FXDSG6}5XH=I-}8O=*#zpEpPEP<>nejb0vftNJsR3u<|>3I6)6hu6<0BMREk z71gX+)@d_UC{?(FzyO~4j{T7D^W#kBK188cM@8azpgTiP@H2Vlovv6^X3bLvZe}wEwl zb|ipCytFj`Qvxou0aqi?ogA|kFMet=52#-e0P(B1XTP!VZ&VxyHm}CFZe1zl${WmI zv`2(~z0T-By>@a&b{Lu*8wc={@Y(~-KrRaUty;AMu_N-ps1Um7CFVDggALh%o@Gu8 zx&w)HhxlNxkXd5M@9wP|;%5eRXaL<_^bYyykG<8&sQ^E#^w3)B)UA zXJ$!lhBG>j+WShwtNH3o5Cb+extL=!hj*Cm$A%PhEGx@5)kGup(VgNU)zdit2ifxH zV7tcyVI{eH8QZdq3ia-E_d)jo+GTeelqPsdM7>+L$538FzAH7B^J6}I>S0BT^DYoC zeQm(ro}poTmq%Hrb}xW99v9CAJXdNMrQhAjrPO878-DO}&&mRD2}HN!;7n$a^3v#e zUL|ZqF)%OsybaNr;t_3xs68TMW|)M|G%>WQda_+ICnuHMfyEr9&h-z>nVYjdc4&47 zy&z%c|+tuhUQ!dd_SQN^ic_q3_p%{U2FiDh-L0m*Q!(y@2boNQJx=V&|{H`RCN zjzc7$mkXNam2;5?H)EiG>cG!udru zA@90&ZiZl&w1X%mg-+wCx8K@<0f*nI_=a6ndvu9rq5o$Sm71!$sZ{66{b#474Q6A1 zpSpwkY)l~B`0v8QFvp&c*-Gv}pt9@Ufkv?X-hqN2QmX?2tEr*#pKM|pwA9v*^$~ZjfPS)OgZ40w-iQk#FiwKy{+aCyn{wK^9~^ae zt_AO$bTSQWu&Cz^J5ESwgQgOsHtReAq0Vh8=xow~ESWWwW3$n$ONrRN>28&EEO7Id zSwp1%=_bU^S)X=l|#@|G;n+GMh712qW z=2C`Q^K|25k1wyoVatCvsE;|4)v-J7I{a=GNq4*>E1S5W#qmj=CAu-BsHk<|26Ckn zzDDgjD;pDWCwMz}tn?LuO{*hs8f+k2Nv6AOHI|8;i0^a$`wG zNNym=D#eZDC~j(Ywu$Tw2yTJyb+dHDdcWHo9#T>Z{tao7GQ3OW-j&d^A05ctQ|Njs zFH-eYL5tgQqVS)@P zDv12F_GqPyqyh{Vb4SGmBIOqDwJ;D+Ap-%axL_@z&rcb=5!x}+A^=d)^TOfWoEFNA zXfB~K0MHI%0!IP>=`0A7C9MwC=>>9Y>FTIPP3_^;Nrm`P^=d+LCn+$ptO)UgHeWBq zPpCO{!FyOb>S&M8=a4b{^QcV&E@u4F`%9kn`ZBZ}>4oSk-T z)P~eq0~Oc5ybwAjj*Yqm#>cv?0`SpPZfX@WNA(F2CPyYHLJma@M6s1w!4Je#7= z@oad+t2>=pS4yj}HMNNHI3=dc+Vh~bi0&BVT4>?vwe|(J2wPLjXv3LA7q*5PeMQ)s zTH^j`zV?-=9H48D8l0PJkLVwlYmXP6l53CYhIDhnu03vW^r}6gI5gEB$)0vvOPS>v zrL_>n(W3S6oC9v1zG~yl*swLqplUt5SOPXs&6)&^7qmGvO??;Bm!1l1*SBxh%7Ujo zs$ErJIA-g39f4cql`&~*tL&q9sJA76)rSpy+q$(aHoNCH#y5_!_Oe%ASqQ!>sxhP2 zX*26k?xJV{d2MCU9?nkHHQrIZY*?qh&OO_u!V-J!8ix+bPE`+ybZPUD26dMX-L00) z`cm<|kKKgg)954ZYs-`Ss zcoSHpFfs2$gUA%UU46^D;D(5iGImxIkP#9&s-jF)g2>=Wa1J7~gH@LPiA(zkBBK&& zo1+p$CMJS32qN<%-ZTwCWZ)BYL1cbZg2)h~zj@AAz6WVN0}&4_qpiAaR%ZfgSEvoh z0(q-u>)?B!lMyaTOyl-+8&+0a>1iNQ8^Q(apAL1ZCDn~m7!8KBu`5R|;)}Y7)vGN>g`vS88EcmagLfe6>2F ziyc%{G?uOe{pc%QsZ@flbZpU>Q@I)Y3fIn05Yp;%ytsg04M>`GqGbfDiZDoTUUR8*Ai zLnZJxFie5H`Wjy|_gFR6L`5l9MMY^K8jXs=`*Lbew3A*1J8d1BTT|6GtQ-2IK|NZBK53wVTR^Qs zpEQtY8TzD&LjF8mysf;U(Llj$#CK8*gWS!7Vz=`av-(z8F_FgtxGZ`YRh8ro6s?w$k8_@R%73znHyD>&MmlMj z#9K!?QL5irvTK&J@`8Rtm0CwSX`o>*`HP!Row{2{XoH?2NNv_v0z#eJRM6R^zgRM@ z$Hb$-W`kFk5?4n$X`@bSRB>fYj(0BaKiz~lF0nGw$vamOBK=QGRYy8eqi26rq?7lq zZ;MDL?_K13+bgw^PP&`<)zBsz>>crbmW^j(&-Zp%9GNI4`ebXTsm7e&Um3-up~-C& z6Kr>NbL)usBi(A@u1|DhVBPp74bl)N_sl8xE^W&}L)2o9=Gt!661;3m#GM%JP#b-y zeADX4v*{biR+8y17ENU%xrFD-Hx*Dwk4?S}BvnhVyU0Rvo5{{Uh`zDtd~zF0u7=zO zg7c|uCbydN=^G2LhUUf+jM3acj5Q=TlV$ZF`^KWIlH6F55t17SvPy9yIaaRob(mx9 z;d^d@?sc>E;2%lHjxkutnX<=&N0P5cr%_0aWDV6xoVZiruE!iR+MOH4Y+ z$HXt;qf}S@!S2;^JXXhtOxAue=R~ztZc@|jV%{&Fr{nxK|GB_Esr+QgTgaVa{Ccx@uE1M zJ@ks3oAdr4G2aq3#Twvwn$7aTV?M^KPKZ^v_vHjn;?bd|;%fWLBHcT|qh9@dGRI3^ zF9mjf6Cb4=IlTB7BPWC%XD8kHa*-{HNvb3i;Y^U)-s8t+^W#_4?xdlTNfgen*`mBC zU-Ov}6h;ZY=wrm4?uG!>{BQI^a1#L^ARutGD5)tvmE%!9@~G5gc)ZtR2IO}UoagyD zpezK63I+fHfrB||eQ{qj(5Qn6$=uJ%XVuoGlB7IICE2SYM;SVv4~wFLBvU;c+D?D| zwzxm6pom0?vAxAi&?Cl&AB#l=?IOsLxal7BgEiQou?7W+5@UNO$i$1-({VP$pTJ7*Pv^<&h_FDgk7t(rDM6(j6!V@qGGi0}z`Ka%u`QLj_gah=kNRkh zCis}s4589g(jhJreP_TTF+Yg~m3xGw&kBdL)o+o%m}L|5AhZ1~s*rBkRN~HkI2wC% z^nkoq=n?&RKFx=VuTbvtvK-~TgtL>g2gI(=MP_oI=hKGok8eGm$SCZX03(`}vPqZK zBoIKVDOwAU8NtNZ$f(zT8lx5YbW2UV`RKM(oy&a-fgatJ%L#^T17ts4rS@m0<<$?D zb1<_CpnthMb(n@{Aywb!GsT8ghUbgk$iCM2xBrv;Nk)VtF#1De|L^~UjEi*J=r$d{ zOTM3-_6GO|I*%(WbF|DDZGp=x%SHZ^e&89%=K_y8V{mvHOv`aGd`rF`4^E4Db~nyP z^!pnsKf5fKbC5e8@Q>SBHhiLHM#4#nabU8T-^|Ks_JBu88R>eO{khCauT zl^=ojFe7o&cOOrf7DIziDHmBWx?VCcqh3$?xaXEn6n6h@zQ~__8sDbq=J{Omdr8ru zxq!=TcvYUDPEWT8Bei^ZBsyo4>2h(IFCNQLZ(=L?otVi7e-!fq^(Hu-^0^p|6a$~i z*)W#{o#$_4nBY*~yeOH+8$_vwST0LEZ)R$()4rmc-<~c+ibSOz89*bV+I)k#u@> zD!#5?C)AV#r@F32#88ZsVgbp&LWh-_;WzX}w=xM4vdrdBMDBNVkm*I9p|8`Y7P9Ho zT4tZ2Rh%t4k!Vgr{IV>d7PcuMlDjgSjXssbH7bn@|b2(ppxf~V!<(-1LEf(YaW5!Jfp8V=6 z5Uv|_`2J&_tC0w``Cee0TrQ5$YhK9sP%HvkfOR+8}&*E1G=M^rugwpFId1Pxt`oAWx6F*T!7_@d2^Y~z{MO>EE&u5es-T9 zVM6NiQ$18ssCIe+GUXFf3hV# zU8Kp|l#Iah{Vz8qx}Cph(TV9#y$&(o`pCcj+@0r(|Axnj{tzvZ{127<4_QRI_nb{I z|1Yx1MLv1pMNW_+sBF)u@EHtDOL%+cmoIEzU9>QMP0B^@UXWm8*ipnMFBCN}+rlmv zk!s5YrisyVxL~8YpAHh2#C1DR;`>xrIZ!$``M!Kjsui$J&^0vQO2oW6kxBpPc}YrE zD9*rGNtpy8Dw8B+Ws_*BAjlYbnEYCS$Xa4W&)P(5M)fP1F1A@vdtWY!No8$JY1>oG zy8>o=y6u1er2L<$1bL&RH!tZYVf~baZNE{{o0l{)Dy{h09%+HA&!Yv|m1CG@Xm70) zYV}KL#6ShEP##y6uGh^3JgTE$mYGy-57wiyPvac?uz1pif4Fk@(A92IL7BgU{Ous0 z>#zAHcw`>SZIB687Yq%f42Gz84^9J- zZ$%GZBNht}WwJ_pFi_zcVU^ZM5{`G|oaF{6CFOXcoG&zCe zk9B}PeqR>+8|#djP2?Y6Xfq2NI(hc2%K^PULagK?7MtS!9PE3EXX#-Tb365cPI*y3 zJ43|yUJp)5HOp*HYN~y)@4ywgwz$bR=W6(J+20x5P-S1N!|#`>lz#b}FQs3rApiA? z526KG1Nqx8zkT@dw*)3FY}Fwxl(9T|rwWM^eeWP?dR^?@WbI8`n>XFw43~NrJ!(7M zS2tAl-9`4qBLe=s6UF&!HpQ;f&O33)d+J23wWcK}2n#q_P6Lb@rCdvW6Re*{`Aae> zsfNkj+afP#q^(8J zqE!yDZMC3=HX><(L)NB2;Uh#XaJF~CPU|-8AqHGdO_aX<8tu!bXT!R479Vx5^E4GH z`xuHbW+`!bIb=wy0j+oA1~;PMfu-qk;vi|MWWTDV?PWA{qcHwk&EHo;eS{m@?pw}# zI2g9Cf7WorGrP`)Ka1vh^;Ioxd;5M|!jU(5V9WOg8%@|sEaA3H>N67MxwL@EX}N^& z(S3))*`}4sr}{!rjqUA79xZh1v#PZ?q8ap>W>D~Le^({54VoVW%ycQ}IJBZf&8EVa;4t0p;8@}DY=(0QKa@9UkLJgU z>zvYXtjs?_Mv1#`IUKIatDsQ#p0OcHXUh05aR`?!f$oel?f=#ZM@YE7|DNYhfVRH{ zh64D9DuDs$w*W{}q|VQOeE=!{U#R^&Z2oR3Dq3u0XPar9W^XG>(GUW2 z2h?$z2hxb6dLRNfrHsZx1pwjcX2da0bw;|!=i|0qje7~5NT=`Qtbfga)sZN52!Rv$ zXC(_8>NABX5iXcPP&>`XQ-m^Us%_> zf_YHhe?j@d!6*>CaIu`xAuARY_M_Yvp=lsK5v}#jwN+K~XgA2UV8clf!Dd3hi9|B~Div0U>3?~j63vK0ni<;Ae5)O_$>GsQ!+b3`L-)Xs^ez=^y z=VHPc{8y%DKUF&YO`b$wpK${^qoN#~3!o95f9RTU7PfUt zUehRLWdhGgBw+jzpst5i+sYw3DA%^NL~8n>W@z#GvTyeh@mru%KkDa0-4W=Q$lM3N zwjT(Ns7pB{{wc5ysG1f{e~5g){}79Q|DhDW|8R=y8yI9M#qU3y;$RfW_AV(LGl-?y zFvoN=TU_6hE~?86byU!c)cCZc9v|-F3I6F9FoH+d8uK7`Cqx zeXGE{ZER8Z*q{R|HU*(jOq%{B>V1%pv*{dr=r4)>B{H{1bELEVLM57Aqi?vK^e}<5 zmDg%Gv(M_TR%i5O=AHSA6a6%80a!(v0+O17kzQb0R(EvDAiH#@bfRAnp!Xd>Gr@ntG}8p>X8^LjMI}+j z@!j1Fo+Ca6CE#UpfSc|Xb9BTpU%pcn@)JUM9By&lwKpxfX)9?V7ItT8sN%lrko+XV zaYDC-%U5m9RkLr2U&^K*WZdvyk4l>AWNs1~;13CizYGR__{8z#dyWCh_75}?8&6(R zfMN>bruqtvpmMmeGzX^PToqF~5D^OVC$SYI21Su*e9>V}ucQ%@rNycz`(g?J{iU-ydD;9Ac&4SY0d7B~!P z8n{$x9*9&o{R>W|nc!fBsqGSR@g`qqZSy z0))dL8>OR_tBCoTwP_FpB>7+*jQH_iMaF?|PRsv$^kZdP*DP!!7*yZRMO&l0WVrrXL;Rp-0V z05mREp|)Thu|dmbIbf$NPR$7?r2ApU3utyS_F?&HZrCu6myLrC#*DECt_!|55lEDW0C zkO1iLU?g8XTxwiG0kZ0aDzmDD2e|f_|Gd6eHH_#7KekVsDO92rZKmYxqF2JL8&?3R>`K28k6~AfDNA+F6&}%HrmSrNV80>Rwty1 z&ZCUbm8GjuPMv^VO;>4HTWDpNwT5Pctu3@NlEXUCtO%nAdRI3PbF2jkNF0iZi(6&J3Wd+W zUW59gez{??euV?KRiCd2e8C?dxKd-a^w%YjvrzrynP<>doSJ^sl^xz%sK9}>Gl^yBf5fGe}oNlIKlB9`oKVKeiB$53Yq7AZn_O; z!%KnKEt-)0tP-n$S1G~{8uP`}kBCk8R3$;%Jtqu;<5_#^7x`)VS4}PVRdgFQ8Trif zeaei^q~N-gy1C3>INLVI#oT)qj^lvF3z8e`k&>b_agfa$pJd{)Y7kSE%khAE^_ZMj zMTL{(E*odqq_5(coGKOt7|an=XOtgLMqdqFg+d)rl~@XI529`iFNJU*)oNl5>K4Lg zL1L^U2$$!}>@IP+Ra`iO^ZXY7580+u4=SgM1e2Ewq$UH8?xPCI^cjwHfcl4NXM#OH zG%081;F$C4?#>V*Ln)Smqx#jr9gejw0oMF<#3M*YGulmNi9yKb_ewO`sV)DJBI!8XWwII*uh<9@%7Zc6V{N1^X<7W?g8)7{1&= z<4Q0{p1NP|%yrsEoUuUppZ_Zv3~(+bJ z)k-L;M~rcpX5gFt9V{rcfSDCnwU|211Gk+)_*EYl#Vt{NZ(SM3PK~RhhV$*TgK8Xt zq@%ZqTw6GVW#NnNJnpF8$b*6DjV_nlsj0|AdNPFRsD+pLv_htFwq~?siLRBG0UR>(xW7%6@e{VY=2ITDm#DK&WXtXqcQ!z%# z+c1sNN-JBUF?xI$E7%#0!d5m&)s{mHUhad&VDJh$IqdXQ*`R1DZh&>VM5|u6;}t7> z=P7?v3(?hdwJVMRxyLv49BetQrq~LI!|Nc{ECt_$-Xgq?{-ENcLfA#c2z)h+txA;E zK6@yMn)=a5)Bvxpy>?Kq2E@RRomkW#9GIVtJRFdJS;6aH1Rm1?>8g&(Kmx@GNzZi) zm>7thTBH2fodwq5=61HQT7z3c+nv}Lqn57SiCqb)2GkvO_;)3=8d(+eN?@~3*#?kz z6;}e9eabd~OmTHfqs!b$}X5mxDW2)|0*L-_Vu z&+WCo*0&n2tK0X{vBEnD5bJ7g%@?K90wmbnkCKun1Y#T=!r(Bc6U@&9KkUJt#uw0LP7Lk*5(i)AACV zsRSZwGD*{YkGPU)nAD^k_Kd`~IDFB_o;E|-D2lbRdS`UCrP>xw9b@U=YE2B8d5EDnz=fbdr0V{Jp|PCp!!|s{axPun`IZ zp)uyTeeM1(hfg_@;JHKe$zxpRo8UUHzWMPPG4;v6m~Qi{d3G-=k)Nb0M_&vmZ!EFX z@doQ)y$|Puq=77MKE2?Ofj(n!^U}jN?SZJHNP_ZfF&^WAj8`nM%}<~3(PM^_@dyJ* zhj8p~9|n#b>3F$ zmZ~9%8&M==`mAw+9?lWGgQm{j4<39H^X~NT=cOTFLnuHNv$RH8dwCuqgZoK?2ecCqtU zanRbEFcB{Ku~6?ujB@x!sY{P<6sY3zjY5V#-zZ?6(>Dt2yuQ?u@g{e0s^d2TOZRXy zSqZ7Ek|urfoW#*8wSx+L$&K}q9^`1T3dmL>E=uDTR=&q5JpqqLbZZa{-@QT*7LL) z)cBlMLmF?>YDnv6S`E6wy&5GDy0+SAYKYTLVMDCddK+S_R^Je#ofd~!t&}-LTB*}D z2+gV;BCOQ#8iW;!9%8K4_Yh;H+J^`$wLe5yqZ6#~wnjTayV2ZpqQ+;Xs#`W%u5hPr z1S5T^Q9_|(HV%koiE+y{&gRa++GJ~V@=BVMO6-rMIk;w#6L?dj^$Fdnjdkk8EqfO1 z>8fU)YrGH*x>WBhZLUF$YcwvKI^SqxYt}f5w1Z}4Gr>2r5=Oa);{0|f-j{e26Fwxf z66GZ76mEkNj&W)aG>)mv(&jZ{=qHX+YYkZOC^soay*oC_MAVtuREFpHZ0rR7^{t2z zA9}W$M4^U2yJ*@`X~!(X%KLd{jgV)m3( zD}``+*xD=j2x<}=9l56aU&t@~$q#9#69adXOJ&;1w}eL?n82QSb)8hv5Vh~EBT=W( z6&Ad}iJPjtf233CHp=Im4*L7a{BGH_oSQ%k8eBh1Mi~^_&{5yxH|Oz69>+}Dt9#F0 zlhBaR?Li#YRzyE#-$XZrZAUq+yn8R?7ru7y>ggW2cWL5zdzT2am>3Zvg54XY=;tc6 zWXx-own8|53KfBz)eqf4=sjd#YxcfSTA(yGQR<9J+@<>`Hp;?R8bi>js|DSjW`p~VJ)`r&d& zf%&46%Hy9dmlXMDl_03Nu&y3M431ARIxsSA|5iat!dR^pkg67$NW*0YIt%Pf-SD*2|uKY z0mMA&O2w)~2P$5FHBp7AyNP6nFSKLJK2j+H5O61!ISr^{I?$b135E6$)i1~6zRvQ< zDJ%+(NyP#Ui28#tjgBM2Ip>>@=dgwxVHyBVO2h_2C}xeXJ_Us%P|z@vhD~+U_OsEC zC9bbCDfL^>LEK8p#h54Z5xLj#>hCHM*WNs>#U!U`mE>k=F*1osTBLF;QJNnpjw-ehXw9t8R{B`MDhdg{&u1U_ zxXXZ_i1kEDD-8YWD+JFhiUc8h>~k4Fj=w;0>@=bY&du7r{j8odKOT*kAl<^@_swwu zh5vF!@;n&R4D~#~_=taJWGvzD9S@>htVQ&vWt%MLTbn4RT$|?2x;E9Dcx@^*zaCf7 z-Zt6IpE6a>oig2B5XHjz~B(8u1v*}z3FC9ZFsYAsQ=fuFM(x6C{R+UbzF@|)GQ~;eM znqQ}Qjjz+ZrZ9GRR-)5gmP44RtK(;73T4lFcW>R_tYN*$DMpwvJJ14O+K zt(!%p`_i_WBMlJyv@|Pp^8?uuL|7-fTw{ZH%$P)<6OCa_6Y;{e8Xv4pG9urMdWpp; zo-j&6OlgbM;u;eqM0CbSm?Mo2&A4ZEnCeTjL#H{rL#mrFJY=%4JoM6)r$J3h+8jDb z7##-4SseyOm>oLFw>xARGDj+$Q5=`=YmH}Nh+(D1wvf3MgF`fCc*`Enqy0H5U42lC- zm{NhUmVhIKh)-Ie@I=_(QaNhu1&1yMb7sCahil;H7|p_S2-NYpZ2I99j5gyVoH^p2 zXc+NLkHRgAA;LFj*LOb%cfLfJgb@zw@%him1OLPu^yO1dP%6+fKec=_qlgNNH}wLu z{rZZyz6<;HWtq?3%ol<@;7A`uGETho{%}@I7d7dK)&P6kgYAuq8pv-r%9@;TsFO2X z7@+ttiHt9)j7p~}!pW~hqFP;keyhb5hMwb^|uAjEtbf5L;(3p^j1%|_m$xo<3!I?hD@oaLhpH6^8gOnO1wOL6a%gWga zM;8W`34NxMYS2T6KE?;3<%TUmqQC)A)osW^u7iK{R_ zp;=9?LEh0&m)!mmPo*@V^l4ZaOB9t-gMt+|v)CUa)loqF0ug-$uUU?17lCzgv7F&BJM^t4y;>$hCK_yhF4ITkc_*wQ z9$)3kp%60?7vKz0!s-UyEiDSnMd@KN*I)U_ydh4HXoZQ%zZ_DPWkFFLp4XvceX$6r z;mai!7r31vLMy$L#psv6iJ9-i2Uq5Y4}V)#?6vlv28E7_`LJF(iOZ_e-f@`}RX-4{ zKt*m9n+$f+HX3Q>AJrqJZW^s-Rwx|OOSmsE6Wr`u++d5@B)37J$(@lxb*Up>3y7oe z#(Kjn?O1_I@@D6*YamwD?d>nWIKqx9q&g};mBPUw+aL@27Q zcBPRTI>}#+b>6EXW}Fq) zYhiyNET_e+AxtkJVihyMT$quSj-cd&-4psz+anGwobArd2r1@tr_N^-1lD5Gc?&Fe zxSyxk^uS=D%xH>`sh$cBdl-g*kRCbl^LzYD5oQxA;S)bF-#~i@2ui0LfKuGU;Rsx3 z_ZL_Od}Wj{i6q)UgI)!v*r7cdyP83diB`6M2T|K!!PQQ zn^W{=c7x`#vvk)7?0FZD+M(D};_HF8gSH3C*8^_{J$$)AACVKVFO6S#!aZ+Ij9yxi z)P}SU_@$0!JCfeO+p782$51B-NhefqXjxlzY+r{uZ&w?b5ZK}a3Ur$9mI*~9wQfg6 zX}Bu5H3l{FT1A+rv|367k$<^ww`0iMiCm`=Sd8OIQIx`e+t;OffU+w5UwsYbL$wDw zZF~RE#ef$HgZpwe`11Sl>F>SU!E-j8mEb0xNh}&7=^^04NyZLy{!&FuJXNIRc=C3E z`|r!_Ay1C)o*uKm@Q!wJjpyacD~8GOoG$Lp0sn?g$1FMi zE1%tE#gA-KB$#9#pNbj%{d0*2$Cpft8b!ayG{qN&NULA3i3hCmLyf4I zzvBihkn`jm;(9J1nDgwf?CCK%FD7r<>=i|1_&s}gEdEN);d2De*CjDf^G8gNlyj9WXG^OG zSNRltCRgR`6~4%9^09ov$}_nh4&myYBsX9h62B?&F2N)I%ofXsB~iIqPJU!}@Dwc3 zP!Pt~@)>&bsQwaPUzc;1SU-C%@!5ysmGtlY368_04>cmF>p2{@Xn=mXT)?F`>6dWl zCAV{kB}?!mGyRL!Ko$D0FtZYvI4=+`{mHrdeUuCS`w%j5*niEj?!w<}HbP`ilyIB< zD4y^yUM5LyiwA_ie9Mwss4C^n>2GqooISzs3ZTbgK{(%VreQftzCFz{MdaITv`oJJ zb(cRSe-!zGjCRQ2j}ot1FQ1@jV-)!v@zC#+|9&i?LH{U5%*H>;+43$+{z>ijkoW)$9s`4f3vk6nCiC4fQyv(YVC8e*Ey5KhqqL zLC-TN42El}!r#$3K9!TV0!oJlpys)U#Lyg%%U5jW2f=D}fs2I)P#O}V@4Z<-L$9kb^p<|s(x>9zzpb|Yd=8efv?V5mARF^D8R ztY|P^QRA53=h+)Hx`&9?IHf(oMDT#;gP?b_hx`*qGk?1*vJ%3E5HP+|W8g~z-ZJ*g2Ov;Bx6c76q{ce1RpHRQ?1LTdrM(h~i@P$EQMkXdY2F4HkSt7y? z{lL@>XXcQ9qOc5*AG6ur5+ga>fsk5(Ip7#ZB@^cv_ZY`fG2l`m^o#yl%N5E%4Lhg5 zG{NKVu~|0>6skdVHEx= ze<)vxFPvdk)(qY!c)>eSFp3ee?BfhGz!-nf=@IG#!$CH=9zxA;^BK}gNbVz=BuBex zyP3@9ClLIUVY$L zL6yi}z!Bpo%K#oO$-Yu!p1q)!CnfX-QyA-0aze(^$=eias#XA&!P9(#^~Y0kiWvwt zM}blJ8PhDtm>;e(G&JKS@N$;)hD$Ui{?bUF^v3;c{Gt*N3=BfXI!F z&m^*(X{=t;=tVwr{x{2d(>V87=jW@!3Lme^bJJNgp7iaY2w8MHKIp;OwW4E^Hv z$ASho(@JdU)7s{l{#oR(l!43@#^P+AE%AZj8Y3lH56R~olK`~$a(D{68&eOf>KxTymKEv`Wp+(UfmPF5( zNMRymu-aiL;K&E8TwWFNIKi_Bt%-^|viW($Zlj12LOQHr9FBMT!x4ao#WKMQF4W%h>i z)5y$!7DLzt1v~^wQ)o!Wnuq4DjB>~#qHzsB7BGXbzQa#8EAjU)QX47+25dnJ#EU&M z7V}yU^AK6-q|@kRXxBb$63k6-S?j9eTqMsgFz04CZG!{#Pzs*QP>ZiT z8;{WCq^TnyaLXCENw-=N|>8z{vvnw~x8%YRm#mE~+-Io3iq@ ze5RM4;5>$Pg8tXfmZL&hC$zrFv6jc*HyA{;9>?m68u21WbK^Jq)f7Gez0Rd_^-342 zk3qMz1G!rFBA-@Z$2^>?-+IVUJaR6$8@VRYsW5CtRcug5; z)Q~3_Y23`EY$rqa8+-t0c(u&W6Kwe5R28*U4}KbqmvfzjneAazKI^YO_IqrW`nW{X z&#sq?@f#qGK)%i3DuL>=+dwh(2UcSlR%L%+Si|&tQY_w>K!VkI{ugA8rL1x<7|Y-f zIED%ntuaFohbPm-F%kZo(xUp2;SV8g$q+4_jF%^LsfPk2FkjiklQeG&$`%E0gH@p3Rur z95n&Ss)Bcn2qzc=?(R?`2B~t2&K(j{1J2}APRjy5%Galkfo<;W&cGVwhdPs;4~fpP zU5$qf$(WwJspE>Ys=X_Q`r`yd(ER2TCmrDhSm?~(;cZ<$Jr?@2Pn&$jeUXnoW4*&? zA0b_=i;10V>=L6R27Etxu3=B}7w8{(f^~wn zv<&ll_%gJ}vU$>wzb}74ix&p*bAC6=Uv-}Gvg*(CN0`IrcQzrD$b7MfRe!)@(7$*x z$DH?UzF`+VXNJV}tavj7usSZr8tOJ5qmP@9#|$-dABN9cm>$qwodG?CBi4X%^P8&w z!(jZ8nP0~+D;(}eNR<|Ln$$;lDh$6LF~J!*!Ssfs*#Ipueh8f9V=>ZMyi_3Vg9EAn zRA#D0dTbfS(f}S|gMx*V`B}nwVpu1ey(o>!8OMrSB+oSxY-H%B{`eh^YnU>Q%I`4M zEJE}+_R)O3(N={0pjDv$ zz~DC`w}<)6F*g-7;hI*y)E*-Xpd3iB=;km+b?ViVkr^y0OurXPlXHz_xoOJlF&2GK zre1I{k(qAgif`?8(L|A;tPbUIF{!gBxa-ZwoR%x5{x^@=!~Dj5l~_cJdc$tRM$qU6 z=(HE0Nqo(JKm*JNW_ptW2NCqs^$OTm(5go)_cbuQsB{+EeUU@Me8DLO(`kw!N~d5( z$qVex8DaFvM#lI})42tNyH5XxyOL~!lwu?QexE7M0&8(=JxA%EXWpC zAJI9o*GG1gY3OtKwX6bQzX>XOtg|iwjFvE*Loc;M&g7FP4sQJHX=!2LS~9tCZL3KJ zTEh!Dp1CYzSJ@r_K# zDCdtb6kajI>F?WOMlLb^g?9m~jWOljfQ7#OS-{H*s zSWdA>xHmG#Lfiaw^S<^^8Y*t?_cO@u&@f^%8V3ljRTK}iJ*|!u(76P4Xhv>bo4tDV zbdkY0gc%6S7;)I~60816SU7sBNbJv9Wz?wvn~I}AYz5IazP5)X(k?Af0+ge>;dJ)^ zYhlW;zrC{3Lo_i4Obp)4lLoFP`d9}FKpSQrl1TG#a2XUEnlpL=-n>V7qi%bfdgJ!z zw-q3JixS(;aT2(W^Q{p8_XNue_z>v-aWZKNI;+7@CG2cu4g8==rzL!hbb2LHYay3( zOFvMEvtkXhX#lhGX@GGuY5)r4)C3vGssU8Us{u;NtO3l*4d<2naB)u_Fxk9D#nuF+ zrPc&ugw_P($*d936Im0al~@yy6W9tUC8pj_uU`UNr@uwgRg?tLOEtW@>{d-zXXdNv zDm+>>eKd?=+(&aL$OVpo<*r*rm?uDZ!`lEJF~yd^s(4S}D>!He>zHThF3(4zGmXqp4AIZ`kkRK)fh~sa3a<(x#3BJSV-bXhMPmmQwi?wy zdFWME^~D-%J^&)19YRD{sDN#c@?r6ujrkZb3=8?`F_rGZYqp&Bal{IK3)};LN&Ey4 z`T&bs@-72P|MIer;7ct}u}&ud``ZIax5>Lq)(mZA15ADfkca{RYt%x@PaiVPe@?M5 z!zOD+uX&3v4-SzVu)<(NsHkX(&GS&wBl2yGu$G$S@GwQOYoI(j2ct|~kf|1|b3E|$ zz!5x+Vpd>$8i+B9=T(7zeg7REDhS3;Ah#(BhZ8TK)8Fs;2u=o0!Ra0TfumXU-G@UM z8({cB3(sH*dIfDH(tTX>Gx>4>U+Ax279T#Gn&MSZSu?ThXV15|4-6dj!{dB^YBJRi zFEc%O&a*i#o6%8({u{Q(D7;-IEy2|_>>n!tx-h`rm~Z_s;XFvtpO;}7J`Xz!Ft4uZ zz?FmYy>IO3-7jvjt3y$TF0gC1bg*>Q$D;-7fsdz%u_(;vvn;WE1jAfnD`YZ!>%ZZ^ z1mEr0-hzuor0H=r@gZqvje*YQxP3(1@E(%=JT2x^Y$H;?v1zI-Mb~3D#TaJku*KK= zDdzt$a~1BJz?BnPO)>NKpo{jPMSD;LfHlj9Rn;1G0`)Dh8WG&LCo4ditm&BP!980j z*k!^bmT@r4pT+){PjH0J&uG-#HR)Qb@Yqv`kr)v8fAVx|Ys)6|&%WR+(Sn@&v$;(@ z%ZFN(45D!N2RZ$-AVGhUcJvo?6A5z$T!WZ?2H0*|oVi2l70zYwm348wc=hWd>!9-? zujZUS4Vy~#s&YJb+BUFFRjCicz;R=?17%ac9VlJufPh;7BQ%{hMp^>5rkr1|L79LR zWds4yx*M0<@Z|@_aMGX_z_5{wxz!T7JtKL!4sC*NPa6S!)Bw_gYrv|7U_00~xERu< zl9rNYJF_M1A@;i$)X+vGEjXuGI|hZlTrF_6cfw9z z@Ibo`>6JQmb(%~Mb60ssO&%fcD@ScF@v}TM3JQ0c-)Hbt!`y)n*L{0%L#0E8(fzqG z1Jw@?b`Q(#A{%VfRJ<*-dJt^@jFSN@ObIr}Ij3TQMQK}C9Z)6E*z6sE zHqG5NpwUS!fNh$$1JK4ndbyuC7AHXX*g9VV({k8)oSM zvc()7V6>Q_1B?#ybESt`e_XmV@y1?wtK>J2QMMzce=f^KuHEi#A%=+nckq$LhpGAt z+zjg_0yOEfgK0LhFt~ew(Gr_?xl6LYm_TE}ayzEBa2i=H*GG717A0x_AMR*i$%MJr z`nBmhsewtpe4C9$@PS?WHv6o%xb;T6`IqEXAc+js&(oamfp9Vo%g!-B@NaPB@Z}oX zq|$!wzo-PNIVXDCwwyv!B_M>KgleCPa(IH&MDUO_e(fxQkZ#k@+gI!pnliiX_$@M42<)hG0CKtN^ z`X?Mk*b~6%OOu65vic|Pv*MtgqKDH;59A5MJ*NCVpRs|08I26Ysb%%oDUL|OcAyo$ z%BGNqvlm1vR3z*t?pKcA6v&7!TaIlRQ88QV8hn2EP{S%f;3`*}zllA63Y0?O_!~T}{rmFhwds9_UyuT+^8adxz0?v8+ z-n=RaoWCd8;fq;QV~pv+F-1Y2X(#;`dszG&30qk%}Xvm=UF>+Fa^_j+bsVH;+(h=5Y- z>}W1UkMC=g6L)qrlvJ|;v${rcXGcRx&LVdwBvuy{cXl)s)!^({ffaFfG++r^WR12G zhS3^W)<9Vgr{3AoP$#kj)|Z5x=GWlPTJ&q+h`CuYxd!e^XGeon)^&D7N&S{Yv(!lr z?iRsggPfM82w73i^n|Vs!5HA)^K_wK1mq+HgT?hmwF=_|dd^AhBZ&PC+V9t!3wEl- zy)@cw0IK@ormAf~+f4;Qr8+fAK%QU}3z^xGkY^AYz3GWXL42jiz6nc>3*hILm2~k| zhQEVW-NrE+C${E?OP$o7J%izdM9&El3w%ht1q*yA)@OlHty-_#Gt!0mESO!QRZ=i; zu9Xg_dV{IG6by!CfjZh}#K2lrI>ES-cOMC*b;SwVA*Z`|sr4d%$;XJ5h0rhU>G*hF z9Vp5U&b*;E^ve~ti|{p+fp%lXqx#Yw*sA&xjHE&+t?TQQnVxBaD^WtiWzSM zqNAIiwm$SIoXT9G!D=JXh(V$q(L%^(D=U8QPuh2EUt+@JWSO!xwye$FJu^29iY!TNb89YI`l5gP_hcp#g|%3e>6wnUSOsJzmI4w$ zBA1)aCJ*AWrD07GWB3E+!G|*$!n@SC3W%Dn=D>s$Z$Nzbsx^CHY-dh8LrTQz-F%CA z*oQuSXNoX=2x9}^ix?>|Qh6*L1s04`Cu4K~;tj7ta~!P6olA*4gz<#T?H%kcc1qb_-_ zT0s951I<3i6>afm+`{&0;2!HMfd_TjC-XG~r(&~9Jj4{~fB*(ZKuk@Z6Qquykp#bw z6GR8ZU6nq^1i6YAnlD7{YYe{K>h}9QM$Ok0eIm?Ijr9wO7zwD8U@^Vc4ghH^M05~A znTS+*iAJ^%)s-tFLkTVQ-nlrKoMTMEmmb7}q>_K86>WPlRvLjJuu+bf5s=vcC3#4e zf+^gm1|%sOjWm80(I${BD6+%b=sSd17$X#11KJb-4r|XCLDLkxrq+k#jJ-#;+9SJZ z#u8}zzqNlX0Iq11W^%r9ts^Ke8md3THyA96v3a?K{9|)PZ1rss?Mt`5D+ZBBqp!P9 zG`6IJHdrY*ZbjtZFHo7o*j~{|Edh3940T<)w1jZ3JI&wy^AMwkrvbks-~|u0U7E z`TIB{K#kIvSH<~86znzcsM8-}ck@m&E~Vl-^S-;XhC4O=jH&VDD& zii_Lt!r>_R9NH@^HxHr_I`a@Uopvytm0VDsiUp~w3*4N;KWclBCj&cK0ck=8M$p-I zW9-5@90!^@Aj}ZbgwA~vo1OV)t(M@Ql0$>sBxr335IF_Q!5qO?Vp&V&kRa+vz^ek7 zE_aBSQ^p_K##F9_YPD!b4Tt3Avj_>cO!V-WAT6|uF1}bb026~=%=Ide1Rd$26qRqs}cv7`05Ug31q%))qrS zUWLohhF~={JDg6YQnAe3KOz7rEyug|%IYpLF%nlGJJ~VvF85ikU?(?5ZSBkvt!4bJ zvzT=5*gaHoCq4a4pCr3YM_gf>9hV`yOEZ;mIW)J)D8_v}r2DwQBLzz|EpBTU_dz#r~t5#)w~a8Mj?Xl9v3} zH}ggR?OStft`?2Iz2Q0~nm~>=t5Px}leTC~laITD%43XsWX>J&6K(U!r8@wv)VRBV^h$WTpFy{oB#a_^#a(_N=^{N)FZ!^UmL){9BxhyF z%hP_Jtt6|oLPVmc5a@C=0OHC4k*!`u0gi9&3v=)QcAxn(j3+MePC%|u|`OZ$r$@K+JjdwUghCM z*h0vYPbJVUvDEhm^GYIQQ{AJoP4p!OHaQj)RIS5}6nX76&RZ=C7#w@^4bweGt5K%s zTs6!E$#)ZYG9#%iJ@~D!JgJ6w))8x%0fN`yPE>b!@+lI7vznq(s_KmffN%i$Zm{6N zCvfJ)2dh+rWv#S*6JNus%I zD~IoU-koyk_>Btx2n%A)qz6Bj?p7zbaYD975&a;NLdKIv9|Bdm#)1_hBAFeJ1@ur3 zC7&`meu}8kg<41rXp}5y{N$q{pDH2w{N(4O8GN5kg!M6kxGwK;nZ^+E=tH!i0*!RU zlbr#K_@40_7^nJ(_$s(eWxDwF^XQhtxv*j&=iLWJpAuIUO2l5hPeoI}vRj6+Zvh}~ zlqpM?v4u3eIZ3mcE`%tY+Xsa54`nGQw^TJDt^&CY7_#hyfvZ;^bQ`tBP1qb8DXb6` z6eFcF2;I(zUHA=$%nz5m{!v|3GUu)S{fqG36?@v{lh{+K&-24RnWch+2nN) z9Ox^g#oiZp679j|r(lBb^hQ$)Us1+-IGRG{oX#>!R2Zi1R+`&Dt1RBKZ?RO0d!!V{_%1%f6?m0$WwG%DC5^IO6!5=ZUjBumAf(grsB*B!iL>917$tjbFB*l~!L=rGIe8_F&dEhMStO%;;hYgi|w=9tblR;8~BNV3&|vg3ha$qkvQ&*yiSV~^7h3O~W; z@7s1+ur7!CRA;Q`t_~zt8mSx>F02($!vxdcAxX>4L1U(`)$&XF-ulp5iYmRPubMaB ze43rk;5&+I?P(8C4@1yJtMI_?0!(7i9~Q^&HNy5kQAH?%^ht_zigvNyz>#F1rVnwr zK()e6%A%QhS z`lKpz^YKr zh*BDln5wvHdTm1sNmzWv4eS8F{Djl;!k7ze?;qcSdbfw5$I3S>WVJ-bnFah$&k;s^ zj0hp-!Hn%9Pm!9|tZW&&asgVkYsaqc3I1cN?Kkj1tK*v3Y)r z>IzFYY1=j_W<`EO_Ou}}Ab6Hdw6(Pusg zrQ01Cu@qM)2#3tkGDUPjfN&#gGR&13!HBSx!AYiXq!SNL|H! z|AJem0eyv)1L`YIRN1i-oHKolB3 zPcca*Pi81{-Ocl_2(xV-&)z}mYMyCGqA#2`bdvMNo#VW7|2XeZt~77&5S-zg=8)ac zFYe1n^TJX>NEZ=47X~&w;V`9c5kI&boA+NIx)}HmgSmNsx17J2NAP8YCbpO-!^ynt zI|=V$Z+k-O4MLe-ArvJeEt=W%ivH3{(zMbdm<5;@>0J9lsF0tE!hse0yEb^Vy-8+V zK>y&e9K&>VSo}H|lSwB(W4hi$EKBz=#hmreJFMqa(0v`^Wx(OFK=4!s`B))jU(^>@ zSob8L@}!IeRTV+edM>AO#hY4FEl5R%@tJL%GsGwb1#NZO*Dk8}{Rj zdTa?>>)G^JJa#a(QIj4^dP_!irN5Eya@e=?3~+2xYJeNt^Y|)hS~1zy1d4G^W@OBx zd8%3i)Ql}ppl_y#X-gi>l}kz^%C?$Un(N+#M41^g9>vXA@o09=h)44?Has>vZNj73 zzCKP=^;j<_2C1{((PCDb?^V{?<{Ihvca&e2ToVmTT=^|=|-93|~-W>~x&(NEdlD0*F9(kw?2t36S= z&>Gtr*>;9DIZ8NbGNYL_RB;ZUFN{S_WRRoywZwDgIEtLK#?egWMzr;<;WjSVYUW48 zvi#4nvI#A5v{DWT%LAjKVP;?Y6Q=EKEbXL`j^@@F;V4Mb%BE4Ktf(mq97SJcfTM7= z_BRTYG{4bIHLuC^FKcqAEI}2&*7ha=lpPNBmN!btgUS!UoZXF*$(!9MMAGWUW;#|i z@$O~M$&E&=V^kAkI++n-y}^yvENyRNb5rIvHj_*FwmVNXBTYo@>&a<47KD=Z$0}OOBrXG z2Ie&uys34KA~=`2WQSuM>cI=@j)>y>k%Td_al$bO< z<*L@KN$x#b=@u^FCPs<$jf&R2l8#v93wLtROW-ZFt%H+u4ZpiA2xP`=O2w zJY}TkO#F>{P^{OmB^RZbdPw#krtRtAI}aA~pS+5S@T{K7)EL&RfFi3E426|YJpSvU zMx!RQ03~y&p4fEQW`ma%P@e^g6{ho_X*6g;Y;@L$7z9qkA}lNQeRMKJXDu_HD}M*o z41r>WIzh0Bu57_w2$a5?FXPgk+|D{8D~zH!8J2r7_fUY;`jX5`qeuKrajT4~wzjbu z-lw=>c8Ws89f|EKfxTy3A{(a5k3o||e(B;u5UYHdxM`~Fa7A^|p|{Y(TK0&+gI_8) zmfQ=?71vZTP?nJ1DVbF}3nv#!y0&M*l$?q(6BkLQazb!5oF~(nYQyA9p*Y1*~~FrD&VKn^MXRuBH^U$<36)Ho2Ih71lq(8Ejc~1BrZ<7u`ykEZxB* zFQsf@;1r^va%RxdS5hW3eIsQHB*i^h@-K6X5|kMV79f^>X&Kq8rx0K@iG(Ov>rvw-PRr4YCE2_9QxMZ36kf1hc!sw7b)T7b&<)exh*mf$;+Y!dHJg%TXemvHUn0B zQDk6}_e3TyeN7Z(X1{IiC6OWGz~nx^clpx@C|jf41(B^x&MliZIpvg1^PKyin1wr; z;Q(~5eRw3mQrAKzFL^8E<)t?{sXL(xO}}i^2hoj?-Qb5^ z(&RqK6u9nn5S1C<260V7hih6w&0UZM*~C>)npkS{wcbUL(rtDRq|i;TfeieLTOg&n z@)F1y6C#tNYYR#wJ367lmlvF5)(8Q__J|CCWPPyD9tiBYz*0oCuhJ(-HPdNQn1>J3 z`3RQN60i_(MzFBa*EB62E)BvYnd@9jh2o^D5KV@!h7g&PVn_&5Lr6GD&?HP%=|k5K zji$M7Xf(~gPje+|yX2cs4%iCp9bh$aw|p*psDNv5KKSCf_BkRSU>CD~IcpaLEi*wX zdO!jB#y?NnmmICeRG)8R3zJn`o#Lj)i74}F`|t|Ro?yH(SPWmF5D%#%VeoZPIXi=A zJO`uAGJiB}JuH>+uUXhD(cJU+di4xX(6ly(GlxhX3YYronDyRs|lOO3ck=Cn{E8bfhQ_V5fMpUWcx}9JK$$I5E zqR6$o2jZ&y_Ht>BA1X_n;BXC>&P)!~NtksK4RTf&=4qM&0>0`lfrFy*gBu zz`Zg=)}LHRRh;<g1qK|E@b43~3pVhYFe$2u>xliiJr2P$iK7vC0!0KAJCHOk76T zSL<^{iQ^%$$rxLk`_yc@OOW*?$XX2bvd;lQUJDqeQjwrnhYpT0qya&x8aY&IH zS4-+tf;Cm|4zZ)@;JF-XrS#dMM1iR;H67Qq?yEy*|EVNnNYqCjDhkx&ze*-!%d>;J zdpjADSvvhxXyh^H9cA27k@QsM(Uy#Rm@M!2&y=&Fc%8J*6#*VKKU)}XoPBkw za0r__C8LiH6%wgmC8|$UsfD1dJ zd4|jB`*H?f7qdZ+5N?*YJmV`wDGoU>(8PBE3~|5na)z*9_s+MG!D9NGCf*VE7JmtL zfWfb}W9)q7&tn&d);^Cpw+ri#m7Mbh4(5wlDI?K5IhCXV1RTz1Zev~?{MOE}B*Wnw z3cyXb~r9XKZGBsieNXHW3uiR1mjt`6Cq$!?HFpVLn&&S|=zK!d4( z1@q5{hcxS%m(PCPS9I3vgWz z;$*6BlxpUWnVcruBz~Fr?=a{lZZh;!PvLJtQ!1X{I(Ufcg(%Enn)4M8X5A-pK8xXG zo~njIcOL==lg~`hyg2x+t@0V(Mwmx{h8&jP2~S{~%1CbTS? zX=CNu9zund@YRBloKUZI0IJlgF|ez(u%z5$sX56G^o~u2VLIvbc<&D2pn-ceW6jB;4M;34{f<=jd{1hs{d}KPFu)EO@Af1C0a+mb51*0yw@Bgm>m8mG4YNi^EPVrR|mQ!7dQAwb$6; zyw9gU#2SjLO9c4BIt4cu53UfYwR?2~85j0r;w|>9b(8?zhE`yN|GvcH1!;rkz;yaCowGp z$#fD;Jm^t)cdv~YeKY_~MoiJ7V zsTm_DQ~)cln2McJlgx8vKz2&isbDY_&F0uk)7^NL=uJAOkZ4<8p*WiRQtxDzKldEU zo?gEY$mM2fAfk!(48=v!-k{Z|stlbV*yR*Pjy_T^IUuc+!hA&`HnY+X7T8(&R4WSu zbN}j4OxspD07>%!H=lQEWSm8tXDPrRxiksLZyB<+x@0Xtq83Vln1ZA&1}GlI79A5O zMng;E(rDi(m7$@Dmze4ia^yObt0j*zImx+JjL_O83^EWbgDKtbbMNc!warv2zy_p* zfdy2embJFE20lxH9gCZhD9=Zv(!}<~@3}1fW)u@pEhuJ=F*2&};Uo}zz++w09UUqw zz?7}V!~*ja2heYJ#6Ggw)%Z8N*+W#trQywi0zZo>ufUQqYw`WtVcmoqMC;k zvYCxBNt!K>1Qt*yA-gr(448|Pl_mAxJsAWeCfvR+3{EK_ZKH2jy||bW=TYpvImE9e2AT`K zH-CWlP)g(nH*0@3flLVqg*;H6?MU)-cE(Q1>25?SV_$tpctwYdWHcD#?gxO*n+FFW z9;PrEV3@8R z9Or=Wc0h^+k8v_ms7V$DwW_b=iQo?RutoRojt2b*UefVroBr(3pZ;KmTP=Ji7rNp^ zL8@{iQrWV!v7bC<>ikXRQ7Y*G1p|==hD#$F93jBbV19$aD7QuSIa$m#4MGLfml$$q zFy|(~QG)_I?-9JlcK!PN1$rLE*JlN$XQ~?ga%r4Ea|8*9sQMe7vTSGZ9g8|d^}8S# z^8jsk~@>7IwHc?Y@-77uj zRbinnKn(MAGd-^AXDDYyh1?9wS7`^dd;E;R2E{+-G(@v-c5G7y_fEAd^bJf`fjGT>be;_SiR8!u4jNmwtu>C_@zO2_9_YNecs8) zekGAzeYdE~40(Uwk|5#jT@v~J5*8Jc+rvZ?F4`5=K)5@?s7mf;G|F^0q;4keG3^Sb zkKy>ls1b3Y^O5?$#A#5|j^Lnq9i@rUf?Y(2Ptd)oO$f_B;#*bSkJ*>F%OOc2p)AMU z1ZQ&I1lE@(#yb|bV^SE=Hf0sUHmR+Qk)a}7f8QP~5& zqjP^oOOu)O$z}*YGzO^t4ArU&YZMS4f|Wc>f2fF=J_YUfu>q0(tTGbS_e@K}9r7OO zs9-Q0n|KtM7(q&cVrzFwZ9ZNYH6KFq5|TLVg5JgP6OuUdA^O?H@e@)wzV{I$+4TF= zl_w^pq#Q~{yGxph$`XEAlU5~nBIIv35cV2Ekb5y4X=k3dLm_dOl?M0b`SQy&_pAtU%_E8mg)7{?JK2*Z1e;%(N^uFn3Z-2hVfsuI{~b1$oav z9*E=P!V)97T#wZ1K~5h%B*;Jpi&GprC>EkwtqpC>@!(sudXRd%(L7-FS<;=}3lmvY z*$0FXfQQ(*fl&Z7?jgaAvM2x_gukTSkjy`U;b)8`1nY=Jd4h5_jxwAYByvsFmy0?) z*b+q9f_S``OrtEP#ANyCCJKhs%pDM zC(B)@Vl@QvwdM(!#>D=zn!R3~-E@x$L#4?d!)Bl8uo>b*71!Rq!^RRo^y6_Tj`2=; zs-Z!Qh!i}0{8o!FjYW>3qxLys+o*3S7MzhNm=syeWLXR|jAoIK;42dOdHdZtorO^Y zdEi?5AV)C9_^5V$_BjDak*y6e^OOMEe^64?pMFWOv_S+wV~xX42?7Yc0?A8d`{KN% zpm%YH_qn`VAXFbI*Px+(LJDUOAlEeWJtQ|Jfps|QJ|nm!>p<#b0_@<~_N94B0JZkJ zV2Lm#qWGRlG)zk1!Tk{pl=j{g2L_e51RN=Z5a7?f`EL6+2tbF;ESZDK{QxFx8pN27jOfy2IoCW0y>b+;XGbM0Ha% zvIQRX?00m_v8gHgzT!)kbf70!kzY+y@AKhvOLfmo^zdL_24%pn`d}rF#9Uhm2GtfG zD()e_s!kDQrdqXCBGPABDb|S^9bHtlc39hvvU#TnU9SqZXj3}z26^K7Esy7rHR3jv z0pzZgl=hTNst((v4acUs5KMx}xUVVr7G%i|xbv2R-kz&{u26Sh6YxjG6P0b)=LBFN zEOQnaS6EhU=kG9OI6%8Bd>o)%Rx5tQOgrM0ir$=Ms!H^iqAI;I)u-87rF-W0L6&Q? z9%hkf)|j*VSuNje-p{NozWsF1IJ~M{W$o^Rt0}vm>e+<*S+1G4pW_*C`&ofKwx8+Q zNBdch)uEpen-kg(Pv*J^jmwvb5_nh=ir#z*k2u}g{cSPrLgD>k4wFY1*3Y|$&C92! zqT3t2e50J9L`ojR@qTf24Gds)X;9*Z4^R8MXc10=^4xymyC`|d0xj^Lo5>!#2&esk z|11R;L<%{c-QPk7;5P=57XktwloD}py_k04A^=laA3cDU>TXC-W(MPnGZUoQCALF; z#Z@Iv=TcBZggl*4FsU!dLCf~)B;KS=SY^&Uxo&0c~n$MeDcxa@Ph z2>wIRN*vtJXjaMxKjP+{!$pcVm7ZM;7eJKK8)ox9-#_YS`m-n$EWU~=#g&6AsZ zL}~kbdpmoE20s&o9p2lmprM_e?b`vJ0+Q(~aQAo9xSUS7`&Y~~&?n}6QYEN5SCzu+ zcFPHJ-sa*B0CZ{*$bO*n$)xU%VMC1CQyaY`5)EyU4Y7oqZ^J{xGd>9Y&~PfMET^9E z?oci$r_a@PwuUs}s*D;GYkd35pnR%>+qwEo%3m#``d@Vxc>_g+cPfqc6V;2?NMgT! zyIqE1x}uuZvRO9CGWE!L43AB|&NW%2zjRD|z&MSOXSZaBrx_fNrI|E`qiLa_OuUP0 zV$v#}<)&IrzR%7;vxOL@* z+~1-mq-aL1!i!fI40f!r)N%aa)PULvaLQHYWhfxYrLjw>pioub6x#)#F+^PW9l(3w z+E%uO))wwyyC6`Sf?H&}d+>AivAy`n;PT*>*4jbZjf?2LyP(DmtkP0ycuA@(6*Q<+xsw(RN?{l<7f{_Qen0*X~kMqZHNFj-!oGC^?I;2dl zb}tPnBt=7t(i|%EZ5d35l;$g)-QElC&Am>9&ip-uNoJ5J;QmXA_;gP`DCT6hM{6PK zt$=$(ks8jwZVqHCOqeqD(ak@QA}HHDxw-pX7G=r<<(a;s&N#vT)a_9-Pbt}jM1L?O zbt_NR0N~J&@;cU`<#sNy4nmg+%QKc=y;@_(tb?5%+&miW!)pAXW!}3BinAaDS+wZ} zl+)Q5u|$=6#XPyWEsR*F00UK(=#ALcmMwz-s~4A|4BesI(Zmfu;#g394&o3Hv|UJM?{yvLhGRF!|-S|SJIoOAH&=D=+*e||#JFR%4ttf9g3 zYE1quanN5tQ4Cv=-5Xl2$u>#SoR%M$qmMa~fFV1X)v<GT%1hWnC84EPA9J!*)srXi*21fg>H z-JxS@Vn&P9#2rkgCOQrbfIkp;teUW6+O3=h{}=-q$+#SJrVaD~X5WxSKW_RyB`}ga zxOuLW#T4R-S4>i*<7?8%E`hha(Pq?5clsqj$Zkb_x~-a>C=6R@&rNnUI1bwvDl;J> z*u8?N0Gcu7xZYvO*44Y&a{fSiG~2t?vvFwBz)MLp0yTOt%?R-A2n~T)385K*j1v;u z`dI13WNex=jT07oeSl2M}-u92Ex+Ja28Hzji8@|)rpp0Ez||HN2!T7Vg$54;98X$V2Ah4h9{X zia;2EXvo2uPEnA2bu|2-Y(Z+LoPu7MWu+0(RUhF1JB%qsJ6=uIf;OpZ712=Ez?#Y` z=sIL6blEDxm}652zRGqJU>n@9p6yvM7L?~3RUZv87)Y(Hnz)DoY)yp305TsdF#xnt z6Sq4e{?9kdji0z08royf%RGa!#DX&SKCRe#FI9 zL(D*%*o!Oc>zT^so3)>b#~4&K6PYo9G8^AjD`7*hY~046RBt29W#^mgD6@YjP$s@( zP`7HUy`o}OfX10P59*LF`|e^g%WQG}5(Y{RO2&nn6IVXB5vnN`(#-kdP4Z-B0#Md0 zM$Jmk$CeBllZi4JKvh8^G5H%zR2P0t@YO4rjWr1ukGm^2xDG5W2{rv{xX_Bhl#5jv z^jAZ$+W3_L$xI~6S3$`>>oeH8oPlb(1y_rU?rbstbs%2xR&qx#;^j){Ozg{`Rk8P3^lr(AO8svcG zR{|%lX3gkxpz@?v#o-K^Ar`_bkDg+!ylUeu#8z!EBwlATs0Jmj9#kk$fogg;it9-| zwXQUR?~Fb}V1NxAIX=Nw5qo+T8r6L=x?8$g^kwy=z29R05yH{QjIeLIOru>$QhJ?^ zgMp^2A4dlb21KhiPG|(YnTVnFWb2PF=<-s`)h}bYT!YSsn1N#fKzt3g=p{T1Us9*9 zT1&}+?DWM!qQl$G9t@OMjchl@s4b{wV78LcMp23pJEaE%KJ=B!-)~r)PKw;HIV9;l zVp{c{i@WEdM{lse!zPSm_eFm>8nNEtkwso@Nm{|a(v;MeRs7nWjUb3cK#wn^c5vE7 z2m@RZ!0?80;C=S*%R%quvV@C(;-5Gu-CuU+Y%TY>+kg2Cht9>#ay))HpKx?2+)xb0 zFURwTM|iYDETh@vk8=DTLv}PTer0F7U&_aB@qUTuOXw@;6@Mk(kJ66+Sk6jl`E?&( zh(>WddO4X5=F{RF@j6du%fSLMpUNreY!%moX?c$O&GENx0k6c%{>!KF#oh?S?>| z8!#n;-#9MgxHsq*$4`i8F)A-96|MW{1b5mu58Pw7lP3x7^AQTK^Wt>)@(~{tM6eOK ze+Q8&(s1eaa6T9UXFPd2zNdaZEpKOV-1Txc{#JZKXWT5x67knyNh#mw!))?2Zg*#} z4dqtR2f#Ofz}Np3t(X<;4g&qXgiAnZ+;tbfKCoXqXiLN9u)Lj2z7_Coh(piyax|F% z_o*b^^x0t2M~B1CqYG1sXD;#ty-3l$pxAfQ9l}2YnPrj@D0MauN*Se>*b<^X-(EhD zg~yDC4KA!VRQ`#>t5xLMX#7LVw!PKt!2pgbs{P*rX z#xp{B;TwNNz#7caFD1S?X8gRAA$wC|I7~na{RpY_uc#g9m*wnkiJ(_AeBGgpGeSP^ z-Vb{G@tOU}tl)c0K+BN(fMyI!t{m}+cjUC2yX0r^creD|_zq#*z{Un8!Xe&ZGGLmK zL&yuv{`-&XkQiD5TQTyM~OfL$t<9_H*PJgi3;lMt~DFeng*54EEJ zga|1IU&m%@(>(gHgh~m0cnrv2%KQ5Pp33fL1S|vVgK{8Vzyi<=um{+ePr&(@xg8H? zSoTmQoZ@;=A7K(haC739yzC%|-+f7a4?}PnFESOxqI*gKhrqNjT6LOH@U}Z_*knF1 zW4q|i;oOj_-dlXZ#~)#Sp<{%3bceVLrv(H-dj{nl)ms}$L-mCFZV55=h)2w48NXO- z&cPE;Fgb^~iyvZ)gO@*{{rBD3=LrQgfK@&-G)#G#^DYeVT{SPC_aGu zU~Od`^HaJJ>6>-QG>4ZrFd|y2NM2Aa^y*3!sZ}Cr0?U0qDXZ<9M^f#T$AHHE91Vnb zMm|DSRB*;77Y)!|htDqfsW%t>M8>2NoeG|GA$fy?eRF<~&9zXi0;eG`&4Q|dIrvvZ z5mF8|6j%zuPfdt5KLJb|6R|twAWQgm6f5xS||m4uc>X|$f;XyJm2^MWxrho9`#ll`iB`CI~3 z^&n2B+D55CgQddS@CB4+ra%QbF8RG44K=Toth>yq)!eSWaFv_2aVs0&V4G47={mVHT~H6= zSVXZi3voY@aNAVs5_H~AzH0Ic07n=LAyn?%z3kCTG7$sy9dFcV5ILI zG>6&u+cdbHOzvAj+alr@cXt3VCCQ6zF&k?Ut^s0Y`s&>!HKH#3Jire~RWCj%?q>mF zQq_A!YM)&dkgmHtSPH~B*zOv7%hV=$t`Lp;0$wp~XETt|LFPnv(pf0x`PG1RXx@?* zE$YI*wkq@)d9X4LKT(b3fo2p_hO!B7Ac1b4D#D~VBA*@>89F+3ps^x`j#=TfEoT(- z7uD>F672JRKfuDIedD-G)eu{lJoYheDO0l8lM?vDgw)JnZ zMBE{dLF^MmeX3fvT3pQwI1(8U-*MjjiW9Hlfo?#>UdKtP2d7nmm91BSsc&2#j;u$k zZVRTLZ64t`P1~v(PA$uT9ZYZ_lQ|})<7)TrhDHCEDR)yhb-e^+fEPnHFYm1bC zB*_xJq3qR^tWH*=&}XEIM4_>gs2*^-%G{OM6nai+>xkt$dHKddg83t3i_2oZUHuBLSx%%|TptP_lXQP?Gy;(cQDGpxTc6^J2R% zM>5^4yRTj$q}_y%VD{}?5q`W@(5_5icny20;i&T--MBdKfhC z9{FwJA>3ykK`A3n4+=Wu-tsZM?~^Lh3)5kz%ASpW_6e~XckWn9EMOH##g4X$ zPBaj!EV~^wH`591>QjU;{Jp4J)Qu)si}WHVdX;rxozuBN${5aQuB#FsU*jjB@<3`9 zMYi*pT6sWYaHUZuBI7A7RSAAF6ce^j3aaK+D`|Slq%e3iK0$XbqWr3SmLor+MwQm()#B?xd#Q3&%9!}=P zO(stTc*u@ToT>t=ixed)q79)M=Zc&omz%U(QosfU{JWQnM1H>rW=8lyyNU_7&)933(D z5J7L;Wt!_7@#tr&v)!>UTSDV=S2dxdQnHphN+V~Wqxse@XDhVJQ3zaNTHBf|P-KOZ zg`{PZ6k#}`x>;nSWG)NmUYY&G8^Vp;xYElS{?F3@|`N;x33U5OV8GyBq? zFl{?xY2OWI%B*6-H3lV0AZbU^C^K(0qUfQqNN&b^HX=Eoq-ltjl(q;7bMv3txBtko zFE-?$n+0goXJ7(rk0wz0TIFmzv|V|V4uwcsa@b5L-CNf@5eL|Fa-&Sg5F;LSPG*Ey zZ=9hu6Elk3Zdyz+GTRz*go^G{O zv%uL#ZBBZnmBrQ@Dz)Uvr~DcE>FjqKWJlwB#>=0#UZd26-gNEr!B4zS(0x6T7mq!_Z zT5*(tSuKsy%G3#?3`|xQr8K0&IkY?&R5*HTB~gY%y&%c}rR7kXnepbri$qciWf0Rs zs3w^i5tKpowj;hI!9b*hOslh!;wOVvZE2DP)`*FCi40{=hH6qeWb$fAI+CYI@YH~E zPV8h*lTs(Glwm~~p;H2CC09#|oU|%X37nVgsx_22#SqCQJSlHd+@wIMNoI|($)G1? zO%3w$k|u+^O3-A$YUNA@CMjkzd1)zAkeU6qwK66{#DU4JYxNQ)L&pQk)+i@mvX#ku z3}HT(lrCv^IO3yd=aG~x8AL~V6yZ5}A=|GPEE(EqxsqlMp^K8)uq35Q1}`a8^77J~ zAkfTx;Q#e0znc zsYh10rNz`pw<3^)cuQgG<(tf6XzU;H&9 z>6hZy63@xM6gepX(@fJT8I~lq!`R%C*@$xa%&`E zN+2l;Ym}K6hAH|gX_&&*io+BrDG$@kv_LG(&3|e~+|>vuyDoe3u4YjA0&`+9ZC9Pz zmEr3t2fB*x3cnJA(vh1*I~Yg)6=OP?5n{b`Oly`FkJ;Rme9UHkCgE9T$CH$hDW+rw zA~MZP$;dP>DJ0X(NJ_>ZCVi-BA}3S2>k7)a*jQ2~wFyOKwvZYRv=z)Igk>3O#4n>U zw4S)kQf?+Mv*1kyW{R*vVy0lL)vl@mVx?D}3`%5F36U8gl5)N6FoEZws5LfkOQ13%E?vR`=CXw zJ?bNNc2@R@-Be}v`#fN7psyt^g#t*g9x)xNPDH{R+KHm2L+a6XY(4z?noq%Pp&Y+{ z0al{3S^-FHk9~zV-@Z8it9pz%Av*-Dcp{HM2imU{cY%}3Ak>PO7k^Idw?7-d44%gEq@< z6JWP%>PUt?o`?0j+lOQBBz<){>)wyxn2c`Z*gLDAOcB|%gY4BUJfj}^U?0izg;{|4 z6Iimv93HQG<>wNfiRJMty!p=IW48Q<{QR?+O%~#X+#71Uei8d{lnq5^4A|-;n9s}s z?R{wDV~y%n_&J<}f)I_O1rZ0Fjze?$k5U3+o>jM;=_b0j53eHN3C>e-e_br#h6^T4Qp8kLyn(KG0KZ|%ODIX z1NY@7&hCn??LGcxl$o1iz|E{_dgDR}WzBk(leJ4Blr>A~j%8pqZV3>0WUYg+Zl!vY zHNS|pu50=U4;L^ZqVb^}))bN4ktrVgU~7uFy%TbW&Oc*D| z;s?OjTGc5%|wzph@W^0*Dws629Zd0M=En`oTBGUdrei&8D9zaG_s8h+7W zs3umSJY@n77N9(EV(qC14jFGAIv#A{N6 z$?YAGJhJu_XR4_u|L-K~FP8b@gHFl=M$ONIhE2*r(y7$6nvRp}wzx%}wm)}YCd&l^ zSjn0v?#uVWRPuotq*0|R2a>J5VL<4y2vWROh;aME@MZdNy&QX|Mug-r$t>ouFYdr< z?UDopA(-Ggo#IP)1X``DDu-z}uPdn7uJ?)5V$o;FgR?qrRL28Ukpj$d^(fct9T&&e z$fCHFsUSr}VW_4-+_Sk-3&cDXJv%#D#2|D@Js?|AnF-CHX}G$Of}166_ypBoD#9I3 z-FAV%dDyAJPi_C#8G=&4Apq>Gi{%)b$bPXv@UW{2>~c0hJhc+R#Q?)15A%d@g!mNv za!pZ>!`R_}FW4e2hoa5X1WVlqi9}xiT57I*#ntd`AMnV-P zZzACF^Di#Ncd##_dmaJ%1!0sZ(2qmH1ty6Q?a!&hYPOy`T#N#@+s!teAy&ifW{6g| z(e&ySZ!tqs$<1W~DBe~kfKuDO5G=EmOo1gfks(-S`%`VC(Qz1~(Ym`#5=9FG_T zmZpjYiZZ#lsCCmhh>0cC_O=pX?PxP#L74@4MI3dB;}O>p$&HuUB6sIhohCaD4=ygK zwX^UDv0k8G8hby-y1@5zke?sYA|aP{sE5AbpwEj3{GrP#g3yr5?oiTza6Eo_f+V9X zDCL;ksrNbf078ad%xos{Vz2bWCoK%F#?52&L1+&~tbAVe`Auin2wya>xOtd7eeK@P zj}e!Uq8n25(Fp>(j!UEDzrRXCn$khoGQmWCsv$h0h zrl3FIXcR+JqK=uDn9Uzx7tdgbJ19>P6XlbvA@CkSgDJYIM^zJJ>a9IPR6($41u1cH zw5*`G)kwJ>>IC4LY5P9kd!qswV3eW)V2JhTpk_#PP&9ss`nGJyBuE>0E)`YE&>PXRCk|fcwG$%l zSSH>G-mOgo1g=aK_;w#RVwn3YduI&{t}b*6$y#a7;jCI}iHH zWUN6N-;4K41cNND7P}{t(G&tpc(J>LZ}0_Cc1L-O0svOk@D2oCeT6GKkVGaU2D0PJ zr?7fEoo&k-w?|Hyr2cHLwHt`wIcpskujJNU`!2E7L zgOK0QXAsud)8{6mbJGJSFUm@3H|e}FAFArGONuqsq;7|N7h%NR`~bT(B_`P(BWfzS z#dO|^E3Tzv`7D&;pk0@JzRfE8P^ZzjmG3#sA>CitofB=KD_Eb-7SvL*M9j_$Ems&H znfwq?V9APjR1x3?AU=ts+Y;^mg4N>DE*9v7M5>Q>fKL-)MQI+6N(8TNCcSUv;>!dV z8w1>PT$kN`(SGiga>LT;j9`*Jd+9*<1*M)5sQ`s(lRl#+GarU!r`!8|iCzuyC~H;@ zOWc5jStCQTc#mB+Ds?%TE)k3zAz0@RH_$l6!g{m3m4JN(WL+iBF6Qk7_VY9IEI(gg zrbc(^{6&&Jc`qLB7npf6_wT&_t&K4A1NF@#O- z`$;*+xH<08U^#^VabBRB+=QQL19iF_4(I%}K9m!LyPmypp(nURn@|Tx8BRq^?c}n| zNk17*=5AZgyFJt2lgaR1cjh!+zS##7i{c=AIh#DcAY}P{xqz_u{cJL&ZkaqqC0A8- zXqhrFe2QN`cP@VZdinF$&e!YXFE^(b*XNxt_;dU@nRT?4Ol}>f)3*=O>8GF1E-%~f zleA1;CsUMW=Ze&PD*9>Ifi3{PdS@}~j^}q!ej`?KbhR)yrw|z33@3|=+uv|@JUc(Q zK@i_@IXitE5Od#UDahXk?RNXIy*n5oX29T*nEsxFMfaTT%Y!SSae4W8i7VQQXmPq6 z_X;BP6S)81+^nBSSMSY#n=;?N{mcLSH$eX9uWxMi-oCYne|G0*c#2_F4(j6{wD;p#*A#796JH6!$OCV0toiQm34m$(f60_W# zcI8K%&i#1V={-NU4kC!N%ifop1=1$MSJ zpoh+F_tj7I51~Fa_clL<_!P?+jj12eFVm?gF#izZqtOqnIf(O__Q#ADc;^}ZxK95p z#D7fH!9#vr)kkMPvg)J3kE9OI17M_>OSJZ5r;N=}#9w|Q_VMN~#uVPLnYV9UHp3tW zz+pC={I|%4o*>|Cl5FTZlPQGA=N;T1_KOY#o3qZiyeI9N4&+IFD6i0?lTM8F&3_xF z{boEVd20zu4C9cY$1HFMmy)ze>^|e~VBR5NHC3R~AKZgU79C;N=nC9oLWFIYX9tCs z*tQ9G?{uVatP7p#0v&hmBusd5qv-+$ycdABc09}@V0Qa`Xq3~J(C22jtt}v!ZLeV4 zJ+Me~R+PODbZln?mG(7_YAm~b(c)U&K0vc$k3YRuH!DfK&l%rGs|)Kr-cn;4HGX@G zMswHsYzyqp2tAPunkXHovcJn8_`q!()B-FNK`VN{yj?GZ1u3$t=!(wzh8{+tbpTz`ND1wYi=$8}b1ydtPOJi25sCEc&0ih2!pto^yzIexs#u7^222;CQJT(zQg|YskfM*J~+HGN%|#{_@xaW zKR^ypb%1Tiy!S98qSMd9M)Vy+Q|DWJ*h0B0X_FJ#_92ar?rg?Hd!eZ-y+tJJqV* z9RMkqvcOMKg<%gK6G*^9;ctc|I*5KaaWL-=!JG^FC9|Hvyfe0_Ys9!c|89eZ${C!R(&T*LP7Z^7*X!&O-KQc^d!qCv>i8CDb2aog(+fi!1$rQ~b4kdgFDKPu((_hZ9tmaO*$lbgwzZLi^G!`Xl zeD^fN5s4TXZ6^wRLn@R=(ksqV5USt@oRZdc!~TRE=-e*R*mChmzg4beFGkZlxF0C+ z3nEYgrZS4hJHzB2V`e9Kmd>NRKhDPy=v=aBpz{bqXWl$@r)?FGeT7Jb_F!0Qc;&l> z&O&Rq^KP)fB9D$Op^{MWE3H(tSr8GLEO!B*T?%6w-5Xs0$Wk95AqVcDShbHXgMwV~ z>6*(O(iObm#;Ch@@SuaWm43K^I~bM3wOLAlj=&R%)@W`%>EyL zGyX}Z{FBakSz!o9XZ@2-`zM{=Pj=#)suY-X$^#4(<}9Y?Hy--5*5H8?3WzFY@fm&N zHK;p>%^wEd{fK{j=VMYo4pOZS)H99{XdUG&NUCLl4DJBU_k+CEQ{R&A9sfnb zWctF|`uczjlQhIN@ZBB#;in!w_4vJqgy-ot|3LyCIbqbI=TVE3MlCe5KN#^Jur)j) zVbrC6cm>O*KhOM!-=8S~Jw<;gVK5#R4=+=!8~pc9ey~QNlWyhjo%{@o;eB@m((-d> zevv$+ot61PGQV;%>Alc9{c;99AP4;~Utx+=df~Kfdfw&~v~-LwiGO$W2XElvw=YzT zeL{{VQvUOzdq-@^K2g3&lzdE??yS$L@+c7UJOm#e;cy9wfAw@%J#s$QS4zPT=inEs z5+=s&aIC*z*^*##Oa|J)>1fJAdQpDv%qx;-So85pKO_eLbEOelUV_O#3}_ZXLfK)4 z*xI@}=Gk;Hou3WbyBM*3{I z#Tn)RNv_&%SWb7cjmsT&q@*eDx6Lu;;7TOUd)Ub@9)iUE2i#RW7*U%jGl3NAHeja& zZyc!bwCFNw(G_5t`f5f7V0aaKrllDJ6}x>F)mlQ2xFj2P7bLICXaAVb_B$Ogqs|$+fW!(5dZN=Xj@*mo6kx-_xAF|#(!N=2w~$J^ zY3z>>iF&pKCk3Umo4pQlTZfv9I~1JOsSwU;w~Z@H2#fjjb`6A^cBi09!t&j#J~>#m z75oWhlq%sxMKJ`hl-gM+@RghzvlD4|UTm>OOsa0=(mRn*KpQF>m zKs6h_3`pSnJp<)>fY0^6ugjVI&W9wnm_yT|zD{mzxlDy{mB<^-TxB#rgHEwUYVj>V zhJfeDy8%oF#PQpmYl#DrBhtrqu)arim&J44X99n68f{(ij~(K+T2R30eUn22ysNYR z+auXgUPAFgbl&LI=)&>i)uq_9-v~z}?THpEJ@6hjJI{c|mvM3m8dj*QeBO zd)giC_7_wERv}%{+h}c7yculURT0^vIyfp9bV%42toF?b`1_Zecb&7ZTTbf748J$) zf>GKCDy|A3(EspT^!Baa6ljQ~HAiyVArU>fv|L@#-*66wgax`%1!O`H2w^4BB zf(U!);uhyiI_=@h^R<6<(A0F8?H*md!$Q}SL+zQ|Us^om@0#;&B1@0L$dY0_C7w_n z2OyUi2DH=i6?59O2E9uA2PEmV#Vhf;`Yo*;2uE4|)~O~K&XM~pX-6kojTq5~sp6kq z%R0`>e?#cYPka)nA@7AMqY^HA%)x3@3A=V^9ZSZQst>ICzx(X19+@NQl zpiJ2*e}^$h)4DSv|fuo3dZXu7A7SXf&~J9czsx3`HUwg?q6{8 zIKGEaYXp{e3jv{wJM$v#FiEfD0o$Ep9Rs^QB9?&GqvDXQlfRU_o*cw? ztsT*IfjS|ssYY0eXx+Iv=v?RZ?r@BO9O`QeqAg<2EUCwpuOT#N~S78seF8%?SyvyF##rKac>tgGv<{CoI$%qt}=X26S zqSb|m7pDFlhBZk;e~hjoM6O#M2vng))!KITq|PqiPfiDEV9dX;bAzFHp)3SNJG;}JqFL60@HM9V9qpd~|XFq_k+7E1c` zBdT3kc?MG~XiHX=T5U4&f z)o3GKR{NoA^zi62pHYADTxqrb4Lzl^0(0Vo{>Pkv6*JG!&2|T_(~@e6SaWCx*O~k< zj-XAvTKH_9#_kgdc!kP=m)zEl-*ye$__4v<`z&MVcz@S|FfyaGADux z4OX{m8#fxfx}KS4%Z>s;KA=t@N**0L_0cZ+9baZ?%lWKmCf^Y7&U=buLFYM;#KvIP_#c{}pB`MTh^q477l1 z^%Lo|{PhhOh8#Kg5nP{+q>rR|#adc`bz0Yf(38dAkgU_h`@V_V7O8CjKr1PQb zjO_B_RS`-b&+cUvv(#IWj5twcYOZHd*nR|0yo7Ly8bOV6s~Z{qfm1y{ckbEy3zYI_ zP{O9&Kq~crSs)Ta|L+bD6;~=xk_c7nq0G$9fN~YNb7b6qkAY$;X;9*_%;C>_L8p+NU00wGjjc0 zTz!CLuQ+!uuE@@jYSKbY8TkY1@4iK#iH%uvrGo$M#r+CH#m7PNTE z;awk>6XpLc2mkl`;{QgFK00-@HG{G=RE?mlclAqmHt3GwdS!r^3seDgFg#d!mm;tp zHdheBg#GN+?+ciz;|?4rPg*z&=RNwCtqK|w#J}Izr3nY?Rg5%C0;7F}qq?GL!!cO*wj34^ zZr(%bWsaT644=-t!CJb&F;Z;(siSo;wzk4PwmDUYneGK%BD1bH9gLv!lu+1j4#w;I zN{Oes2`dY1)JYb#r61ea;8I%08GdwC_pi@8TV_aPpa^DrS7AaLsUnO?vyk83SJbLv z9RtCnZShQ6bBsatdsLam*e6^M-QW%ZvG^$ZS~)wz{hi#x5y&ABPzD@NI=9#bLJdHk(!#Qawa|= zF8J_on^b8st)_8RbK*_*zjJuU!1_)KpA3ooF+E*}YILtY=%*?8hku?Tuj!1uNMO|` zCP5Q6;4m7cJ0g;($)#rgYmvAYlcJ0J(ZmpJTbBLZ%wmPYNV@p8*Q3OANWNFAMv@^^ z^(mGh8DeWPzctiNK)?D5IIzLNLa3Fn@=MBxamH{$6(!wPG%u&1vd44l)kJ-@6{v6= zd>6g%R%Xe!KPJ7Vic1aYS1Z2cX}(GwW(B#mlw?*8N3(R)GZHv;B7ec65e^CBO$Rot zJ@~u3zJ)ZfBs(Y0hW8U#1<{2z6xPUQ3%@gtA0%w%&?1Z}Y$owBNHcH9hsj{H9JMb= z5#GL}Iv%?NLEUi-n5`?)m-owLbn*h8}K z!*)T2t5iZp=qt)T?|dssDVLmpfDz(i1BVFw#gXkAhppkFfGQ+{0(I_;3OsHo?7_`> zyoI+)-mgM$ZkPOro>k}5c5g`11uPQ~Fi>7a11LJtyn1|cE0utd_6D@5FVA5q2Irt) zc;`4KVudp5SxQ55d2!jZg-bHD*5Jc}tbR!j32P)wKqtYhE+N(-V5|kEd90cx=Xouj z-ja3y>l-ovmK{Hw38IlS4B!{!;=Dg)arbp zuCN#sMOTC;dcjKRxIYV7L9YKbz(f4k#4$;4+;D29BaXenK z2aA74*LvgD_M1C`Hu@z4aniq|g?^F$p3f*{szB=BGDrL(|2@sz-o-jWJLdsB%*_^^ z<#_P>5(2&nltJORigvQeTwzDpT~rr`XBiF#RV8y7Li8&5#F>~mUZt?Er!qb$k|@(S zZP2q;lLFlvNb%tmUO>j;g$C7F|AMlT5>_Sl$*Zea(b#lF=`?NnK|WSh6d#zX&rbc!3kEF* z8I%pzj^tqE8-y+ij(AH*ZyPRzMm`KODN<8zsBHEaLt|HZnZrWoip>mZU9KGp)FD`H z?a2DxlPk|IhkjNt!GaQ7Y<2LHI&Qw#*co=`dwR{G@I!jdq5ryG`%_nh4UclU9HdFK z*|Bm+TWh){#I{NwH(Yhs`^6@Qxl4D0vq#-+Y_^{(svE3ojk7}koTa<>)%y~o@9>|f zpDQ(4)u9n7T?~+u+Ak1-tBbT)Xcx%z= zE}vI!qG?}cp*PG!*R0CTJ6%JF^}g+y%=)HoBHXx{XJ0z}Gq;Luy2-8j5Tft_sd>Ki{^< zPvn2Bbol?+bm=6Eaji_Q(ZBVr_u&7d)!BS^K*&pKs*YULTqI%KEig{Lkg})*?jq}X zXp*uKTBM&$8m6p^n4(n(8B++nCn4^5a3kBCZ7Dl&YF6nGue5(L09O4qs0K+qo1Az# zNU+x)bJ_SGuGNM|=QgXsd830l{ALCRliGBRNw({cLFa07+! zAk+YY6m2Tq{N#NsnM9B|#2q=7wMq*(t~A7DXAPZ8n0oUyH+-$P=8M%_tmvSv7k99Z zT9y=N-I#rtjpX_~wQA?;vJD#!j5gBDx$Xv>_IB6h)a$f;a)mX372hB5ZZ?E(?2H0} zFSTklMRR4y^o^S08F6k{xz&AD{5k3x=W;uEa%78x(9T1L7u$ujjV6>>|K2RtN4_wY z!>_?j_Y6Yj(ey>Xty!ClRmYlCf^YX7*lRbSlIE}9_zHLJVk>$7tGeAoU%PN$jJ;-W ze;0BX#%SHLy#PmRB1fT**2E8jBCU&Ej;0Gfl)h$~`8;vWq9b|zn)nE=M7|>sa~uKA z`?euGOAN762E#F%E+cj*s6-2K2;qZItrqB<-m>F8C@>#Gyd!4}CqphI%M!4oxnCr{xJsAPw&xcbufVmd(l zzo!A5@~{kqBB2|Y)=?s_xVkRymqX0mX9Qb8bo9yCgmdIG;EIsD+Z60QjowyW^Y0*` zI_Il`C)ZVD6Es}ksNd0?HA9xywaRfv`W+QoCyaSrZPp2BUPq^KX!ANE>jXKkqq9!9 z^Ex`~1U|2$vqlK?Ix?bh+9)>o3Nq?d_d5n4U!69KC|_3@_0s$uHPQXgcX!Mh;nVAy zv~D2v92*u9ck3|b(=9luT)^S>_+m;9S?Aci`3c3B$)yWXoIo4@4Cl-79J1TTQt*oR z6GQ}9Aow3Bl(UxwE<5f`);atU4JbmQd2c^2D0+I|kiB_9q|s-ScQyw0qU?WwbGtrJ z=5tFQ5oEhl+(#;zpXcSz<3SJCfbb-bs7;GOslbFYf>8Nld`g1)pXYEF=g>J`BK|G; zxyRk&i-qO(8F2BIT9 z-ejf~{j@&ft7=+KURfd`zN*CTSO(~tEd&~m(Dl(?SIyq!RbNn7zcs6QxIjQ7n&#T6 z>wSJijJDXf>(Aruo$!(kj^Ku1=479P2xB;h2@m?I8OKWUXsV;f+~#fDNW@nQSvcaw z1mMM=ap~07RB5uYVu^Mp`-1$_rIB^}!2q99_y<#2i)DzUAX-~h{UO3TxVqt}B2;9W z;$V(@h&?nHkDCH={3a9w2b) zQ=k)#ezLO_4<;9}?H$KnM?w$X^ub?I14VxwwmoWpANuRCdyjM;!AQ_(mv8EO`;Cd1 z@~VD9VdNjvEzM}0MEh{}3rm@=Yo9BF_)k#?1sJa!W!?$>b!~AE=dYvSo`YXaL65+% zCUBuUh1XF~PWd`)U36qm^*S2varbo;5+~h=b0szb?!5Y2YMo{PS_HOtGMvC!vFl*W zvYiFdZj`k<3)VWAg`!gMk0_0ott^qF5v^UkOg+kKM9(;>&qfIFLV3ky7YE|*@N!ln zawKVtQCO`+79Wr${mVpt`7aZsJwvt;`*_@Ym|!7v)80>T zqJJoR-)@$-zd;jDHU};Q6`#ENOzyl|{wn>-lekahwdZi3$~vcTr~M7i;C?yHPT&zv zgY$QUV;Gj*M`O}QYhLg{nx4J=vYMW}eXOSE?ij1l$Eyl?>B z{GxF9(48|h)&qU4U&~s1fHSL=gXyN!6FBe>u=(}sV2EI>=ET_NsKTgZlvZEZp*f%S zAxhH6dW=>};jYU&2Mcd25cMqF|7B1;jH zSqIVYkaaM3^c#GI=>qLl>UTC4{APh|l+*S6z5*FxuKAjx|G6CBFCH9hNmzkyKSUb_ z(bXWs+X}>>(oMf%E39v0M6afev4U!@^A*FIu7m4UHbzYCU#x@(G1_HtW6n00644M# zk!`gk7Pv6Gs^6MZcJOmjs54yYQOLTL(x}9~jVl%qXd;zrN=n5`8M(o_WYXu&rc_o) ztJWp+eU)h}y$ZfgtrV+i6V{bxCF}5g?O!e3YTB61QEDjdYFe=dQm>|@R!hH{Qd%tq zTZ2-)G;9q*E2LsgDe1QTJBQ}~&)&N?w~Zrv!}=(Gs@|H~-Dhgol<%pWsd8*3qr|bj zmS@gBd+HQRmS~$3Nz_P`6Yn4M+23Dx10X@!2`CNaE6HG#ZUYUsTTKSz5B9 z5Y5+?6>Vt|tyyaQPS>94f+TM#{t2Qk zKk#{XZxnr1hacztA<~FW`h&br-Y&%&86i`5ldg!92N{Chx_6+zs=H3Byn2(ZbVwQO zG>dkjJsO91FdKVlgkeqn%+~h~)Th(o+-->ZZ~SFk;ofW48D~=MhvxVDOJ@ z0g*P?`pF%_!95vJ0S}iEO$(b-)#z7qEUxD5yI!DPG>{VAdOSyt)5d^abX9?Kn7O%c zU;;N{6}nZ=EkUMkwoDlRUMu+eV%S*)5S(7H7Vv^un3%85OWwBCG9nzZ>>5Wj3bk zaNTyMt83kIB{Z{Xf=;oQKJj_57yg^&ODQqP;rY%^W3zFy#n8TQf9S#AmQpbP^Ew!f z!BW7sldXkJTyX!I_le=Ed%53qn`!u6+x%8!oWIM zn>BidJ5zc}(>#Ps;b~awJV7F}XAe|jY+{s^N-}#pKgsg4`;9Ubj=^zn!SDZ zQ~mIF-XE8k+LoIQZ>9|)F2@t>>!zX+$PKT#`V!ZulQ#E zk_ZWJ$P}oM7H#HL$q{ynR7r_H^Qz>nBh6 znpY<)juohp63`0N$cSw7>STquc{Q?P-Mkvp1-*GSr;C2`YL*ZNXEG9-t?(s%x??Q@ z{o!sFwDG5lddFbY;NbD2@b(sbspyoPdC5{kruIQMRrRTsdXv{_oebBpqYOG>FWqhC zb$-W3B$T?(=raN|C<#)OVyEdyD8S`1sxt$Su$-`}6)noLgUgmdr z@Q|wdR7<_d?UYFL9RkRu`*h#sce#J(R(z_tFLFDiQJ(gOkL`4ish9a(9<)SG%Kz-v9`j*TpF7|{^?_0Opog9qh( z*b8W2_1&vsF!*qx1UdbMy<(&kd4#H8XE5qaej_Yl9NxjzGk(@D^V-S<_h_g!bEvhAL8v3Y==KevC2 zM!(V_IU<*{)SLXyU`%UOB4gU*ae7DLAl;GmW?Dy95mFskkGVCDpdsXuJmKVz$dzw7 zga!U#;Wb03v;fW6l}a>q+BgJD#<>BV%a6SAouHYP6uaZa#lNSOloN#Gvy(a^P#e}c zBMUb9!4+sGDV7HdJ6}mFu9MkRXmYn|8oYvqS&hB7H`vWC%OG|W$b>&RmGWmcGCtqx zS8g$nc~6tB0T5D$W(~YYKjvbA76EZST}W|a>rH+~ySRsdm)H=8Ty&E>=*0^SzxrGo z-+XvyJ?8O>JwTBZVWjL@&qNW)W9~ReC{T=Cuqg_#^xNFJdtKQ9R7Dbjct?=uyef&~ z*XgO>?8Ch+#QFKZ!!A-ko{a)IG2_$c)_)^eM)Y+IE&X|jQ+B*}{_a`9SwjJ`tZzL= zUz?=oX%0RIgUOiQU!sX8G{}{8L2fzFpQx{vT)S|U>)zxc9Gnh^J$+;+0NS10_tY<7 zlD4SVckK~%gYpa#=Km}n^-c#}(k9Rsls-8;ABOb%U!K=QIM~}q47JOhQ)B=H6oBw~ z8%;Woz}znb32@&198HiD@Cho&R7w6|m*lERN%Z)0`0$86ufuPM&BN7Ez7yQQIy4vw zy7?`No(JPEaWs@&OaUwpjh1?BMfdSn++ihU*l$H1)g~%1l3OXfFmMrr(aJTA0;L6g z3uFU&e;$r$XUl#7G_Cl#7qlJ&G=!_5_5)Kyb08q|NAAd(hI2T9L=OUhL1z|8)F*Dg zH9pBVfZ_oKecmo!%o-79;>`FhB@4Y>e#7SsQ98{-Q_} zWIBpFlNe;GaAl}f!*H8|O<_pLSXKHNPQ&jeaSW9baCjQWqwsDL2kb>!v#8g6sllQT z$b<$9OAImZ2l}VJK9dhOZG=$js#2}VfbLx73%p=W0q`c;+t zIU0rk!LZvs{h~d7A9b)arN!H5sD8bRFp|D{;3B8-yJ!R)s&{m&$DpZap3f`n)9U$` zq200EG@4NP zz8dtNbtCXo(rEY$a*@}3$p{&P7m3zyb|xc;U9tZ_KEAbk=rixzv`~H8g@)+c?*gel z*a7j>V_ki|4%8H_sQkobhg!~dzxtG&dZ(@yOrP#$f_dF}I{xRc?NNw~9@qfU#wYX1 zJ5re7J&Qe_X^#}_B=2g?0c-$hf-jSo$?s(i^G{+uQpWrWy8PuL9DJ$KKfi_u zK?Axz?SUQ!Sjg`Xng*v6>aKPhMZMc_$gk9Iu6<4M(jKE8Ruex9nyAW{)X_+*0@w3y z&A{!>!ol5WGJc#lQhW006wHmysdNLk5-#V=kyG13=Je9?;dmM1&}oJh;UUv5#R}Lkaoeem&q7 zf{)H}#P!tZOZw$r-^6$@_}`Bc`?cid9ad4gwzt=|7a2Y~&u;&o7blAkMXjeP1r-uh zL0*^6h`imqcIS&M%`|9-g1YqUV~kg0NB>OqzI$gl4{9e5nPNNz3PzcREQp6=NI7g? zB|qFoP98NoLr>yQt!Q4p#OdG-l=*0Xh@bh!(7;baxy&GGT=%oO-z@*K+lff22~7wO&UYoA1GAkOYTIW}H5{P!b-MXBi@>P#rRYVtPf ze33JQdBp6kg6s$XF%#pD}W^`%_=p| za}Me8qJ1ZHXfOoAyG4v^2L|;{&pB6a!PcVJJB2O-I`RQdW@t5`eA65xJ{aE8EXj$@ z9-2LWH1!5B`$Og>S+MF6m^DamOrHSvtQSF2*2VNnwoA|;4Y{68#yF75Y8xT4BAqW9 zy`YbC85+51HCwlh%iG%7MdS3wzq<54pI)ARXx#X%+tVBC_4VoHIW!#2*4fqNW#i2H z()@7QyltZ9)n(F3^78%r+WFPxt$%U#p>}$4f!s+x&VKv{+7vw9g|LNg`SNcxf%SgN zhgtNX!*8RpAK_?A);2yg_?dV8_P6XiYO9HwbSS2pRN^6ux_4lK)MH!!3Zi@U?!F!N z)Xxw#@&Bw{u)5T*tRBrPbO;0Ppxvj1hpPsRsaqiBkQDTBo{l;NigWTQDXr3Wd`8H% zcGnMaXIArRbz^KG4sMXvgWn!KQ0!9dm51_`CFxePi%F*8S%ZALn@I+? z^TUrj_wC*|;M)xh><3xSM1AFqj{0I5R*pI*Qj3*peR9=;k#bS_TnB3c^V05`##3 zsQGFM;|d}HAQvS+)ndYd0C&K@n<+F1L~(uB_Xp6XjiIl_5C0Ax2{>3o5lxDs2yO&# z8M_+qoU4r+e2X&UI7!yF^TSUx7xI>i<+Y4bbD%=bk>Wtj0SEBRfMhl(TH}LBn>Jn= z$sqzCfCU^wM(%teDf#9T7TA&Rb8dF8j+F-+JunJrzM37H`wl|Pf!Vb~C{a5Nq;}~v z5Tj1lx7ze}q1;E4d}~^<*`x)l;loitXOR*6#>9eQ=fjv7Nv zzqdNYNub?DQJsCA?rix5E>wrY9u+Fzys=UFmawR1*Fq@2{wb5}j!OKrqu(#RLC&?O z2#u$G39uSy4PVb}7EA8Ytd->rfpfVggs}%|)DsQbllY^ue&|!hrDHe4x$LAxICVYh z&R}pumpQah>9s|FUR{5o4^TZ-Sh{u#R?|m#{|?8Jio+t1sd`?E?!w(0PGVZiFwyH< zrTKNW#jKJOD&BU4_IV&YXX?S~$b7HX8O4ad!}0i(5h{At|XwBkcZdHB%0H5nhvLVJ*8vTMbIV9A*OKh-gB zp@wf@KKsM=b1xzx@UzcALkglSeE!`tog_Z{oHVHR2l9+ZaKOVWoFnzaTNMT*kr2_y z-~q+Ds38U$m@w6ah|!pS2q5+RuT2e~%Ks@g!3E1}_xK{kJxZnCflAJABe~1NfCz;; zb6yf@6>iMV%U%kSU3A)ot<5M>sSk^Ed5B8jUqbI#PV*7!)F@IxvQgu*hC0ceOFjLN zIFWT2QnR8F>wPf<9_yNvr=3qaXZ7YsiX_`WN;BNbn5;hM!>e0N6CJ_WP^id2=Cu{W zlQT=LGWp(7X6S}SFYdes0m}f3xUcE8Of?~vG=en_f84>bJx~iQS!aBzDhk_Kvpxe) zgyxyZp5K??pfn!bYV+`*j!E_(eI%WU2& zTI}#pr*)M)DSBI|d1uLr^Uy-=@unM&HBT3SljmiC?64*Bc3KEvtF?1%Q)W?_nM#(G z2=`8jv6+8FTy8%u(nwm)X+I6$Mrp zKA-Yl$y!eTGY+_*U;Jyoy(O=BF&UEWmA1vV!osru@*G5La|u0&5+-nt8xc%% z=nHx@te3=tR(vv;K*=|hL~hurbINHYgD_^$S56rn@oMJBPml|9>gv#4v%f;+GNbON zIiGVYCpp1#KcB$DT|_r5TJxLGIb|RREa%Y*|MzA7VC)k45ZfiD49YH&3-|#pMp)#? zkcA-%O(?Q8DoW46FG!ok2@g^POAW<@5u6$r3s?&?_Z4gNFIvUkijrOmtWgb7?kMG> z<~|CRR?MW|y!H{&VI_rfm$9f&B!tcSNO?y@eDf~~+nHfXjEeUjF2*DYT~vL<6i{?usb$#3k( zlu+UZ6A(D6uP%Q1+^BtSUh1D%LSFr6 znEjC%ESXYz`;gUr+<++00Y`0Oy{E6S@UkRRC+$HVAr00)tKl+i!4rM!KN z0Lo{&Z>1z+Vt{VF$f-iEC4M&?!v^Bn=cZw5pLv&4@qk7<9zQ~EpxLJ|IjJ{!m8fOA zlJsT0$yTagpP}vRv+S3>#?>W0;ot1H{oCeQ6CdeM&7LN==xx{ubx~(t=)?3G%@j?h zF!RZtyUfR&Da)40ouh2AoEga}l$`;M9U5{?)WhT!bvL=6srw;`NyN`Rr&69Cqye)u zzKz6;s9&n5=w7b>3UmdwvoAgAO7prRl~`{~TrPEA0JendJJpx~(CmQmLG?viL9P9I z`&QJ&8QnO>?o^%&z0cRPzBhirS5UhUH)Ez6$(%kA~ zaVhnIm^xnpHzR&Q%s_tl94mqD!$<{?E(aCdAMWf($A!kqO1-C;7d_L^Yy@-a8!D$11R`p|A=H1UG z75KvWeA4eft82ffDC|0-T>gD3q`4>3xIhA_lLiR$K?e~vySfgAzL0xe*tGIsj{TcE z+y(|gGr3HMaD=%SH7Qw9NHWW=FFpa@IBw!<9k2H3&WYqlx$E#p=QEwfgd`3OL}Y+~C~HQ3T^fR+ZBSDsN)=p^@Pwl)U>LGE z%>yiwsxIdUzLx`WEVofM*I5Rz-flN= z;Jt=8u`HNjJLQv!6s?j&MW>4*Vh@6459Y6aG{DM&j~0wwN21Y54t=n~moC#YDWZ{i ztIQ1SWt+KcH-=7%2ElnW?^zy$;Y%ObKfuF{c?WTBT5OH$e7<5hZ6~Qza1Dv=3n`p5 zyIOSr!5({R)=;O{RIpD0ofIBgR{hIgO8`w*D>XO(c7qQTPnD>Dc|)MPF2$Dw{>#>h z?+k3_&PZc5!0;6Eonq@}AH%)DHMPa}iVj&@Whm-=YZ0RCqEmUCu4zPv`9!U%usw_E zNSn>1*2@g$ily=9jYSQ_V~L<~C5S20819kDweSCD*^@|Ch-wl=0`jZOB}ArVC(n^` zvNNhW``#vY7*Sq%IP&^FbfYwxC%*qMn6Lrd-XQoYCa5AlX2qlY?NfsIlj^RCorw70 z0rA17>sz0g9#)cJ^Yf_MF-e?3wAvbQ(XGh_eV;+!XV6KVn1H`z#zi!5Fp}ClkYP28 zc5Exj?xAB+bH$?cs~7c>m#-XjeRd35CTq{zTg#t{=Av@SMjQs6;456ytx1Zj9(4+w zWv?JMFr$^pF=sr>V7t-4@j=S1XvG%6E-j7LnLcwazPy)-=LKc;EFUO>5EAz+glvLo z6amxK6)eJGmNa8z;N!so1o57}1@wzv)Xj@JlAmYKg0up6!N*iB^+Rry-kJ~U8RbaW zRGJz4v`2T;H!#m?d?c@k#z*|GL26pP?9PXDF?EA2toaeY$y5;>8LCPGR$6a<{MUGh zZH>fBQo+y@;kbcS%$g94NPbKkNfGd<_4%_a;9|F8XbC3tJr1zFP)4(3T$PZ+TbD0Q z_!r)Kq`~J06-p}ks$QUwZRIFRL8R6~z@CVrtTm-U{XlIZy3pW0e0Y!Z-3@tf;_x4g z5<|(5m|RkXYItm6e$jr0&Kl8h<%gJ^tKa^=kK(W&oIXV46@vT5;1-WH^$u-h6{Fyj zXiNEm`Twqa(BM5>L=T^#frBZbc&LpMfd02$b1M{{{7!Cy{V2ZQ7BF&pO1}a{HCM11M zOPP4U`DNS?!1-mAmGG?IasvJ4v_+-F`easHIpKVB+M-g*l4Vw7IYE1K8bf>%)}(_f zW;I5|3iO#5jW?&$ya2p8#j-JX^9!ZI?B*9L0)94_ZcbY!2F)ydO%Iuy(;{8p@_GY| z;%4zrdK@?NmSma0xS5qhQPHqROSr8ueU{+mNKwFnpTxk8`E%WVBM$c0NF-z!G)xri z634_H-;bg`E|aF068l)cc841q>?y>tYgs1F{pT=uU7NO#oX`7Y$xRH|ul2{!UimN_ z13$!J*}n@Y-UxoQ@3Fbz#p^{q0ihcR>`c z6sdRjyN4+85*~ic9wIY~z+Y=>;P_0_^?0OQPB>(w+wWmK`X#>PQ#M zL$RVN<<&_3F1}5cqSPu+d1j`ru5*N2_sBc~(X;IJJ`Os#^n^|hC!G^&$-l?e z0JW%A(CHrD(hd5~Uw-)OU%*)5G0bY~={}h7BL1tRvzu8IGS_DwM-9Qx$#s+;*!>;3 zoZT0QI0nutUi1cFnnHU3HY>0DTK>JnEx>Uw7*9q4+=a-G5P#q=SPgTvY)iHN7X-<} z74iM}nW7*NE4O<;;rB3iW40@$=&3dtP{1InuumJs2@jcLLsx{&G+^4KbcR4IHHsh! z0|sKz#&tu2{%JZ_b=a;#ojCX4xNG0So|qd=54$ha0em^rtVH{Cz!FM1B1M~N%~qaH zr(1Q+lCjNF?~{v`RrxLJtII|3YcNp4UEg8=mOf?5ST=1ACB-{5k4jlF$R-K}zL3BT_v zU#P%`m_YnT+yF#ub*(}b3x8WC1R`d=gdICggn_g2DW z46vku5W+NX%hKsK$S}%a&0>iAYWXb<(X_o_CL1sYZQ;r&vCtFs*C}r|YXJZj(_|Z{ zjIB?7+^N!5w~oH+GU&%9&?t_<5H|q4lx%r-6(h4cOHI;?+=Z3KD={u*Q}4w@ zQFIJEY{tIJj!q)8dSls@$l8*HlbZ6@m z-p$u1ESDxz0DNi*1Qz>S2L{S%9aew==lFIFB+OSttN@DSJeRAR_;ai;k>ALg-BMUA zG_-;`45hQr^)XyXufYlcQEcFVmJLt6rokb6c6;>f->dBNvbRsy>umf){o@WIU-a1K z3ubHLk6VR_HaZj`6cUxH_xMv?b*6bOP>(;?BS77i#*`6~Nze6x-B zRkO-e7$J;i1L{6VP>$y{b{jp@{26PJHlR91O@sX-d!;4(K}pB96T|lo6o=GJ; zA~hF^4FSO`kGwzo5zG=rhp;`MYzh)0V2*#a1z5>}WkYD8kfC=0QW|fTPEufO2pOaa zLvotUqQU`ULx?~?W)(dW;YhM-uFY;{F5 z1T;e1cELvE#;kb@@n*rcorr@@dP1pYwr*CPb-G;yN5@Vd9&}-U0=Jc|!<-A=_RXxo z*Z#KE=+oeBANuMPD}heNZWI+bEWu=u?48}9JL^A6TKrPx$#jKn$fi&}WBnVQ1>TOVMf zH%0W-bfm*JzEV(0g{~C`tjBKavu0xIG;EB9>U2g^G$e$d8b#VJV6z7%30@>7f)pEa zV|XLRfk3B-o4b8;%6vhl@h+M`2`~jjdTrQla3^ob)8H(3qHv`IdnMfpr8k^ zN%$v2UD{C7PZtgUo9f&u2BtaAibtduKlW!EhFOivDp2N0C8$3LfgcSOV4FY?>$2^_q zYKyU&1{9ukY3kN_cwBlS!QAFp91=AJZRN(ZAqi{$K7=wu zpYAtxw%ZOU4m!~6#0D7~ni0>l)l8e7nS5wAh8kOkvU$|xL9;Q`h^85#fgb`PVLoY! z8(4bJdXYC0%H<%l0l&z>C||LyrWRMgeUWHR)6Ab>NSme{aalGs)Ra@t3qC4d8 z%P&fjWO*x{HtR*oj=}^vxmP7e3>>vo@Dd%;LI;ykHq$!jtpw0iDauyZ)s+g>x%!@P z?#w0|Yn@801>8if6sc1}VXU-I+iq{w>1oA7N^JYY!f~Z!;dHj* zfw@LjD;?GvyE^P>Q_M9?*M7$~m0Kwak2=Q2bPWSL=r~4zD;-(N(r%@FxfXRR?J8qA zx6Nf!kNz(-q{AH3&QPHW^^3#271PhIU^o?#dikXX*-+?6WRdG@e)7AB4Pd zFp8(>w-6gXH>M(Rp)aCVO4=H_c@vYb#Mu_;5y23_BmaCBA121*+GtdgB&?~snMa_t z!7#&C6RS{2i;X0=WFf9)ij-OHJhrfgEir9cn`?u-o~^^!8m~p_C^!Yi2xO(?sofFQ zqKB~!gI9g1PWe@?x;t-|BNA~KTx~zJ+KE#Z&g+pWwI%aoRq)NNVMZ+r2M70N!i9|^X9a@-kzB9_{av| zZ^zA#Ar2o^l96dfjY<44IQVGPB=@qjBuFM-P*J zFi`Kt0Zf^@sh8Qt3a`RCuk9Rg^4GYS{mdnsIjttsLVP24TIyz53OB=&&R}dBau2vk zh_$ezg>`69X$dA75Dxv{G7M0!3d*fc%rOsvc#q`O=fQoOW|Zf;%abjr_4bJ5OqLG_ z;LbBY5tAnLBx9-NHAu6K!-82<2vhIY+ENUVM>h|erV6@d$|h^Q0pB-YU+NGkVZhy_ z^Mzwbb_2R5Kss3@C30W?X@++V5sG95rav-6ZsG=kw}A!^dhiX~x%sF>KZd;KlV1n^@OS+eISP@W@Loh2E7O&gdr!VEmc#HjWcI>* z&COuAlD<|tEGwZPadxC5@JVqkT(goe{F_P)O~Fx@nCj;>8WH6?Y!-!@q+OW-zYN&Kt&IG-&tU-nV<>;KvlvygVS#ws5?LK z5od91;HsrKGI)B|hz8(6QB-!ac79k23bd*bLeo38bv$F65N86oR<=G?R{DT+Ny?0UT{yO%Eh0wNU`!hlU+TTxQ)=0BMLjBh&Je~ zwmYcP>}P)fyL`bi{i^wA?am{)>?uLr5^&Z$esdy{1r$FIgESeul(PXjNsRfn6a$=&yj-f`J_dv)Ad+d;$}uZ#-T+$gC}B=RhKl!@b+QZwhPe$~m( zfR>|YHPVo*BDv*^qe{w9b0b4aO5M`(hn`w2(=TRraWQkO;ixvEMJ{KS)qQdkF!h2) zU+(F_E+6TJPH0)nEh!y3X)bbvlB7T-w40MGt`73<6_QD%y9Jb{HP)6l~OWAr%LAh)1k%^Qa?iI{yyk|q>tct z*}j9{zmu6x2Hp65(uVQGnTi-?LdlP7{x5^@_enr0E%A^r3t3igIG!AF1_lT512 zVAs*tC)L^N`Z`u93L5?EPkc$Uy1u;KZeY5*#?WAb0TNzahqlwLLk_ZKua$`>w8&d& zSqKpRChw|}93=N?9LxM*2mIN`fb4m z>6UX4;Lch^4VX=eX;Jcu8cLh9-1QaecY%7#G==;ct+^(XV8?jEu4h|-h`66N0Lg2u zyupU_dDQ}_*)Cbc_+u2@AzeLB3>_BkGk^5&-Ebqs+Ei1gy+8i%$7N8uK}z2EDyxK4BB+I zK+&kYp!v@p>$Zn)(mj?RNZf^O-T~XV{r~^|@xsC3L z=`+%IeW=Y3+=eS}b!y6sY`vfg-wk8Bf)4DE(KwE*pa&JddHsRkQ~Jf4t&fpKwaoKf zvYA+7+cGVEdkK9kB6E%^=#Ca-nWrT0+8>OUYN9N!HaI zoZV+d*;ky|nQ9wHbR#}`g1L~s<7RSt-DF-j8C*LjqNcjQ&yxYSZ)eMMb?bu< z=kQk3Z+)WUuc}!yhic5R@1QfcC* zoAs_3lrkpGD+VQH@q9Md;(5jJ%rS_zj(KDd#!*{@Nw4iHURj**b%Bv491+vFSXTxy zZA)$S3EQ?d?dQq8#PU~dyG5HP?!??1keSZa1XL=H;bKZ-_Nr-QqpF^74_JvaHUUMm zEe^d&$Y>L3*-(lWDHbOZrJ$^;HZnA2OsJ9pFtn-J_YSQQa)BmO;wmP+0WWNrtW!K% zgE+BWbl>5|E_q=t?Q9`<8=!X0QP+w_l7ndlG^jp1{B$R^=!mC4~**nfUNf?`sgK9m5 zYmU00!d@{GAh^X%#+n&bT;?}Z;sWCoE55)<0rC4$F2+=1jQHtr8W!vjeWuUKkT8zawVzi9X2T9VRYs`Q z?BG=GS({F?)4)E^LDC81=!JBPztKws$ACYxBdVC|HP@l~z>3^~-=()RX3Q_kT_xNqNhQm26!^GMu^N7f5j%ErQrXjVN*m*{L2fdsDl(G&K%F=diMKIIGeIZwA1c-`w*hAM}* zU7d9LyWa&9NB5^1f{)3C;44irO^I^%LTORIdr|>9h#9>Shb9iNWw<{hZ3|2X{u7M+ z9x^@hNxt?+q5ytH7o$tN553Zlx~)mu;mh5Wm|uL4hkP3!uX12RIZ?do8<~5&V#AKA zeAuzhOs^;IMq|Gd47#rh2px4hy85*Z(XT#`DXc*w;0}XNU=auxJkcyB_h#&d!9lR1z?3e zhV}G{B0oX(oB2O`;w_U}Vz|Mdy+RnEkH$SX#O^(Ikw8waAN(?s%m!QAjXiPtu24;}(p zJzF2wHLW1HB)3N$;$MzWYdr1Prv(#JLD@9j%2jC6OVD^Z})U`zrzS5W_IT{Ol z?ES&FhWMR1{{6?kh~KYgb`g_ow*)~N?S`+1G<`@TXDO1Kw2vrx$~O86N7+xWWTnWe zuJM+KFnafTh~q;Xd+vuSzn0@2G?RHz{vbr@Lsmqq&MQh2l#T*+m$A`<{HN@PoVy=@ z<54caOr=+x3Qj2<8W{);N5NAVO~w)mLt!-6vpZAz6_tWY3do>V?_?1EJ_!^q=aOf( z(kn_6>Qvb2PkM2v0=3Lo?yV~*%FH|@m0mH*809FCBMJyI%ggXpaia5fGzuUL?uD-i z%R$(*O=QMy{klqdl^z7VL{;RL9L)szohACtSFEM6mQBp}im!1qttA&Kd*xk*ca>as zt;^R-IZ+E7bb3Ks`4+t1wloeUt{4Sfd$kLMT_A!@(ji<)@~kvbzHm$4t&S5& zmnp9(AB^K2b*Z{MVoT*MQ#lvp_Ud&jXs{mGVSPR;B{=pX!ZI>dy4Q}baK9`@Dc!zq zNPJW{3ckgob|)@83$J){@%DOXFoy!~&pKM_pHt9Wn*mXt?^xPr?KLUt3X`JxlYV=c z1pl2!&Z%4>>g1Jp6-wA{lwy&%=*<0O$RKs#DNctez|f+RmiH!uXw(fxLD$DvE2Ss< z4bjGFkaV8T#u7*Dah-jHgON8H685g4HCda1;HtG@0I+B01a~`2a({0CFH<9TYyg&n zR8*A>fRKuFvjGTF5ko*T8vw$NoJQUc-zNx8P^`^h!HrV3foa${09GKb%}jxHj8Bqj zOjD|yWp7M3Flh$l8GY9-Wb?>lE1BDNuWQyF(Qq%ap+6pMj&ia-huPoTxfou@mblG?_)Mzg16Bbou z@o$b@q<--4CxcEL zMuQ{*!UhnM1T@^3prXCAC2Q=4=42~?Fkaa@f$k;*-?YQ(MyDkon9Xdd;Wt<@Z*pb; zz!h|oo8#a0c5G0vp>?_iAWVyOx&iL(<%JgoBj3>EqyuWjivL z;zh5~D|e8Lk+1EG-@2FW(Z!v)q=(V^hl{Isrx(6|>3jQ#lRtiUz}B>l+OR!p_s4!W z@`G<75|ID<(k<=nyCtAL_aEZNQPA%CFh&fK267mWYJLl=m*S9i+QW7yjGt>G5)rMoE04Uni;6bVshiy2lP$Mjdwtl~CAE;5XkKqM{`je?CKKg#M zQZ4GMR}Kf=U(46oN3Oi6Eb8|9p;8Z zxpjyNB^M!Tlv{yZftO#hh<=*0$c)unp?v|X7ypNT#9po3_GK!UULI0YdM>q2?22U; zj9stH%1PBLOyqXGGHWSSuTp|0%IUPkox;X4z?V;{!`*q6f${SJZDWJfe*;(7Y&Qlb2vFqOsJ;>_`juE_wWF|;0?zcq4Kkm3uZ{NJ}c|oxVO!BNF5-V~?46LWiV2sdB zesr%(zomi(0=qOdsh&y5mct3zp3w=JxJ~n-zl$SCm5j+0E~Rk#ZKE<_)tnHd4 ztf6c3AS{d34oGWVM2dv&xpeLy?1SEhQU))0|~k4BGjd-tG^Ln5${nntopt~7XO7HRy~t-8!))DLthzATwv)&Yws=0`jes&;V$`KC2dJN%|;$UMnjf zq%Pvr={oOJmR=(|tqve->?M%uktbFdK-OvZIe z(2G34#{fJ#nYI}HiRfU(vnZzjHNwJwC;Z)0KWjh_g}ls7-3;!GBc^v3FQYda!L~r z12MN8*b!&$`)KsFJ?feyUVhwupomDOg3>S$fGp!8I|~Z!Xi72C^j zPl{Ko-Brp`2}SRMMhhg)pvg}H43>3e+u}@LoyVZ_#WV?32hipZh^-GQ?mLI=;ShY6 z7zO}q#kfwGx<^gljc)zhUH{etuV^M5OunpT@Wu%auorjPZRZh)x6 z%Q(Z_(H)ELok%oK9cWl?tZw~(0R=Ezp%6!U=>O-x7L|O|nXq=>rB?mg{eT&kYjAq} zKI{b-QRmA(c=8u9!kbd!a59)%21u-SnH1LU0f;|n_lf5(hn89=7%*+*EDlvzH^+uM zuv)PE!qY2cf!zY;;KLrSUtq?Db;jz%3UH`c9(@IfKa5D?tg?eZUzaSCvW&>k0;kzxu$Kz|Yk-$c4z+9Bc_!=5_$>zg-vS?JS4v3~d*^@pxYAWm6J zTrhqNVJgbT-D)(R_3C8Y3xc5!fq0skHqH}t-pd%rF-Jupbko306IN*R$Z{Mjg*5y| zrebSy%!xl>z5o6s4tohmFk3dQ1NP;tR}d#($KsrW3&?JW=#&umNI=3Uy#vEE#kQz< z>o>fEZg_u>V0b9Uz2MtxY#vqf%Fna&fYao%4_nf zHwc|4!GL6JKfG`LYdrGyL5X0LPYC!E;&t=-)W3x;iFT!fr*>}=G@cs!q#A5o(;lfe zslWV{do_#1F~jgEfm9w492&^7v(VP;DKn0u_2mXAF{FScH>+;k;T!bmZILGhGT^Ok z4B<6CP667nb}$fEs;;lB&{K)}a#2#XXJwE;)sq2}(fce^8Qn?R0Oq=rww3W%w!nzy z7X8$svdMIj-3uQp=9;NolXRI!P|n=wV_6!vyN!>98b}Uy1laZ{=_EOjvF%sQZ@>-aIvz1=oXrWGoealGw_r<+pLQ?PdD>8>p7IO`!v7BX+D<7UxG zI3SndxFM5Q991@TmLx8bM-y7q($#D(lE@QD%~@2eucc^6iJ{VWX@7RG>4{JIeNtyQuWu71WPXB!SBF9Rj%z{Z{jwKkHCXahYvN;&x#$!RfSD8Z_ zqKV?a;)gb}auMO6xKT;wVh|Qm$*GXtRc!0k;teaBCm~i}9rHbmdY`$SNm;ApoIcl% z`V^hu9?%eifB$s}v`~f^&V3N}^t%unvT75SM+tlyGz(=55K!~^nv9Y^SwGVkek_J+ zT{WzDjKNY__kZ}oj|?&_{UYp&NWq95lC-ukSn)-v zc-J_D+L_dfvu=%8q3fEy;1wCa&>zqTthcmA^1uFzMNw!Z69|-}+Fca&=zZchX7l^T z?-Njq99b5WFc1CTu-_4zn_}31=)<9(;-jCy-iG7hz$l)AcjKQ^pB&F9F?xzmo~V%O z6#PZ%$W)$TmTuV<&K`nL9_A2s`rZ=4_o)4$ID=exLrHIK2A8U3#(^J4%N{A24V#!q z68l4)T_I6(NdJLe%i+JNYUnU z_HfPtti)xo7SJ_$vSCGFjnk0NhcsyLZ>P-4hMx9dfrx=~xskAhh4Br3O5~|~xuq60 zBp?~b1|Zd|k~9Qw3!dGWIZ1b<7+A=*lq9oHY(%(0`_dC$ALJN87N$g1WM|5TrbJb{ zJ~=mv=R{e_*=84zI`FvMwV3ZDf>}ux=?X0FZG@dN!gv{K3s!|R|KCs>oRGmD8}Bu5 z-piGAS-XG+uHB9>A!t56A!|PWzSn-hYL|W*m!E#=JvDYAuCQusot>&aZ{YvxzZY?b zPKU||oqedE79BROcyY018fCY5B1#%PU6$FsDc5*%kl*>s4}blOMQqb|d$`a3)uGFo zMd>=1$x8;g@T@AGxk8zken1ZVcs^vaC%IR?5(ZDQoE|R^b%lfU?@7uPu!NZs4_#Iu z0q{M=^)R`qdtTf{&JuX1TG4@J+0E)Jw(4y)pP1DrkS0uJ3wHjv?hV7B6MRL8H95!; z2lrz{E#!+YhzHPo;sDU}n;(Ij!eT;RqjYs>-|8g-)$GOM)FR{S;xaOOwNuEsC2X>U z3!E!HQuvF;NBpmWi)e!mK|AJf-37UmG6?Fl|&8r*H{*0qxBKR=!uV4 zJizDG z?H*iUbCI^UVx;Y5k(LX`@rsdiTm?BND+cPM3Q)T%p0VA6Gj_0II1Y-zakN@6j*3B1 z-(M}M)b}fpN}Z<2<_AmWICYw$(j12{Wps`!VAF)D6r0ZFI7B!rL=M8uR6q`~<5dDh z?6~xdt(c5pV^$uh6|?3_oS6iWRZboWAf+d7#f%B6oC-kE9=1wM(H>S7Q!AE0st6z} zUU*g3U46w<2eYm6Q+K#payqO4l1JpU%59G5smM0BV%*>!tNeV`SG>*DD{XTtmLypq zC^BQTwXKqJXm2Y32T#%p;owOs0>_F4wR#mnZEwXCyjO*S>nq;E>Q(lzy%nEV_X?g@ z>nm2j;39lBBNR2^t8F(a<8u|Z`0i=D)Hjtu>?x1o3hN&e1 z%>Jq;WX*K0l$@K$Jaw|cUt&oGoAmEE9ZihacmHNRTrm*IG zaVjdMBKM}MLS>hUpK7o^?ISw0iBtJVgMj(!9YaNd3}CH_J7c89qt|##f01`jk{sao zxcwA#5nHVdPkNMK7dxLq>`LTIZh}Xx>|O`3{;MJI>V0>FG<^T)ME!m=_y=5Nan0$Qe>98VnFG zwuW#U2%`c2I0^Xh+2=SL7(J7P??+!@yH3cMAOj^K;0v<0;Lmsn3vMcgkPP@kv_gMW zUP53#7$GLS`K;bkX;5HNP@;NJLppGmit~Xt@=MaiurC^7tR?TnQ5bRa_?5ahMs9( zqf0J=YWW#^X7buxZZ|{aeYyOW$uC$rcV3Wbc?LIc1v78n7}Wf@1G{IgNpvwp#4Qk zPAM{g<<=4fn zT?A0&H5!c}DBNtUa)sh~wz$%NnDb`dY0R*pb30C|3WuC&e&<$AK%Sp}BL%P%{@f&KC_dmM zD+7c(JDG_y3$*tumy>8DB7!Yg$o#-7#vPVOrY0`ZVbX$%Uq;TbZk6=x%?mD{s_kIo z1|)Zl?F6SdUi8KKw}ZC}31B@Gs#+r0IvP$RBkd^Z;8#2vEmDLW!wpyoO;VU7$3R>z zwBXj5WXc#mlP8KqMJeAJy!j~Mh6$vlBDQLx9BDsOC~{6^hzRNJ2j~`l#nBslgIq;8 zV6j?|b^U?P94SsfuB~LF4H8b*hTucdqd_qo{1^mH`>^$D3C+_)tL9bf=8ZF)GF_3# zPlpMOL2{87;XnPBS``UFjeQn^rZrol2@(ZmRuxQtXrw#phyuV+KxxI<5U-VHML(6n z)E??NS)`bW+waP>Mn{*d)^ojOA(h?I3N@nv4pW?p>a0Ig$uHRN^-Mv<_(d$tQSQlqTY@L{<)|zCFkMg z;C_UZkp=mqU3gx@`*&@fKw>VmR@u4D@-e5_n%Gau&TIB$I2k`emjjRs6S-CAs^Ct4 zJVfS=1TpiVf)E0tjh$FZh^3I)RLFDz(ii1wBA?$PgjBlWq5~}5@Io?A>E8N95p;l{ zZ3w(--@eX7d=aFVZPU1f&SpVc|6WWGHYqm>@O=;2rNO=t%_9+p*`SNW+RT?CD1ZeZ z9b6@Cf!!#zmwjKPNoK4JWJ>N<0Lt5PEfrjLdev!3-=KsRZJ{3NG_HrOvL~^gzY`Upeg&Ly!Q$c_~dTRHIuL0o^PUXTKVkf7pHk2=~e1}$L>TvFMBRVsk|BBLl zBViTPBKl1ss5#3b*C0BkL|VKwNK1~SiOz>Y?a}!;t!_`=6l&rCgJ8Y|V+c|^B1)F5 zRQqL-mT27#HyAoHr0{nWY{j*G;Bv?n;tu*ybYkOMo^cc3xqJp9SAZolDIWM zdaBMNe)xAIaH%mx2QvvO*wV;}rnE}KM`zGw(pxMQHCGgmxhQ5F~#Sjo~;YQJ?Dacv0#d+wQt?K&o@C> zDyp3;dy~6;T@!8VkR0rmje)ozFDG50zADoe7A2Vo!Y;a8L0e@kb-HA?J7vxt zG%{K`aw?f9tp*Bh`B2EfY2EBa@u#&(z8Q9glmRd&co@K4qaXC|Cilyg1xZEM?snNY z$(6a++Of3|SKP0gqi-YqrY3X);wRh4?)f)&kmLdte155mn+(;UU4{L(xqCw#>2>vI z_p^TNDl<#wRL+ps4vH|7ndhsO&Pu~NTZ?b}R=}bi^{vI9Ic~2OFJ+tna0poC%4s;~ zo@>M~;4{w#Cu+_)ee+8y_wc?DSlRQuEM2mUUh(wHAs;6fVOugb;Z&;`5;8d`{=8t~ zp#wjq*aE5`V6zK^H%96U#F)mWM!t(pxG!)9B?>#ux3pvhO$p4BxilNqD}0@J7XG}9 z2{}%iltE#$(~5}IVslTabhOpfRsc1e#JF4mP}ez&85BvU^)0|3-LI+`4le;*@(k(1 zvFHWBN{6gb6eV_On+1TD!gAKJG{3?ZFar6c?&3Ko!ybD13O_GF;_=wRvQb zrH5-8z3G*gf@t$7B7KN$v%P5qIq+;AJ;%`4LXm+G1(YH@a}wK{-TM%5B3J2_LrGR; z#86ohGL*(UI2-9~ha{9hNmIVHU=nHaMzG!3w7}eYbXqHYYp2~=>01jWoy7eC@EBC(3-4U|>5L?l8OI%KIf7P@AgZAxcFZt|qFQb0;N z=q-a$M<-A)Qjkg&_l&U#qsl~)%?_BxtCV$h8rwuIh^edYrnKYfa<4tLhG-pq>9~Sx z7}jv86<;gIAi6>@LB2>_^_~O^_Z;4b#-Xg<@!2Qt8+~qCTnzk9a<~Z-A*>LUN^6+Kz0U4NZ<`P zkrZa~6DTtD{=4~suyc}#TM?#W+4$ZQb*Fc*c%a#mfG8}@N{23<28Oe*C6tSWa_Ob=!evGRCNc4Rp zb{dM_(E3Y)X7Ryho50!picaEkZ2{>dz-%5dGopLB*0owmw06N?S=hcHRBiaAr0g0u zE)clk)i%wKwhNjAEAZGBaHM@FPTZ!a%C=743cEe+pT8|<8xB9CLb4#-%{;Bcb{rB* z0u9B(cEBw`x85CezJ2q&7lP|F%(+(;TVq(G!kX!`?B;j+H2P-fTY1o?AI9oJ%NCJH4BjkN} zZz6AR`osy{^3~SdT=7AP5&C9@bDX_N&+c-s0s$9$HK&Na)Fi6nPCHV?VYGiUIhHr7cZ#IrxMD<); zH8u+3$!L&rsot2zTC;v@KngUUl?ZR%ASqJVLHZL6VXCjlO zP)+s-8@L$Q`H8l*S2QDi^%5y774}e&ybbQtb#{Ps7zhi3*t;w6kF6LHS*f@z(K6|t zt89F^<7V$@XC@O%x`uyVHY8K?1x&X|>vZK5<7TJj>d5WMkIAxwS23Em6>VKmr~&o8xkwklc&yRri)M!CG~9%8n?F!L`$>>{fgI_OO!a zo9io+4kx8~F`WpH=;SAMfD(YW6|b?^D;4#3t)1pCku!;Cgax#&@lT0JwXW_{D{B+o zt`FCVec&1=IO%kK15Jz%#Tjp1)9UoQzTvtiXzLp6W_nHMOI_P&oy@E2>NS(YbzL2& zvcaycTi1MXUER9U+`4+rm?N&MW2A znRc5>#M=N^dLq`>wa&ttug^rfjocW$z>vQET-S=!fX z<6HNGoNEHU_D#l^ zdaqloDL6;Q2xwjFU%Qs9Tc2fT@m{0EmGYWhW6$0$M;>%scGot^%F0`aevO0H_U>!% z*qD*8d!47Pve!QHd;r$BgL|H9WxW9efw1i0408$dt?09=hM`xehlPx@V47aodb z(*DPBG}w=yhm?Zi@|O$z|L1p&o7%gptBYFe_NICHp>}$6bNc^kSMNSH&TdKW`efHV z3djCn((6gcJLl60f9l@_^FRQAUho%NJ0TbF@L;iLomZKe|RS(0tZrU25ceL_NzBV|hB)oqK+ zW(TJ+&$7jAb||w=N2wbeg4yp*5CY_8d2J=b0@>Oy9}L^0aZnNNo7SO!+44_l>0EO= zIP{}Ate4Zv^V6I2+S%3T&yCC5R?QS4ROSG1{i#!FxT)?_je8!$MF9H4jEwShZ6uZZM&GZIV;~IQe<_h9*wIWm2H*W|YvKanPC;nC&N1ZRVAq=o% zgv);ldbK|;qK8)8jsuX%g*UEU-~N2lI6e12|8m>-mw(&*+&K3yuT!sY8fU-Uw3@#* zvY#3^H&-`jKR3=kWxt)CpI+bQ*1Ej9`FwgYt(VmMq>I#t^TzwrUoLJ_Z{MG`ZV46; zC?a&%!{)wA6P`}+(QqL0Y0e|@6 z$DR9jZyYEEB=XbTPKLd}5BtL&qv>NMJmn*41&s@ic!HPKx>($psa;yTL^tEFZET-B zu?eDAGqY++4`Q0oX4QE#$bcJG7o02_w0m#k(Ijw8RJo63i~Ku3{P5Eb2$UVb#DvdB z_`E?do^&4Z!@q-ZaWLNbVQC}1qKU~4l=<`uhlnw%tsrl7OB$ZmykUeZ8%oXhDYA}F zhn1S0w04cQma1Pn>tylXvsp7`_t>=O-gzBo1>VQjrNdJ_ULfGC{}4ZpXz%P#;^3R# zgCue79Soh9F{VCS3@^Ek-h!#B|1fEfx-fe^;7`iF(erD`M`0xVS?^1`$=9UnSskpD z1Wk4F6uR>v;0&b4vge({HiBRxVn)A%`WNuONsVbTC^&d2IBVF+jBc8?teB;|>%;7m z9c_VKMRS{mFo9%U)Gs~y_oIjp(-0p)3phQDg07DY8HagH;cH?Dup1&aE&s@5^pnQ@KbWZOe>x!eY@Khsx? zW&|;+7uWuvnWJWHveeAqI~fNg4&me+4myD!45Q8?G+f!2f|z~UX`7WaO-}!f216kG zHddVy0sr#DU;k(Se<2XktG_{NB02OYG3VfSA}Q)(EK?OwMW;6X61ruau2t#Ez9p&7 z(IWmgb7&{P0FLqV3kfy~AnT||i^nL`jV53V8t*KRY10r7;ieMouhT(W1s(Wcgld+~H# z`Q0oH`>lVw>)(2`55qSyLZtO}9F5*qiiNNpG{Re&n#Lw*_Z0f}4?grqr#;BX9OWLm zP{RVUF1<8Phy{h34%RrKn^2w6GRwX0Ffmm0eWR z4VwL?h@<3+b|*w%Nak1xdz)sWpfbZ$RJOe;L^;!>4MdwIP1V^eg?e%ZNN8@WC=@q7 z8z)hlHFkPJo{eewPe5sAoA}FLmqlK@T7iqQdXXba{D8wRNh)-R^&?XA$wpMREo>Yu zwo0S+`s#SS@yVeOQynO|;()iV=11Pru!Bv>Pjfz`8FDKvb(XMm9-2dik1!fxJZ|R8 zvf5?1%7s?y*o6Tft6nkLt#erYA{wIS4ayWPOS&Nb}kH;kcv`y1=rX=$E= zBKaz8GqbgKG=_?!6Z_GCg7(GjZ~)_+PBf&%F$0*zkj5z*C`i-9Ez+2ItAsP1H*;eV zw+N$&#>Lwk1YhN9fdqKcwxu&ZEp;^>bpzlndTxTy8jYuG@Er9<@Kaqhl~6Dn<1)#> z-qFB_)zIMlU+B8KmR!}(mC?;OmUq8@R;PG;4U+b1)^&JsP?mOM>_GBMqZjmpK|C&Y zfA`alqo-N$8W@m#B&6`oKtt_*I1zh?_tEGpE_8gD*RaaD`LW7AL`OvpBDangCw?v6 zc;PwNv_Qcs6nG8ya6|1|G0s@9fGU0%2A$w*I1Uol=*I~P$R!mRxbT}Fu_ezsN6$O5 z7(pcm7)M~q1Bi5teB>>3V+_6J5Bkh36>u8Z5^Y7Ed{=%NstSWE#qIKJcKDJ?+r8-3 zSkeB+YHM@b=ZTR!XagmgzQ~*()6)B>mmY1pw1}XQGOaDT`8qZ&xvXGmD{n)hvW@w7 zg)vV7k1Wh9sX$?WD^%mGXfkw=oE3}EmCMqf<}wp4GjlI%;ngfo&eL&%%m28us~G$8 zZv05X;BD_CS!Xsr;(ugIYe@xkjeUc4-28Yx6kR%9%QpvI7^NuD<6q+;7AkF+v~|)` zot|uu@2TdtynV@bwTe;kE#C$ zGA@km=jpbs8CAI0#ck8(!Vwx)zh5khvW*@3vYP@O{>O`-WP!AS0wF{c9VP@ZYS9)|swM7v5f{7frfo4mZ$Y{8V!u1;nND{+rW%AO1tv9XU5c zqrieBi!!U|NV%Qj^av-EbZE&FEVk9daY6$Q*VNB7;zg~#tD`jy=@|WVbB41lZ+V6Vxo6gOt2kxUa{qHkXu@PTK)D1U63XY?-`w(Wsuwj86@`FFF^`N{SMCP;Ksl{PGh$eBZ z8<7Q_A9lIqZ?*pT!M~f_!z!+K-yMZd!9Q?Y){h4Nn8aa^x)_c+aj!Oh9(SPKu8lj7 zFd7^OG5?tKVD%}l;G7kW!uVM~wny!LQo4PQpbGTW_wR5Ogg>3(#P7GqU+A6?t{E^M zg-PQG>f!+P$X=V?b;0N&e8ImyK=-5jd;B{Jkfv}@LjmX$Y2L;G6{boU_m|p3p9brX zYH=TsV(5Lp9}eixV>IEn{cii2U&DA1ub+|hkp6yEubj%jKubtN*^FpYNORujudD&o}hv zyvcvwU3{Xao5lzFb8*Q}t*bNs``YJ3TYU-=iz1Y)8QyyR#B z9aXd4{cSRi@57+Sol}G6;l3BOlTU=1`+j`iYd?%_Y?*hs2%_elax`f^q42$`Nehg; zAM=cI7P+_}8{$ScknMbB9Sq4IocGSv3}851dHb+5<{P?|OhCWCTKLgE!%u3oMEjI&1n^Cu+`D+^0pms~lQF!7J^>(D90UQPjN3UJ{yKaW7$Q z-5EdTDB9H33)ycg`wwlK$`zBFaw|e}9KZO6-y6qESm&H7 z1itcWPg;KCpU4wmjC;d-5sYS9+|q3oB!OOlty=q%VONL44`e6d+xu>FdFH?kinl^C znP$diEu`qycMtn%zXRcQPpL4pW3lN8?VYm?qdPLZZ{7W2|TigVu0t5Y#o`0YOQL|Aj<%*6jbLPV6s61oy;Vtskm_l z#)2V91!hzSsZORNiic!ML-L;o5@T*@obPCAv>d7X-1j%pwj>fq|31qeh?K7`Cf zO#+85&h2!$9o>OivKr;tfTgv23xq}^y;i(Wmc?wL!{(4m+N4i( z!A7cFbx2sA4M>SmCInbnYg1&DNjDoA<#Nnh%pLob6Dia846zU2<%(&HI5yb2;m-Mp zKlDUAbsXb#4_csqv4P`}bRqcDNBT~@ra$t2z*-M@(9&OdHGzJ|_wlbhKJX*{mB*1Z zJZyJ8YLKm=@%OIxMGT|$FO(**x^*gbN6zDMu+r$=CFu7v6Qq zM>7~bkzxYdL)05LuHWNE^q9{0;Q0ZRZnz$VF*dVXEwK!tW`Jc@`w~UL3hd*5O9>OE zg?;Fu?uoCY%0Zh)Uus&rfL{0~{<6vmosz}^-RwbOV#6eT53)^C*DcsgPW^H-1zxya zB6kCR(w)o` zrKn5IfeMvHKYj;v3+z-HC>UQ5ee2K$p^ zVE=Bd=HvMQtkl?nHb%gDakgOIW25QNkrKCdC3;6^XbshKmG~K zS{13=b8u344%n78nFF;zY#XP|ER!jQe1#2I%}U9&`m>kHVmCqH-bGD9Pm7s^66A?V zD08YsuBsdW!SoB*mMiPdcaC+ZcYvdoucE1u1pU9ERj-LyxCGS{%JmXyG#>L?Oxbz)MH?bNQ58pvs)X14u+E& zS&T4Y!INP`8W4I3O$kgwg8Me2L2-yHyby&35XEYgXLxp@z1pb#mH)<%A^g4I4<0}N zL*jp_KY#BGhk&USBX;amL%it}lLSdYoS6eMHloX+CtSb$ezsy-&BwchbbZ0CC2twI zL_JVJ&z8}bz9C)$*xH<7IZg2jT|!g(LU%b$i9Ny++JcsYqq{Akso{k*wG?vbEe))G zb9rF(!{xO__cXM?3M|%7Zn%OHt5q(>E3DZP;Xj?^=ZK1XbuG^w* z6L^ zrVJ73;Bfl~Y!i|tAOry?(d6A6VwZ+;TytBVkGT5^iRD`qUtlbpl2xyi7jem&R&F5a zndYZV*I3}P)KYU(wjBb54D4vBR)fTDVfwrv98vtN@^;kZK{Rjb0dd>a+?^1W_S;_q zoq!>3KfvY%I!U5F`a7qfB&2ir4jj&YN8L=jHPR4pvdkJ826O{tIe~JNw1(hVUE*Qz zsiLH5>SgfjAyqY@8XE#XZ#gttqLv^dfquue{))P2rZ6|S2IXlOPOk(gs>hzmESMY&}(wSdsacyn@cym^C+vB}vs!8af2h&e2k zFtj3U=?yFHMk_u`$Iggph(GS+$z&?koymAN3OL_M@C}zxai$G*=A9CVqTq^A*^Nvb z3UKsf6_#Co)R;~pBfG-_Z5rJGrr2y|mWXZb;rE&8Uqk( z+fr>D8`DT+*0!VG=3zI9iOZ_rydpU3wR2dWq5~v=BYBJs95u;7&=WPUF?-CmO9tDh z7u-e2$=X9=4J8cjyKkEp;Vvb$&Y5TqxPjv_9aJ&dx4{pxNm| zcmf1Tl{v%d8;I9wwdjUF9B=^DoLM8+AEZ;6DXumSxN$NV=c%LNsGqK`#p-HBka&~; zETxiJ`f#NaS7o#OPKu~>mfovHQu!p3p{$JSrG58HG9tXC^Mu5oYDz5ZJZ0KUzENn# zoX>RFvDVs@O~&)+xb+TENP_kN#=@D6MxB@PPapNhUGZ}d6|R2J;jUO2a1B$da)%_Y zyX2$HyQ?dlWhi`$?C1JiY2!0THNC)$6yLj3lUil}PBl?^4^OpIY#&$T2*e7rL;yFr z#dXL$Ddp_usUAfqS7Arj&C{mNs^K}ic>8cXHjk-pm1lMLN@W?GzNG|0=t4&upR! z5EjF9c~aqFSS`%j#Wm83Zk+B&t8U{&9P>As3Vl`Es4I6=cC)V1(Q-EI3O!pCRAAFq zgfw&C*2GqB>(;f*&Ys!5O^JdV_%3bW=bQ|)^#1KNy2bZzDqMa4=B_I4-&}Xe`}gH9 zpWiiZbQ)2254TV{>z3NH%1yhcw#yVjo?U*1BG+QW(*!#UIGZj?ND)p8m4pbVh3Ybd z(@ZfDLKegv3BnX|1qi3R%JPG1ys-G-^tzz*p!zN?JUB2^k{xEWVA1T1jo)d&;@X8J zhiMJW5*%zoD6*H^eXLk)DBV>>si9&&rGWHJ0bNxV6;O9Yq5{INIdX!=mkq466m1TjXiDGg9NPUhFASE0LAnBy? z?oX{2-TIU67Tor!)3SSh(s`Brep+pd4yW(+No9-G7TxD_E6>{F%{&*_;7#MJ-Q3G{ zQ*C3f(nr}%y<{KD+0e^%YEf8$%^b8cb0?RDR%RP#>YKWUYuYTLuxB|2W=)8QY4h+x zoA@5gmdg7`7vJ|QwqIoP%fEoA*x`&F^ib|*mfM{OB;-PzXBE}Dy=h*4Py{zU>5wW= zA_gz%LACjqC>Dfnycy>37U!NKLD((X6j)q}a9gM%Nw_UkmL}Y0ib)iL!Z|{PDdfl% zZg-Vs3)Og0@xtwOK@mgsT~^9)VW=W$%xb}++3C`T+kmwn6qPupHZV)-unD1n;NkSK zTH&L7SJecNs{ND|LMrsL96_Xf#}@Gw5JrTAX38UGRhAJ+G-*ziN_2r@ngupnJ{^tP z&-SKJNG#d6V_kS0>jL&PB}}TPHBeo!nAT!d$zf`HOV(AK-rSu2KSe9z!{FSR&!i#~ zy-mvu$&`9?eByZCjZd7#kEh5GNy|2|6qg|E`c>oyyMATq!EU6O?7(Q6BRc3Zj^to> zRatJ3mWzrFc9#nZ4brie8MM8jwoBZrm$FN=;i@7?Os{W|?Q}81u5R)1qC&)!>a#=$ ziy#U}5LO4Pl^@D>R84xQ)=OF0p>!|HksQi)YtdT)xq<0sCd1e3vW(QAsBx;$kWg!3 zWyaOrZ-{ecZv=&;h66|q)#KVj%+S&M5j2#Rip~{k zWJ>XZz!rImm#cRl8)vs_iNMKowQ*cjKXkFR?2ahi5(g?t+yaugB~C<@W#wT?-1z81 zktIhFEVS$>ry^O}1wta&#UV#l42n?fq+<7FbDiSir`tjm0n}}wvIy!nQ%nezIhiAc znnI2k>ULLI5LJyAl|tyRp`YbQr{z1gh_8TrDkPNIxa9stVwsx7T1Gq^MhMVaLl(X9FzAFhyZ#3$a5x@A z_<-EU-Y$I$k)ihi?tb_gd}|{`@2K4kzts?)0nbAu8Acoi`vJA6iR7F0fNzg&YEnf} zpoiZlAp+N2wlDe97=C>KWbk0#NOTAOr~*A8jq;cw3pxh}C-m!%f<6Ft{6w;$NiV9! zqxNu&n7o7M0b~*+LB8imyx{lxSi@t*L zQ9^!bpNdR3N5OC$_9E&^{hC_T^CY%JFd9YVA80*It#hpLIs?`dgYFrHygg?cW|iDk zb0P>#9%}C3--3!jasSqCp%+J#JSyyr(YE?UUuPVv3i%HY%2iu_^J z3p>vZgsZWg!44&OhP5H36niV{`V$f;(XiLnbs1@H$)iq*froQFrI+0Qboo*8Efiqt z3!6b2q43b0WmJ^wCLhuZc-o{X9C5Q}`{ufNkd6rLkbQU;(2i$oM*t}#DvWimAF^_B zmqi6mzDYFC&Gu9Q0R<-8S!Op#tZ@w*o01>W^n9r>ngc3QQ0AR8zAUr@W zNQXpN=Q3eV0dyUk#TxhzlQz;Jc2~(N(BnbUBXSSKBc%F6um&iZlJ^>t4I>BZ%t)ohuav&-&&J31OL;^ycu zCEV_uFoj5Eqh(Av<4M=71VcdWg&hbvezSp4nv~d*vImh{wNN_#4iWo~ zB!r<({@JeM?I^fIpt&^K?L(gQt~Hob!fsSXRqo00$DOAr{Quc|zZk2MG*9gCr>b*i z*q!WMyu*61ozmbH9$`7D&g!Cjb9%G8lWD3uJ$r%lIO$0#q4Hixrn4XivU;*dcqXN0 zXIY!lq*O@e0Vz{5vayUM9(dq^htwF$NXtV$Aejdqc)&K6vCRVyJRsR|&iVZ!&W*U| z#20Z+Ub3p8q&ksta>1yB@U3l~7Ma5Efl$TdTWVRKnr z?_Q-c8rbewpBkMp4J$RNjik3X=LYD5)RgXf>76DQ)77`bEwxdfUgPZ!fYjA#*^SG+Z!*kdYT3;V=#*;5isnI*9nrX|ZH*RdE2ajJ>A+pBHRNN(@^NB5Ow6y|O+CqsAbJN2#DmI<7`q}@3Mjve zk$tCO+oOZd)?7uxMd__5f6O@;YOc5LMUz_Mr1Q(4sX;f!+!nbWI#uqfz$(1^BA-Sm zjt2`DTlW?*t8P~|d`Pqa?@rD80BuNqy{R?KCi>XwiSwkJ(Sj&?)CIs0_@GV>x1#Q$+I2>&l+Hf7}gTrM`{W0VD%DS2_duOt?!r*)F)s8 zO@%ez0$PuWarKILiC#qqIYD_N+hZwWdRi0J$ zblE}OvtD%n!@oSNqW6qiKbv5OopI{bPZap1ALA`2mEW3P-l8Py>Rm6F_HTzQm~At= zV?wq~?~DoAcC~fAR9|x&RLI+e2m9V(@k+OPx3{u4PT&148HrZ6{9r#8Y>k*IPWMIX z?1R-;Tebt%RgvB<9OKLSyI);w!wu`{^){nwyP8pByI#R|Xm-adlzl*F-Q;dpt;Uc= z0oDE1*yjp0lj7!V5pBXASADaj!xBeQ;igikQJUDu3gyYw%Z4_wY8#xxMR)s3M*8fz z#Rhh*x~!P(Se*^pu_|u+=mB}xlvQaHvLPi?zSlm0;u5zNRfDD3)5GZ)gs1FT(yxTR8g>rB%~zVKoU~3w3YUFzEBg)2z-$ER4GzO0N=wxw zO1F13X}z_hjF+~df*1i?J4zA3N|LU1#i-|wj+W}D$9jt6+0DtMAd`~K82+3t=K6PH zv_LRZ<-jgo`^^MD9Iy*>Hs6KGKF<2xe3_d})ecOSUA|t-6?P)r-IugUcz0jA?3S%^ zSMIwQZZUf<fhR2 zDMsqz#!BV}`IN88T@`KWdOIpEnS3`z#gfWNS-z>0Ul>)r4HP~xi=Zu@oJG)J~svIDHGCXip@X zs1wn+JwQgmR4$Af9k6WH6hKWdr3;{D*G2;Zil%k}A{HB*a+Y4xy8voUyGjGoys9Yd zndt>69zEOhh*um&WLwU?*Q?P<92gQ^_VNR>24A~BDNdTyhZ!Som##UT?5ZTml+po| zPb=B?n)zDSE&+copImnH>YJ@pLoS_^c8R1Xrjb>bMhs(|>^(T)IYs(?(@w1<>N)G} zQv0WI_Y3u!ynANLR5PGm7Mpx==0H--Pae8#Q*Q#%o0OVFP%C%mka{)k3C-M;kV}`n z8`r;cU|m*B+o*(fGiSj9SewH_{_ny|)`0?8cdbb@btWu;e*@>jLfpRBE}v)FBFf<5 z2buUfqxnRy_+VU929TW-b1JugXT==W;b!)%+HF>4cQv!d&WuIbqqu(9)J+M6*er7E@>GDAc-tU^8w?Xv#o!&XUELr-}1qF?_iq*3g-Iq#L$^{4Ud`it5fGj%Uq1R%JCt?;R$%Hx^g z$Gd_liw}1NQ5LbcA)6IlhuTnjC)fRT)8+SrYrA?L2(x!H1B@3VwWx}}n{=V`2h%IYjunX{== zFY2GGt7j$y74rdmrf6)lDmG-tm$?0rdsIc^`_ohNUv#S9ir|e_1-sNcht-Qvh40AJyf-R>aWm(##EhFhl_h4}wQAYanJh8)22Nzjn?SF5pJ&Bc zvMOLHD_9dSm0kC~u4a^%t$tW~diP&2N~nKpm&G{Tz@GK|&8g(BhSk_9tO#2acN6NL z!3q~3U^Al06IivIMg!-s!i|-VIQww=su|;`9UNC$;aY0AX_`2B70#6lR}G!JYQ*py z;JRC0a`Mq5Y+gMSeHP2AgLG@GIF%TgaptY^Ei?a#tIR?n2d?BM?K!^Se4{8?*=^W8 zCM$v&Ur)9{hpqZ;lYo;}U82QI2KQH-{LwvqE^GWFsp97hlSH)lY`H)m$|J z%I^2@pY<~2oReNgqCZh08NCovycgpXyTv+jx$*!}QT~`?UR8L{q>zWax=2`ax_~2I zU1ZFvhgwCI9q{VH2h6Afk9XzWt?YDHmq^yxuA+ApV*|ab`v`|xi%qxa1b5ZsAAzs# ztHTd7)ccEAGCgURRqS zXNXlt8v^7L9Bv4pCOqB{K+)b@Z^DG4UF-lE1&18MsL=sahv~InA3#lT&>?`DT^kJu zC_3yAAY!q>HDEsZcj+Vn{crK-{Kp~IRZ*<;SV)%=Trx@zOEl>o-?J3>-puhI z<_e?%HtvW?UO$yr)uIZ&Au&Lis^=+}t{TkFxindI>L^y~6}n{~nmMj&GwQ?)Ypf6p zzqS#%*b5aq4C=U9*C*xl8~LK0O{((X4)w}fh<1DAvuK9|~Y?4wW={uM?cQ+TdNwVojYP3Q=7jaftrjUr2i_-Eb?vA3Vy#!wJCyJu%p&OhU+15W(6eB{w8hDeZiW+Dp z4V){AF<3fj>BGsQrVLc)Y*CDPnmAn)!=-0b@lP!NXTVtEB`1!T2gsSs?U+0kR|9YG= zKJqRAs3@q89M%{>1#Pkw4lh<7?fY0A?TeNvJqyUuT#sOu9*M*u!JiZl2^MXa9}|q0 zz?>_j9G_VG6Q9hei|UjZA(zYLV~-w34r|D%&nQyRiq6Y>c(H4s_;qe*lKa{`ez^pN+2l%+ota_5lQ=AqNYZ)ux5T!*Z;uxhxAz%?H@E|3I-?EdGmQ>DJ${Nka z33^q{#yORFeDToCvCn1}FLXLlCmYN*=f^WVP@A80$nFQ2Io_F9hr$nDT>LcMzt*u( z&6U#)hjdH(;CCp%OnRLAQ*{ht;-Z1`nMy1aN7^o;`Q5b7AqY3N$H&d(+m> z)N%Xl=GD`u&dzt*$_N)uEq2cQDwPj9sRN-unfRAK`r*XP%%990%$sKG)CDETND7L) znl*)rm>fKmZufrid1vM?=guy6E-sv!?Wo#vGiB61CUExr=bv}ZEfz>2Cy>sWQx`rv zb*3m1a%6Ny&U6-M&UKa+XBN-@qH|7()14usa15oVs#|j6qQs z!-I-pW)JJa)2x+M+cm#*biAXwxAVW6IrYWT=;>4Q7dy&oe|-MJU!JQrf6CefFHPn6{SxRYqR>T6htv*g%Sb@IRfo z(8*4K&E&%!HiKUlFLPHzr*r2oe12+vMhyzGs{6F1Op%^~I-Iwa8JkX*U4NiP5ZM4= z=Jfe5&Si}g@_5EOpMG}u@Z?NXAWADa9ruiWcK-bQ50cJ>3rf?))QCdXx~Ga4LA^Sf ziBLRPhu{%B8a=hJ&^gyugUH#>GY{|lMM>}WS@CkTZ1j0Jz3u<}LSA!!^haG)Q+ebz zyPxPs%6{pKq{Fo05i9&bSE6kLe?xW0fS*NH5Fv{t(7qyQs&M(F_jM2b$F*Dy;Iy-y* z%!N}6b7yB&Y*aB$jZ8bbePl1ct5Yu}F6gX zM%rI|zK}LB9kz7Wn9e@ZQDWRA_^-32odT<{3kc6($FqRk`HNJ}cfBNc zJX;$)zL@sW;WcoWmPen-`41K*owc~E!_Q_|Tx*(CQStahSD&Bt3gVa5-u;_$S#5Ur z=h?|tE;MFA&kRTPT5o-OtC!r=`&em5Jnjq>ax3%e9ZR^Fl6p&?wGfKc1>T(O#Sqab3au*>-^$Y3V-QHY%7Gn(XZWm!fIZnCfaJu zcJX2sbKm?)>YK-p zq&pz#khJ%ZITIh1)LZ`g!EdvJt2KF27Ww}7EsJ34|B-A?@Q&ih@pLOOoosvqLbNiW zXXevCBNxXMY9G0xF{CS|-wflI&hy@#*-IkOH^AUrRZkb?uu7XP%@tmKEs4~#>SROT zx{g222QBIHAD1Ne|3}{d^Q(S3U6nkGC6{xZbR^cV{&-x)lU@_{=zTXc!{_W%U7nWC z_Vw)ZyEqAQEd5BrFR~3yEEx2j#c%#uMYA4|pMOeCQgHr*-#OR$OTOrI{zC5Zz0bhv z1;j(?>cXF-M^;kZ`}fj!INxU8_?GfDNAY+Juds}}iFWQfz1P&c-eRTod#BMadZ(^b zx#N-+P;WaG7bcI-sJ+t9&(1dRv50O>!(TmC@lD?rp*GDgb`ZCFx1z4~^d>YwX*nc$$s$issU8GVZu z`rxx8>t@-di5IxT-Bz7mOwSZ`*T=gwdik5%GGE6EiMnmDi;}w1x-h=@XlCO4>@U=@ znEA7_zdHO;dK|lCz@~OgeyYw)HTgm^I_P|UzS;d=?5oH!V^<6_a*t96W^^lR~j|cKqB=eH3CuVnF}xwF1uSibta91_{N}` zcBnAf>pZ(*nfh!f)im}p^1=)yexJ)~384f$_A@o@PNh_fu@!CGow#iQpnc1BZW zG*=K<>hn{-P)C~8+51l0;jgHdG%r+ZXz%7738wG(r8VrneW$fi2Tih>ZXp_3vmNf; zYKZe9n&c2?=Dz9tRhh2x=w^Y9{eDzUxMw)pL(jw3Xfoj4sxCG3G)t|Z$nK{v!UM)~ zfp1l1m7<3h;%X@#<5j0>)9SZgbt=X*JGin7$bF%ABrCio;|*o$b+5);^*$KdgHCoB zyXK?b&-d)YSsYRF&0nBtUdLahhRk;>} zGMl#?{han<#9$&D?}xV*zn?dcIEYg18TbhWp}7HOhHF)dH^ z&Gi>*qGSl@;G0~mX{5C@uw)ZuGc}BKmO|3`K*P&6&Dkg&_&O2`7jL30)WiZ#6yt`k z;A^Z3I4E^5;R|E&S@!x(K75T{)^RPHF72q7gBo4ifnp)I&4t;b=e7<<_{GJRvZ-%z zcF+LpY(XVk2oNmwyc_G}^DVWN?)gAh*PNkp78LP?t_b4tPjp2Pmw%&6J4r9sJ1~^J zn2E;^k_(;B&;PPBqu!5K@9K9g$gu9QrqFvD+TBPi>j2}r?2Vl?)HgzqpGj(jUh%s@ zsrS{Fkb%DPOI>njI4t>8R{%Nbx4HsI+MkDN#Ei19bp=SNdVV#S)vnm{16yI_=!mJ` z)FmhRU{`>2c9k?CqU@7h0YVnrUK1u1eY7h;z6QS9RT-DF1@2~oPV{%Xd;)TK=-G#1 z$8lijv%)yAelRU;pQNL}TDvmc{T8|=z3|*?AIC+Mf0&9EDEl&%{=IzL$YK|xyJ|+I zdq>^mxhtj2nzp^T&pAOU;qn??L-Fgmnba*{I_!5P^Xw>TfxxR|Yl)JmF^PYBsaq`A zt$Ns#ZZT#4>h3Z1J~jE#;m^{Wua5ofvvlain+uAuO8uJs=HHU)mbdG+4|TmrDwg-^ zLfee~4JwOi%qEqGglAcT7+OnQZ2HgIE*_OMhh*~c^e7#GXrS3jhz^NWunYX5r+UtFBa zZopEPC1zugQ2$Xk1^^k|O7e>i$IpN9*?cEEYA^R2^|t@ni>J??JG-cERAj19^|-#E zUBjPpxoWnJPtrE_sk#HPRWCQ!t$XNC#BkIULbOvKwDj09My16-HqN4YMIy4B?cXVB}U{ z<(wyqwwZUdm)9OILJ~Vi^@*jtslze4l~Jc-;+3(6C3>*jdt4pq2JEXstLzirW|ww| z*)TgnPS-MPZWWww3o@f&pxT)}V3c?4IaNv1kGVC9U$pjzgzT77c2!GAKq%fiqwkYe zBa7@__<)8#q9%>Jw=liCE68`F+9A>-Kjw>rz2Q zOZ6v8EL{1b$gB75(tqAYni;gKjn=8fYNsnI(lvj~T5eI3VogyKr-c>(7&IC6Q#a17 zpI+9O%`^3#t5sLK>O#1fRT)?><>=ok2q>PP12cKy>@Uxrn$IpNN-w}uQ-PT;&ZQ#_ zm3#KD)Y}iU=NEp}echK@?sbdgH+`wg#PM5(t8v$rx`bOfNP0z>x>P!Qs$;$C9+1Q7 zl{H$(T)N`E&!*q#)_v(^HYA;y{o;bEKQ)6o)Wa~vzAxz+ypi@;^#P(`LqYJvhYj_vK||T$gTfr)Yx&g@*1CVB()CFUj1>F}yJ=ruEDqFH)e1K!j(f@(^thi??M>T@S1a%Jr*UA^lH zT>MJVH>K58k1V@dT=ys$W6LI6R#m<97^S}J>m(~aL!&%)3w?)1N%IaqM5DO!OEmAi zrVh^haDM*0`pk{`Ku8)HwLRXoWS^)T+SBQZx{>cE>ccVxF|$d;V!_8!*|YB-Wz~6X zQcWpxEZ*P74Q=?Ve6f`Iu@Q_eD;;1G{?rWfmZ<=3V0s^s|#_4yC|K-~&w zTtto8X3liZssCR%e?GgMzQ$HlR}2jtmcIKtb7LG-eNpLWGp%%Psjoduoj1FhB=cMO z;wryWXU4>pBW`?Q4J#9s?*evJOZlKXUEK4Mm1mcUciNp z>NeHa&}L4}9CTF56-g(l`6`cE02`S(mR~7a1UfQy&H5>`3FpP1^Ai$E7_~5CXhw?C zh#+dIKnrsIvp?_5E~d*v-7BSLAv;|tZYlHFW+Admq;4;(Jf@Y|CHvNn>ZQ(KID00I zdHz+5e4VDS#84SdMQaxzS)kdyY@seKRUf-Lo5vjW)vNaT&u31}&hif3)ZJ#(O%2et zynqts*bmcho2dV1Hz=lo8N|~YsJ>ecO+Uqz9{E)_&1Ih_aX;*kE{3b6TJ>SuPqLeF z(=A0^JnTyfGijqu?;K2@@~a-5&!VIvscWQ_?-Xxj%;%lO7Et7`9csceB#X&PKD|CC8xk|t7S`v*=ET2aF_YanxgeXapYtD^a)N^ zSvA3I?z2jcVVYYA(%w#mgzA;L%_QAz7cCfdmuTZ2p=wm481mg(by1*ZXk5Mb+RJuc zMc~a}z@!+W+Q|-L6wWC%TRGv>yX&UVM7twg-V$@UL-hURr-egHjp`amxm!jJw^%sd^#v8}7?^$IB3Zi|+^my4xmfT}ZpZzClc9Qkw*{?XL(y(V(BKT`ge{|OG zb-}bzJ^4(oPBX+RjA@27hBt*;;C@WSj#|Ujledh5I*nFP1oga%lsVPxq~s3#{39aH z^x!))h3TF;8D9Ra56)-=-};cxF1l|iOu6^`u15CVzfGTjj7H8svM*L&$Uj_tL4Cyg z{6hAn=5%&7qn1$A94@=KHN8$%r5DfQhX{?x8;ePJu~^VRe6LTp5VDX8D3>sK7AO0a5kIGg}j91 z0xlaU`cy+o+b#|Lns$Mq1zZvo-LLEB@17*9BXEgB+BMSLMf`QCE0;X^wCiL5ln3QP zO`z!IE}_VPPn%H-rKj(`H1IB|1)jxv=WSX_ZL|eA<*qVV|ZX@I)K* zfr?IluqT+;mV{k_A#UR-X=OG>&||xh4y%YyyQ)?!$+jil8P0VFa-7upw7GB;%kk^Z zBpuDNG@mwV6k~%UcuK5hV+7-={z9gqj6kq46rIoz?{Kn>q6-@0ojh|&%E_oKVqOD- zH9RGCV`Bs+=r821+-lcR^rnV*>*hX+KGcx%y0I3N3QIvua^j%E0_P4lF(Igk6es`N zF}AksIf%bhRWQl|j7%QySt8 zRF_cn8lF3nU;D?qwLr^SIIlO5PXOeyrH`b|HGxqhjzMp*wi$^gbPa*N^bZqkPTP`W zK973_bHCM<+G6q$)@W55IfCR9lO-jbe3+LM^tp#n^wzfsX-|ORUCp@dV>}Av{~&dd02$uE0S6(2U{Rrkq73As06q!ONjxP@ z-o^+bOMfAY+GyV1XbMH!8sZJCmr(SIhIqL=L(v1jmAi_v7?T6P!>rjWNM6-ht$Rq` z*IBb~kbG;heE#7Ye$2;#H^&}BS7NPd-k^v_oL=T&427Su^;{I?me&P*UVWwLy3 zMJk5z)CnBKvJg$7ZgweDz2ww?Iv>*6;vD-{Pq@!`yIklC^~F5V`ur=RVB*Mw?sEd99=HBRnPH$i@h4&|k1R-65PB0SS!VFFr$1eiTn78k6^swLSTAuP;)P z%!np)l*yLPnq_iQXO(WRE&O+5T|Bv=t>k0!mf6U@i{w3%)rD4naHp7rkD$PyhLo-} z5HbM>-M;Ev7BSo)xCd<25i4RAQFg^(e!PbC%|afM`eCa`o*M@9!)HjpDC8ljA2uDD z=!h{D4gSVtX*d!#6{42`schIZ1y7hy0aO)p%PR z2ng*gP@hFji}JRG8W8%<_T)RI6Gke-)9V3}-G}}U@szlXjS<+azmTU;Mj+Taiayd1 z#w*=I?WXx0MPF%1xnutKW138wV9%fg8^RCtohn%^DocP?tUD}N5WYcGaYUmWQhF58 zhMd%bF_0sp(4jyu7Bzx-xww$>{?Otw4>>+eCche(`f7lGFCc$Mnvb-8=z6z^ZIa0U z#aPCf-I?K1?p=UfhRADpR`|s$=rV|+yEUYgOBrNGvQWP9MbI$lbNryZoXI)OdUgRx z>R!ArV|keYu=VX^SCb4I*=BBd{wW zcL5dn5+R0*R~HxJ)#Ww>GF-g%vJS`tJO%385RsEV1N}FK50iUzA2B^A7i za-6alDs2r%!lrTw3^|Yz7{P{A4WOv9jj1@ZRSs!VnLGc(SeI#r@Rw>aOpfWS(z-}) zvrt}kNJBIg2LB3;o1xNzEC(P1JBNz>?llWCp~WvXbp#~&AICs9e++6a`n337omFb; zF;F3T$PYmY{UB7;F_VeEy)A(8KF~3p?RiZZ2{tZ5SQTUVy`pO&ghg2aY8E_HJ_~|q z^s$zl&m@Wl@u>x(-9#FZQxIq>Mkg8|h*Kk=iq4td&@Vn$V7V3TKy)Q!6s9xqIYMq} zNNLlhHrG(pK)fxe286?>ZHbu6=0a|St4~V>2-XP1Tl@Xt@&FcltbNQ|l@XAK;an)t z6S-iGK)m(RA1=e_H96i?A$|Yq&Yih22Jp->VITdldq`3m1;xz+jetWCr$Yd7nOV?* z6GGdl;g@ZhiV+z@C6|Dgv|YYDxq5j=Zb!bLtB%y1^o|Wk;Wj93Pkx>31fgAcrg`>1 zyQXY9*?ArkIs!tKhkU484@z^ZJt)nIbz6gO6=Q6hIUyp6mqDMCq^cPY8QGYsm3efj z{e{p10>Lgr|0~+gr8g*0eNv~}DLeb?(*_CZlk~YnE#h+rdaUCqsZSdt7`^ou@>o}n zx0m3G2lW@Yz!OlXodxQ%=w4h`p{m9ou3mu8n}DjZF#_583)uw=2n2g+=`X07K~Sfi z1zcEk(p1fqH`)%NFt25jv>F>DkgdOvae3A3v-B5K%@IIoXMy@GIuEF5L{tkj7sDwC zGz|_xAQlcXL?a+UE%l2JmA`E2sC)~GeQ*Ck%Q4~wffm6b2*koc)@uYLaG`$jq4M{2 z9aWrVqzhd^;p=!xV!e$K*r30V+fYUz*i}n^L9D+62<nOZ| zr=)6Zj6k;jLY_kzfnX0T{RLI?0ub6+z-16K+95qfF2D4JHDhBU*laFj1j-1w>_$<} z>;+cl&7Au*7w;@_)ZyZtyHKFZfQlx36DT~5r=-o;7=h9H3t50N0>N6A{({h@Tg^ihi502GH zg^)1~@rv(4W;J;v%DC{HNV=hW4`sRGUA4(eX?YHBSW8QTX$frB{e_Il1sg)qeHv0a z9i{qXD9Tz@8})CH^;T2ikH|15qspkLivj*-)uxkWY7$7;wk4|t{I2!_$_E2vZ-Xi} zQ3)Y^p6U_tS%gr_cvi(SGO{s(X4qfIH7FwxYzaj#Ylye4xF^88!Qeiq(|<%&vkuTB zJSA0QV+0oHFXS1N5eW7GMK?6WTQx6G^tFa~t0uu#?JmJqH5-795h&AN$Pknf2(}YN z2Q|cN<^3qi!&ntuxTrdSdz1I-`;)zA0Q(Es6E0W)WEZFhKv*=uVvRsb8w{(mKU}Ex zK3GmgO#cb`C=fXu3gHw5IsgtMcnZ!TMnI@XJ47FX#y1@_3JyV>c;P>F5}dsxgdZUg z7@O3u>iQ`iva>O`5N}*_A@8}MyT*e9=yD^!w^+5s_#p}7$=S< z*ABI=_JHaRiaykk7L#N8qbJ^uX#?mdh6I+eFp3_MLs}@xZwIL; z$mF7?a#|Y<3EOTfD0)*vyhbAA(5{@Ox|v}d$+!PdXZaYD;XN>}Tz95l67*ay?QIk# zA3NV_|;Q zW^^F;Wi_%JTwR2RFX5SG-o+pHikZF!K=MN%|6%g4lEKm6U*+Fqt7iE&eHQhx;Fo=N zfrY^L_n~NkyN`dxM+VNN1%*AFn&1gkcN1xriG%kvw#bW^2=bNVbn?Rna5L7H8w^dTYn+T z+Rol#R2xMXG{jpqS5TC87O2mn>}Ey7sO#W!6HiIi*cgFq{e{p10>N%T?^}2ZhEe=j z+gm^~I}f5~+--Wu!PQaxF;>jHx|=7Zl~Weypur7N3*DePnO804R7 z#l3F)97V}LTZwWN7Yw0#P)b&NQ1TC8i1q6b;z4vQ7d#mOMigNK=6rCmjn!;0JXB#6>r@xSS zZ8UG(Xrbt|hIs9~h@#6H;^o492<~u*qSIB-zmBJ*YHW<4YWfSgEjQWNP$roRwcKp@x#^nQw`U_AT=MR~$W6rJ7zG=Sq! z5a3$s;0jXT0kJ!GW5QRryx4rN71($ z;+?Ipqv#_%C04dE0%iIOd8YOEy5<8E-Ovzk19*X=uQjBU%kbZib?qGN!C%T^O!CH+ ziWLu183uY3&kxjg#UGTP2q}YA_E`i?g2zcbD|S=LAR<0%W_e_!v)BOH97jS*0z@rt(BXN?n(bWH4vE6VD3wD2I5t41)ST z!-dJqI%{?X$!jL-I+8a`)*6yGO%|$GKkQc>$^L+bcqLv((bpQ%y8MrF23PPDn2J=M zYAQ#We5JGe)rz8os&{gke5t8;-%WjkqI>ci^ng*wD6)YK zs`$=4L!S-l7axIW<4}Fhn80sp8}xPObHp-&Kp)y`5m0p+Y1co_+v#pR1qYOf-i^LN zt*gzKj^*i11l`qDwppNS;BZSTdGrpFWL`0MrM$})M5H7^w>9gZyR3ii3yf5N(u!CU zMAkc!zw*DUOAZgUyhmRl`PO9lAw`^efc$S9_5k^Pya#A2 zae58wnRY99ox=uI%yrmwA|P*E(FEhQ7*K+sRWO3T>xcr8!-Ni#0(0*{;r)0@21PbT zFjns`WE9E>1lw!rFL1XpKxk(H7Z#lcR5Vnp1)7TC6a-@7Ae|Zk2@KvZK2(0*nA;ym zYJuirI0b=NI7p{PK!S?x7oQ;vPp9xyEw+50gB{U66duM?5=?E3zy|$=j6)fLVEa*Y zL_?;0W4Q?wrJV&_Sac3hQ829qYR7O20R9OI@mTN!2DirXk0X(hsgSmP5ExYH- zQLBmEfhDPm1;&b6ajC@Aic3XYD-+PTYV>EzZ!iZ-S2ml#7;B5wsRb$Bl%X!V%np(CE1W2$-gdNWu?`gfX@p&1wASu zFa40#|2&35`D0K+T3z|-55}neK$b1R_8P&M9MxH+mba>q^!i{rk-)@0*0oQ2 z{81+7byk~!blqetOT;OgzRThs5o-|pPk$h;fHjsQ}vOrxw7<dS{ZOLhBPnA{HG$f@mDocxsge@_}V;dBRN64103F^bvF3^jR zf{lIFBZORbB$vy3PF61qw{%^$nPi=+xdA`e*TZcmv_rP;BWc{0q_pUEjkCbCW?woZ zrNlO5N3!5olk^KZX_=6)MPtz=xoDSA^eUb^l3)8pvq6G(;zGPuqezd8Hf{rrpc2!} zS0KX;Ez5~DB=731StgCdCn)iv_PNpz^wL|X_jOJ940##Cvm|U{@EIme_$nPh*}SM< zI^4JhzSK3%yN5gqkmgYWva1@ZkRKHxJ(0WFAc4EN5U-;ULKW4Jh?PbSRai-^e|8gm zjNi?$zRe^%QbmOX?`p4TvA29|vMg45q)ua!@M{zl#Aq8LibQ)M5-VKsxsNOpH@)^9 z0%X5d@WcTm$8^>#lZMv`mzTE*?FGSon(!I&GK6PIc-@p@(&*)FLgY0BDrqwyU+S9X zjpKI;kmgYWvXe9+DnfdqCPWaKSB&@RT_+*$ytaL|2~(NW9ms@=rFpl(nB3Al zTMvmVQEJi?xsnYML>)pXukyYZP~nxfp+B^us4-}%L%#Z7#=3&%ZXF?yGC8EPPLCrw zp|g%6r5_CQ<%C-#d`DAh-$(M9$wEp$$_R6kpyn>RED~i93a~9X&g5P|D(cAA$S|G^ zXRM82Oxc!FF^qpxG-fTS0RfW{b|W;7$}p zg>}6mVOQ@I@@a0hG)MZRQ?W|T8h5GawJ}4bbRn#q$}!49-2{D^E6XgY7+JhNOnVSo zG1{g0?*>veNNZ3s2^-q#5`0SFI4pWK9n-Ru{2 zR%xZ%gvT}HD3gY;j*y0M>1dyXS3vNZChV2Pg+y>E9SD~TR(j}+kTvKqAeeZ;F$j69 z)%WT`h~eVZg^- zs_UOb*=0N{Mgwt#FEv7#y>&t2W(W_-#oL3Tw4%UNgcvSu8vLYYe45F^P=raNWNEZv zwTysZp>mO*}&dltF57DeWF?!Dy_C9)%F<@J)bF2Zm_nX|6+*1}j>G zR8FEQ)x6E6LKeE-?F#Qfg&5_cOVcA6x zub8S+GP(pI>Yz>eM9l`#1KxwQ!M)9r2B+-=O@WZ0I%44^Et)s%MnFiN+K4=1^Fgny z(bpbh1SUsxR%w-y3Lz_iY)?k@xtIHeJS6pl@oBT@6jV3_rW8?m)jecU!U{*T1^ikQ z*5*gTu7!QbXRzFsl4@5>OHtDvSzU)7_41l`u=pQZK%!=jG#!*)oUO2*ozBa&w*MhP2K zapshIb7hyt61d8Kh;~Dps%@)SF}NpVQlY`)O+`xY<;nfhcFJMY)2Obm4wEfpDdXS! z8~$-pmz!d8PG@zlBFTCa1bmlpOSd2-Y?*C{sLf15G)f%>66iD4ix2k*XetqNo096l zNau<+xz|`Om9|Tz?K8PcWh=?jaW(4rG+KZOFUd{mLcDgf8-%Fh8vzMi)#f9BtiW1q z;39n(d+!3Q=Gxm<*YU^8Vy3UsNNG@yaN4_(++(tQRMujYhyqclVF)KOS1r)K7*0VT z77o&>7RYQmdZS&x_)NmgC-K~w_K~X`fIsNU^|@n{w5Gw?45eF4QaCk;W0G>Jo`uN; z4DnT|MI^7AERJ?L=2xXS;y)mtPP8H96+G1>VZV0_P7u`*j715dx)~oT`nt%RO6-9W zB8lc=)UZKS=h(3pxM1-SXujk?+BEhJ{Ios!a*64i$WtA_Vv)rl&`N1mh#pzXg6GJ_OOH z3*mS}H$$&oTq?TB87i~BhU-$%U4xOuNEYXY=A`FPbHXQX*PC2i*Efh?C!`Aw9Jcs8A^3EPB3?V6MZ zFo3G78R^uQXbKX=Q`!Xz`|#YE{N2OETSr8-fD)|96GD+?j0U5`vr&ST$~_h%fkqJ! zT6rYM+C&}D*7j}~vS=718ztD8B!f{cn>Uc#knPEs*WpM$z~ROqQJBNoD1iya!6-ns zBbIEUFjNaP4UR#af7*YQR+UDuPo^R|~4|P9^ zR~YIJc!Z%?dOb+OW>5mJ=o_OA=>GywQGBTddLF|m2=oLTfkHuo9FMw_`r6~43&}1*|eIQzA z9$-OrMnIN9{f^iO`rxAIrYhFj6A^E~&krx?Me6om> zOA@B!%2Z6=*MzsEctgf|)Vp9~pFyufIVu~cH>ns?o%S)l0miqrbxSYOVI8fZsL{Ah zjZICreT+$^hsK6*FL#v^HdNk=r+w2qY-Dv97wRzi81=qgZT&FKR<9P5m^1;PvkQDp zRd}b&kHCb~1P2yfh*wKjd~Zx~AzodcxVk(?mNAl-u}h^zDg*L*b*Z#nD&9uxQrSwf zbX<)(zG(3Z74jBOLEr2`ymoUNg16cmfp}fi<>G}5I*r<^%Qzq{?XQ~wA@xbk#Ty4A zASXe6Ue1M(MGf)xu@R63P&Zt>>aPHDLklK`+|&@SF60sbSp#(g@d|bake6Dp7L&Js zD~|%|u-P*tUzn@|zmxwuj;AVh1jz-HwTR?Bll2*TmZ~UV~FSJC*n7sNeN;G%J;Wg*-nv-h(T=P24Y_%GswYsWpz|gvs*Rk&r1lK!04flp_z%91v=O&9u)67rb{q0=9 zS9q$I^A})>MQxqaG}v8}v=9M$#I;^mWFlYx(!5rdq+0w;6eceFG*3x zS6Wst7Z>6Ub1tMmT+aBS<`by>T&}(g@v0wD`w@@?zQwpDYZ>)Wd%!b{R~U+ICQL7u z4&&7fO3*L$jnOD-=!lLy=Y5TWkitZRLlHCe(G!i99sqf#5G4HE$l?+{&l!v%?3H*d zTuB$=4Hh)vNiDut<4F`Xkkd>q;wSYA_a3H~HRUNLFYBz+w~@TBv%H-M`4_6vSNnuC zUP&bUUY7iP9d}9G%J+7TF2vhJmf$q>t8GaH#OrVL)+^dYy<7;nr6FGRU5K|Kx{&^G z@s15vp!N;9`Yyz)K10WI&Ba?UH6Q^2id+I9cc4RnF83^mI*L&7VW@vQmc>Yd=JaZT z*Jd_E#D}U=9}(z@rIDaHKeZqtKD9tQwdJM;klbUkd>s+(@fLCmRAf=PJ+JY{neqE2cD^>z@1%mpzTiW1L8 zZA;GjJZ`_mNH8mjfY8e0K}H~I6ez(f+AJEz$VLemk->zP?X1t#Hbn9|Jjn+*TniF~ zIh>6Wm|zl&0%V)AWD_*h8jyK#3*Zs}nYMJ11S(HbCT~1hC zDo0%^-cw*Mm6l7zJBFeDMxzLbS5_M5K#0rjMPY(uRn!bh;NCVP0c0pjBkIpyPUPQ> zfFuL@zA+kx@n{Bty={odaw8U>%?FKxV-Tkx5N+0fkYK#sh;RZvM_}ejZSHR;t8M(T zT+F<56#3|psR#nNGVHG>kg(7rLE z{u{>T>&fZ@j%e`ss;YIB>vPhFpg~%Keu+h&Y4(yMqBiQo^aBom;J-AmF77F$4CNP! zV|iLd%C9M$z(M=S>IJO+3Qy6|`X~@N4Cr&zY8}ew^|e4dV>ktY-mqnba3Y5wLo@;s zxL&{bOu}OGc*?rIt&f_H(u*&MTn1XOkx~P4C7eqDggW#a;vH=@BAAy8)#i&nqS@9K z2d%(if^_1$OAi5-weYQvdIWu*7`@c+?Ir$t)s^e(-Zm^+f5zcL&R$YBnDR9>h+m!Fc%T1&F zCBk~FjxpF*tpqYTiLCUU5vCbHRP8Z2Z;&fU-qcy%+N1Z8n!xK_2y?*J4QsCW-WcXW zyt+(-e?gZyWEmrQ8M{r&ZDvYd7`Dt!Zj8ZE+v%W_k? z5U<@Z0J$En%bEjWlPFc6kcTLt_H$k!`PyV5r60Bt*YJy> zGV4_+hp0YdTAg&)c46f)=V%rdnbAVF`iDfJNX5$Gs+B1EKUlxj!vYySpK6sQF` zr?tGL9zm@yqv#r*BH^My_rT$y=A>%sIsSN6%-o6UAHXxKzJ2&(e=*Znr|T9^<-Fwh z5}IV>CDn0)pRbu&5eyLoZ~Pvxnt!8~gYPn9)~o1mAvlW%_ce2PKv1lWE1#E>@;{p!7gjQ_IIZ0&>lgSIw|(3sy|J z8LPGul?WqjS;!64&P_bkF35hb3$9rp!O@*tfY1+6rekOC-Kd|WmhNb4!G5-qEju}h`nQYoFevBkJlwvsHTU5!d- zywvCgO!*p5L0|1cympIlt_a8=+`;rwf_7I6v>zNrEu5T!Kx~ddIh^Yy>u1)QI*NjDj_}C!9>t3XPON%z= z^8yt z8<9eEfgpt%0SSUgzxYu3XT}x$!8Z!@6dcG&b^ToM8q*72ZC{um`c;U$wLmXpI0b=N zI7p{PKmteX7auDBR-60FJ*!+kDTzyt9A> z=tGETv_ug3Wgyn|ZBuc6bCLqt3*z&VC9z-tZbL*$Qlu*(`mpdd1M<7aRTQQL)!d&( zyn~-qmapNsRF1k-yq7q*R9Y?-?_xLAHyTAiyt2|b4~((>9(Nao3m|_DH3Aa&w#`QX zxfi1kl`r&Te#7b_Z9_z%&U(7s$Ke%khr?I|Rmn=F@oyA8H;n!R`Nm{w_nunI(jt5k#ZvdmmF^MB`@F(}+`jMAi5 z)_btUR-;fCR6MiLXymqU))4!z6`N({ai; ztzE8VTqIA~jJT?o3Zoz1HNA#@Ybd*1Ug!r36fVZ=p?k09JdKxpEX z5K|L$MVs2YF2|xld~A?lX^ix*Ytc&I(d9W98zR}AC;0$py8(%UoXrLaEU*SX0ixY> zL{oi-ul3ggt%IW|q>@t*=$56EB<2zmV7faN8<9eEfgpt%0SSUgzxX_dM$v$0gix346yTZ$WrKj}vD}c+q6}+RbKBIqS-DHe8k%DhZUQ zUDBpz3nOWMHXXI>W0MiA1aTBU2B}1ydM(gs45uIv3kT`c2uKhx`o-r8%)D2J0`IDz z4G~3Wg0AUm74(KtpsU~z#EFG(1Dv)jrq_|DmKUBO`P^jrq5&!2)ex_NBOo_Gom@n9 za?=6{;s9+zKHHL?`wZYhyaph3V|njT_zrX-L}UPh$S(u2j$eYJh!QD~ys2ny=xdYNYe0Z%!kR~^56fj z|B08^0@S|};&odbv=pP$3P5Xk3jCo4MZYC&(7WXC~XZ-b>d{(>fV1R&)kn^mgyVKxs=q4tS%+N+pRq)?e9g&zdgRo z(Joe|5l|Y#QxLWzAcK~?YTM1WpkVWED^ZCs!j^^XLG29TsRmg7Ly~(fkYM9#A0RY@ znw~H@j-S#yE}5Q0o*Gv&Ijyr!FC%$PXL*PEE@5v>J_70#KrqIga3HNIWL?s-dKtS^ zIxZFO!n8|eE6H-&)yR9Wtql_{$W7@&ympIlt_a9g=&**TsNK~9-HhQB1Y&ax(uswG zI5h$iba(yY^B8sWBBYLLfu6^33IaU=haeCO2N|LfkiZ-I#fQqj)^(>;AydPI+3 z1#gDF1O-wObYU#IQ}YoV;DK}Lok6`_K(v67@WQ+ z>a?~vXe36b34o^Y6d9rxs2#&82-J$vi3SMbR10(xVhS2Yzxd2Sq)WPv1fh8zg%`Cx z-Z{)NieA-x1fkgm3B%Xd0=5Q2Y-k&{n0)(t`Pz3l_w-5|s!e zY+1-l)Xr->W&ZriLJ3yH-T*>Ns1-3L_rU+uy|P10@7F###pJNgIz5TxoX+z0CN5#` z!qi?+rvQTK#E=7N9Y9t~%j#w9Qt7x}~jnNg<(EXsAibGwE;$@=*cWhn*qZ@c` zOU|w#`M_j7MDnQ~IG%OKf8NvF*Fl8_l$>U;F|wv;qXdSa0jOdsoUNloU@AwG?MVL3 z{?$j8{jyA(dY0)M`Su_`(2M+lBfKK--%jfjdAgRYHYrpX>IG~*s(tpn&$xuV22}82 zY8E9Ik(FK0-wk=s=hz@YXe49+CQxfbaz3>{f?2~G7@2$o`b0oTeNTu92pZI`bHe93 zEE>ee1_{nBlm3tv%{ykYA(Hn8NuF*ksGNO}h!Byp*&u-h_FH@eq8+dxBGGDr9)M#I zCxT>AaoAEy(mB}}f$dnGlVF#!VR{aEYVvgj$*U&I*JMa}8W5Si}U~0h|rKX?}AtEynM1C2F^?eN#MU+T^>;;qdla|DS0AWK!qEV!U z5Pewq5gcx@Xg$a@w zw;7bcF>OWy$jvB?s6TrLkvlg6lJqEjV{{kBqZtJDwjm?KIkDh25|}k(PsSz z2?iLA2q)k}<)6abg2`PC$m4J>0gy+a9sps{0QGA?o@n*G{YihgyoNwm_Ti}U~0iTpdW%pgow;Q5cy>w*7r0hiYSo+*$X=5{g%Xn0lf_oiAIqQ zh3Lb=;{eI(Z4{+xLN$7)6;I+P!GPYSa@3`A)Yk@GDlM0aHzremqfrFJD=Uq&7*a)T z6edVkMa`fD?rk#?K<1(}qWcgd zL?92}sVtkc%JN13YamEvWWg~Gb=xwBU>%4SGW#Dn-2;mb>J}~d9+?di-fLYGwhJN# zatnm9I1M7?)(}kKnf>E527}WXWua&5qmD%BwFJ~!?bZW7k7ni{cfAV(Bownn4L7SKk;>|C`3JWslS4&7 zEr)omFb}~34A)a_#BTLaun34zU(985Ay=TK@gZ+jx{#JO6%w{XyPoRh;zFi; zT&Tl66cl)}3-Q*A3-PM&LL#`7uGp|uu0ieFa`jz^S1?AH$C`_`Dr-Oj;uyIEKpsGc z09_tAkaCN?7(?OwF^#{JTQd1ZXUz_7%hQ+ftXPL^l@dNm!t+T z`R$I?eW>*Pc$w-KC=L8QZcQyWmx8^GR6Ur70`T* zr;0p`xRhBCjIIOyP*c%y+fXU*523M3B}SGt$iPlaxyD|Ej{sR*DyLm4<JA_W_(8bu->&g+34RCpZr=Wqmkn*7+ba5eGC$%AJgS`C3M)oW= zNTAIDRLvBg0gyu)(qVE^XPsu!5cZmB80gEIiq}kpEQLcxasmKSbD03A-0BOA#4`lESI#?w9rH8hdnA=`UXIr{hwo6zcj(Wwk5~A^3@+y--aAO zLFN8TKGRw4w@B{RcI8|cKS&54CE@3qaK|NF8t=;`K1RYLnsDjZ&!)0ZLnfKz@`k$B zXuy^)&C@C)5n$3W&8^LGd^09BggY+b2$O0jFod_b#M--z#1VSOP#H?{fAm824giz& zJe}@rG%Af|bZZwDq)8Ckq`A(b8))v}A$$WRe$WMt7A87f|lCQ-vTbxqH@)-9biu#To3 zD)S_04DO{uVOO*)%t3}b5McoW@!HLWcwNwi%xj5|u;ZT#VU9-nAzMTjDr=1F)y0K) zb+I8klB?xYeL9{Es#t|6g9PzeLhS|cAwl{jgpXkKE29@3CWCP#Hv=|Tr(89`A4DXn}$Sab}~UCBbS`qj3D3*( zFYl1c`FI^^0wNjFA|P!L(GT154R8?|z~vJmT4|W2nO!bk2+d1z1b*g1yzSYAcq@~V z-`1|_<>ErTanOa(5T!1&f?sZF!Nid38uD{Z9tqnquOUAI5+E447|5Ub1fxK;AYO}+ z%NoR~xHXT?{}@G|YDnn}t_-pxxmzG!QbZ7^Zz5=y9^iOm!K;{B zVwKW%6&r)}h6o6$2WazdAXU43)V~4As@M#_979FskG=S-qGoK!kcJ#(^1jY$KSGlA zSkeEHFsY0IT6IRJ98nJ8PuMm^c|7h+65OVcwp2FO~E%7|m6&N#AKcvh_B z&~AquDy6-e4KdNeAoM3=%HKdLqp(LkyKF@&cXUmk zc5AwHIzfM-Mq7c38*I)n?y&KvhYpxt(27spK=QW9LP|gEhH?_W7%JXY;X){0DVH9y z>as}Kf>9t2^#vi9ZP>oob+|XIGF5%Ld&2TB< zqb}jLOPEbm3mzcx_-09L2**e~1hEX2S-PO9DX&3YDs7jF*Lqu-N;*TaRjQn|z}3ba z`<4gKcnE8c3piDg5L^hEhJaPU1CR+6HINfbGT?7ZrkT8?37=r{uFjff@}bT;fs}sO zjjM%U$TKxR(`2d^xtLtkl>dy$C7tziSESPQL`Dsl*NJ5iq&5{-uaXKGU(>RXE;8IW zNG=BAZAvaAf{VA=Uxvs5g1Hbem#g5mEh$}LrIA@5#=E>+?t^+Q2wfDk+^T#K&c%g9 zaCyg&q5o$rQ+x>OAHcKX$_hgEIgrvVxke$S7Axmc3TZ)osFDn6_4OS!#Hz)!NBDI^ zmue%W9}JDHhT3Z~F?k3@hA1W;jXGmw^# zu?s0}p!BK{&^&@?#fotQkWtO0v=gwoL_mx#-bUrBUpfi31v6Z{kVB407kYWcz?rfV(t~k;#-tL! zcpS2t(bm~@WEqW1PXSW=35UuY2^x*OR3<@X8BakSyO246^~0_m7vgnc7vkkI4gSk` z?nthbAIG5?Yk??|h!YD3i5CT0unZw+41`<)wBqC{EoX}+2>w?<{krCIf=T1Eq>D0U z>`lhaQZbCZk@zY^ss)+SdLdyqmUZNtAXM6lhyLF&6wV*}@t0a)WAeGqn&kn|J^rHu z<%Ext@Jmg&;}S0IZb+C^*i%)wXtNN$aA=GWBWnbe1F)CTm|X^bFpf@*T}bJOj1YFf z5ivXIgbx}Z&k5?1sIHl%6B-rAwY5waSHw}rV}ypS=N*Kmoc3YUu4A}*w~ zw`J|I)=ac$vr*I4E5bXe9D&Bq@Kg{|8PGAOjUV;Hc0N*}->T5yQt=wWrK01Xk;Q8l zQt6>lExTxq3>C3PMi#A+q2kqO0(QTF=eFb*u60Xam0(SCbY`ghIg_T^yi}$k!xb%y zS9}-ZwVMm^x}Xawef5VHaUow{U1*#RRJ;VuDqR6}6F9srhmbWb*a;>L6>pOz z6$5!^jJ<=2YmSj3AYS!cE>qyEAGVLsc+XHm-CVe*^gbL`xeXGuVjJ>x=ko~mqTSTX zVLSwFdh-?v>4$B7cHIV2+UbtH8q;Lb#2)-raeUZ@3~5Md9IzpKHAKHuH>$HrL#j>1 zFfM)3jSw@2RM_Ph#xCW>(L-Tan6r?JxQ|b>rLKu7?_J1uAS`rqP^cat=zSpB7Va|nk>)nM=y8yu=xRh=_&|=Hr ze^su&3-JoJ2I>J069IVwF3<6-I=xK&ZH!>>WJ4NebMmjpGWqEs+)_}tE)SPZfqt_< zfBXAhLogBqS#JT3V`9M+a`c1Yg9d*O$xKtQ*c;f2mapg>XhcRwLbfOW+*`qyEjBxn zzumuuK#ZriAf`I{%dkW(D^3H`Fz>14=CfPfRoOV@3%m+5Wpn!Vm_cx05Op8~#Ye63%LtOjIG zb7{ev`eFA`!zdcyI&_%@&1H7w_i_f;@D#KlQhBuns2qX})F^Fdwn}N9wjvU?F-a%D z{t=MT@G7I*1=R8sxSYgud-9`Iruj*cH1;t41m)E9$Ti)U3qI44T|IZ$N>rv{5IU7= z6SiRl&BUeR4eb$JA|Ojp@3yXYuV4`nde`*!+<{Uryow-0q0>B{dy&p0=v3@;vx|>_ zEW;K7T&@7}M4QpuF*4+1 z^Ljt&tbyLnHq6blQj;7QjY(6mSQ!Di4?lW_r@9}) z=OF!oJcK}xwP4;(={+Q?x&Vtkf^pd*wkJR65tV-6jY>_^3Gha;-dqS9Aq`b0z`n4I zE?60=7FG!JwE_uIka;yQA{jvWy@W67m+%iaVS+7)_ul z?H1eSY&tuVOaH#Np$>rgZf$OFR3&7uhLm2!LlsGVR71R6`U9a3#`fRs5%0e1HDl9s z0t`jgn+q96%}wLEJ&7|^Q*=fk2esajEd3L2EwM0_h>K99GA?&!7M;-6`^hTP^E&U# z1*WeX(sl?<*JXSIGP1j>$;8CatwhDPf}kUbfV5$+OWJNHmXW+`vV7KWhROmM7F@x{ zc+rw|d-9XjD_BsWHPSpOo!eSx?@}{a2SAoUJpjUb39!j!a49qepZYx@YoOBJk%N`{ z*@hK(>(Zv#)kVnYqclJ+idqI1c=`s$ZptkOxxAlht+@>#~AI=SVp~# zg{+&RQ>cy>3^1h);dL-dvlXZeL2P50xTZ%s)JaXv|2=QD41@WIww-rT={+Rt;sPwj z8VPXF{y-*B>j8ohLT?oeP}x2S*`CCO5YnNv%E9+~9sDFzEX;s>V>m+Qb(`?U6H=#& zYI0zYbOrMTQn{fSzdI^aegU#msWGiHkKr?kX=1%Z6zxA z9h=8^kxRuJIBfF^d^G~{1nND3*d0SI-1|d&dYwh*7_mIpb11vTaZsZ8aK5#jptI|7X96`|u4e|C9 z{eiGsU^7uM&2H0zFh?rmALuUmolzOHOuZxdm4B8r4iL?dPSI=)(mY>`Y>E#3B*6Cx znUuR&%hCD=J+$_px@($FfYxNaxsWLs>ZIJZ?;%-R39uNea9JDK+e7vTve-~FX^PGg zf08r z^wuAD_~pL|sA)O@Mknjdg{;F+541OU8_9b}=6wMcd(@COHbrLx^3b(ZfA7EbjD_E5 zPl=h>k;*eo#T$KC^aUX4@-x!|m>;GKmrO6|IpYbp$@|Y7lU=>3=T@R(TR|}Yj)2fF z_I)c4&Vsj>6V%kGt}(AOL_m7@g|GYA4S^Q4VBYgS?;)8{BP_O88`-<+wFgD#HWe}i z>IdM->3d8|SeItQNb`JNL^=g&FM;$;xdK~}N?ptBgZhO~?K5TsWWQ67-|JD2{x{P% zi;kLIJp9m+D9`no!}IG;JDwXiE@+C*NytMt+>!j1f7x~(phayx@2KlNBnt=u7NdjTlpC24jt~W}=r4nM zKtmwpiWba!DGHk#!%*yKxM?~8T9ftWLaxH5!yo4ThoA=ELo!oESS+Ar(a5*7&wD5H z*HE;s&o@QqI^>}Pt0M^hNYBFewcg&PT|%gLommBI=#ggc?Pv%ou#X=8vbF=*6LLpO z>~)m8C`yU9C!h3~?tJ1MtT#<3Kx?wzT*x{M^+4O!>x}OqS#S)n*anRISR2{f)Yd0Lr zG{Cq%w<$V%AP*g0O~ZfB+u^ftOWsQQ1KICb_m6svX#DT;H%%wNP-MNikgJ;bKafcXWI{>YieA%n0t`jgn+utSq1w6z zy;Gz2kZfcbV6g=lH=rsBxgxKZMHH>;^G(rNva}YhV$(!-wcg%{(jUlG2(+RF^EQ6-DbK=cQ469SnA88@M9iq37w^GX}a>%#9LnF|M4 zjIJBtjfC9S_2P|rENWcq`#lEp{;w-GO(#HWvffB^14;AzqKY z)K>^=XL~Zz!tbm(H@Kwd(SAdzlkdm-$sNH+24a4`cY>_-u*}z2%nNYX~X$ z<_$|Lfx9+CC4%uc84}yH)=+-|UJwBxb^5+w+HlWutn>wGJG7^Hh2Aeq+Ff8%bnaX7 zsMz6uC3W2b#dR#CvH@y>u>y-e24s8k<5i|#>%1=)m>$(V-wD^q{#R1Tu3iVam8jTO z5R4)sAZ!n>wfVin)0e2dH*#l)fb{SSUqfTvzty_TE@0e9%Lt4}DtmuR55?XYl>ul% zjnYPB3zO#gEJHd0wHyH%gtUdG>=P^kG8E2*kp0>*yvxG-9LtaPu)P0rvZm=2Y&!uF z=d@PdK{ut@3RDh2>|rgww^H6ivi1~UF;;YdkMsvJW;w4K%m{7_1ZYaTjCa*;97W&a zsZKO*{I=7Q^ITuBVuK^C^m0Ns8vA2HQ*>wsBhR58^7!xf+Uj)b)S0c@R-ttg{)1`vxdwS|$Sa)?woT=~Yro^P&OF!G z&dHXv(n~nqcJA-Ew>q6BZM0Qr-Gs|Ll)FxUAh#h9ok|%jdU&u^Y29&kjBbQmmDXKX z$9p{kjmq@}nstlT_T=Lpf#&1B(+OxiRAF-=j~g;nQ*@qM@~Cx7yMqucWs=HsP!lZM zv*=4e(v5becVR^|JubrZq+TUGVGAfZRYG?47F)Lx7267eYKnj`$WLhVdzbBZqUe4N z@h+Z3KzjIvFG%f%Km}LwLFg_9GCPlzei~C?cT!o>7I}A6hAbnb?ao$7a_EJ00vsa( zLLV~r_bxq;Lcwu7w`k>dotV_X<`6vZlFs<7N+s^o6GdP^S;4zCMTeMAM{sQaS4$aOr^8fE&P&iitK>EyTb`d0R}jU^c>kzGA& zZ6zw#9Gl0~ze~j%IBfF^d^G~X#_gS9qphmSlPmb(V%I zrl)j0o^Va)AES|7J$KkjR9-sO6yxA76>k)<%`a$-5fHl4RbB7i(bE8m?$!{mE)kF( z4(W?%LlEd1o~f^&L`b7)Bwtn~odBCeK=wh(LW}b$7y%h^Z1OL9*yLY$$E{7#IRbem z@f56Iy@zCe5n-_a*P@YIx?a3Tw+OkWA>I{(2*?Delgsub&Viez6JT4i-dqT&(@=uJ z!5nP6sB3W67lH`6q#@qmKX28bIv4gIc;gL4GTO}ApZ!h!sMuBz)PDqo4tM|mXYXxd<65#bu`7x7n%$%B zV$En~IBnU(nbJ&iYj$n;zZoIH*ZSFm>Z&p7^z1xV&Lrp_p7thE1cp+p&Ld;A=1-f!L!cNM5 zA^t^xdX0s;d1!=VpGwiE3%LYGUG@*i8Kk{3WO$52I4w>#6Kj7U<26l_x_Bm_Pllri znGxTb8D&yQab*;$v>|fLG3*ay77E2w_is+v5ZGVuuA3*rQ51c;ka;+2K}OJwlru;> z)n#~Wv8HIOi>C>F7+PVj+b@vi`3 zz+Dpeo9D+bFnVt!%FO9j0dhiIbOI#)uU~USg^q<%?A)no$RTVXq!pzLIC7>pJ8y`+fua z1KFr)1nc6tqa5Y>#W;HPk$Bf!&!x6x7sYv*Ugg=jTC*lkY|ab{`(UgWq&)mZk`OQDf)CF`*74tl#VUZ8KgbE zGCX!rQ#97a^A`GKgcczmBu>mj??WXeJk(}?J(w!Z$Zp15-}(djn2h1SIU%FikD%Ah zli?_eK3&K~jNFKfpcyG=kakAN@YpDv8#e;gqOmTX%g~3R<$45tOo1FbWsx;yb2Uwqx_GWZpA1J4vM9ba zSDuEF;@YD$6IWHc3agtZ!&MZ0x{wt(>b4As`JmGoq@7VRJjNm15ht4&r9Tkbkf9hM z55yKTU^dV-?u4pM#=3a!Kp$EiGK&3UdG`||{_P1D7xtHI>gJ&ljy(!RpDtt*j@m|f zt}p}S4ARah86M*hz7Z#z8Kpmvy_%*;T|7^qPllri*%#lMcWa(1DIufSF9#uiOpE{e zgpBg9&6DD~c`{r@(WeV}oy1f%N7cncYlr2ofI0d419=NaQLzw)e`BmI)ab2bi0*QFM*VRkayh7taLrne>}*25C=}439AmuZfe*iP9g)RVYNoT-R_j z3gnn5ge-^y%mb@gbd3|G+U0ItJakdiXZnPFrv3A%gU&Nl{O#+%msr+mZO8qw|MXYq zwQXly$D9?a+F$cYj90s3Q#a4DOj9#YQS|9TZa|@?C}!r5Ge|r3GCam1ToWgoqfZEv zVlNZ^7Q`OoIyx~Ch1O4}RXVX~!lvJp{y^4KBP(ayJK)MNl8|lji#d<(DveveUXVVC zXFp(87teiVb=b1l58Kd1j4j8Or9Y5|HF@{6cpQ$>qE83114lhZd9E-c_YBfblNla+ zqN33?x1K6cwXbH7<)w_T`Goj0CAey4s*8uJzk*(^mqfAtUfS-hvOXc-LRm-?s{KP{ z6xZ9ASq6zkd%^LIo(d4I0e8gx=9jqMVf2OtV(yH3fG|EBPbe2q=)NdsX2ml|J1bW3 z*s=L)?LX<{49Jig%CMFGaA|7}-^gQ}cUmp+b#h&-Q7>{$OSqczh}kWU*OK;$BTbN{ z_({ig0rJ^cE-8n$mIOI>Rl(4U&u0`@Rh{bMnOFKa0zHM8NpnF-IbZz62_tHM?e(;H99C=5 zrvqu$(o!`h~9L!o1FVL=`P@KNuM89xYTghb>S3{fxo^3L1%81Jfkf-^fTmiy~av;%f&SXMf3&h+#yiyaY zb*`3r-ahfKo9CF-obw;WD$^0vW)N7YLx%eOfgIH|^mXyPhdy*vct44Kvxl9J?GvnJ zg^-J~hM4h0cIKzBcI!#vSkB2ZBZ5C43ymLvF0J3yWqnfG?ya(ZTXg=pw%qgfGm7iY z^g&|LUT}zg9SssabpO0l0 zI?$rlB+@2%ez2N68KYbQ(ootu?%mGkLz;lBpgdp9ZLxk=+U~8g{v2&Vo78pobt1*} z77l~NvJ8hXsKT7kj&V$rl*P;f6{J*v(5&IV+sPN_3Nxc^z#~s2R7_hcKu!oqE2C{f zp%K{9iuJ2VX>?7i&C8SF6N=7&Y(v|Z;>N#vqYQ9-@$ihLGn)ExdXW6WWXQM-`9g=K zBZZJ*6_tK6F&LAN(Q4u7xbO;g_#a zACtCwtE^v>#I=ylFMDfAalPfgL1NKfa4Z59AdHKqxZm92jiT$MKz=@r>Pl>~5@J0p z9PTK1X&QSvI>X^NvTTa_pO0k%Ivkr1mMb|B8IUP8V6ES!(~fifRvmaU!iSm2K(=JN-~xZxJ*|EDLbRia4gqoJd*By@__eWByiv z(5&ZTo|*S;A> zT^j;1ZK(hm2Rj4P5$jX=kgI?&>|4`g0*R5{Y_(argghB;tN`JxqP8IX8|JGUm(UP0Nq%gp*+X$yB*QGbmx1dw)?C!>X0#1-y)O{cmI{y)0@6w=47wP@OXJ8+^o+xaWEs8GkryDJjb$4y zrbVsUtCjIQH$t9_QLX@ath9A3Lc95pXMpUZY~43!{ZQKOt+GBX^U} zxe@YYXj=h7k5gO6{2zwDnJ&MwqdZevX1d1%bpCz=VNIm7MYij%lVKsK-N*V z_Nc6HOWVCw*59KotQgwAp2R|Ny*YT0SZ>21oF>%*FJ&>afOfwlyemLx);k$@Gox*y z>yAK7TPi?K2uLfVJ%K`u;a03)MnCIM~l}yQ#;l>IO z1~;`0A)%FZL%;nrwB1`}eHU#Z za`h;AG8)D8HcW%WqP^gWRW%nK5XQwLale_-7SMG=AZA9Z0J#Bn#)l)LE$2g40b%sD zqVy8H$N}&?rAD3%H&%c!xT$RzU#+ZT$jP!Vw_GqG$!?QN8;;bHxSwB1`} z{hgS(pq=GOEELz9w+4yjAsiBYUS<4K7BdTI_d8;>0)%E2|A5yMW=4AgkGzslF{7{o zYo%v*xNAM}c7^{=gv^0$>mF}{CAn`aL6T(6;8sgmT4`i|U zQY5!3G_%{R>I;PC(?9D_GbqOD?72?cxuUs%>P~Dze<_#~HSulqI9FU}^@TKjL*g4k z{LLb&E3rw0pi(AlO^D}NeJ)KmQ&~4tSvS41ZVB=K%4&4j5@j{Th$Y&y8k;OxchTX# z$l`DbQoDj(A4CXsi9R-2o&xB^5zM?)?e0PeFVZXDr zVxQO?dE5pPa=!SjHc&PYoGhFXbg{!JDdZb1M!Wu{a(%arB{kC+hh{0n)a;eg%#rF} zCy)ipetP#KIy#~?g_zN*A?J&qm2ThZWsPxonMN?oDnUv&T~sWUVnV3Um`uIz(llXu zu^yI-&>`xwl6cOq#9VUvBjqa0o)Pm+#WvCPp&#-F zT|fK)Aa9i|;RImB&S!lC9V$tVmE$NM@*a?@=Q|U>?S$t)>U`Ko>GI4VG7Z715tLod zL%A-n>n9GelA;DV#_BRuq8x{6(+R{(@MNC_v^|o~FsvMA*YKXmWclSpP$lt;FyI!- zq2ecRi!FY7G1So{+y}Y*7IlhgwOM*T1nXmz;aZW^;z9@P7}AUAdPyJ+R>!32x~0nk zx^AF6U;HaGE7gHf;Yw0=C=GUx<-h(f2sj;p;#R@XE#-fQLvOo!IBjPJ23DG$_vF$e!cY^ zA6_4C%w-Bom*#P-W;HMB?o5{e;T-N1*{dH9%aGeNma{$X6SHY@$3@eDe|27)It% zrDkbst9e`|yoGRr&lP5})DV}P!$gjGQc9IF{GuT))e21CD92Q76p$+@eObO2(0CO| zSs>cde~>53!~C9q`- zLL#U1`9JOtZv(Q8GUQup4bl*oY7g?|XoySBW+KN2({W zW3r3_Jt-{LQ{wBZ39)&uLgEP_{wgK@${I(qL?gfULZU_UtWtsS2mz~+c-|tu3QMk` zY~A%_eO}t`&9S~JmM`2&{5QXjrVamCt^7ep#Wj>e#l2_$Ve9A*JFV|gc3LfCR!`)r zhN`B)U1+e0GVD>Wz!y{ElO;fX_R$d(nZ5O#6UAfJkM}x zjL+v9<()q( zN=L_e*(x9pP`ccwK@RubQF1CkT&mqoBz&>JzFe*a^rIljak)GW#UA->nn2fv*c5I% zTKQRn9CL40$*BNw#p+xl$DFP!fZRuUu2{Alpdl{RHuB|Yh)d3$M2%7}3&cGA=#P}Uf2U*Z4oZjlgggMm zm7;3_Ia722#n$~c4Wa9}*yKpj8sx~gmzA6f5LbR0OXQd-dKQpnl#UdwAuiQ!2!j+vr20Aa9($*_s0ZIq#j)g5UvQ#1)VWxhYeG`2Updt;&3I2J({D@E4=F;n#E zN?BLmZRb}G!r2q6JMcp|VA(^J-wy3^=2A|4ox~GDTzZgD&hiym#)YMHz{oO+u7o<& zCuCNnl+Hs+A$x?B-h9=N43ALCwkRf}^CUK*CI!#@D0mEi$q+mRNHp&oR&U@>;j1g7 ztS_Q1EJAls-HuHRD5~5-;;&L@ovA>ixv6QooDR|Ql%>9|kNfHS`gzF!#mi!uXBS9+$T6H+F?Qs_t^`-WdiEs$?SBUEg~%r!n$%!I5! z`WnhEcg*PI6BZ$WrO>uifb4_pgdbNqymJwi+=ggEw2TFN$tFK<~S%NWoZg1JwL=JjdQMxCiZv^-~{RL+vK zX)9+r)1?(s3=S?`)uQu^r87ObiZJTV{4)4{VdO7%R4uyfCpfG(&^1C9&?1G71a{p( z4~LXmAf=l&+LB5s-GTK0$=I|}O2!V1kOy$?Hp(uC;Dl7zfn`8u&Y#kzt(-V#(^k%s zvuPts#->d}m?yhz+6dteEJ8{*Z5ra(J84Laq?}C$S;i2D8G^ZIistoc(?*@CK(st( zqg2jP#eZkIbOMNr3BAkUm`8l&ZQ9OQ;5HOz-VKiEaxy!J@xsVo#29wjPEq}gO&cL( z-|$PR1yZ_cD_5*^)7AqdW79?{8Jo5qAQg6C8IZ9Hr?hD+C(hZlm9yk*+Q^czY10s{ zLR~g(gk)^mG{muY(vWSLt~r|yvWx+pA(;D==#f5c+Nd)Xh?eJU+R9m~`0q@YP5^OR zLGLm+xOC-h+Rj)oEm53#H#nlprfm@8g^|CAG3>Hwqxu<}HbThm*tFFODc!V{ODWy7 z^#IA(v{6dNrmY7^g&kN1q!>D-OsR)4CoBO+^0m3^l8&ZovA>yJZIBZ&QisHXS#F(h}#N!m%+iMD{s?w#)4^y z;>^3j5nVQIgBUN2{6&mmmrWbh&)BpPLUzZdtyW0srmb8`>87m*NXDj(QZhDeJwPh# zz%n2Qr?qJ-C(hZlm9yk*+Q^czY10s{LR~g(gk)^mG{muY(vWRQ3OSn&vWx+pA(;D= z=#f5c+Nd)Xh?eJU+R9m~`0q@YP5^ORLGLm+xOC-h+Rj)oEm53#H#nlprfm@8g^|CA zG3>Hwqxu<}HbThm*tFFODc!V{ODWy7^#IA(v{6dNrmY7^g&kN1bx}%pAmhkXpZSES#)aCozdT5WiGi9mb&XmRNPNs#BqF%uKmnggJx@Zy6 z+P;2 zdMh@`;Gm+%h_V(%R_XMoE1T%LiqiF?Mg+YVIVTxlX{%Y_z zShRLLHB7XcrLC>z zahbq@-;_}bKMQS*Qcs`p4EWKHg~QqnSdY(mambRRhE|@%NR9j@?XqhPYIlgKC`64%K*~ zvo49jk@0&1ZB&tz1)?qe2RSl+Ey_9M+=ZJj{kW54!-#ElQnG|pF*s$`caxn zFUvK{6@gr5m5(!oh-7tIdVR}klvR4rKv@$&UyUr+P>n35_e9EBmQoheZt6laf{`gp z1&gW(h7Y9R5q%enr7tRFkYna~Asn6a#m`DFDF$CNS}_l^yQEbbGl#Aj5QfYPK>wii z3s|k+zDG>mbSK<$7KQso?zEp>k0G*x@Sqs0=tEfJTO$Vq(S1hAN3Oz0q-YbFOc`IQtV_&meDDI4H zX`XhYD1wR}EzK16L7Jz_)~L)kKU{rU`9V9V)t2w)#(iKOpzN|x(a-bfdP2M}3yT@a z?7AutwxA(h9%%9gdbnbX(}N&KAQ3{}blHv4CwHJybYtlqJPnCb8e%yrdY-JKJwi$! ze5I5gAhgBhW_ErA70(rB7D^$d2OhMB><1#{<{_%@V$%rL@A%m2&2(uu19TUJ2SQwB zgP>V16n{ImrL}1{LW~r8@HJBiWXHz$goJ2M>2tocCxtXXB8B!EO+P>nM|2Ys z6*IlYu2D*(kz5Cux-$DP^*D6ZkZ>n{t@MzTZq%UPBRP#f{8B=tRk@5$;meY&j!RSN z>RZktKjZpXSZ=;Sl@Sqk`$q_l4=B4FooQJULR=b^8bZs?6<@P@MOd1sNx>PUS)$;1 z>5EDkgwn!(kk$Ku{Qg+XX`f*+opsD_eP@}(K&{Jwm99{XlqqzLx-O$d3LPm|6No9L z7Kj=3sT4QlK5XieR_QTH`5{2&lA$y`Ht>*)aiJ|eK}xS(7%-_66VkxAaAKV+et{M# z^sHppMf7k$ZlG&~n4@0-LiS}*j5RdG>wS7mL(Ug7r5hw-NV+a!=#f$}EBH% zKujrXfMf)jhMX@ZP5X(7#+aJ1>owWYEU_B*J>RhUH1>Lp>dyI&ZCwt(IXs*2!XC;m zitugvZ+|z;&u`Fvq1Db0?^S1hrb?}^(+3WIq=sz{>UacQ+l}CpLQkTH_{$@dVg08r z6yn$tq%7Z%g%)&q)QBESS-vGp)TQ)6mvWY+l*PsFXs;N3r@hV_W=iQFzR`Mjnd3Q2eJcb0H*%@-7r-!oxUZxcwc5Eqc)5 zc7pio2uCm;K~98}o{loIh7ddvQhESc4rxHH6gnMz;9q2dh7jVr*)kkSo~W&P{?h}5 zin(S9iYlOyC~i*v5!LS!&@uKz7AyGyhXc283OsEoMAcfRO#z z=9ivgsXbN$q}#*PjIBP2(Q$UJFymE2T%q{}!Ez))vp@&4)Q*0St{b>Gb#4JQ%(eIJ z3G_g&p3R9sIsJy17lu@9TWm2QAJzCcwxGjcpFrsf9Sw49NXC?$3J{lSR}wkq#%B(Y z6_j0GZqHPpAuiPx^W|uWOHMP9V@_;N=!{9w1LVFq+MJz~k^y1YXp6Z_Re+E^V|La6 z@hnrPEN0~5ms}p&b@`{LWuzFEgZjPdQH8u$&DrLlDLi`o0Opf7xS4vzO@YI;<#oNoJM*KZZbrlwQ41*A!BE>!loGCI%|B4b{WUdyndvEIVedO<9^L3k?E&8f}Bk@@;C7 zIUuP;%PC8RG5Urqmt~AfA46ksP?t^k-!a29#5Mgj$RX!GRC*w)nVBhtnE5YN%% zZq7x5=zswO?ZOt?*)t5 z7Nu~1TWSk){fy+rB~~}2>6;U-&V>;b?WAd-=Y_@8g@V@vVut7Ef|%KpiYF;f{8+k+drJ`}+Pk03f=z(7x7OAHJ%38fG-3GG5kj3qM)2#JcB z8KnmZ6?2UaHPr7PYkPqD6vTDCB?Q|q14FstL7H(iQH9V%4QBDD zu#KfM%#xuOt9N5Bs`o^iO0RF|0g9!CK^BR(g=J|6)r;cVr4dvw#U^x;f;-PVS-g6n z07ppC2s*BPK0-4#pikFB6RqMPGlkiqZF5W*?V~U|QkJHS9V%r*NdF8L%P&)lN)Nru zMm(gW6&SyYvdea?oTdC35#)jf*eR{c`30rWyhTyW954-W%>uGU)k+s(szylkS?N(H zAvY2Sl&+{XK&Y6@0aPsu#LgQsI%e>tkY52Tg`R;s_{*+HDcvX1YfsUY8MW(WN*Tzp zn*LDbyoCQ;etU+_1UdXh$QwW%ncz9PMu@r6zfK_Lq)s6XkVv7!^9BBLfYM=p50GfS znK~#X1H$7(+Tt32@*j!=8bjD34a-)^bmKdqBcybe-~aKK=-eqrqTo;3!v_wQhFlWJ zbylxPQ%0>uvumGwKOdqqWV5I zp(X`~ToX?TFU_g+{^7n^dHDtlO930^p8IW&ST|iUojhL+8 zkZubbs6L2Is7axPG43KuX$Ix!rx3Q3N=bD!rKAwHluDru>*&$t%AK~P5Ht8wh-rQb zsUW5Fikh}8!|Ypr^HYea7-MWlq?kk510*AoDJ27P2R3BbavzXaD7zjgaAZCwD7^Fl zs!E}AK&swpfi{)*jBl>de<|!YW8v3B#2{3(T^!b3{JqPSH6^iY9NwRtGv#QIL(aZ( zLmNpWB<=gTf#cz(1Ts%RDc|fe0uRY1Zg4hvN|eFn&57rrVpR=q}9@qCwL*0wiT=rYue67&*0}E`0Q(H_xOjH&b28_X64xF2jODwr=vfeGxI3F$4C`_)CRg?mE~0i^3kwt3$uY# z@$&&4%YAK1I%LriO$3`WR%X$iuyA=}?+Q{-mml5be5(Yyq0|femf@eSmv4h9jOMHY z??~=^4MBvMt4=Ktb3LF!Phg904^|De2^o2^9s>0gWeB1!7i-u{>?%3o%3dT zdkG--FOIP#1q>7&p=vW$SQ_>-ej$k-DV`W8!m}?nML5^j( z5@= z0^}0dqxntC{0b1-FeA1!SZ#d4rSqFrREPdRnk-!wKzLh-m*>C|iI*RsX;Wk^Tf`)M z1mdtxjc-xG4e+!Z@8Sc6v>UzjN7d+Q$o6qXyfQbVue=a?A-owz`ye!F4|I8d3^(j_ zFYR{|Ys($7HefI9b`20gw7hkUs7-IRY1=)=jhegW*dqNy8RrJ8v?lx{7mc|kbHd#2 zofJ4?S_-jkO$54xc9NUr#5VF6>aspA$ z#oMJ%s&eYHYn~vD>hh9W3Zj5lqMPYz4e9o?9TY?QcOu4|NUzbgj(FEx4#&KK_zaET zDveudPR~zI>LX8vXgX=-N1cfhvgPm=S74^!cB3_sG*ehRG>>CBAptnZ;M48bc@U&khE{UP%sftbFk0J#fxN^!aOz5+Rxb3z`9 zHKjiZ$H~mDRISSo?-4@J_XIKBO!hdw=GDax%qGO;W`ZcM4Pqo6fYHT728wqig~v)` z#|B->XV~%Ivp))}a&(;Dl50O(TCgdpJ7Mjfk$`!)3fIOF}eG^n*eWn{6`9ecno*Pnf zTsx1RK$jpfOHvkyKI=coaROJ1at=8({))KUv1{uIG*(4Y7Koj*Y^nw1aCpDu(D*61 z+jl748)~wWtUMHZ=h;;c$}zls6GZ!YyE5d-ar3gSC(w*c+zd%splL|R0AWc*V4e@nQ(tyg8Ko(e?k*3e@3hES2LRftg)k|GbdN>78aS0W&oiEl3 z*6HN)#cv8t-Reg-^Lw$ae)^vt(@`bwm?1OxQxaq6v7sWP19PczL~>Ph-u3W$UkNaGkKeXz%zWDa`|kc{a@DH)K> zd|S2?2&V-8kj_v-_R%A}#_SN)_pu2zDRjJU<1djV=bdDvrE@Yyj}QuO-9OU$ce|&g zMUy9_LrvqzkksZWXhV>*8i~Im@w?cIYOvJ)JvHJFkjVF>I*hCUA$xqKs+mVKATwiM z(r@i@0-u8SS*5sO-U0r~QRrf^CLR~!>#UB-t0bEIF@lBIg#J=+SV?>Zf1#QVUD$P6 zbXj7RMz-EhcYr@t+sqWH|_)T0A-h5 z9sN9yt_<>H@xCl9W+b!gszBI+hPczAV4A#v9C$cn=q?DOtSTD>&2pjm+p#UJO}i1|q|k$}nL;3I9!G3zmLHxz`|zN{8GGnT zh-(}OdL?qW$0;4UC-_T*ls;(7NPh;%bClsRPt>H)0rCugIY8;MrV{8SBt&~k-%d$; zQb+?NQfPZ<`T=@429%JfnCUfkjZzv7&P@2qd*pOvfAlF%aBTY?-O;i}7T9+w-e8p;HDP7ex%cQV;&FWie zTK4KPA&_}i*QM!Oi)98~XHkaNW`v27Mm<5^anzPrlMjSs6L2ImaY@%dQBi^ zI1@r?;TVDf_ae&+RA0s>OP5J>&Cn%wB&%&d0Mf+)Y9Zc;;?P%9?@jncDM&}@yoX!d}U8IoG{WLRo6JZhOo+%}T zn2CVw48CyG$I#o6N&necnyD`4c12tC$#kMkt}v>PX-!S>E)PU-_}3N0r7=g5ZtHSV zPdRrXCqm4~tOa5Q^L?dQxBFu>Mq?cIYe=8ORM5-;Nf&3+&9y+xkV&POkjEJRJ(Ldf zU!v&PE+v-_R3LnEXRNa?`ehbynx3$xMb6xFC?m zYgFIFCd*<9oEL~0R)p+F2nD~5OikN3Awur6~@(ru& z_*3hS2kUo*dEp7F^hTG{d&VGz9rLB-{uE-4dkS%TAu2W?Qc}O0ilq=U&uw5RF-9pFkf&hJu;mDl zp+D**mM*thIWB}00=drWs5F`LfdVfH#9Us7(KQ1y3COHp3L!IqoG7l)~y0Y5La7a$g|VS>2Q-a}Ga3R|@v*)QOq;I~^Uv ztprxDp{Yf~`af*6(mYuJm;X5(P4BZrBhVI*ZDTGW%`z%{hh-u4VqS#G(q7X0M z8)f~XD6_!oh&0{2g6d3cvQ(!03@cNJ+sYq;l#duO`rmPll|sybO$Xd`atblmxM2j! zm_J|$VXSqz(Z~ghkjo;)G@p>ul|uFymZp;l$(UkPdiA;76AQ!mgA7a+T{KJZ z&Dcp^?()0Bc-ini^mrlqe3Sad+!_)ct;&Y9O|Zt`B77fXv^k5WYcecmuF@>69Vi(i zjcEZPS0VWii$5P}J-hMaKQ%LlhC1#?j6({goiF~}6r(YYD4$Sb97}QvF5xT7WX8%9jM!_GuHVBVh_YPstrF;^ngQP5!y5hL&Z2Z1rAxy~pm9jJiqbu~ zCzXoM$xT>gd6j`PRV~a0QpL{)bWFI~lyt~iRk7lo2J65*LK#G{`cj&19-#UzHZA^1 zXa3wm>DcOQ0{vK6%%z^X>;ZD2n6&r48st!oD(#DE4ch!RHqqv$*lZqBJO%o>u$X(5 z6Cf0v;cT+djJD@AkIS88Iu;L_$KheJL`Qs;vXnk>&r5T%(5mpwh6*f1FUUA9(X;EZ z$+~DE%dtt}g&avVn1@LWzn&mwm>xo*3|rVWI^hj_A{>Ijmv$WR6fxurBATjPw3Uq6@MDs3#ED23LGjQWl7N)hrM@XE~xL&@v{v zBOXp$&e%UK+ZtWx)`&ZqE-yGJXORsS-&YdmbrY{Hd4#gdRM*54;X>F9excQz<5dvyl_4 z%kLUf3cD_1NF9(H=o%sB=vRP{eOVM^4Grm9q#@^vnbIo@+E3Crmh?!e7;c>+r1Xht zN?8S2gqTv+5{T(#4e55!NX;~+%PlEF)|F-#ivN4n^m8qsbHy(qTM8a*lqu(cY*evF zgFL<_W=^((OWYl9#wIZh6>Z@|v>&1TqWJcA!{7XFn4ii1qoUnx(QTu{W0Ya<@)}h# zIkqz?%eQ2qUR|E2<=~|(-;gEhQu@4XIm=SYV&+o%gU~M5+Z0U53vs1eN`#oRJe6{q zkf*Sv>#HlZ11f=@RFRYgV&^RNY5{e*_NDLoC5OgmL|hM$eVGbokWxwpgk7U84ak#1 zXU_@{vcDEv%xPT%q}%a2W2R4HX!u)kKvVpSigq)*j?22{hI{~JcqDpkiywxC$BZK_ z`a+JeMH#~A%4hkBzdB?=2=(|5Gv-HC6to|q8$WD`OyN~mKuN%m>K zlx1|ih0?X_=?Sz}MN%cu9dU!1LTORIA?CVD#U6+)CWJ$o<+EBqj!j>`CXWgbvS&nE4G_TOEV>IqQ4ZHnCeXkap@ePk%Z9w1340tu!l;vcR%6UwNKO$t3_83GYfdL&O>Q%LFSL&_m$VxU6X zP(94N_o$A^vSa4jl%<)n&>+yK(KgsD-=-Fs1Cm;_oU&9Hqi@I(e;KUwe4oKVT{hu= z#|+aD*YwvQhn)LR>4B(bW~LNk=D$=ix6ihrSla>gJ?BT3R|biR?xs%R%Igy5{HV-* zb0mm<1Rpup?#Jj#PdY;6b3x41N5!7OrmiPKoQnj}0Rslwg)OwnF+PO60JO`IB%QE_ zt`SmtBuU7A0x@TO3Na&^w^Uw=E#}fy0rDK|l;Vm3%85QJJ>{g&DnQ6i)k0!;2W=U# zT~28z_!S_8cDWTy2-#!$F_+jBVy>q=YmZX6zlFx>)`Yo!M)Kkkt2`wMd&v{7&V>;b zy)m2y;k*!=x=`?%K+N#`To5yRQn3ZGWx0uJG|wDRvdjVMno0yw&VYgVEOZPEGu5RK zGu6$)W6}R+EcF11wwPIqQZgXdlr63SC4Y24<5m)YrWCksS72nyS)gJe3H zj@$=?&@MS;$DmV}YY4JX@HALjw{@2DA86*v3*BX35Zt)w{75)q5gMrPnvq zh+=7BkVWEcVOiQi^`f|TX#~|vu?d}|;LbBo7Ox&Cz!6e3f{tsSkI;+_=+pJkM5{Q+ zOks9t+Z+={`zXwgl%*+Shf3KH(m#X6^2^ks(nIgE5fABT1;($U>~iH<&Qkik10fBt zQ(Bkv3qok#q9|q#n1;A!0a>GJrHe3CBP9B)^r(}N8;Ju-SJWCHRLtc7s+I*}=M5Ph zGx$=-uK<=p&%ho0Wmlw>?i1;?r|8Oz+VwJ}4CGi%f2eX^!hbHmJws=L9DXC@4WN!p z@Elzu#9ZlLClGT|r;r9nq|o8{0)II`=`g=bVfrF(XBLXQ62@RR`$Num8(0Wt$JN(sxRVdrAWgSOLw@LH8pT*E#AYo^6Ojw+my&UAK- zavZ+ZAjcRspc3U&fVhVJCFHyn7c^MqX{2MoG)wD;6iM?A%%P1J-=*F?Lf;XczIl_@r1`e_fk3B;f zoXqOjg-#TP{5X#4t=MEmD2bm6@pV=sag)S%gxC!I*C4zskR?l(9w2W;eRJuglnls$ zvcI-RFdX4Iv z*kpxQN_?Hfd&2VdQ&gYDCX09{fqa*$_g#Nkj#-o|_(FJx{+2eN-DokL;LgE-&>I}o z>L%95L|u*rwdJe|kbT7FD+y;a5Gz0qzB_)+HbIWLz z*GW7pEMH$kwGo>v;;97kU816)T@C%DrR-X93P!9lHVVtq{1 z2_ z!)gu)AqRkZH#QpQxYnou*~vHP4APFUj1Z{cv6soXnE9gz2xBvRCB#a?lrnG-D)a%K z3-g85%U^V?YTd3zbs{!d7N^A5NjxMhUtdIZBsN*Z@1bdge3z6k&Wt!r2VO3Xn;#&xn);tB2BLuCOV~ zb+XI}i(H%|5VuxFS)u#nVa=KY!bFrUzK#SP2JxAQ&LUkFFv^?Vgo>p#fxxRh3IU?3I3hL9bZ z&Sr2v$`8(`fW)L>N@2>18NgiAdVny_9I1(2-;2i@*4!LeNbv_9)rU|z%pX|D2yD3I zw`E`(tr)~ep?0>vIrZRep?7x6^QvAOhPJ1 zIb8^CxFxojOA;aL0x``eq=J;wg)IJ2XBAsT8CEe?ccf`)7uDyn$y&Ebye1ISNw?6o zCx|(EWWOVdHSVJNFgDTRz1U<~T>PC*k1>?Nl~+)micNEdEHEc3!*dY9^5 z1|&R9Wq((LooPt;c>qh>ZSe1jY7JK3OH*^`VuxoKrQ?QpN_?HfPledr=o0c)Am+h9 ze;_ZQP*lvcr9Y5EC>BT0RBQ~RIwhmqVD+{%HSeIh8Jn!&N{O$N_^Pm&>JhRc5Hkk) z1Gxr;qGF~k{edhdikTkk4}_kIVP$&k8EknYqu*e4^N%|L=*UK7IT98#GZOMqAf;~r z;X^=|q0qQrF?O96i0P5f195%Ba1vI~nxW#i&kFM;6a7R{vpMm%IW3nf-jrHf^g@t#h zMk^Pzl`W)Kfk;!uSu|r1Shkg8!tKYEE$y0iqve}HW@41|*^o34%}bROV$Qv17{VCt z6(D9dBKy8fDpLv}hXOIpuLWYJNiD?{7L`CRVfq`t3tlUTOSv?^nWIw+#0;BMiU~P_ z1CFIfEBAa*kn_c?xnW2#lYPNBR?|9E%Mf!bF8!9H3v`WR^YvgrMxodw%J3D1@|TQr zt4+`iae$ei2%*nhaxPauAY0NFK5js`g%Hzfa@ zsAeu88shl^CFwJQ?HV-73O0h4#T?Vq4Rp;=Z9%E#`C=Y18DeNemIrzQt-&zY#HOSy z5N+u{$dM0fQO+TU#@~@BH8(6hKsNHFWI)(8!v?K-wl)+CEbzIu_=)fP6q1zCoHg+&nbWENyKykIMuNa(tszLtJvk)x>d( z;w&Hyl#bnh50Hg?DH#yj&>zUW*kY#B9u&)vvIvFVqx7atjq@eQYN#f3dne8_x6G^P z`T(VCCTNgjCfreSDnMMS-A&|}+w5IHUZL#rlQFzP)ex6z`}uM-#3koNBF8-2DMmW$ z#5l^ZQ)G2hnwl?AeHWXCf6@WI`n#PnTn!KXy-xMXC24w%>iFN6ra4p}#HKw|kN$!5 z8v2Kw>WzOaO|xU2>d+NwdW!1wKa-{%R3FEt(SP3g>t&Qd)d^H5W7Bg~-^8Z1KkEQr zq71+rO=c#|XeJ~nX#Z^#JVNLdvwLhofp#_xTiqbw| zBt z%Fwic>h0LHfhsd|=(RG|0dArUO*^QLN|OE+t5>9{!BoB{O}}FGl{7WpqWa*UcEkjF zR=1_8G4#{UUuRH;UN5jocq#jaUmc=4B%6d^T|{*xHcg^B6`NjTbMQcR1i$LYi~sA1 zdJTig!5u2@ZU5Swb%T#uhF#obcn+LXjQ!TPIxs$;Ye{FQR#bC*9Y<;Gx`)ufw|DuG zdrY*Ti|zu?aJX>8)P&4g^0f5AQPzU+B_!9DM|T*&+)CWcN; zrw58Z;W}zkWHl-4gexR&s>21vE9|SeLWCyf=Uv%3H+j*tFZr;^JUA?wt~rh>lVIR_ zh@|&Il3&wn-3vI`v8>Y}8IX5i{~%JnwiMHlaD8p3q7y)WX=d_^2%^ggn!X{K+BQ+-SZk!b}ETSMtcR}~=XP?%SH z8sdujby)GqSXl$CL5>USjYLj}K}(JXIacZlko!tChcz`oT%)7qxIoWg&r6gJuf0N7 z?qEFo^b}(+j&)!hd(1b=9PegQ;~bvr59F;f$e|dAGHyn{<_0ltM$IkI9JZGYl%Bvy zF?L||g5iO5dveTM`HMjDCR9VZw@nxaQVvfH+3gHU42UttWnR{K^eMn=**z z{p^h@a!v&4N#Od~kCZ7~Wu;7xn{JvZ?87yWV{87yW4Vt3=EQc*(n=so*pcWn-+0A9 zjSw?nx2ptfB@mT*F7`BdaJDLUqs_~(*FYbkbosx3pf^fA$MY;hxUX~(rDqeEV(d*| zFBsnYYI~bEi+JDPH3XD?#?*ZiczS*cJ3c*fj!ht=lH-Qmo@PSxr?#cP0i)T%wn#HM zc1owiQa!fEFmq?+4sjK$rh%rXtLyW_X1ZFNpS~YV;kTsq9C5t>HMMT=n8FrP+veC+ zYRkU=EHf&m!?q#y%QsebCCd%TL%&E_%-f;NV#io4!Gth%Id(mZsl}F*H9#JtJYP(i zXWVsQT>Bd>==4DA$_*|_J%R2(Vn{oeOpmiON6Dq0203oKJy34&M1#h-bfY1!AuxQ2 z;Go#zQ_&CqaVKm$tyT!1CRg}U#6jyjW?D10Te|JRKH3>JhnmW03jNdM3e)eXH7&JfY`1i~qU;QFP*XXk<)mV1&p`4#g0o!HQZt1) zsCgXIvH^W=p=@PuesAQ_KkN9!lhIF$r#(NkLas@pH5vq_1?BDPI@Qm#2;E$p3wCDM zR5wI3g^Z(z+mVEt%CS|$So2i3>kc&H-RSTH?fqYGy}=B>Jl2_7omMOLoF>;7Exkfo z)S9u~((S&oGvq)`> z@9MNpAi46P(oX9h9_f36(kJ(2C2cjzak0qnw9zeLX0kej=X}GjsgJOJQJ(!>c#As= zbV3*d?SU53iZ&|HZx8>z$vs3w(a-G{z3D)1H|kMrH|j8Uy(jMXO(ti~z&ago^$6M(H<-h^kFG~3J&zWo82izJdNB9RuRdrw zjvf9BE%SQfeiyx-Y*!rpw>vTcb%4l((ZzNG3X{wLOATmwD zVYJTi1(sSM=B8ImaYg-AWlbfJW6L{}$O$oMO-T)M=#K4Q^TSg# zhB1EzBWY}CI>FTKUt2*-6;8>M-*5U&`1_c1R<=$Evz4tAe7|Bw@ehNZ5gTUKXE!;W zDCRn(A+7}R1cAW`SqbFG+~j{2vw@u)31ZZSb%-(hRNmrX`sK7(Zl=1JCofu;cBp9{ zSNzq-w6Ai5W3_*&ATEvdJ%CGs3P0%Djp6h6I&5}cYf*f+#bw*S(7gP=L{M-rYGlFdv z8WG|OHi8z!9P_+yPRVh^%{2vasir~ai+{bP--gv{vryPEX&s5 zmR>C*PwyJNhDOzy8fvIL_YpM45mC1x=7A{e_@XjF`v7IgiH>o|S+Am;2AwOuwIchD zlH;(a0)#H!$#FG755?7HUSZcPIU3~1;N*WSs+o?~5KjgteMYeDLZhr;Bj|;gV|scI zT{BdBs#Nn#Yhp6Q(1yO%9T|#=oCdw!kR{wRT_1!xNdDt zG{ofy4e~icqxz-YnVh21s9q@kX4t%Fn^uAPqwwn=;VS@E*lCzc7N_`I$aGm%3&?3z z6N*tm$IZ@VK<g(}4`{FRQL z@Vg~(mUL=*t~^!2+@A8}xq>KkWr8!UGN|ljEre>NE}Avc&fUI#>MCGII<{ML7KnW_d%%5lB4GVFPBAuiPx^W|uWOHMP9V_v;) z0CE|>-slUSdQjor8r!XRZdg9Qt8{c+2|WPhDN2|72-*b55vjXMP6dcdwY@}+8Qcee z49QP)n!&9hF4aEd%h3>*oR5hdGq`yQH3Jufy~UgvZIwXNkdP&bo%y?}F7%}Oko zTho5YIpJqxPxyJ(clc$(Bl(3w^Dtx|w(|E5+l#!WZZ~Rj*LEPK50{21eP~SSL!*`R zNPj4y>(~)$kmIc2CHSKphjOnKD6E^rf5e|!SNyCG$#)bMCQzM^P1gClhU7Q|Nk}q?929?NS#xw@6(txGogmK(nEm&XY5x3Id&7|ABH@a9D>GW z7Mf1b5Z7h8202bDG^C;&bE`7~(=Yp7pdl{RnDAnz3gMit2#(}lKhv=!Y%NC=o&lMJ zXM4ANS~0Z_I(VAUk;uj#RGcDGplV%EE_R+REzW>vNJ}cs*k$<_x4|mZRc6@WJ(*@xfYb~zT z&GIDWk*2yQ2a#z54%SDR<*?3yJswx8$nma9MjWR z&^1G~38k9n>tn=Zh@lZ#9_R^l4TiavU`omY(U$&$9QmLY*G{kjtZV~)Zjyc0O0C^~?nLj9}AuiR(|48JR_YF0~C1)G_QI6??=YYHs)l3&? zh)Xr{ABr5)1sdX#a{&G*$8^EaSZAwu8KvWECmP~XZ5I63M2@MNhIm#~(yu^_D`hv( zdBLySJi10Xj^B@8Rv^dgife(G#|N}xQylOs{+RRLKPlS(!ZROlQN8?6rRfm2gLxY4 zcrxTMWIRFX*(IbH`yJH1U`AnSJ9>tG+A((&r7NT;{fw#OJpQjATs}QNg~_Ey&N1H@ zl^i$xjp9~3dF#}=!D9-$e{GxNf+EDDi)+lCOPF2|nvB6Q4vi~+)*?DlMwQjEP(ssrPDYFSGkVCB0G|KYr00Wd=k&(ape}xGl zO#O4yS}`8MmB+lC3vqdm{IBBBJ-~6-wj6tzqxl|aW@%p})q`>bx)$Vse5hnm0hiGa zo`*zJ%;c6e)OBEdW7L01x8Xyde#6S+j)yV&0~v#2(rVlu?gh%68E1X_n-u8B=aSs>cde~=>|)S{e24vpvT z$G80ShPsQP&6AafV(&b=dPCiZT@JVRP0(ZL^fG5U5yWHG_8gqSJ)bqXKN?o{ecTx4 zmo{Cqb+?L68ss>$d8Xuqm78vOi$ApvQCNS6wy;fZC|g65w$yX{LIqCAkKb?leYpFW zb5^!a2(p!vf^5ayQ~ogM8LwepeRh-6d1785Yltg793n6{A1i?z*Sh3Cf;^WTf*7?S z*E43X`EQD!7R$|47jqA-b!ms1=4m%t7Yg+;eNef$-Ij$^Ak zN{+*x3J|(@C&$$UJrq})hbiouB}aoC$5!NjEUKAHu7-Gytw^5{Y`f4XE7%BnA?BE# z-b2?6)t)NVJjYhVWQd^=Ssv&K^ah5xb^w%=1)?qe2RZUVEy_9M(D--aZpUqgoOV-YhkfD4CrR3?>gCNJ+O>?N*=|D!{ ztSH6w^XGwFD1I|+ZsbQ3YnoQnTn1zkW&1l(SMi~7yfK$4T;XUQ$3;&K5ZBkbW|WDJ zeNhvTHI(5uP&ZKBj7^rCG)r4s&EqmbgB-ufsv#~pcM>DbF9GfX@)V^nvDAZdJdV0o zNj;4kBtfrW(E&==#cNL>KE0VGDGNkf`UiRo?>V*)Jt>zV=RH*7JFR>(Y4A~(aIiR@ zbHF&@pwTKeT?J?dWq7yweb2kiH7*3kefvlBs-b3-j^~P|wai@uWEG`rrO_bAexa%4 zRDiftTTbMdrwDfe;mA7HXAN;GhH8vi4`p ztG-_y(Kz3hts3gB($O(1-T`t6X1T_fpd)}CAwCR#%BcWxsdh1uW6p|cKyILPoGodH zOSMM691U^FnNQ@HSLoY-JVxo7uswnHsz}NL(U$&!c43p_g0Uy%GUPmgO8Y2%*=O)k zuVBxO@lG~&{yMpaxo%@s0=-rWI#Tf)KnmF8n(P|n$gA&_oC*+^Y9A6gW-7i6(`QgR zQn7}(RGZ3|qaiLi(}^526)ys^g3^_W2OP8pTkeWYj>kf7qw}3Ape#ubAYtxbbdrfL zNp1pl6)49HC*%>J84yaz)2#;?YO?yp4T&i6Je})_lamg7; z}3_L>YGVtZq(pVlLeC+e7tvY_cMgEFXl}e9C~3 zU4i`KDXNjhd`DEuvXHWvfta$Gf~n(2QGa0-{<>J0o1l;?`ST1<%l$_fs;h?Z3gF|tsn*7Jv~Q@``Y&$d{n2U`7fM0=iH9QiLh zc3nd0c%##0be%^TF2#nop21<9P3=a@Wn`MFohhUvt&t-`jX{qqqEGmt7=D;RWB3)K zHP-2Zu;6NOt!|e6lt-HCo*YD`t8myS)>$qgh#q!qW!RN+9EUg>;)>Q;WshUiTm$4n z;rOwlRF3%#xC)SMIN%w|w%49u;y*>{a^>kUg;}mOa!mXkSoByd8~NE5KhWIPjJ|^< zVpEoi1uf1q@hOkg)jc_gOtk7EoYc0C@xeUliW4%uk#Px2O)X3zC^U~FPM$-L7bwpc zUv9B}C~f!FSRaaEqNRDlgyMR40e^gc!)BjW>z2n*PZ0y7&EdQ3Cnd>C;uf`%){CbKxYUZhK`p+S5rz4knMaa z5%P_difO|YNNFW5)+a>r!ZlPI$GWk;7Q5w23)fPb*>QQLb*{!T4z;6|zo13yVv!lj zL{ACCj0JX`5r{cT)96ZPoh!bgjvK=AmF4}E<$B6;J)fnKvX~nU8XqmH05NstfG&%Z zOjoB6Q_4KpqZBg+77~c57$J*di+MK5u2C^lN(wQhG@;NfQOq=-kf_*AqSyT_L=)<` zC|F5!HD`DVG0j_pl-pv<0;|zH^Bx*!_NK6yg72VfgqQNzRB}J!pMx@*XT;9!vqa!yZk+P z)^O?2ZoG{T_m4MPc4_)^#dn%KG->M4^x23Hln>jFL~sl)itRu7_0}jpOdM~t^w#uY zpf!1D($tRCoMTS53+VHp&H_nvkrSXGrJA_|MBG~j^~p|-42B7gIp+9yF6qDIipZ;6J$u@kXIQ#bOHH)jSS|*8u4r3$S}mnb>XG0I~weI?52HJE%s7 zmrt7#mbSK<$7O;Bb(=O2t|2Ztj}jvp7x+Vw{NTrOf)v4I@ z4AuSEBtlS;xcjrt6s4>}WL;-9%4$;9v=BE_Sxv7j8WYY`@*!Vakhh8V%#HEDLJkvK z8t*VrA7#MGCk@8<61rX!i0P3O@}1@P6ml9;#$dyY-98@-FF#~b6c6%Z9@jgHXwT_ z&lSt5!?|-8Z|S+BS=!oa9+wFk6!a0PsA%CD;*wKf4-@B#xgq1WhkG7ZKx>fWxS;~% zDy*Su-L|n9_!&T&C|zFDAV=&kC^;1%F4b-%a?FGNbwGAdIx>rfxK!KBm!lyrIS&&# zW=y{TYjvdVi1Ga{- zyXzlAqL&99a-sNJdmna)Adc3UH{{*{G6DyJ$4rP5fHY7# z9;wt2muj>5ax}yxXD*RrCdB)IJQ5c)SY7^eCd6j(-*&3YD8tQBV5eoREdwm6-J(>M8G=WN zdZ!6_FRpIHap~0b=uokNgA5}yOncOs1_71-k#~qnSgBGG@%%lxOk;9{b0d zPK&4GKy8`Nt%I!7F2=1F`>uh5G2r-RsQy5jQ0z9!@VcQz^P4~f(KFp{edAn4LtJvW zHO*2^gBVnw3PG3Z}lpc93?);HztLc_b@k=6wkI!TT9;r6iC>a_C4%3Yi+`Vyd)5bV(Op-FQ)tR?ZQPgK`& zr8n1m=uMPE(7uBB>?Z0x&|w!(yPL9wHLv)n<~w2e&a#kQIiwB?HN|R&q`sGy#cOlCnVb zS^q(feRVC$IpomzX}H^$u?8PC4}0PgF>mGj6!LX0#FHDem?{{@Ql!QB23Dg^Nx5Z= z&N@ohBqwMOAV+j-h)d2&73DO@a|x*AIPAHV521_i1L|@CL3aRhT+Oj-mK+Uo$RYox zsAlfXHNIVt|f-`w`dD{t|3@EjMA|UBlBxvG4H@sfIJ5~rMQM;Ux6IML7z~LVvbYH$k+Y z4?MV@qZn||3gRcrrfq=svVyNS)Zt!IOrK{ zaoIHXe}4Ktx-pz9he2X>U7Bv*L3KAap(X`y#%khGfm~;GO`4h{-i%Gch)Nmpm_S71 zS!pVLa)s($LRYe!FV+gyso(kHHw6`><*hdTPiu&m`4{Wx7+$5IX}Y{!ff`N%9gQkI zjHngztz}-SmLPIy zSxO%+p%YS;IxK39n0Ab36jN<_v1!3SBplFNy+E4Qz^7772vgmTU$F`hvOf|j4a=4c z$bnithHNQE3c@VXWmixRxn5>V8Kmp`%F01q-kPdG<4~#Vt5yjbMdt|W@{%)x*g1Nx zG^1$9T^XOI<+)T!X~wBRN>7Tp&5s_-wxwH+E4SaRS+w8Oj7G$SW=csRrj$j*N0d?u zx&MECx`iB;AZwHbnTCuAq;y7W2&HtLXP*y5i@GKps>if>`k;$&^d)h4>Fo_FmqJQ! z1D8X%U`s%7uUrP{Hs8uHU0#}74(W$6UB0hfu2|_4KD%nZO~_a_Sf#tW+!4|&%=hPt z>#TAk5O&7mAJY_f}~p>Q%dnClD{@8~VdxVRoPsT0iy< ze@MXz%t0b%7Cl;+Yp8D=YrBv7+hc90N};)D@RzKp=^uzD$F=e%E#86VUB2N&2a+X1 zN>^M$7Qw!X@_g~nq4?1Bggjuc?M}2iV@=R88wR-JB4XX7uB}c zKHc*Ui8T$>q>wmMkg*71wK&&l>mqp9X89n*%{Z9w)=h8KiCL-kc`LQM+orfvL% zENyL{p^-c;6EvvH3(IMOhPdQBSIRj?@f{!^P`c(~Eud}}W0)mJRg}}90g&_T-)Aq6 zFBN1It_bJCY2NjhlDk>V1MuUnL0QNcO{BfSK#(JOU{TS~Y^JA^WcA!?aDmo>+b<3#D zIGJ*E20j(VQuA4p&vnfwK$i4)o;t}nDyKG#RnDlKdLU`}YF)Oe4&wB}t#LqGirm!r zAi+`|$4eHN_gR|_tN=whL@iC}AAR?@j5wnF6z}2Vqtt9QKdHt?B7RbhPi*|8R(aA< zt#U^dLWe>|iU?2Lu<4GUSw;@D$*Bx^iuYrDQ54dW^Wr{Q&K!GhKBSU&Tt}>rLz!{a zW8f>IDpTVe>`TAa_GmeExT%AZt!1zy@@v@&iuO3=Qu8#VnhmjJ<6yEh8w|4qgA1Hj zd68EMwtQZto>+!+85N0T&wmb3T_;_s{5NSvB|Brej}IQ4inlJlSgISOji%v-AJ`I<0mYTQzJ{i##4_ zw4U%9B3{?N1}JMr0AN=(u6obW+vIT1UjDC*53p@~z6n+VDQ^}PVwN-H(~ zMF%y(Q?Lrup}z3spul;)0ZKQYjl`UC!Lp#r@@fj0`w&m1lxvPKd-JA6` zmyLJVy)~4+cuFs({f;up$boKpV3o-@u&C#3!e^6uIO?%IV&nkP zOPyn54-mnP%y;gC#}QL@37g9$Z6%JP}Sw*z~LCqD%!M<$<$5*!;!R0%{< zXfemCIB(V3|1Z4hP<`g4*A!2etKUdY(BJR>8G^F1w5ap?o$*!UyUX%Z;)baYtocnS zA1PwT(i0W=se=*~T93)6#`oEjO&Q7z_)*FGY}!YO3T?8uA4`eyGnMlb+(%ZR6u1kw zl%zq!UA=~%u8-4Bjo5rPpd5lxC9tH3Zrd|{>Yzl0wx9Fk{ZW{@?E=aJSmUe4K1x(* zx5fQfN|c|woF8w4uK&b0+0#yX+0-4w`)ukR!Q_Qbs`Ax?L0{(U zc~BJ4DB&a*S7)VHE4&(}s_ASf;(oEfVzng@7*PTRB_sM3T z&)d8I`}2M}m0?nTw<`u&#A031O0A@wY)}y$HuB!=LaS_9&&iS2X_6$86Q}=4f*P(N z(nLL;3X#U}P>3YsLWO7wsm7h63jSDrl)N^fq#Jr)>7do+Qgu=%w|&lJ)ydF-VC9p$ zkKW|&!#ZHvx?nowWEunIkQ{B+K{924ir6eSP}v2mB{|^5>D!Z`c&t*gmsp*M?WGBns8!Xo z4W$^-m{(Lo_tMFuzI?%hjcHY?(OR9T6twVf-HnIV$WoHF^*=#U+ji0TYuWw$DZ{I5 zD&)Ew(*dxW;xI49-<~Y0lysHViD0#45^Ec}0X~DN&&v5L)IZc#4&2c8mm<%u=F4J0rBr zk2kcf-}Oz`E^h{HysB|?c4R0WQ24x?R}R#KqRB&hyeCVk^(~G^a&u;i(4A$Y;k29b ze*fL7j5><hhNSex~!4UdVOLYY-{*;xxi}`KJnZOQkqvx;SOtP?S^B#zUkx z4A$suzsjc)l-gUuWhd-iw6BHT^ZjR13f9blcBwtnNZNX8bj?|D%B`X3U=D1dqA93| zE!0P;wT1dPHEQ6a)N)h$>3261ZC;5R4X53q<=sN9O2jTEimEPe#kWu?^%7@<^LdlC z*0M%%mkp)URi(nnf!cVhIOWJt#xpPWF>H-kt;(QN`BX!xCD(EqPG?q(94I3R+lSmW z{-#F*6t#w8PP}NSm>(_tmc`OCVI5E^+54;KmY9KE={OZF$22Mt{UG6t;{7WfYM}y@ z-j#Q^wTJ_JusDTm9rU~O-QUi6a8v%x)A7?mpQC)L;gFk}(Qw#JeW79IYlb%+XjwHe zz+ePSKKmVKn5lR_`}M25$g2eNRxC;*xvkEt)R9p=j+L1(T(`&YQu72(sH$SNqR%BV zMWjul#?w!gJ%4@)uD@F56pdd{TIv1%Hy`j_GoikAZ^)U@uC-PCMpZGV$Fx+0kE5of zl25sMy$m-O1KquKIP-;E}lbVHAK23_ClTtk%?yQ{L)}P+*J3%bS)f z%Bisd>sYmJA}A|FRv?)MCxBk;}d!p<2_vsu>qt(YorbrRQB zrjBTmOXIvs@Kmu){5xQT;|3_I+*=usyVF|mSd!yRu<4k$- zj<@gMGSj%%#T-1xTW`s&hgGg|H{y%AK9xgK$+G;mGU|63eLJ+(oSv0;tjeYdLNA{y}U{#uM#|kDeNqkAVmw_ z>0%9LEK12yf@kmtij;W?E``)HN-!`{+T#P0X#p>JN-+Hn0_t&r1=ANL3+%_mR%1kL z&0>ohaiDeOVh!#9c}g%n1(f9yyz(9-u+jJ;4&^Ap9%>3DcoxWe2~viO=b}nwC&S>n zG=UOx#q&sR#;93VfMA*Plwi#!@G=cX9G4AHW{Z0%Kv52lLz!{81kY0q1XjSyJOOQI zfoZt(L+OQ3@{oFs;kuiu>@w{C70xPj-6UTxov%+dyd0LwXY#e-e0`et72MV2YYSf= zm;S+$#t&}pXG^^}E`uMJezv3tc8K5&S0Nm@xt}eyk$OA$hHL+`&xdyKec);kOyv~Q zEAW%j&-*_)(dCsTeO&s%SNR-%FnC*?*BN||j{i51zIduh*nkRUc1JmUndMg}K3i$~ zqqORULRZsON$R{=I=BF{P~QdfcFiXc`uF-F{Z%Cwjx%ZhL$2U^~UoBBc0$SB@_$W*J7 zrvxAH!!Z4wJ5j?`tlb1r1V|?pF-3=DN>)?n}UxBMA5Di<>#`V;4CTP z;_lk`i8!s*K~afIR4u9mBHa^W#I=A-3;D662tU$qcU=%X&sj>$WtZd&G+PG|6>2t- z`dvCd7TR<=F)a{Uw+SuguokC)8zoVw0u7OdNi3?X<*5)!xja58Vn1j~a1nl#e1&pH zoPQdij2HJ(fKo=i07a$+(r*eScz$~vFG_ow%EetuG{%~$%U3a$tc&H<99G0Z_h^ok z{~|SydQ{sGX`voZg-Ek_C`6KRp+Yo;6wwZk<>!pbU4s#OeFK!&#k~}uTolhmX&3O) z0OiJ|AKdF7$IC4N>EoNYy}mKlgM3DP@*-cwSk9V{BIELEj8$@<{00~I(H!Zc*dAhw z+Ux5gb>g9rCmHt^39l)nh#mN`{0x%(B$$Mz;k=s)emP2%MOVu2j=j3)Menan?=qA7 zrm^5h+|5&(!hIIgFZ@Xt(};^HnH=XuX(SEw%|Bbfa2Txq=0-0@Gdm4;-?r0><6q_U zG(2}xvl?EysV_7f_%*6n5}jUbmoqhnqx?!e33!p=c{a8CYg57{Sj}PL*QJvuV0H3_ z7cWQCH>;B;ytn}qCmOc@`nT-nd9e*9b{by1ZKoH#Kb(>iI}I0^s`}N7wajjV;bu0a z;r`oHy*SG3E*M^BQ?D7e{fG;slVMjjmA;q#-#(6=&b3#)EpL@RDt*TuI>}TPNjkFe z%$RuIJa(}%F^^)bPW7m@LQ#jZRjMzqS(8`t>6(ounJRM#>rjsP3~mYGO)xo2pOjv8 z&;ja*bT(9cX`MAeYq^PWS*_$ru}v`I;qeL)t%0AEI)Cviz1U&$OfYkbOF@_k?H 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Ν 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

G} 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%0AV?i-ZgY12C`T5L4Vxd8&~AtRYIqv zTsGypP%g7yrEORh%IsJ95GPeOV7V%@U$wJbsyPD(V`jfPv>=t)uP&`0W%kQ@2nI9z z)xXT8TfD5$pd=^Rl{slRf|Hz^t65++dWuWompEyBgp=GeoHY5BlUrlBqGn|{Y2J*J zmVG&CwUm?A>o{riEGKREankM!PTK#)Nr#f?V43|oRpz8~M=5h`~5Uz(yCaFQOumcal(f z%946#36Q5734Bk0JaGc$Dqd*oeH|gm$64y^?@zx-`kVj!TmvZ5iFlC}r~o z5_bt7;&dq^@&*%dKLhVG?F6@c#pdA4XUBH%lT?pOiq9QL$K-d6Q5zx{Ah7!=n0J;;f$pCU!dc~+G z44@Y=wz`0-yC0$bBPc&QpEsD$ff1Bjoi{2&h*3jaROF2y+AsqcN5DuIu+LYcK1Joc z$s}4D5m8R$;fZcBD%V9t-WCE{8^Ck|mKi`R0-74YUIN-ifBT?-=bAEJHjDvLbp zLjqhqkynI(ZwwWO0Yjx21BOZx0dowMG7K0h6&Ns7st_>AP^rm)p;C{5h)OtzfEIFr zBBB^>B4Jlk#v|NP!mhpyNVq-09ixoMz=k_ZS$<2(TsJApZ%)~~lVq)IGS3FkK_ z!h-V<{2tQ7%)`g7%)^;l8qUL%31~tm5mHU zRKl+jkS*88WDpJ*h-}V#2Exq=pCBaH)H-7zQtKN7VXeGG^7k;iCoerpF~IIgAcX;T zkAZM10hJY=l5{?+5oCvR#aI}%l1lNf&V)F?!{FIdCx1?mdr7XWWCEL&d zr&tlODZ&S7e+jv^D&09M5m#S?m%MC?QR$}E=fp`jwa!b#(0YaZz*}WFn0Zg|6}AY! zDdC9gbQLYa?@HL!SL_o6moSX*R3Us?!Vx19{z}3TBXVN#1HnJIj^LcdfUAue7z3`J z2zNb*CfAJAi(5-4V5Fwm;dzPwxD*I3Hez+=DkK*$2CEEJwY z4nN9*TzWm)x-wNSj%RUE{Md*IJvYxgpUmRR&9;P{J+u{w(%mg&1W7pV}mwMMN0 zo1VWKOOX43&Je{(1;`KRe1Qx2!s_ikjudZ$Y5j`GEwrwYT5m5=7g~D;dUZjn-BAam*7zS3-wa#6zEKxB zgck99jMc!d$TeKBns)Y(EWAjVoDLunlH^DH_{cmm3#~Ul!Q+{AtqzbZwCExT1)?pq z4ogXo`sBa|vOszZEqWt-d_Ak}aXJ`gt+K@U=2qpJ77CvbEytqQUKd&4QQ;OYz=J3L z(}U`!2i27aTxoTSD#g$LeRvW_-6}+yo(q+c?s5zH7WZ}$dV=}dO2l-T<($GVE8#gP zi=K#q)Sdz;BD5NR=#q1I^0J zkw^VB5SCeQfI66{^oXmZ)`?IzNoscx?q~wI3;qYix5rk#CXr1*k&j^`yBBf|pWu#g zig&{;0JtOUi|z>BA#pnb(F*Sfr1$^X5lW&%S;;r@pt@yvP~DOqsE$CDA}rNTYQFVO(iDS(gQS}^t`wagzN{;M=$M9adB#@;eZS*!2_kZCN zHA)r7m^u0kio=sY4COX~^h9YPUM0P9V{S$9`4l1cEd%+cZ85lt+}sG!emoa_K!~OI zuaVqf@*ZGg6QH&qnK4JP2`L6n9-`q331gc<_yuq&?U7HKI(Dg+iZMTe^qmslLgsHO zJ~la7h-<+4{fvuBm!KyOpnF^yy{ZoiCnY+Zyndnl=j)~R;YUAV z(D3<%Yj7klvFLbc`21WHmRR)L5)Gg4jyu5k8P-`~F2R4WB`^D13oZKOF-kkXMa9dl zGuBE--+CFxC+!7!D1X)sx{Iv`-v^p+cCy-f66{a$-|TWcY|-0?$kB1Q(E3@z=drMi zAAY@xQdtroafwHmD6$8mGco)FLxbV-WT-1V>>+xUfMXT7@Iv^c{VDbmF`4pRR%cFV1 zDmr!ucx#BV8JjV~qbVzkj(r#miXHyeTlA>%FPn0yfUgO}tUrsuPKd2EJr{Dz{|cf* z)T#<(2O(uFc`oeS3CLH3q_Oo{6HpFOZ50&*E>B0< zn&@+Vofxo$>*vH+OLRUCf5@kaamuGym?WPj#>1!T$dFGHgI29Bl+u5K_GunUS`GA2!t?@8q(S?-NI#cX1T%c3D&Aw6WJNk^cKj zyd0fmJz^E3*+VgFqt*A`T&M{#9skydE`T4kjx@zjlqx(2cys*H^hdz9Dy%MJ{GOYJ zaI%2CGGmjQhnu)rQ>D5(RHNZ0^Co)%Z4S?UL)&2J$fgVkTfy zWCk|A^*gay?GqV2yuY8Y#kwR*WV|v3691lwUWlH6{M9RdkF zrQD0Nuf<>-$yi-<6U8%IMt*=RU+{*mWU_+3&TqL~2I+#2&bEoxTYCf!1~XXZdzNrFVJ!9(Xwb z{VU^15edc90AwiMB2gq1@4%Ezn7tD@Hxv>0J%WYrB~Vl--bY~TuNEf!Re1yg(WdNT}vXla{&?4ZU zkgS|F5|y&92z{&33f4G6+0#(HGM1Qu|BNh)d}EZolwCS$K4d3Jo@*I0qDn&OTL^2E z1)+7c0d8w33$i&R?`-kVL)F@)sk0^B5BL;`dRq2uAPmb8C7lJHUJkMW1!bAQr;}{B zlCe87F7tu^L$W+2TZB`JO&j40>=0tlu^5rjJ83@NePP;MMSGTLv=P2|&|>PrMBk*m zR7G2;XzV6!MA8RZwp7WeQL<&BGz<{;;=5@XE39@jezSudkEG!cJx}AuBWlOZKtM#& z>wscue0$8?pRC7rrE&={?jY6^(JT?`j*i@=N^|ig43^w;_>hv6{TkznC3e)rq_>8~ znSxSwN9tZITq=)ZNx7yeZc|KY72Un(P$Z8h@wXb3sCfiGWR=Oyh2Q=K&OMO(cKLPwNvD@Thm#nDZF8SEE z13ujwBlex%jhJmH+rDq$&wPUWI~kP}<8JR8%-}J?cL9u9#OUXgsEpwDL3V^`!?{hv z6HP_uLBRgIz|PC($SJ_92wsp6E?vbEpHVf-^BK7du$QV_mk-_uSj{J>GwP6>1^hjo z8n${(_~xqk^~qRFm7X@?^j*RU z>ucO=$hgy)t!b6*Jf^v)3*qx^7ozthFGg8sA81Q&!elF_fHmh|E$dvsgwqfYT<7#h zP5lg+aHeZ`xM5B>`vCiiJt-ginuh1(V>hm0i52M68Ov?sAmOpenWbgxOqo0=_iNcE zQzj3}Yg+bQ`umwhZkHnl=Z8UY;jj6&}sabCn z&N9ONsiuBpQaRkbku7R_i}LW>!dZrguWIVQH>L`wdIM!J(QoXzNVSHC4{2)K!l{wz zsT0grR=X8WWjARfoH?4>uW%}L7deG?u50S>!l{vIv@^D$a$ufGbqO{fo1s6zYC*l| zeP$WgIo#|>+e5d5wTYM?70TrH&;_#yJq^|sVxBaZ#%>XfEYUs|XT)QzWe*cB7FKZa09Bw5p3Zw$e zNieGTLlf4S1h)!hCY-CxY$=o_oO?ClC6iz{atMSoK{)cZNiZA&Bp8k?*M#LJA=;6zHS3W=S;DE`Ox5$ONiZB)2tv=|aO8E9U^sGG6V920Xh&)` zS7v@GlqH;5n&5E?-!;cUs2K-G5}g|E!DOCPO0>Z2pDxEMI&?X%4tVlZIK8xNjwy4; z0d*RCQnMbqG0Uv+vgYqJ`P6jbG-#>3dE1mlYLu)wn)T(4S@I}Lp?$Ip%}Z%E1m7Gh zh0N1^F)#3}f)3qYOvIdg5Q?uv$-K60Ik; zZLil82U7jC5x!=_qSq70ErEv%h`}Dp^~5=Mx$B86rxu97J3!TXBBNB5@W%C4+*gR@ zpA38WvI#)Bp2#54@l6>G9{R&&`aVM&)q3JLkgN5?i2Xo~KJI#A1och=YOE*9TK5B# z>xpiy_8e*-dm8Zdb=MQwp+E-!YCSPxI_W{6dOgvF?Hbf6lg>k?*At^;p^Sd+dg209 z>gPH_Gc{VlT1qH;8hQ_?T2Cb37-cWjdSZ$Gk@ZBf}8))VuyjP*p`-I4V~=J6pVm+ELekuk1VVzi#< zVsaN78nm7mCFQnAU0P2pL@JMBNul*brnpTprL>;N(hU>|sX^xncVTJmsoIt+E!6RFQi7lpG-!%gwi0TK2GfYo}U$xgV(T~9RG zodB!##Gi5RRN3|wgFk9LvHCD~J+T;`!cb26N`ax)6NAHXgv#|q!-msQ!xO!RqO%;Z zT2C|``3SIDPc-2YBi!{w(?}1%YCX|}*8^7TiPRZ&08ax}>xm{@Zlt@OXu!z>0K4mn z+xt7ft+M?-(;}7m{sv90C%z1tT2G9&=KQH;oeP+7vc|aU zi4pU{nWW+2cEp@;UIwhz6HWG24bREP&K~QoCmII{k4?@rEn8z$)v`^dOdgb1 zwd@&FCJ(&!X9sR+7r%c%{phY+@Vc4<;T10iAELD?Lk^5VhmZN z*EvsVLaa$(-;=!)jP*p`#j?GvfvfdI!>DZ2GA+B?v?m9s6IwRSlts6<%tUuR(Xei` zx4$NAFwMyJZqc$Grp##X51MeuB*=Z$Y?8a47#ZLAEG_qkZ2hyE)vic1OPa};?5-yo z4PYN+j3#Ts%p!#m%$@&+raoAJYDC08#a&N~HYmf=K@;{DFk{4Km1cctwrqO^Jw*9v z_*CnO*T7ZliP2S(Md9R5RfGyYBTQsWI9s)>UbM_+LUQqG#(JV0vAP3N>xqR`Xv@$( zs#%kKH)NUd{Xz4W7tS|=Tz9&1VB3wUxapx;Zxqfl!u^(}eq>TP+`N%3sy9Pb`)%PY z!^0;v_1_y)g;Q##GMMN$LKLai@NmASwk@0*nVvdVHMLveRCZH##^HH-PZmz4?jonq z&i9%+yl^UYNI8vmdd*T+=b2QOVDqsV`VuU)o=A<4oM$7QLY|I8wP(BQiG?w_J#@h= zLNmZr>xmJjv0L7TT&*WkY~|EJ&fz)Mv=Pb99AiC^2U{{GoDRU%dLr4>6OZM9)q0`{ zf1u&w0oplwLRW0AyPimw?Ak~#z-m3w@XU3cVuk7 z@V#jv+L0>rm6<;ZWnnI(2~Mn0kKxDx5Y&32K`??|e1Re~GA%?q(qFUM7RnONvzpMy zBp8nT1AxnbmgDEn82{4!0M z+G~r5#1}39u;-vtmP`9($@cHY;69pg-@{GhGGXE{sc=+Lrjk@bA1mnI2y{+C$6CWs z#G0(-f)a8C(!@`ORavpbFB_&!{7=(9+llR15v{6@^#^W`a~q1Z1d!Os+6=!8`@&hF zWlc;OyYC#;vW}*V+98~BmArg!D6xl?Mz5#(w^ECpfq?1Jpv3-G@9MfL;k#Z>Ed=z7ub=j!#C>V5spSZ<20R~;*C$2SZI0;o0{FtfevOb-ktzLw8OpsJTI@Dtz82e$-FSHy|$^Mi;wtn&cVb${Xs>v?)XSw`FULj&|m zJX@Xkxbr3$^z2aLrzXSkrhEC(oWu*((~(`joA#BD?lLrnJaLF`Bc5u$*Msa}r>)kw zW@^03dv^h3bSa&fwC#-sOgPVdC3z@P50KSY6R3dm{ahYqFW^Y|@1C z-id8oSB|rtCmUmJVGefHP^W4QWv7Zs`;2JG_h?xTmPqIbv*jVNU*kQ!(RH(Zr$S9- z^zH%#w(QIWfi7nfi`Y>Xg!6@##hEgq2`8tP(yM06?!jKkz)jb(#-<*{UhaV8(;(0- z525RZibR=W3OZfSG{LEWb{&e;y%?nqh~!2S$7BZeP7V#KU(IA ziHtPLX0uGMxGxTRrDBXoOJ9~~S$aXek0AT(8rsk@rUS-76)>rnjB^aj?vClovWTB4 zbb#%x;1wx!(48-eUqPjyJ$Ew@I;+rW%O|!7G4yThh!vuo{VGJYgL|x-n&XVM1!t<@ zd-!3#RJ-i2c+C+%-(Iv$CU#QMM{cEUAK3Dj4?+~&>hV{@8B560GqPmYjzBLfD4U=P ztn;dZ8b?_B4VG=-Z!4V7V~le{+F$mFoB7oUk#_D$A)Y5!UbLK+NS~p6mZuqvTmIHm zg>z8D*`5vz_h7i@Z+OEm1-~>K_H4)`Hp6N9v>UABah8GdBmRT8diH_hkp|P=*@d@Z zaLNeovy!huJmPocTY99}CZLEPW6Ef%hWuA3T+hy;Z|!^09q?;%#mG2hZkXkJIqi`Pd%;u0gH)&TO=k1&HB` zo+EY0K^d-35Q`PWe%*35A^nT;zj_86ZLt1Q@E`f==?VB<{0IN`q|}8$o6L%|JZRFA zYp}K_O%IX5>K^9=sJH$N`gPAW)T!uB8$d4;T+++C$flZw^M-~?d)Zr?q9>e;fAH&x z_z#xN$9_t~<@2#q{#71U^hyt|BKH8r~ncJ?u%^FgV+i;8!hY zn}Bb_03KWuWlVZUyHkV)fWV{;UWx*D zbncwIyKG7N6Qso$(t{iS!_qnsn6&xEmSSt+6c^l%lRJ-Avba+f6R)JlhZ))Pm9xqwkoQB$sEe-c!LNE|1Ih*j8{w3O^_yJWWFB)2I1N^3WYy zlNx$X3Gje8ibrvs5Ipa#5BsX`a=V;mkkP3>c)?3&E;TkgzXGE9e()y_x*p)$#4GqR zhgq{X0j8OK@Jc@R9~%BEAG>`}&fA06yfm9vw$qy7+)6Y1V6NA>q$wVort|uY(Haz* z+6S9>oreb#!xPO~cG9Mc1f?g3p}3~4kXXlgdcTVT2a@d zjY$3qLb|0F{6z_clU+(q
i2DxHqm6rX@#^v6ULz?p=WHiYOUQ-TJgq5sSlAPoP ztr#N+(&jcTi-{qx^VxJla*`Je6x188Wkn0>9fOP}a=~J1lE?c{)mK`{N~lSm;pd8E zulNQ3!FyxmYofB3`~!#&tA#PfVZ}##QkN93IEl$qa7|34r^sVE>A03XY|8kMPU=v` zD~{nm_?Ri6@rdm&(7)Zj4yu)M6V6K$07@My*|ZUn%@kFxlhp_#uq)a1c81t1X)2a}vP{JgrMPgKLESXtCe=2plS* zW*@M5j4EW0yCI60YLZQKrihJ_Je{E6y znps7mYFt^AE_TIJ-{GSNMHX72_ShBO{wyMj?6v+3!>=N=zgpA&N}G*1&_jMjmRs(H zMv)~}XzI60<#3dWeLLwTy$<;%GWoG3&9Py&8SLweR4AC>s)PT`5@P)+Hl@ z?lqBW2o&>IrNMp$9vu>Va~tex@FEELplwmh5bT(r-uaq=pn-*$ibYLPMX~x&0cvrzeY8{N;#b3*YjH8FFtSz&o+>(sYL4H9>mct|1oGQd zZ*fT4;y-wSjv@axs@QwG27jXA(7%&Fu7pNt^xrACBufnrjDO?@d}j^4Ja~_Ye;fG) zFdrP|_qo?*gX52Dcz8nmDV-k?@_vatU)7B!C7U+FTMCXbIOzm|v=Kh{DsG6kGvs^` zH`7p>ufcf{B~k4-TJs|6u!94tZ$T=m@5I&;Y3tFLIdd>zdaPphu3zLHS%pRzd*m!N z*xe&kvcDlHJsXF!+#^4uZ22Q1caN}cN)lX`dt@~NeHqon)sC}!Vvb-1?~i{0X6W=5 zTrPsQ(7a)#--|I_71nZrFHscoh(wA;IFCvsi4b?~2EDQh)lh7PRWuvsMJNVE`hojm zv*jD{zfn`@z?D~9eEMZK<6=IAPgb#s3>`$CGw)J{4vY`T<2d^f*sBuU8b2Q?^`+ob zB7QmYag^Vl8YFq}X@41ZlnZ;fV3#K(uoGgQC%qxjN{oIDvt%h z(WHlIw5+nqhKH`M1xvX^s>asG9H@7)ph1O|Cn)N5yAa_)ok3z(4u5KuYEVPEvI?)Pl zo6~5#<<+)WE3!=MV7Yq+)+YK~z~@ui#>F&2Y6Tk9q;F-G!wv~Fw7gd^`n14*AiM=k z|IKub;-e9TZqWpCyk($6BUIqlh@3|p8kYE+d@rP^=seWlc?hTA4skIH3CdTI@TLNj z6(!&b!e1l0qT3*s6-DF)E5dE(C$Jik&;|<&rE1|Sv6O@BzEZ_-L6z_qHmNaFZ^m&| zY?@tkH>we#A}I0*n`d{SKG+=_o99xYrdl-D?&pel8pm-R4>5+igSb|(iVbCmt{Zrg z!ozK`m@*YnZSh+1P09)J6{;(qEqrtU&>COytoSy77r}DzhW=n@4^Z{RXc|QV z$)+{N;`Pfgqp8Idkv=I+u7wnDNkq%Pj_Bz-fzm=y@wQ|`qvwIrf=}^|2FecCYL6qR z)YrHhSL^*cUhxHtl)T$If^2Hc>)2W)`&tz!Q?j4s|C*{0wSPnLdt`lBf!t4b1@QM1 zu(+60q~U84GkLlnElO%#{SF_<)kk7$RiBHkr}|oKz15$_)~^00wlN~r zzJRV{m%ivJ`fOX!GZvvp-Ldq)9;| zxYAUKl6ST=(_4!wOA%KpMbjXnp)IMVp(O|FO#P>_ETHu-M5T*Bt9JpdG{7wCUqGt~M0b(apaNP$wCJ7!TJs=!jI>4;(AuFzV+&{< zhUhYBO_bBm3fw!cYjmbWxz8k3#libW9a|*LH@cnub7%Cjq?1~c+zd`y93fDiP<>A8huR)%PaX;zS!u4|?V|lAW z_4)KM1{~o#(FW&i>cyQ?W42O& z@4$aeFNQ&Cj|NpuFNhsAy&#H6?_W;vtrk7K7|rP8K;`s;Y*>DYehXAiFAOy0%{}-6 zC`~UCI^hw(gwOB7rd@Bk+`2q6;`UYLb{TyB;>NS0N|4%>ySi=@JIZaMi1b@vn(h#3 zx2rKa5vX*VY*>DYJ`Ys7ZJ;UNCE{DY@* zrwrZtsxlYLp{oOnc)&ahSdR>ZEPIW-}BnkiL4{*6&Oi`BK5f_t=YOTto~itz&*~uGeolgks-@ZKZ79BCjyoI@0kedtJK5oe=mSQSH4wVJ8lp%Kv4bf6bQ2a zMXD6(S2cPnj@8%^o*1SlPt*O+RA{KtO9d2qK_vU16p`n44+@?y2Y#sjHxn$?{~~rJ z&DjW<>VMHDoHrm-{jY%DImlH1i-bqoOrag2`rl{RvHzF;M{MqY{o%aoe`^sVtMY5E zB_GMS8@6o_A!gwM*Lg`Me_4uysdR(Kes??zZUV6*in8G zMWpX-li$xBj0#jJ{UjTfU!pC5Nf>BVe*SgmfBCr=uPNCB zK~C-KXdl9pV0?_N54WlQ3gc9uqstW1@)kVlZube38*MK&8iI!}3e?UZB!r15KHAR(V{^ zp7pOBAKUjq50~fLH*jR+JKuI(glgUS9+m7@P>1jlGirQf>20KtKILycKK4f0@*AQ} z5Xte83|amGtne;SIX>Rh+eLk=;h7pAWB<|PW3EAX3se z`#f?#d>hr~-hHK#&0l3se;0hZ>M6SNC4iPcB69D(vTh}+M)-3y%9*3A8nk>)ZOS~1&j7tr1na^iIAZzBG)Y5dyyd6&`-Ch_mL>bw2sBMW z{1Gk5nr%S#S42&J1BS`z%=!PKY+6ab3K5MnnM)2J0+v5+F%*0rY-zB{9O~2I%Dg*0 z(l^=2PZo6WtD!zHE}Y#YDdbO2cX9)6{m=p!6~U`CXIDT_)NMDD|<-=S_4a zP0Zyy9oTGXT+j zxlTO@>21)= z68s@}89SS}!WpY&UFvPNrG#*JC3 zdAmTR_l`2}Fat)-Q-q6}aFRSZopuM>=Z4{U#yWkq0$vWuYwLdNsQmAG3QHR?5;E3le8L&^lhFxb3Jyc#W+k- zun~L`j{~R9L{I2dP_l6Qs?Gvl@Mngkh5iT8*>8%7I!g+OL`gX~)LG`Cxuac?jPr&D zJQ1n_IeiJM&Uz04EE1u%Kg@*3qJ-{DCogS;`Uu7;e3+&a$}F5e3| zH+P>Q=lTcYBq>5?ArDZy-}Vq-*Wze2!1h6$-|I~Fgfbz$lNd)lmV*-}{Rn;PS7 zi@ipV$-ddjoh#mS51e?0s*`g?`izI3E7E)R^tDWyE2g$_=Zg7N)LgL(3BX!%@w}{X!#=|cdp2~m8cs0a>3I={DvxMuGku%=={IV z70J_lb4A}0@`PuOm@87rj*CE;D>6iCiiNqN3&}H7`W}Qq&J{~R)wGg+5h6KP`~?xP z{1wTzF9lmQSJdIcT(M#YJy$fi>Air;xuS`#1}f)@CVC90oGbPo9;t2ESa+^its~mU zb47!YJ^-kkE1KvdK;>M~L{9=W=Zf5*^kAp_b47`^25Qa~B{~nNIaieEKA>{0SZ;)N zU53|}j%ca5;;&%QJMfuDqFL!xJL|b(M1&h!K;>M~MArkAbH({?Wpb~mx#EW)=(!^A zZJGgz2F1HX=86V<8(=+GWSF{vaP9}J=8FHg)yR+jkU7;lW3G4v3Tm!MAFGwU#TfgY zn67Gerss+jJDa$|X{u#fl^y)j91+O1M)^o-TOoS~Qr{rJ*a06nU=rxhIqb3eOdP zlJg*9NLr`|L_Al#TtGAxBD$=tb4AV-!=%LFVEFTBti#)@?0_2n_ody z_ygoTS1j(ml??L6u$s_I%@xZOF0ThU&lM{ga;|>`PLd+j6LOv_*6^5aSFGoy1rXMg%Gtj{#B;?4tPn~-=y|T#NE+ZO+z%>= zg!zLpjahjQHlv2oOGm+Twy?5tN>ZBD!v7UDJ8L|gZAf$Q&->s#ovd4PK0%7VVlnBv zp{X7Y=>rr-qF(B|w#Z07!m)y0?HL27pZ zRW*RvQ4Ju9NdJ7WC*N&@FBmP23S|SxhUJ%NH=wcs2AVRr2Yw}*9}|hWZFI!XL(0!B z{r}6)U69&WB7PD(%1@$*^e0E<_wxlt&jOWxk`2o*(G<8L{WQ>&6L+|N?wB0$bM!CV zXK0f2^YL;2<>yXF?G~UaKZzaXCs9QD(S`Z_e2&p#s8ISzHY~qHy8)Gc8feOrfv%q` zr$ufU?pJ=+nDSqK)`!&oDdH!wqx>X_NcX_Bd0Q)o(M+JyPqJb8B{~48^wU679xmhF zFx<5{63-!%Wjxrqej?ER?9N2|Tg%`02?!#svZF~p3xa-jA7+&7MV_CmV#W*K#({01A zcIUfIw-Z3*HXW7het7so_=p*Gn~tT=kwSXbd-8RnDyv>Y+438rz7WaVbY#f#zsU-V zfy&!-Z%0sHqiODKy5k_o#~8jf2(3U+x9R=>LEff|R4LNS;wqBSQ#Z33J0fq>-3pPs zO=l_$)##-H3d=|R@l+|P=vg(}s5n@Z{+&i+p|8b}dfYi38yN4RF zqYgEqi1e8=pei~@Xg_~SIx4a%1x^A8!{fxWy zzx*r(sofb=HFOa>%1@$*^ca{n{Y+uBAyDZj*|7W)9ScCIr;^z$;KQ-Ml9$%f^Z=q{krPXkS<));U1$f?S-ha!HC znrVgW=TDH@twB|O5*rw*(f$gkWcFqW-^t0~1oY{=bnl)J(yZ9X$TbHvL zu*lhot(Ef$PV#$1J(_9EW<<+H(v{+J{kH z{X%APrBf)%?P z_i_8q@>u?I^l5{eu@MrRqcQs0h;Uv459d75H^WOGK~Q}AUKnvYz$VKYnzH&NOa2rx zTL0_Y17CCEI!IkqoDWQXZy|Q!MTpyZtVXkukss@mO#U2$NVS)P>+jpbs{B6rjPHOQ zu|+-n_w8Wui{CM1G4z>6J4-Z{(DFg5yQ}3dL8S^@>Ml$2eQ``zttSiv~>WVRL8tTO@m`%aEude|1^ecvZUa2@h} zr~1#)zLtd=Wl=jQ?U!e*CUuL*<(T}O7__tBogIvG15M5+Z+rYa>DU$u# z`u~QOU5kzzA?n5KVM5E)m`jLU)Hf%n6Xt&n-27Gr4o!5aC>83X`CkJ!KT}a;3|<~c zOP?jgZVV5-@3({}`E3v8&1JCl_wN{=j+7qa?B7|GB&>f|e|=cA`N7UW7|3WsZ)a2l zrlPQufNm1-zKp{61oR*ce-1^t3>)feNs27>mnFMJgfLJ+H{Xi5NY+pVwIx>iFR)7? z>_4#+%BF$za_=b7R71pCW!gg2AGc$u8KOZ?l;|Mrf3MOfz6dV{Oz#)>UoM|aVZYN~ z0Qx(rue+TqWK=Zn-}<3>a53S4$B#mTJ8^X9#vXzJ{P%BeQ&}{z4|+u7LAfKK*m%%= z$2eK`DJRP>av8ndHf|#p8S}TZNGD}BdH&$@2tRaJWF ztk-yWtzrY=!0_6YImu|mNoH40>JH_k-gr*3@;Ir#n3Dz%a+1BBlZJ0_l5>)i@Q<7{ z_6{P`P2xFen#RekwK!>(%}I++oV2`?lU9Q`X+4IMw$nLjNB6NC4{uLPl#PdXSjk|g zt(fJ`g_9=!!BlFR%*n0QIcXN=qrn}IQjcNPX5_X$>jbgIT>({lY#$oGALm<$p%;8WJoqBS~*&94C3noXo1p$?O)K%;~|&++m#DJA;#X4{$Pn6DJE^=49b}oGki@lf}MK zWO~WXoZMH7lVwdfS$+p6D<*QX@;**peu|S<4so*gJ5FBpjwUOwRitEkc5@_w9mnLk zV8(p==2KYR9<&4lcU;U~zzH*2#b3oEu3f;J(MH6d0M-sK%gku&50ZRFdw+L`Y?9j~ z5EAahuqt$woL=Av?-^*(8D>T|I>Yz}G59CIqma(%ISgeyP>Nc87-RE#}#{-<)`6MU3UgG4g_c`hPB`1A;<)m-SSTfcxiIe_S zIT_H9le^nQ;sr;&RhDZ$?bZe*t4;+gsn3VDybo2)vKN47FU3Zrkx{!gN;f%15eeAZ|FkLea;a0(T^mj!;WW-b7El@fde*0cU6zxGJV zf@$`WHVDXzZ7l%xV(tdr%Gw|QC{pUFS(p659b|L3|1+*&I~7K#0!wCdfj_xxf59Av zml*K(5%>WK8^pB|VUG7Ln5Tg+Yr{{_F}U7ewd9eAgmnTHKC?w%{AX=4_<>PC=qsyP zyA1n*9YE=Ki?gmVDnjP~&~-^xz}k%%D6}|2#b{BhY(1dAQUj8j1Eo)vW#MBh91V^z zy$T$pJ(o4cj4ct&*rwW_o}s$F-LA=yWu3PC@oOmjT>3?p?BWsVcLkLt zD6{}N+=_p!3IJGFvO_Ow(Z7a>wF>pSLfn_A{;Xy67}*qQ(`ZGxn3^zcWj$ae&-kA$ zj^jUT3zku?Q(TkJpvYZvhlZSLUtl>2|5?xQsOIt8Ja66mr!t3TGh$b?N4{3;4?x&xLq*-I}TTKNqt2I2&OUJfix7nlNMP3^AH2k54@AJ-LH@V8TmjKiJENi)!Pus&zeA+)SD`8*k*;f?t`nWy0``8?U8;b%-wlK&59?*S%7u|^G7&-CsNG%QQp zWm#Z{Sq8SLRX~DEkf@S%7EG`NB`hKWN)p6?h>D<~BA_VA91sx$1{5y_3@Au20tzT7 zB4Ez^=Y6Ycre=nF|L^s;=&?s;PPx@GXrI_7+GwNQu^aEU(hYgc@V@9ob&gHm_u zUHGs1%W&V0=rO(h`N=DTqHlCZKs)>8egpJ%65*-E!GTjL7~=Zvbfo6;9A1sY#Wdts zL3)Q_3J<#Cj!Il(ozNGXPzOY2Q()ftFihU8Gun9rWPSs5Q=RoqrnuuPWCla$M!rQ5 zLxN5qM>wA#nFB7)0dgvMLAx($Z5O<4!xo=>g+cfZc4DoqT1x64DWuZ zdd44tjQD8n%zM-*)7Sg{*C^9buy*kv3$G?l+hbO{~k^0TBs!UV^vpt10FBc;!;hwTy!`<^zVK--f-MX z_)CbWhHr4D>ft>v7=>4fZ}1xGz;$`?=l*S=&I$##d><6&~T*4NR=5Vgi!Sc>rWz)P*mDg~QrFBd(8%0cZztueIc%0-89 z_|C2X4x8=AE+j3G2W_*+H?{Nw1M{1g6yj(S#f+nzmCLN7(B4cOT{YCjq`R}<3JP@I zL0YZ+Nd$5}jt94ZS)x-HLJC`~b!wMS1=|6H7eZD6fNjxDk#a z^I5zR_EB5>48-Rw72-V-*Mnmx979*6%03O0-w5&%;P`Ml7jQajmtTt*;^|yrhfV41 z309?(qJGk*DeA)}>KE*&lVpgx@IDhYpY79jD0H^#5DA~{p`^1FLkr#xidVF{5DBj} zxp8@a1l9z2`7Lm?fMf8VNSUo_@p_<6`O9E4NOla4Y9#y0l2t)qEtY3wmPhUv;*iP} zj_rVst%zcqQc`|Cc#dr@9P!v}7031}SdQ%{I5@V8X9R_jaj`DTXj&d!Cd60}Dlvz2 zT=B#V0&Nm=29g|lp)-}de1|3N3~7y{PW2)8k+#xuAs!~l_*BVvZtWq{Npc1xH0pDnEiy=96qa9QTmy{8ZV6sIs%bjwD$>IL5<4pP^sDvA~MB*0e6=Z#^Ky_rM3g zI3<~E@lPnH{0^{hfY6?oBzX>(m)o9gl07#`c#h!Ky+V7YMyA%Z0p;^>qRoL1u9`wd zes-#s{|q({#L(Z6INNK%*4E{(gA9PAbhXFtvpVS0Dd_1=`Co{+5AeaKTpJYYHCYHU z@`cm9{GSK$_yS^B^M{1!2FK9yYZ5XlzIt5?%HM^m0{GC*DP(?yEME-rTq3Kaka_#- zmX83L3%tBJ9AP-{8F~Za*{oASHMCyO+@T{=u>6Vs#pk48dDR?}5554W^QHDr7aY!{ zw0t;DUjEEq6h&y0E$&2BdJpWMAcpR+SQkOJIG9x~9u{IR zkyI^=S0?x5l(z<{YsI4o{&yWM(}&#hF`(B0AF=^v=!{gwkxJ#up_m1{dR$tP_~`J}&ugipFQ76eK;X{zuWb?m0X z_n>uyOoe|#lZ8kiS9n^3h%5XxaKtOTkw`0usZ-1gmy>{ynk&qV|V3;Ksh`@@*DoZYhO_A`*D!5HEnlDQ-h{xjg{^}6znbgWXRHfN#!6lBVmM=(z(=hTt3%gb~~a!$w2 zORwM{r(Ni73PK%pCAI-SQe}UfWhvRs?c)s8@v$U5>ocy{bH1I zxdHpo`6^|+P*4!7k0lqxdI~CD5Om~jV8|2%3w-CODTr@zBftg|B>Wjpkwsg@QpW`f zVjG+^Z5st~zVR?DA5F0K&=^jUMf<7hg7_RxT@X*ggDMCW11H5Q2nPu_1;HH2bU_RR zXBPyePQ)u}X}<2osJ!5$y%-@5F42oo`u<<47b9Jt(u-mFOzp+s8Ko5qF;HEnh3ti2 zAqT)Zaxg4*X~~$03yrSu4~8PG!8W*%)fK*a7*6Y{Iq*>6~L8R6dPH|B`53kacH5f;T?Wpse3Uv7&p44&8I$01{(-5IajcIj^FJ>| z+JmQ}pIenVt-GKWOQ7Wl`pbcQPPfw=!Vp-m(l38%<1OJ|_L*$h;dc|*j*9)`_Lcv!?9 z=%(uXUF7tlypvqjuz)7*n{2K74%$XyZF7q|u>@ug+iFn3|oZcf)=4XtgGQap8 zx-qt_I^}vQ^QYc+b(z!D0(U!2Nv(7Qpf2;>G~1Mn7|~?2YnS<099m_*7Kc`uAH|_n z=1mc)Rpw?ILzKE6voa8~D)X$RNR%$s=0H`cR>}C_J9RTBIoE^^AazZ^+`YflggjSI ztjkan>nckc{qIz{gcd>WG-B1MD>xHMD>Z9J+)uWo;skWO?|DVO&wHosSeTX zsbI!i0r4RwWlq{j!MGo9qzeQFvx3&B8ADI28AEH;jG<@LjG=WjV`!Av77+a~>7!2T zI&f8Y8)H1gZg$$y>sq`D(vjPVAyWle;CJ1H;Vypo*u93TU{4Yrf>SLCuA3dR5H#+2 zm z(ZBuWI1QIWt@w%pr0_?RsUXw;oNsYob1MEOYGfBsWGZMg#u)8{S5X`H)Zp^B$*S6v;UJQ3xhBnGVS{=4QAq zyB$V^ME_1r@#BnrrvN`$u^^rqE}w7%Unb;#O;A%}0a*bxw zt0gcpvH8UICzcNflZ!Fhd(_^0-QHxq;zp7+X$AkZaa+Y*bjU6;v9~GiM+hU=Xg*}~ zGGQZHBVgLWkGGjBb7HiQSH&)(XxlJ*2dWtDa~?ZR6uByBo2!^uheP&5JAGA9iYsan zwzMT8qqLXN3r4IdVYF*itR=Z*Q7@4vS%5CU`#!W({cDfbL1BMI&u(V4aoT~<5n!2I(WB{%f3KJB3QKu4G6vkmnDJ)axe>ktRr-=@}SUHfb1o7xP_J;0#XAhtcQ6+oQTp!IEoQ6MkAQl5qqb4II)8!_ql=te-=f-HPN#iF**-ttRwu?m`qyRxYGy=V6u$ z2OZ{AU}_M1-$=3LwSZzv5WRi3JMRLpC{gI1csjsq$(4K!N4pn<=v^QG1Z#b3K>Prp zcdk>?ryTBO(K>1?|7xY$;IlX_+ejD2!eM+&N5LwfpTDc67{K<(p zPB7|I)_mZch`(x+x88q;RseCyn@b{5jp2V4{17-1{N6~LZ6kih$@%@@YF7t; z?aBEj;5h!7C*$4Wd}@Or;zZ2)AENmXaY|2g*dLDL#rWpmmRfZFlYqY@YJM8^3*h3KpzcVc&H#KRQFo^)BJlysy+>@v$(x`I4w-dEGjamtKJ5g)WsBZx0<$_w9 zMl}OmPSmq$)HuM)iF!VbS_^m|QR~yFp8+?{1NBlG)fVujL~Tf;W&nPQsMpe{*8%@T z)az+fW?dmp$2Wgd8r2){VrqEaN>JE8!JwNHsBYHgg2KdNk^gRj68;kgeLsO}5AT7Z z^*HiBOrs8iq9r%-x1~`Y+F#l?Fn@a*)eIEv8<@W{jp_}GHV4fAIF%~63{?IXy2(>V zyX_`eL3=bbn%k7?;D_7ay_e%SiF&|LUn=TK2we8XyQ1APCks!+8TdnqaPq!rcOF`1 zYOV8Je!^(C9Byi@^D@-&5xA)Z&a0u0i{YjgIIosEz7%e1ZSvZw<0s&z)+VpLIzA3J zwE%hNspC`OrWPRYd_LwR1+T&U{EXhXDZzK%o}iDpkr(2d_Z8(;Jk@$n(H@_;Vga#P zi4f?d+%qX>@-6{&JJD57MvF2EGDe%8R%An8#x63k`Z&CTT|~qrv4mC7wtF#3UPWiZ z*hMCG4i2wi*F{9oO*%$~@4*#>RWLS{bnK#ckJwElCRfqcr!nOM&zJRUIz{V%K1=T3 zoWhLRa5(jkI#*I^Lq+d{TTR?ir|5##*rWF?huk9TV-OD$@pu0v_{j*3ISfR-V+Zh( zv<}g+AvnIE-C$AlCMNtB4K>T6IA#9#py;w|c%wySPzwEqg_@deQOZ{tD7qpW-eghA*K9-G zY*EVBdQi<8z}FngH79f(PC@vGfzp)KhI1(Zg}N%NVuI;A&!SXVg8|<`)NK}}d@VK9 z?G~kceF(~F1Yh$lN@br1n5hL8rLwQ1q3*CK72p-19-sj4Oi;pK4P-B&3;9;9PxMCy5@|C-!P^)Py4OKnr36f*b2%T5 z>KRArCAVQ~uB3!EY%2-~Ygp=pPDjS;cKjDW^oZK99f_P!M=BE~?5>5J2?{z>LuV&c zXKAP(L4G|HFBkFId0n~!CehsI827a>wu~DRgSa#hgT#crfScF~1dJ!8TuydD>xQPRGt5EOr5e_Tie7RH>=tnG9re1vxgI&wLU z3c>&_L$?r4MoR~1T%95N#@_TSRr$cs`5NM?qXNW27OX0M6Jc>T!_P>STi99VHU=X5 znyk9=h4pcD`HP{(@DQjr(j{?YzAtG7Je7?IqCQx5T}#6!8L?8oOoUcZv>Jxoszc9 z`3vXbg#IDVd`2Cn(ivSYXMq;-E?7rC1{;v;VT1C0SXX`qn;{RvX3F1Svt*`^mRRP) zR+3F&E6difo;(w_iaZ~-svHfQEvLa&lefa=$fdB=7+DWCPqu`uE4#zy%X4At$ziYsasq69;a!8Dh4>aOcecM3Kd(u2AE`SR%h42e zcH}bfLOuZN$VXuV@+sJ$d=}P~FTrNWjj);WE!Zsi9&AW%g{>ra!B&=Ez49(I3g?Emlasp| zuv<9Tkptim@?uy=UI81B*TM$nJXlxW1Dhed7xD7}zJ;rt_fi7-oOFd1j@$)@kkeot zc@u0vmSer3pz!t+Q3B6v9O{AAmBFh9$R~KMb33j(1GfbfBlsD9elYN0K+_0**2&rt zS98w42-qz=+mSE8A>`Yzjyy6O|Adv>;10@9Ng%(1&5(y+GvyDkS@Jj7kfc7%O42=r zay|s>$?C9GWF6S5a_{pla(=%-QP61KKH9k!0_2AeC(VDsd~uyy4Xu=(;j*m`n4Y=K-3TVK8i z+d#er+fZ(YEtFrvhUIbCM$&1432CxAY>^DZHkJ}LD%-#|k!Qm;mFK}0%Mq}?oCw=Y z-T*5l^;DP0<*=v7)v%|^mtdRAw_#hzU9c_XH?XJ4Utn8FwEnC6%klkQ=${1`fITW_Hyd1WVyc)KzycxEiTm*ZLdl zd>?k0{0#PDc^vi?fr5wZ#FNZAf{lsp@@LJor+EhoTUDzAqfBj>|jCYQmE zm1|)ym#@K&lOMp2mwR9*$YZcqNVg4o3uF%LL|G4Zl57b(S$2b+A_u@ul_O!Vl2c%( z$$7BTdhlfS@T@5o?VA!a(V27YdEWE4NM99fE=8y$HT zer7xJ0{qGCzF1 z|9l2r?+B&J>2%pOgmq*y*nn&c8gu{GjJBZ zg)iuSWxnfqF+igTUZ2#^jRQ1`;1`qNxqu!b_@yLxEui-aemM#L6wncZH#l!wDftrF z^$)&0v?QS z;rl8jEHiAD&fD!M{4EK79MEQh|8giYhabSzQ@Hnu;ZA6d9wb~c!uuUu&5rOF z3~;5^Neu&PPjFTe+yf9luvQ811FKdK2F%ZURRjFIr{Rf!`MD}Pz|U10o(Gtpl5zt4 zl%(Mmfcg2SMu4AxH2ex+e*UQyP$#DHau;BJ{;AE&%sX0r6fi&ky%( zmPn`MDZtzkH41P`q~OW#k{aK_A_aTFPP(0lCY^RJU~VUxB*D!9b30Lz1fKzz+lf<> z;4;A6PMn$qR{-XAqInWL12DG}t&`w80CPLhHVIw>nA?etN$@7X+)i{#fOTmgoIotF0{}%|-Mx7o#Np4TEItwvi~q)>XUm{7HG^JsopAGD z$p=G1;y!|V2GP+4$6MFpV0Qs|3-5J8ga1X`_4(*ab>z~<&ZQTK278}(OxN{kB5|H)7XEsDeNGgoL| zhb+p95qmXqK>QDQzsRT$TWY3C+km2V2*N*TAEXd|Z@@IGB7Bri&k4Q4=un^ov8G@6 zn2k;XN^9eUkK5?2K+C)1yna-jP8>q%N}#X4ks-oA>FCIdD1F|*KU=WQg>B&OrhtC6 z5>Mrz%BS=@@N0U5|IP9%N}ZMXM;*bx+pu2?aHG0N?4MR*OC`{)6vtn-xU?(a9|`_j z!NR`~2vyMVzf?m^zKjP-(?`N5UPnG@t#^Y#g=2}mMSxeGi69&s&R+xgO@f2CPjZd) z-T-u%Al0F-WApX`&OZyV>epAW%k?7v1h`JbWyV9Pi4G{*`zai9=#tTL&UdddI9hT% zTq&JvW4OxBTk*3}dG1YlSo`yAf9kGtv*D`P{uH+uT!%{#U$%bq7vXIL z93pj2lA8WL#&Go{^+CW_|BUmjsbA|UY_}6GIZm`PeEoWXN3^uIE$w|WX?-KjwWac8 z($kH!t}Q+7WYYddTF;hJnWUw4oRQYIrIej%(m6)j(3VoyVVacw5yzPowx#_}CVkCF zBerxx{Isa~wlnv0qi<~MQ&qnhRTEnkzpT}@?^S@C|q46?}9PU7PA%Q@l+IulD2U zFu^z6JykFOJ(nN`5P7Cbfm;7Tc^m@#JmSu>IQY2=*r`2$_t3B3+?FJ2XE|2)7Tyy^ z)zelbYNt|tVN|_rRifT075z<-W9)6K&c^Af+Q};Jv&eiJ=N%3NBu|r;zpX)=F1#5p z;Vwxj?qmB;P4Tlv)z?;~ruaLf>SwD`Q{3!j9pgE+Dka6(Pn%ocExl;A@n=x+-+HA>*UqN5mK3pgQ4a25po*m9noQqCJCm|_Iy+X5>M4;sM* zw!n(w3kbOQ2HJx9<+}KUm+_g-twH}q&#QHG+F>ftAQcU#pIU@O_p*c%^`;+aY{^5_~S; zqkRA`Pc3ZKsME_HE@!A3^@VE1|4{W@3KjJsg&((6qSrbDKdE7U8|wKkVCq^5Kb553 zXW*xk)PDe`uBGrZN$T8hG;GHHRM@Qm523SqK1toj!0VI39u9aVsb5M`UuWP~Y_)eU z;Pv>1H`{9OEkNxs6n^Ot; z30!ZgT{~<}B`Eul=62egl^|&ZyKI3<(3yt&*ydD%MjP%En^Osz2aaYRhCj18m7tY| z+h=n;EyH`)aQkgerDeC_4%nPZ%b$k(+U8VR^1j6d+7D?tXmebzR9kl zHpB?NwFMNq7A!V`?`#1jTMOQV;329phiyST4f^G7pHY2(a+OtRf$wyHM@}wPSytbu zey~-1X4dJ&jOwVZibs~{`qL*f$LNpQdd?0jPu?=B<7p}@W8A~~JbtuQEU?1rYE(a^ zsjRRj8PzYgici#1J!VwDrm3tLzcs4gZ52PhQdq*P^1ZHAf20b8=Y!+Y{>SF{8AN%$ z$awxYRUo`s;8vZB>gopG#1p60ndKg*$0v0wegmq|5vVc)HSrkqUsTnh;IKk=SezqP zSOcKquqxYOrK;{VVO6!m;vAu{g!i5aCfg3i5}Yt0RJTLmY*8U}_(3P6h8=<>m;u3? z_=fY4A;WbCX_-RfOX{WumM>W6ei8I!cWc^1XExKqZ)%g z;BseyYY@noV=`9sycjTb&WFPRT0>Cfx9Bz9z!43ryXT#NFQY&jC#fGZaFZnUYk=<} zb#apV3j;T^)!y%bUm|tOz^@(SDeYiL(c!L|I}fKWyaxbtaNU#Ow@pZACBer5S2>PAdT5xkRX?-V0p6Uro|>zc;7Wmy zZvw8D=Hd;K@XEn)n0+-z3oPg`uQFktqdDFOTV=$3;9kNvT&{-hRQ+iM&v>x|evG)m z+F$2Hm?wa*o&;`a!0K|h5)}RsQ)2K95Bo2IejrDa;9^@~WyKXB>ECeS5q8q7c59^( zjI;%G`_oOr=SEOr3#>M+&QCgu(YC;PbUw!j#wY>zHYuZ8otZ{3&K6ivyk-PfXaRH9 zS^Q%JlkE_!vuO9T5X;shqpnf{RYa=U9A>y_wr9oNVz?Q$KlOC5-f-90{uFl@T$Qni z@A?4s3+sloiRn-kp8E^tRFPn2px;Ra4Int51UJ|*TOqWD;3^W#QiHnclq^AC2$quI z#sKxBr>9{g1h0``c7S@%(*@T;@B;~M3Q+%kx?m{;jW37b<^c8Trwd+$U@8f230#^i z5Z*R$_YpTIK)u|SXW@MZZp%b)bM1;9?_w98_*Dz$*#gQ+(+C*BZMGo(Y=k*PMsT|= zn7c6^LRTZ0Zwul>62iOC2o~6a_&|j4#u>pKwje%KBD@=o;7(f*A0QFly+&}CEugIA z;az>MYmI85t>U4B_;`TuHbYf-JS4)4bW>zy#va2h)|{0OKO1g|=BzBJ{F@H*9?e;2 zUud{{HD{f88^bNtoORB940oUAQcq+!1hf%N_#qx5*A<7_1mWEPj<%u+Kb+331lNhU zN7A{C;2IJ4XgaqS+(P0WOXvOtH;A~$)40k!()}{ls;ApGcZUmwy=pLZ=d1s_9%O#q zE5Af$h0A~e{S?4nY0o+9JKLPLFe{k&%g*#+Ryw!l& zXQiNzCP1}8qNw~rOsgfI{|3BG#%E<);(ZMGGm>~o@DG546i*c!&JX?z_!7W%uqZ#b zBlHF(@(T@~YjA#G$!`z5E$QK@D2xbPMNT6PVBC;Hnou7FbT-D(!i}{0N>&$P zg{)rqh9kjEmii(ZP!bTASF!QnmJ)weke}e8nik|oITmsCPKa_pg(!#> zSHjbE9j6FX%}cJl!m9z_%!95U}I}PRZ61p4~1@Tv76n(4}OxBZtPi>0(WUDG} zHT>ok%&bcP6%@gO#(Kq}t?kf$g*w5AV0!~@>rP-l1_uG8dt1Tw69|o!F1bV&`J~%h z!TZ4(5Yf%3U`L85xYT&xc?Mc?4$~!<$f7vt)>p74_^R=~D@7FC3x;lf1s|s}HG$Ht ztKgGVrYlfhl;{iE2}i9*q?RJO9n6Lz_&LB#3SH?t(7X!K_q+-ba;b^x6)E_UrIcbT zxOP{A=B0@ohxm3Yal9Gdf-H5s1MU-aoXyAe=pUZ^r}-GUVpKY@p72=4hyBUL7#q5P zd6H@MjLPV#&Iu37eycO)%c4;Vzag@>z)crP_{~rO@!=s(=v?YBs?SG5)scF-R?sjD zvhho7oPyUu4A(e6ZuyU1kIq1R!y_qHC-geq{QUQU@I1{?`7l2@kuEpU&inTneyYXuGljp&P}5QTR3xw4uu@i&jA7htN4$t8vfaN7h@i z@^KmmZa|68_K(9GKbhWcdGoXH(@&uDZL}#+e$rfEquqe=bK%`xoJ7QZ;O57|yRxdB zub(aN^oK#qPlAgqt$!_0e&AeeqxS&i$HOHy`W#T6GjK0uTT=D;&`|fKP`Y}32cD-X zEKA{qpK-sQrLZE63WMS~2&+=5(oUdwBJe}{dg4p0^di7KZTJxz_NM~ok>JM@0SW(Z zp!^>6q*bi^pz1#lieH0Pr%@k+;H>;WxFL-i1&UMnY8o{c6sPdDH0o(koWhN%l!#H0R}4fWUPezdSW6k5 z`Ju>t{0D+NF=;%q$q`wL;dtv>{HJw!0r8P1oX{EcWUY>#R7ciRm%>+ToGPFC2ZX|( zvT=SwSNIx@a|RW>-VG5wtsvoV!4bVYM4s8zh^}Rd-c>nyz)8}145P3=aAcgRY0n_~^qE`+2lF=?e=^hf%CBbOv2p}}qKk}Lmf-gM( z8o)H4Kk~X2X`(yOzZV?M(2s0Vw=@;l^FV2ae&h{1u+mQe(G2~_n+nD`;i$%$KsKv; zpGsj+3{?QKhl`Y#rdo7NvZx14Vc9$R~*a@x)=!PZJ)5e*h@m<0GHh z+P@9@xvj0)L(N!>>`oN0)objxHT)inr%cy*aGv4!T0B*M%})YPQ(+@tT0A97^D7Pi zmBm}(zhU@&7H@@r2t3U~j2y7alEN2$RlrPrZBZ1o@S7Rx8;epGZ7)zXy)$yqickeO z+)#%sN(FeWp}w^!72v&~Xml-d*rNChd0@*wZ20djp3hM64ST73aO4Ly`b%|KXI@)S zG*d8gG>tkJ6y5YA$5JTmbu2i#M@NpQ@WP)Dm>%{bKc{8RD~9^TqEzO5Zm3@^N@dR9 zplIe@+yIth(1SR}wKxvX( z6|K%ce?1_25Qzx zfTKZ&h_pGbE8cFymDrq>s^5&@6kDKDRimE{_|#NRr|J|VXl@Hss(OK=A&p22o3mmb zVFWGH1eWSLqdF~3r4qT+2wI&~pi{cus9L9~RC0GhKoim;ZPEmk8sYs4lI9OZ+MZOP zUX{IC=V;aG|6Qe%befTto?NQZRc2J}Y!wx*j&ZyZv`-VL5Nuz%@(mCL0PFCbBr)3d6WAVL2#rN~2YGP8PM{3i64)QVj3h8Z! zsU|X+#!l>Yxk&>jMMSBj{m6?Lwuq+JA#Ugshg=!x0!(1kY@ z9K9_?E==d{21l<;k&Du~b>QfIDKapf+Xjwam?DGHxuf7{I!R=Rqo$K^S`t00UM-L` zog^|;uLqJUXb+O6lSItFQ&I)xAZa>Du_GRjfYN#X+GT?d?|lSC>U zHJ!xb9s>S3aii@kV0R6?YGqADb*+J^CXvT@v9o65(5ysO$perJ`4g-oGk^)12OAJx zA+#LUrB+zjP#*Ak6wH_;c#wfFvtWHcodj+rc^PYS@wP~-)s;Rarb^gaZsA%3?+AaNYDCG~7&!6W*JE z_mP(ylHl(E)t&-)mIdotR1BOtL?erw&uYit!Hej9oVr0H3mmVDkt}xpVF_J8qKJ}8 zou-jH9B&{b)ISQ9Z_mjr(Tn1(+h z_b0(W1Ezk~$TH{gI*Id{*I)InMix5WW7AN7heER4mUtThv(FXI0rsg*llo<;i#Bq% z<3(m@pDS&N*B&tS*G5()!RG^}uGz=~Hk?16V0u+wZC*q8Zk#{Y;7=Kx@9z1J8GMbw z`3{)B890sTqhCtD&Zuy{G5A`8t8g-}(fVf$uEJ>ooJRU1>ohLB9)M`1Kk}TeFlwa# zNkBBxA9>zUBmJC1-d;fb`n=w{n_|@-z_ctyPTDJ@1C`H%B70M%)fI~6DmmdAUd_(J9Jt=#v3(_p#jj#Afl-eEvhuLJxRpN|SC zuO1K@gpO=xR6XbAonz2<6w3W>c@u%sAavwiTlfF)U z40X~~9r9sB@FxRqquLQVmBE@_%uwfd2$YpBxkQ#}4=~i(3L-VsnIa1IH{N#^=fgXN z>5@xr4W)-Vrx@?MQbfVUVAN1&Dzg!c8tP1Cz5%0#I!h_GKR4n6RYRREyPBa+W>V-% zw}Va^>f8u`n&N^VSxUKL1=p@7vQ!Us65p;A$9kxfkB8w{4|URUJ-QavP$#)!)M*`S z1)_{yY^cBkE8*`dYVeV@<0_dhUoGUUh0 z95CO&I`RZ;K>h|BlsOPwuf-3%O5)F5x$-pp4nwZ#nr{ihKsFBiEuoE+A*Y9h7rmU3n*L zhFlDrDSJ)IL?*6;J0u^0tt6j>tt{8Vdh$isDsm%iRk;~9TYdyvO@0oWBM-ntH{-`Rpm>t+44QuYVs@C9Qhk;b(xJw^Hlu9IsS97K@uE7o&xL0i(mt? z18h*94(rP9uo<#HY^J;fwwm(2;RQ#Hb?e`tu6<`){vLM)|As> zYsopVwdE4F55VThr(x@=V%{{DD$WVH1iwPAf_3C-*noTyR@dR@Q5Y~|r78ldZc0sZ07FQIt3h>30cOz-*24u}yE=s8pES896cN^G%>;zjyp3C@1 zSXW*J8GK?&^HE3syOz>j_ZiBccCZ0i1{;*aVO=>JHbdUa_8Hhr z`7UghJOCS#$6zbVz&aOoRl;J8YuKvtGT3Z66SkVX8#YHi2wPpg2wOvLg{>*~z}Aw# z!q%46o^`P$X{m};a>#MK{*0)m~!OENyp-k@Cp`LTAn z@(1k-VE~%$%cIG}Xehct#)BBW%ZbzulwciKL63uxIss8ayFJi-JCYj+g-H_03xw(x z;m$}B{ZhFa_(tLi0`wT*gc?8~ybl0v!Q~%m5NHa(QU3Vx-P>!pu+5dQzn{Qyw^Wgy zf=$8c7r7jC5plPaUUiY9(p(8R?s{sP?yn~}?q2fKIoj@!yR&3EcLO-?veFAQTJeb( z4L8OxE+NXuRl$Z1tGoNq=NO7kYtpj?GQz3Z3t)7isFe|lF3dju5w6vi3}n-qfm2$s zTNHeYx3}nGCv*=0eY8X!xyu+jM1p&?z(0y3%HHU`kAh7Sa!B`SXf^rus}0cVWtN($ z(o;au;(XDS+6O6g0v^!N&N4ij`IkdUB@=x_z0^Ddp-P*7J18oc=%Z=W8c;NvAAOu^ zk`p3dqVz+cG^QQJTn0Yl(qlmK&I5wk3XJ%TaYUos(dQC@iqbwnX-~iC3p#N`3V$MC z8vKsFo)GKAtpG(c2cnx2lqlTSXn)K-f4J)KnU^e8O{Od~$g_chG#sHHOvyhX!Y?4=I_rctXXM*lf% zrG6hU^-o7Xw8GY-{Xc@EuIcF3bgu3N7;wioikSe3r21z9x}4yTR4FB5@}~k`PSkdl zeHQf?;CG4IK}|_gfZG87Le$O#CHxaW8sTpO(Oni=+6+iZ1Elw3D+ry3y}@zy{3MO@ zF9Sz?;L%SLRg1Ggm)c$6X^=kp*~$5h;Atd1`gx*as4Vmkfui^Q=ocwog;(_=^#U2~ z?lf&`&RXP9Pm)(+xHFyZ%yDgR;L>|xC|cWTNG<9Ms3B2w8aR~+jy6Px!0U8TsKY{i z=#orhMFx8-ffXBUD`DPv#C#vV(PoaSqMtGRFre)OOJ^?tC#2v#fVe)FSZenGd#N{2 zU*@Oi&I|J5a?D;IaD1Jgn$BGVjvCTv^K|YhaMX}STcmS)!BN8nj^?g2+zens0Pd3n>oZPUFR2S;Nt(bFw2I;ZNF zt6jgMrRiKxa8vM&w$ov9E~*^99{6hF+NX0b7_Ou4QDT2onFO}sdgA#^)T3LozZ_9X z&@QskTSc%R%JM_H(r%{)DD(;yBL1<0aHzL3dX|oZYob>T5cNMq&rX8d0H*$qXb-zi zdjkyIGf6!WF!feOdnLh308tM{w09Ex3SjDUjP`LZY!<&>iax_Vh5lz0?do_QeyO)I z+SitNK4A9Q&$*L*@;Makg-`0OjCOOp#m473w#0h@F!feO&rO2&0ixc@Xe z2%YXkE3bst5imDD*E-gd8$TI%gTZkVbDf=qio4eMn`!&w%<-0idlld4taR=j!_Bri z73R0#s*ZraTby4|$of&v^8xiHc#iX@1z!Sa5y5j+>f94tkyirxfZ%x=u7rD_@OA;J zHxlse8m`Ikd4OgTyufJ?h(A5%%?0!l!3!O_OC}yah7foqHTm;|jn_Em-+ef>S}V zKl5Zxu)4|TjRd!XJTK$I=VxS>@9TL_19nD(ddQ-vJlrmn)V#*vn148x@5TIV@Sl?Z zM=YM|f%bpU@QoqzI;#IATTvamm;EgL3J(st1AA!7$ zj;i9)9PPa5Me&W|qXR`YZ4OWESagt^O{0#=9m=Nrt8!P#?%n`<;ZPXmIU?~ISRsNt zkw$(m8b&oSbTy2s)4}h-c)0ULFHSJm$LUJBpiU+F63bJiwm{A!bhwRP0%Rh_ETSVA z6_utNV5GVLf=dDL4R18<53c<3PT|3IVEESsZk4MUW!+ z7Z`r885?IruqN`D@5GnKL3R3-d@wY_D>}|TlP(4wpFp*Ti$L*9#e`HUI35(gl3qb6 z4=v>M%m&DBiM-FW2A2WkSHg*$9#ZP!cm@oWZgf(d5y5u=@?+HG1lT&G3SFYn{#7!n zvE#g|11Un$I%6Uq4-jPqsAXg5c}{J`iF!v!jQR;;l*AZu74zY(j4^V>sAg9@Kp4Bo zj3yH!EH=+KhMpZO-Xk5mc9M&pZDNFR_fOH{ji_4#k-7O!1&MO%pgGQo!Bn_ths&tB zugE4BweS^rcRlDy+6LkCbPgSWrk3llUmE7-Ts2eP5F0xPfQw=rCqBv## z!=MIdV(YRSEsEye2!E%cW?Pi< z?*Q5`jPG0uK%uS*>vcoTvnUnTaZq=VuiGq2`3hg5soO0|`HF#Z8o}3mi&EKlouL+3 zl*+!TIii8ZG~a#fHl)`pS!T$$8 zw6a|B=adi=LVY0Axlz2E{;H`^m!c5uLMGC$Q6HM zqsxKNT5-h()lzZlR65?J?i0n|rbRgb6usyaAErN^CZ%Sqp^l_bI<>RG)87<}kEZa# zUj~Z)B2j!ijamg%)%_iS9@LWK~m9|P+ZSec!K~_e@Ssc5Mbd5syk6s*v$b` z|3|T(6m~Db)c;Z3%!WnLx{U}0ty}#+oY-zuoU$KKZ(~$BV&BstyY4`tRCk-;nh5!w z_~CqdPe=G&Mb>rrr6+#BOTprs@N=dUYTg^oN_{@UuF!O(o)4AaYzuN*lT_h7G~SM( zMHE&~9hScwM>MeG_v#KdNyyRk(NItF>pySQeJwRprSF5Ho^$_P?Sm9L0oWay)7k^w z+`@NnRz1G{0M!rP4?>sI<`;mX4qyMgG^!OSYQFsoR6{_%u&EPJDnI|Cga=VN5-9ym z(;uWGR*wVM0H(iT`h%??N|ykoVG|##9VBwJbS>Z?3C6Mqob9FW0-={B|5Aoit1p{^MTR`mA}|VCjh;h>fSxpWk#vfr8EaT zjYRoN6BU^+c+Edd{)xZuTQtCSDEhE!l}K+#y9ua^X{sQ#d+h4o)Z#3TH%Kxu@}U!TYhoyRwVq8DucMJslF zzDvQ;{m$RgyIcJF$@&QGCk>PNoBd~u;DfO&;7cj1dM|Z9^xyH{g@A5+{)d*p-%n^1 z=vEtb=Baz9zs-uxuVc`UY^?-JcTRu1jdlY{Ll^!I8yy0aZm0g<>fIA((HFIY1}^+} z{lyT_-PHfm68Ni)x37AzH+61h@J6E+{(Jrr<87ZM@ZH z>HN_~F9S-Cr~XfASK3@qG+g29KL~RJO@4*{C@6Y}_kU4O{Y=qyqU-x>;AybJ|4m&c zabEZz8|wEIN|jRnkKk#j!gnzikhmW6tIgLq?Xt%>mr8y!;53BcXC>o34PMFMob>$B zz-g?(udH#Ae*+*Ik?=hOdG`aNM>@ZXe(d5B^PU4tk92;vV`aGazJaSb&CZUOS=M0W z)d5ici7Yx-dP(#D@_q(F&wqZ7b0LfAWH8eWcF5GA@c;EHFVKqWc5wM&z%*&!uMtmX z7eF)|;@5VphM4bU-i6?3IK;2xScRmx3C3TZ?T<6an+=YJL;U=7?q0(c*qjP;tqHS% z&2b@lZyJAv>D;H_e#F<0IAf6qy25)^@4$BR`1*}i^4%*ao4j^_#uD5_!&fu>6re2x z7dscAVbOu)ehP^GH{h4(I&sT&ai?xt#!Cj<0{JhUt-4TJexNMYQKgjKSP^DU?dCqh2bWH;uz8cq8&qA{)+O*54l7-9i7fI- zw;{~)4?{$6T?IQ*M8VF+`%bzkahNW-L>9%N=lKse-gl*lf;WOu^ZZkp)nMpWQ}9VD zvmK0@=idxbSQGPu4QHEq{>-G%m97SzG|zuE05#8_rCca~ZbVJsO3+RqOZ7Z|;@d@W ztmpajabFzkdH!^46$uqij9!Cc1t7}!5X1eVj4?KJ?Ntz4(TNB?Br}>!jIavwHkwSu zB_wHsR-uAS&L0baO(Be~jEd{YMb*3FR&vo@rh+oqw@ZErW65J{YehM&c zaUE{0VJbN6IsllqxDK~TQXd4&drh@Xf=>XZH8;YiC&9T7sx7X=rAcrrz_d|$xINbm zlPBi_=1rzLB-N17fO$8mj!E$KfN7)h@EJ+){eWpt_i$&I_jK3Q?0LYnr+c`I%X_+O zcq`x@5^z_S_jK3r5x}&kd$_yHd%9~l;~`ujC4gf|r_%^9?dcvaOG-&+z|#os@2dV< zRpEyMrp?>K1Khrw>7JwDnSg1(`0#lyRbm6L1WX&Ohc9q>gLSQ5512Ms4`0Olix~AM zfH$-UJSZuUBY=w?%)&0W;e6*|Ar6vyu&XaSzI^iYfCoANACiQ7rvT@zMuzibVH4@u zfO(_k5iVUu1|DkQk!~b@VI%)&hvHZ*AZ6sLU_*x$j!xcWSfZunMNXTX^WXS2d- zO9l$@^J8c~`j9``p00s=^bj>g^D|2NKOw}QgU}Q$$PgvvIG_tJd`CuzJLvh~&WtLR zNguv1!wH>$R;a`K^`T4t)k8mDwTfM4v)achgYhN}O82nA+;X~dDv$(j(H_aD1VBaT zD()J?J!W$%tcBphPwB9Pw*rT|u}pDzZ3d;z31xHWF9G&`$KJ`$WKdEKybCaOBZb!` z!9M_|H;C}FNpRMa>Mb?=ToN1xOz+>}7c5w9vq5p`&e?LKT5qdvN9m~?R6BCqWmGTP zD()b*!rE?BFWD-}4?C>TYW3b9e%V&VS834c>S0u`*s9cY-Dp%BY*lKy-Z83IZB=Tz zf=}U`(cci>m~jmEVO16?zf>liVFa(+0#1?=Og4i5*aE8?{W&ApWD7VUDunMK;1Yh* zPATV&5;R()1#j5`D-Gux!P~aLisBXsc(bN=GSrq%R1?){TAMZ1LJqL%JzK@`SgMPm z;x!{b$WXgXa#(!PdDFo0)|MZpb9aKHSI6+yRE{f(@E(VNmzCU>DiHZ^f};VO@D6jO za)kL`0;dt1@XjRM`wciR)VIVypOe-F5 z7+`uk2|G#f48YVA77k<^{vz! z1Bk|@!__m@gN};sCcrd?5w4M$XdQ*O5-_isUo#1Q8Sq|w!?iQ5h9Qsdd53^gpMN+v zlU`hOJF6Ovf5B0wf4FWYRna7_=JTrGC7f?@_@^3R>PiXMOM<%tra$I{8(Im|s}KzW zM*}$F!gTIRaJ=qmIGvjVj#oErl+LXHM>F=rk#z0_aJ=+sQ9AblI2t+*H_4&P;3jVCg5r#Xl4s|zM{IRyl4ccD1pnNTWR>!2%6ghD-CkJPGn14 zV5MOk1iar?YdZ}Th49uIu8qx6=)(KlaBb~?mA~v4b(p8yobuNW94{x_&Z>aII}b2# z!__{MUIcY+TZ!z_zpCcpI+nnQGmn1SewLdq9`;XfhRKV)PiFvjdM6F={X>8sRE0YXVc+ zIV$sE12PI5l&8SDvOO$1uQ)V}8mrJKjDlWZN_y$&{QfwiTUAMK+GgDr`lAfh*P>pg zM3!C!ibjn~&e1-2k9Pkyz|_Q)#8iv8kujd~6gHKZkaV3~YjbyuMK z@h#C~$_hOUB=9QG^Ho#KXlZ3a=zD=V0lJL*(*a#b@P%|$J0T?=4P-f?7ilqH^8Pb` zwh}y$vf7CE0LejymtaVm^N`EI4+CmP@ZiMRh|=yrh7gJ&X%-WSac4lc5j-p*=8_fu z62Na0b%|=~D24wYXYTy;6ZbFmhh9V-pZBRiJ z>>?-#B7$NU6-BJ5udfQ&dj}L73KmqX2sTvg`rY?4GrO}1@AZA(Ki9P)3Bp6N^E8)U2eN@QrN4u!bN-0!hSq4x9aPbwpp)?HJUvq$y2l!wW~CFgBss$E zsOVXc;(557Jt?zY6KkoJPS%nW>n2E#;@5dbW?L%yqNOu4o57=tz=J(L*8eTD;4}x}5dCpcG6!7z&-w!n-WlzkZI5e~F{B6*BQ} zw(*zlUw_rczs%9)i?0=lE^Cy($nrew)?T3yBL| z=Hno-uU-5~9qCLfy~@rAp{I(=jCoNr+qLyo(AjF*@!M%#MW2Jjn@e{5c18++21!P4RC!-dwIy!GZ~tqxK3;H|twXqF zn>BuW3yy$V)+rqvk3&&nXPxN@~%VD0bqI(5T0yg8f z^}SS$mjX+D?(A5bQOWC|$utdi{5GQmWy|4Dp~-P>$8S4Y{>ED4w;in)w5;*lj#dLL zYy7sOT@8&_gX!_xj`ke1YlG0bd%q%uIydn3TZ?;`B9KgyBQJcwCftT#l%ukulv-R; zH_9YvX8d+$D<-Edfwnal?qZHRqdf@CjNjHZK~k>AZ+`&IjNh)K1veYbj^CDeG~*lm z`y0Pqgfh|Nx7h%N-eI}p+o$kj#&0_{F+7;K7)kEuR?zS)U>SJS->uW(ODrCcWqmua z8NcoNeioSbe(*ro#h(JpDC|LA;q>(J(s3iY6L$Rep|9aU9FLfTU6XJXu*4kVRZC1B zg{tEg#I)nLue33Tx+dZKfz9}BCuaC{VBR&t_-z;O1~%ijGe>lgtGYoAM_$)&GGY97 zEdv#3NVnS#E##Vy$D|loHc%15Sjj`Pcy{ zJ$_qII02M3ep?stcwjSr+v&MU&mep*G&6qN$wIANXX9PqIq@VD!t0=!@!NH@H>`G% z8&CV(1I>)z{tJbyi%f-Ey_Fun?cs{R;{L$bOhG0s^(1w{dc0f+p9O5jZ);p2cr~yY zzpZgZaD%sT_MZwTmwO!o=u1nVOcfphY{qZ%ELpqL&|)lfJAPYAS*lHo3oXX@ZOQc( zcY@gQ+hVB4Z@&v{$8QVfR&>>B5ypKRJAON@sTQTccKmi4%Q;-1$XlFf<6-=Ewt*_V z5t=)GTdKO8*9+f<-fX1ZpLqCbUl8X$EO*;{rmGsY8O3zy9>r|FT@3|s{g_>Fu<72F8u}Q zN18b~&*C-;eq9Ez=(K6hKmd;2?lO>GLrV}}7fQ}KRvDC0czLUG9Q3%N6ta}9KHG0bs+D^-=V*~T93#O5`u9D+Gb zkQEYfR3;)XF;&hmD6-k(GZE$DQzAxhgUmtdUB+FBI*_9?Ci=Ri)S)b&E zXmUAVHP__kP3k5FZ^fcXaMm8=X159%tMd13Pjy>^w?i?p;SugYT<$TX? z+zbB#D)vnUwneWPRx$wF338LFh{@_UTqD&=LL-cUl!0S4(s0ScqAL2r4L|x)(NPHT zO1aypAqcyM(KD@df+G!Mtk~6%c-_$rqeUc5w7_^7VBTfyHj%k&vL&`1ly@1s;WL?H ztP3lY$dMbB-KOYkQpv;UVW6Y&>o%2D+qj6%0O2jHZqppc(W^n1;sEJZ`}6xq*C4Fgc`i^Gz1^PLfgkiP88tV|lS-xj&z=n_>Ape%&zAL}$cigm{Oq+hvlK`jCt613hXy>@Ig{ zHOL~;6)wF7gqJ|wuFDi$Q0i8610-Gnb-TW{)L3fht-1mng98OGNd~vXa0GO{Rt~KS zu&#TNU)^)$QmyMvwDLkjX&ape$}6?5t7zwiju(2jr8jG;ZNH@lJQD7Di%Yxr$dM<) zU008D{LTlx=6=}T>iCVl1j_p_U2ij6isc`bqb@!;sJh-^w><)+?=HkNpN7=iUJ1&) z>1saxNE)n>#O{Q|yy#SNL}$cK*@`u#~9jR zLaju5M2CXhHKollnuO*iN!t*I2Y=U>X8>kNZF(B%Ek|-3?J(A-Nh+sW>yI64E!_i& z1IfF7mDvFm`yP}HNY`D)598s<11iKjJp-!ix7<`f?^^wNpzN@8{Xv74eIV+$n7P(G zgaS`-Ejb*EYBthISxjb-LW)9)tcHswxzC_cP0xP-?SIXGz*b_Lw6`^Ai`$%yhj2ts zA`0d|!0LYIKcGpi`45QR8jV^X?OB$i4yuO%{1@~9G!EGo;JJd8E_5Wea4LG6l@>UX zq%8U&q_K3k(2;m9QqiX6M!Lw6bgV&;%=`zLWawB6t+cpKtS2Cu`46xG%yfXb7}5dS zrX5nSlnyivYG0ju8|hL<(kYk*X$4~~b0i(>W-BdsBpquTBoFlo^B-ikrL(W`(MG!5 zk#zR;wbBYl(hlcAGV>p#9pY35nl=A{?C7_kS@R!&>iQAwj2dO;Kgi@Kw;=C?s+^Od zKh**0UUexp6KsZ=?_{A`(#Xtz07cJ#fR$uB_^GCtWW`B#V~}ep?n3ft24#(Xl_dKr zDK2VsujTF!*lXD!P3xKGq1Uok6_IsA3-CTpUaDwMe>Cj)HmDAX_P7oOKc+!67pFbx z8a%NJ;VkJ;D?RN<-!WEf5G3guJZECi0__;^?f7+jf$8%?KM8#p=by3}?<0 z@$2>y&&ZZ0ak@Q+r`%U`L!vz_09i-+s!Lx0;X}}Fn_RjFv`rGWuj&4R_Ha1JXwogZ zZ$WBqkxmA_oYEWm-4jQ;5qKk|H~An)r_scE4_F+&<2clPp8A-}K^$&%9BS!kND^zC z6N|o8bdHU+-HD~8`yfd&-glCrrLQ1uK-hS^)|(0nk{ zk#<>!-#88>R%5B!KT16h-p6W(p2wr8{GqN@a(Ju)>v}OB&ZB!MXMH^6ze}p;;~>0k z+;t%1S^B%BgB}$6gxL11GCh>R^k;3)uyn{vj_rETU-9cY)U|EbCr3@iuj{d{?bRUC zn@PI1?^;^z+7|XTeVkz~9S3N^e)D}0h280kbXw0aU{pl9AmvzQdwiIPj{@f zbT=gFU6@hkQWmkVL8W&w&-h_H74=c*(z{r|O$GGM)Sn3|y^BQ}v|IyG_b#~B{CE_1 zl1*re!PLW8RC6u)EY~O`$x;la7_1S--hS$Hn#dX#HC!agn&cLtEwUYuM)Uq>2jntb z2?U?#bxC>xCPBRsMde)ub$=ZYG0E_uFo4_H!NKcdSZr6^rnE7ME|WFvIl z0b$MspJWGw3)Paz&>avaKsq1;V3NEQ&Z{XVS#gpNFvztO&63YB$h9WH!^WUB?e@2P zW&MB!=xh{vssUj)gEPqDPfbj3aGE6gI!NxRDI=v%O|sAF zQ4348C6;PmTP=Em?TS)6*RBF#i)ASn2bppz{$$<-G%Sf9Fpz zS^IoC)?6;eX+gSKgh-%>izG^l-z zw$i1Jqf$Xg=)!U=<_EN zAm`5|SV``L^JR$wt z2i}9VtEqA=$+eWIOiJ>;2~Z!RDr>TMjzNh#8Ln!`PGk%{&uU0je+GlRh6$wfnml#H zjAY?NIQfmSWQ~ht-X#cb;TnY$gQ=-Cuxm?!Ye}vpg>@&JJsl3Ku-2hDp0^y4Hx#Sw zu-d&OZ!|KYIafO+J9F=*(4K24?riElF3uv8HL5kD%3=kDzt+M;7Pm0?J+@VSV{^D- z38W4?5o>w(!Q?5bTuX8-B`QlQxg92{52?zUEOs*}aUX)K8nP1^LuXV_C96(Cq$W#Y zC2L$H+cNkk*C?bIOszN#b}@7q8r2$6WwDmR5BI`E7T5lz@UqPcd@wT9e!5JTxdjI8 znbOsel6;ja$x58Mgu#|`lxm9^0s^XANz#)(;=iyj=@(Gv(+QAnF>>5gzv`q-hxB zFjD==Z=pfzs<1ooW4Sr1WR&-%jS%D-Uih@q@!r2_iEFCxOh`AO2uj9yykDdp$|omf zA?<15RWRCsU&(kqeYj4`^B}uOC%E(vkk;3NPIPH!kZRINE}aB&G3gYSUJvpZ=~S1# z1hSiSnoIu#X?-1N%B4QYv7|LF9S^dE^u!F+6ALs8sJToX4R2C1b+CIfGRo7tBE400q^p1*q;!T?SWDUj{4J$3GqF_RA0QoX06kmgC6Y`v zIoktRq;s^?3J!x@sKS#VUCmhfTh=DR-5{@%>aSQE`Vq*7U)ED4^S#EG!via?+&FaB zm>WS(w$4{UZ$=)K3=VX@39pyRVLT+D+LM+H4TKJ1B1lzX{Tn@1j$g?z`LI~XXVMxR zOEMzhi6veSWxSEu!Q)IYcobuV#~=o;1WHB)dI9K|M!Nvo-Sjv%unvj$^hP>X!0v70 zF#)}W3D)HRakL=$x}z-SF%v&>wYps750X~Od2iv-$pIYgTXyCTH@*E zqQz4PeMxeuCOV@zS-NWRz15Z(jg60M&~lZDyxff}Wg{L6t6;DZzmm&!qS!>~8goWV ztPR1w2haZhyHJH!p^U_>{yKx~igx>d^_Y8$@p%7!6Z(Hh<815knc5!z56(8j*+Hw3 zkL?1P_Wu9i=V18YDY2w1z*5pJ%LJSsol-3v38MuxDiq}o$utC?imkvyD1uBEt^;@WH`jVm==w9cK2%2ZI%g zsk{aZmmH3}LO&y{Yn9%a*16rpw4K-ah8DQT@&HEva;xV2;6FFF&5Rb#zpcUCUX)Jm%IhRb9G&ksvyTZn}XmWJ+KMcgVc+R&3#Gf z9lB=-tgBRpx!fBi4kKjJ%CFldcm>F|*cqN%?W3zc(l8m=I`fiPAE z*aB4-F0@(w6v){^_FK)0xbf2SjCCss;mVzx2;NSYMQdqrzA=cdLulceda86jRZnj= zx(Sp67)meHcUUvgqu)W|d*G!DGLnjVQ*%@VztV-8>eP1tIfitRNx}WHQ^SBRAzo*2 z9y&t$oug&I!P1NUoA6)xk6`Kf+prAy-(i{K=T3v}x5F~mFU7K+KMKn{|1>N^{t7Jd zU1%&D_?xi|`=4Oh(EkO?Mt*)O2j7W37|X_fIhF@w(uL&x&oJivF)o2 ze#+nvRui|uH;%>nX@h@m#SJEa&%g(7OP`^c*2P5uwVp3Q2-CW$((jGui@9^!^Ll9Ce}I(z zKxjR00sVnKespL|!ABeV*=s#_LFhP=pX;W18u$WgzqqNp4CHCjU+bpjP4FM7{pM^n zs*Vb(w)mC)aq@$i6m|uvCjE2%+BA(#0lA3uZ{uC>b?UlA15p z;eWw8lz@BE`!jhGIST0H7Rad_YtC98l&T&X1hLWYXmEo25hp?HL^0PDRpc!23tPh@ zC!ft6k&%^_^ZAx=Ie;UNTh2*og=bO_-U{)Iop2WR=Hl?Mson$JuqSq=p^d|XM@5>0 z32$WiehwUbY5`^g8NG3q*Wo~C5*OIm+Uo+#n^?X-uaR3}wvo{fv}QWzcY=jt;7zk~ zz7^0A;uh9ij!tR3BgaEnLa{JQltwIa1%yW_9^{HD@*LRbnRc+gZNhy>z5CR%~y@ zl9w6j74Wa|D`h8DwsdV<@*gcf*z!YBtyH9-m$5IlJe}-J>!>1!S+hf|8TUGS%0To#Ueg}S~M_S$*ExC%^ zZ+Umi_nVm;tyvFirVou>;NgjITVi>WXnF^lK@hR06`Mm;kr}fMk6C^<&sjQums=4H zmEM8Bb~B-mfPaWzX_@7E2fntv+;W|=@El{`+w%SHSk#(TSTm^znIdE4?nmOG{RyA}IdQ6DO8PY_sz$Q4#R){1&Rp923FztU>US=jE;{gt&CW-VCku0`IN#>a4LkuI`~S!PW|Iv_$7 zex)OAgxVV&WG#-f7XL3UYixv3HbU)GUJQ$SxY5zpqV`7DTZZ z`U@;NpM{N%vlg<^bfphAV-Gb_4ihn(V9oZo<=U}k*;pJvDlL#~zP8z&Fx$d3OtogU zcl;x3G0j@+Z}VxUBI<18GG!yw-tj|VF&V$o>DEFv`U`uGy6vBBEl#u+=?!G+N>C!C z1-!dsW1VDU$(F@TpKv~eMZI0lteDv=uBpgcYcbneWYWhq71?er=2(kN5;AMq`<=-U70Eri#+o!b4soA4X~ z9r4nX^1Ao94EH4%s0n%9cfpGUrWbhKf3|@W3%%}l6$Z3&Qd_V4^EPmDC$IZI)@(*M zuX`>wAr5Bt^tv~+fm15H?z{vRWmbPL+6+qj2sV1^fV*%_EQd!>>J?4o0wJ@&6Wevz zpW83Q9-bp($xcG_VCfnD1pN0@UM=6)&@5rp8G6GQrH6-uZ2aTCfyZd4-L7Y7y#AxC2-f`IR1ly;K?ww21f` zYc6RVQqG3wN(dV%UY{k76>+;2S6WeaK#PqpH8F3nVkVv1qBkt2<5zl(_mYmxTtHcES}*&1smB`ekJ#~P8&m%9xhh`7#*8Q+;TZQI4#uD7;Qlv*5V z#fPmZTamk{k$F~p#EKc;nKf;@#@aq=ZDlK3++@Yat(b|PS^J*HY~(j<`-HU>M_N4e zdb8h8T2Yd##S^Ufv=uYHGi!3YHnP~-K4WcVD_VTmiqBe6wxY$at@ykZGrluxd;Z`l zuK7xn+!w5^Y(1ONA!_y$`Ew3jIf)^-G3U|FFs0QIz`kF@r(+r140WBte-MI-AWP()q8t{jxz2R}R znr*o^1Jzp%{Fdhh`QSyK|L7YS;ieG!Qhdjg=RVrtUb)s!f?r5&tBI&0S0VTa(R(KK zDzX{D?})Zp)J`5Y*;~$ykrY*^ZVk#KxY7^2rU1G_FA^T=Jv|wu*M#n`j|(Y22dlPgI?z{B5%%v?S<;axH zy{^)?QDqac8c+_E?sdJpC(#YS9BJL_R_#LeD5j7Pd>y*i-Ntw>cd4=D#5$c37n0-* zh9Mtl_F6{^M`?Ki!hD|DaxqpWqvEI}QNh>9tR$a1rWj0~f<-lhv$=iYvLJ7M9lR&E z;8|w!8k$LjTev1{E!GN7M}a5TkujKhifhkf(ImJB526andZwRwmX+$a+^&AyQ)L72 zQ2CLWdY*zZ3@nSihyWjJ!Yb4l{Xtd#TM$0hEGymrV@>)mTWhR~By^7sIkN-EQ7v~( zwFPDlr1v17m6@lX67xQXtD?@Qz%{-mEeVNrM~H<{_FrSvlsiM2PebDI zD|^E=?gSDieKX5=Fwhj@w_W3zAQzLqlVyB0(0_>Eb&Vedd5849EaRO(zY=eEjsFE{ zF&h*Q`~wB$fWHZ<=WoX{;D3o_ z(Eka`knbTu1%5u3ZT$$A6@Diy=X-un{tNh3{1@~`@L$NE&VL2|T>fk8FXO-Ym<8qr ztZc=v3==O%HgLCtOp1!_1U~?YD8s`_(F8|30QDsP)UDPPAfrfk8e@HQO$M4r{JC>< zMVEoxNBYJ3hqH6}A<$siW&YFnulzT$#LKy#;$OiTFvnv}NeE-{HnOap-Q@ zADIZ!q^sy;NE{zk_GcaGbV&U2K-ph)q{Wc7+=Fw?-_cAX8ol5`G%fg*ndhNw)AVM- zYk(zj%5zfpBi^`Bk%yqY!)W!;50cW;S4AI#{Y;)G?cjpwU;iy!3J%6630}FXJN`w?`4N*%va8qp+{op<)Iblei4thY>vg<7_{RC772Cm-c_-%8NotMY)8yf{`=jD+t z#jXUg^YZ9zzXsyY%cHlQd$Jj5Xy)Z14Jzp>R6vq}hGt$KM>^NWGV}6?#AITA5F5+P z%af7P^YTb~()032C_OI^LqYCZW?mjaI!QmmIS;z7FXzfp>PUypFw$F&#A3N4sx(O1m5A3`=+yNDP2ULb9qCFNrjE9fQqC)6-dAO;7F6R2jfSP%EXscR& zgr$D9kZT3M;8m^^*OGg%sAhjSDT_ZDq>!SJBC8RB^*hBylKtzB{A$GKXsudBye7eI zSScu9)P|Q#aipsJGo++#Fwi3ayx5bmBBRK0KX`8LOXuU2*z&8r&cA&dQv5Vz`L*bY ze+nP`m|gjG2=H5#{V-st9Iu{s{u5@SHzPJ)Jnj4q`eq!DRel2kf1Qm_&(Q%ckUAe0 z56F~bk!yDzR5IC=!QvAq9`OOG?*0a81+gpxzePzT8_oN)J*mgb=armK( za=f6~`3oe6C%p1C2%P$QQ1K%i<+v2+TzD|1jbz|<1g=U16yLrqzXO3AzSS?rm*0uN zpKvgdsm6_Fb$;N9dOC4yy=kMK< zgD+9u`%pj)@asJsP{;UBV11zfBVJt`R# z--qQeU#$zM;eG=wNBA4@jC`bj2Y4U; z3=e{!ya25^Uhb0uOLJXow212f5$A1Yaf=`H_604;AoS_eE{qj!q6m^2s3U%85RVRH zg;(~(ipPjSX!!*3xHAa-VL?3l4En?%9)kv>Y@7tg+4C1Ga3__PyZ*f~1;Z;3B z(tFTJ{n{XzUQ;8qq+%s~361bZpCFFeH15&S6*M~Ievd)VeVE=NUf~m~gFi_l^kfAs z{5p;BTA!fa`_kwKgMP1vj+;&dUfL6@vznz5daHuIZIMQJkxvkBIh%;T7{r^{2JJIQ zUNh3}@jjnKlsA$z`pqD@$*9rq2FYzpjs7&KXV0{IyuByBT8+UDHIT}r(4YysZdRJ* zShi&nqG~%fd}8@>@@?4Jx{7gp>V%}LwkSyq%`d<9SJ4$H9mmX&50U#}Cp0U6fF zvJq!v8{q^Rhu3hHFE8*u{)L?&3-$V_9Lx*Q`cU!$aH8tZp07UCi^fI(Yt1Nxb`wYdXJEKiG6_+Rkm z*F$S#G}#HcrVO_R=lmPx?VNZjd=xOh^j6;9#gW0l{NzM=N3#nmG6{(Nz4Bsuqz5X5?}5heXq87zA6b$wgBZfkL;H@}VV?c~mZNJSM<+wWv8o!iP-qmB{ljUwGv=rTS^YqoR z6K^K?Qfh~L`m24^RQOt;hlr2xMxf2GMfeoZ-4|jjN1AI0ZT%kb&}(7cU0(y4dhiQy z!yABmcx;QTlLLW%9S?kzH^uQC1@1fnxWwCxHpyDYfoq6+dR@^jSv(ea@8w8I%v+AO z$>KS{m*7`k>h(waWbx%dcM|vVa`O1Ps!sQRfY!AF?(ONf-8Fs*_+wfh?ae?dWUapj zdbK-ng?Wajt^Wlc(h@lCU5LicS~tHD^D5(4p74G}gJaLa;2A&{5%)1q0QDx90o_5|&r9^oSlY7X$SnKGypk4VcBlfKDV%dLgtq7M}{VoVeO+;oy}(j}Q;@iXHqS&`#pv zUJnO<2b8}Gc!XEw;8sArh(~$D9NZsh7V+`k__Na~i7W;hxgBlPSldQPPatv^IA4Y@ z=Q~y0^PuqX7O-!~C+OD5v^c*29dI-7MBSw6k*48RK)kvvpKQitu_037!-08uSw6*M z*Tv?_Kx;iU3r_&%{g(1qoWnXOO>+2jXuM7=-&j|>1RC$Sly9!9-3*Oi_b9i|uVfds z&vnrFbq{of^{pC5dleeL?t%VSZ7s3`8ecIf|J)1c=04pCQ{i7BPTYhH`a&WGbe`%B z=HC*Kk3^P#DeYvIb|^Gy%D-~s{fqlmx)0w@PQ13GBHen8Y)@jrLNrVo+4H(Qa@FV$ zb7Gp)3gx1aJ=Oo5L4O&mBU-ccUPX`h=K08joWM>Q~KYLom|u>LkY^xoK1u3VCj;6kSN$^Kj5 z%Ks2cTy3nIiY`0)n7ua@=I;UuzJ>^!izLEfyiwZwRDZ8T_=ORC4^QXaX}8ebO6)A4>xglgCrOFkhR{AVWxTVar_zQdH3sfC4*^$yc(Btnrzk*U|s%ZeucrS?NYcYAVun zE8XNs2Z=P#N~;{HwMf@k=@v)oAkw{7TJ1=kMA~SjTOH{Lkv_4~8b>M-X`hvDbEGnn z8a;;UHW>%e9gg&<U{l}3yR5I2kE8Xu%JlOELMl1c-kvdB<{H>=cO(`{FfJRM4s9v*4f+6*W9#6S z(DgBMEwo3eKjOrf$x7r>Kl%c+uc@1d!4h9|9sd_-&7Oe%xZ_`>SUcdpl%CXwqKY1e z&|H$IbgLw7RqQg5he`4LSCdT${Xp`JA&sSJeO|W=eYs;f9&Q-%I<5EfOt`BY1f?f_ zy4_cuwMn5=ys&48ZT z4xIx*$6&rC6&;TI=X#d;8xY?}`aqgzr3)QNAA@|gMPe;*BuQEHJxF?zI!9s-s%Y>b zBVFW3I@aNk^dxnTq+^Y<(qc!_v6e#8lhiTSywEMu<~{=2rX44#qXSKY+Siv>y3~=h zucqrfGfABz=~xLXEq5dxYZfH0J+^h3BkAnB(Mp#)lFq(YthB$Vm9u z#d>}8wlQx|=^Y&c+OY#{%_Og+x_(3#KuS@%wpOO;*XeQ|hOQ^6W6lMap)SZmwPZ5% zBy~)HOj6fnD{AUuIIpIdWW`Bd!ywmEG)vyjpsd}`HP-DE&$fA^vG&{}cr>#s#ZzqF zVq9G9VECI9&#QTSu<|FvyHh-w%FJwqIIXwZlj0dPk9m0%!{4TO+LQ^(=HM|%tM5`g zSEhJYO!54eVgsJyIj!JloYGP}g{641O0lI)G2>HATk2StRP$CyK>|&3YCMCyd(k9! z2=4NSDthG)0;lte%TzP6iptOg zUhqU7l()Mo2DtPr&;c*ysfvNzWiO;{F9E#?zluRFT?5i%azIrKcIi6MO|%{2(ybtT zdR8&irF=M9fGeAdV_jMV(t|YV(h88#q}3U!=V6LY1-^=s{#>}ufCsl@FQuh?8d9*L zx4#DemH!_sJ$&jI|Ng+QVwAl3<;02R;UcUDeiftZNR_~+P#RN5Iv1F?vMR>wSIL-j z!8Is!6+QYHBTaN9xeXs3XQj!Gq^FOc59u2GDo)e|B!$m?&lIqVt%AX$G@4-we|~pt zHoZ`>XRX00x-c`E$-IwXu$LZA)i=*1-MRz#2XK>TA)V$(Oo58F1U{V7>^f2@aFWs- zdNEs-2L;hlz`S8maYm-j1+{b{B;K#6IJ1s)9wgqbs5q;Rv>X!eR#ceRMkVpu;VqDO zv!ddhIu2i%;sAR}(E*$`R1RI+>xGgWFZBGC_1;2_r zU3vz{kN*Z$#a%AF1oTGQ-tE%WAaW?)qYoFdL5D+O^?@+K7k}h(-U>1y^!Q+da{lb zd=V`zeicv4ewiv#2{MiJnM_8gS?7XWMf#lBMsLBo99}QzxGW@7h;LcxMMu(wxDS$4 zw3j6@waP~)AlB$5Jk{P;PgT5X>UFdY$dUL}Y}83&0jp>)kYhQt|wDk=@PY`#= zO5i4-?}-og^!Z9#dpNOlTL8X@02X(&RS1 z$q^BG0PJn@!z||!t0JF+HQWf^*>WlSNFi7mc~{HjL>U(#5S z)(4uLe#%@;`y2;NPBP_nwX>kzieJUit|oaKz7Kp8wF*a5;rD>PBaUa`pMjd=YO5mQ zV0}D>i@}Fbt8z6dk?`^0(rfJJRFI$?I^j9cu67wTIX@1ltK9=lPLKngDr$T_ z3r)_DgX(JUL6cMD;JVtk(BvFBq^_2O=L2$*99ma92%4NFkFBFcxZ=bpNYe4=rs@k16*a@D9M@t5nn6 zQ1MmyKjO{J&=CUU`QRD2E`+FxcHu?C;%mLoCPvbs>vSlnU&{KL1{e(|2GMocQ=aaM zSH6J=S%%{2MuWD}UGzU9+1XVL3%zTsn`fmz9>}uqTSwUAeXj5 zN?+zvZhUu;`zJ?ybQz>sG=8Oybf=YG)vsT1Z*;8KGmzfkhBuj{inG|qz`vKF*fEi! zSj$88nD@59uNf@G9_s)+a4?*_o@Lz^xK}7o72{>t^d|K?2C?bTZs!K@YHV$78MLzF z;0`a!rZpA44|oRgTe_4o>59Gu>1Il1sFoxB3TY#yclh)>%V9Iz_xpv?){La0M}f8< z1^TW-W4x>0xi!*@cRSN*GI=-~npDqib+qW^(7N`Ax9yp#C0SrfZ9Vj>slUH}{bT6C z0nk6lR1BSk(co6x)xzZA#UIv+s=~#PIJIkWmA7z@-D_2_?)6+1uC!Vo?-tRdwqru_ z9&8bsd2RR__~*Z1S8-Y4H6SkL{BGX?VWM#c+nQjIW`^-yHkt%~$}sl8g#Aqxp0`y$ z?I}LY(^WKYAMxG5eB4v)dkq1+kj8HVOMUL_SO-7v&M1FF^4KIea*@`>6G*tDRuAa?`hvc&to#>pb_K4fRluF3JC7N`0BvzW5TAGZE#r zg-6_f-D5OY3bR(j!mHs(;*Bz)leo_e1q$7bOpfpfT>WEM^WOIup)?0t|2w|Qyn0vL>G zkArhqZ37j)$7;iCYvMtLx4}S~lH*N@>XO(8ysHI#j?Ti(KJe7jKj0*Ef_Xic4I*aD z1nw{aDIa4FSnXt_wH}*==K#M-d9PFA@i5hmcX&PwX5&4- z;*_V)6=?$%US+kK+M3>S#j{-N$OXV(()v`JX^~rj4x9{hnnmH~fW~omXFGYN!k++3^K-uE^xULp z5dIsQG%@qsEYw=d9VXrdZanE|gnL5ciyOrY>S`mbc9E-TpQk}2Gyb|`ssqNF}1fvDaeFrFf<+SAiLwL#fiYH ziA{G~&c(V4wYUY^XVg|2-*TRA@doh0Dc~C%tmA0|4>u7dp6!_v>yvz8cWAdTvi^F7 z?s>|2z3^m69zI`He7n>OEwMa;aVE9!F{|HETR%qh+?}4<&iHpaI_rUnKho-V)z)?V z+n_JO=c|hEmS#$C--*B1>T7H362B#nT^Y>RFnA5FG`!;eMRy$wcLM{VmyiJ}W02(K zQj%9tDK2WbNb;&GMIXtpzq1RT3{$_sxLVc%s43NKtdnF(zKofoP;ez`V8QcPqzujnk*H}$cF|M&vr7F3`x5!%uJ1bnB#p8PBjT5|piub_>o0@#eD>B_RCWin)@K>?%j)`3I|H%E|HZ1EA^B1AONwW)03I2(N_HxtH8+uDAdYcE=4 zEHw6t<7}HH8FZ-*5V_$fB| za$y%f7-xQ7*v0kNh1_&TMndB?T%5BDYVYR&eLnkV?y)dne>=Xw zoH3j&&#~IV+L2ZGdT1};7hmM`=s?HkzbPUpg&@#%q@Nvvsuxps|w@f6m#INyhuoc#RZ) zzOI&o_F8hoj+2n>Jtw*G`>!T9>^O;xhTD0;fa0Z4ywYo(E7#WXH+4a8M&$TAC}`67 zM=05M=}rfCm|&1rhV8UW7eXbHB!&N_Df|y4HD>@z;eTc7p2qh8^A*eZ*ID>OU@81v z=Av6$H^M1KcJ~`oz{Ekly9sDg_`BtSEWNRKb7LjZy+l3jbfDN$Par*FclP_X2uTj&?mXDf~bnlRA@(SD{Ja=hV?u zIQE-4aJv|%`sg1A%q!G**DSn*7}uQfZdv$#U|zV!4|k9L@S7GNk!AfeFt1SKM`q!o z-}Uuuyn7a|0ItC=-Xk#MpL82na4Jyvd@OFGc9g4y?*ZCIToSlNqDW)Z@e39k$|xQU zgnOcqnv7q(r)v^E1xRAX0`F%w*6|y}{FBy)2Et9@p&z}Jx+dY#K;p1h7G4DWFs;k7 z@GC&Pl#Q1=85U&gp~AmIlLkK_pZT(ldh5UN^}T#VsdS_0^FSY~RXJH_&L1=Gz_*v-N#rxLv`IgoC)s5%Z!tEK$`ojUQ#4r9qh*5)-RL&}p*GWH2r$kr2 z`tO0ZLaO5*X?rQ7^B9v0m2(KRU0*=|IK7cfL5p|&F6@+3VaP#p@x8nrsJ{}y7a80q ze${^RtYL6AGN@Dh;e1YKan5>V^`k1EeP*_%@yCMsOZEoT>KtU?t~Kf|ysb}as4#-DEIryL4AfYPh$;iLX=tj@RsySg#R zFmGI*fXIdMYI*$Cj>qqCmH#$o^_4vz5z7C-u8%Cp8H~qgC*c=A;aa9>HC^P)v2cte z^A3S40N2rStYi7Ch2tE{&j43r8}SJxX`k{EDrd|H#z*-ttix9Pe_)31^ahckQD*bR z5H}QL9F=n<$gA`*NgPYM>JJ4xg{G6WDJ8rB&C*TYi1q69ny_jfLCMTwp&VW-acp#p z&um0nmCybMkHq+_!hCi*creCKZJTo!vh^M2^6Uy!;ZPr`#~%SS_zG~21DgU!4xTYI zV_5+xnRTWEPqmh3N%Z03^G0iVwgWc<4sL+S{LW2pD99s1)z3wFmat6chIIVC2uS0; zFdbhXl{pKbNb`MBEhY90l*YT@SYQ%O(fssn#7PGg%sBczC^#G;3gP1 z{}Shc=9AEjr~aWaN4hr&4s4D(k@)PurU)gz;?w5DSMr2;`T+o6tNa%a$MjrHv5vWH za;`x&+=5?XPg9I#4~D^2UK~qys}o;L*#<3$+L-u(Z9!2Ju3}z~gJhNu31R*YhV=ap zZGZ_j1nKEP3K-`f6DQmPAr?qNd97vie8#eY_zR#TF02E$5iYa#Ij+5EkqOXv_ang< z(?=S0|C=rW!P{|3xk8VNghoW__e zO0_=-FCR2^ts?_~`LH)pU=t;M=g2JZz2r>{R}nT=yeX2v3~`cv6@C(kH$@Wm8&$Hc z$Sz>s6iM*qG}%*qQ>0mLKyHd8?8|AHJ&p8(#+xDuOdV&upA5vCB8eiCWO1c?aMwWN zO_4+^b5q38o`S}kA_+S!hipd2+YOB^RidrADI%J_-EknQrD*MHYq}i>^XO;OmS}J8 zc{q+wv|5MSn(2gH4+GvzNpv)q+-{1kc5v;;D*QP#-b_gxVs4Lcqbgj01BN$K5}mSe z4~q|Vut~uL3~=jy6F(#6J8l97_Jj%~k9XvZsE?^r z^C~t`nS~bt^C~t`Wo}_;>j!}4AnRieB;sJ1Y~T}Ua**|{t2M44kgM24e=iPWll*YZ z;z4HLxmV`$aWXVst|pRMQI=UeqHdIjq46pkn;2JDn+Q#E!#@6!?e&%1nAXVThP}g@(NMT@+aht2Q@FFtZHvU&D9vN( z;vgC&&M`qmTXniTk|x>^v0BL#l5vni8|9?+z~Z>giH@SPClVBKV# z>SO;kVBVidY|g?z6XT9U;gxW4`OHkeITuj#Chmw=EJcdEttJfZVo7yyu#P=KzbtZCQ9VFmGEV zwrAnDfqD6x_`sVkmC0%IlTD2Fp*K@Brol9=A422pj>Jb!MhAIZsBk_yMxyO-HRiAi z_k$+Q^=D3Vt->>ac`GFGxf?~F5U;k{7fx}QWIP3pw?YzM*46evceI?!RIU5>pCnSC}N2nA~i<^OYTOffcR-~|7yavLHwghHa zk<4YkQ5F6R%q#4~pWbX_t5hc0so?gdeE!%4rzO$M#=Hdssi>*;Q4i^C8)nZyeS(d}a4IY7Lxk;u{aHKZ0u z^H}(pm2w?PTChS7-R7h5OXN9{bcgqMp)eD9(lGc7@}yg$BEJuw7RqV4pK8v2bN=PO zV+u&5H_<qe7Qyf~ z{1U@C-%cn3s++p{_+W(EL}i4gG9ORQJ0Ma!MzRuUr41u>voUq_oG>nfI^vfY#eS(6 zs`{M)`Vk&)KoWuLt8ra1TDy|gxqc1k6*N0RQ~Jgo9gs&z$1rELgPi98cs-k#NT{np z4kj&<>)FJl3{=SlNN|#%nq`%gMMnhBb*f6TM;fRkFM1jV&&Ksmr^MCyBiH8Yi==B+ z{=K&<)pQBAdR<7a$@%OraeYDhnmn|IntC4_0%D$O1eHpQ;5w$Hu6;4W2 z>>D734Ohmqa08&W#0j$((I`S6t?^W4rJfK@QX8uT6+@1!(% zGMX5>kN*LAj&z7iH-fPDRC(;zNU*aTD*6E=cAhGeb)-Fz{-CdFN0O=fqqzqK)PeX_ z4y!GxBvYDXRZDR#wHI5g=2Ux4a@A7GS5u08`0|0jF#=HL(nuRI=R}mzfU^8lxI(w8t@WoLmE4YT|dbbQOIF zlGMcS>qxIdlA8GA60F&M+=+FmiF;l8E2z}OpO>d?gEI4Mw0=ud6Mv~AwS*)!ai1fx zKvXmeNowM+wWV+j5@&#{^vn#9lFj%$5OOWaYMG*o6oaYjkeX^vHrXV%MH@7YRo(Ls z!NksNeyXOa{1I>?>#1N7^(r)t!;4r)C4{Dtq0Eu5qN5Ol6|%}SjmOhEIs=s7s;ny0 z4V$KOLHW_js&a?MmVw@kUsZ3%yNcZgw1N0&7e^lldY?G%_=tW3@&{?9ZVn{P(Z50V z_5-bQX(ObNMN`#x9M+6;nE^Q327rx3RlhpY;gDD~RRbJJ&p1_KrDGgP&p0*IN&_8< z30F}97HHLAN77}@SwAnuuS(B;A)ofr-}h2UmR*vinBrQh24>Z?Z<0F(lXVwVebAZZ zNk3I#v^p$M2{c5jLyM{%UMSLH=o5n&&9pk#Vgr)trp;(W2hoQ?rRYD` z?TeqV(osfmWvI(LiKyv>C7z@@{>k$!XR3i-Q^@N3-2oX*i>AW0#AUq>3tEwGS(a3m%eH5!r>*N=6ixsar|ev*CD zpG1{yg>Qny8D6WDnc-D(LnT>aNtRuTYpE_sV>RbvZIaud7v^5-(>?zQ#9|5e8Ljf4 zNw0^BsQ1B9xvVYAP(nB=8FH$L<}t%r-!g}+tf}Y=@X5mKV>&Na&|h>L=n)szQ+>+0 zZ7-zh*Pw@?OVg*fOMe3mAV z?Ca9upzUtP2dDZuG&TkFLV6hB=f`t)P~nicBc4L zbU7?|4*OT%y}wbL{>+O`N(YNz>5 zlct?PrFMQJ2e9$m8&qoNZkG-PmD>5OODBLz?flNAr-E`UMV}uW8e0T<6MlVubn;6@ z?*#g7BPzIVMRX!!kAuERV@y>qSw~MQ`aaN4#QQRygEAR?^iSYs?I8UoxoUQ%El3&Z z?=BqxGK2K5XWQEh6*s||%y4-U{a@(8KHL2>@n89iu=Mzo~q6-H*n8UYmU9AN)PTbw6iJ7=tsxF@BqqvhiqUD^DIt$rcJr|26 zxkunL9|e75`8*2Pi1l5q@>%y~{nlVUYrL$l3FWh%%ld5%ix{tOnHT!zFdp#|D%T9?_ehfR4gB;9r2JX+zF_hcxV>x3p9rK*epB^ zh@GXrIM1YWSH;c*WF!KHVAJWV>rr5izbnD!m((AW;ppJ+SYB!Wez zVt)Y@6a!Dl!i7Lxh$m*@otx=OKpzuN&BA+t z3Jw9DmWA5@9Zj6d!p8uymFqj*;PgSFViT=)q8lYT514IV-;*-+GILm|==D}V+0peC z&0~;w1>Sc?MpCi2LBGPUFJ^g5*BO0y#=f)KEH@3Y`kiobk6+)@YDaNW66*wuezcmc zkDgl7$LTrbVnbn3L#zLXu`>_wsrvu_z3=yB-n?rJC5*{laXYpadPk9U#xT5ROd~>B z8WkehqHI};LW;CoT9g*0REkOoEfk3sZAx0SFIx0_yw16I-e+d?`F;O*zh3t|pRaT7 zx#yncbzkqhjQw9_U5Ujau^RWk%DM}SC&g;Q|0v6U4vU>)H8Ir;sd}fj9REYC2i&QCaQx<(4@lXu?ScF8>oPTf z^)%`a2C7@1NoTrM;W3O-#~%yjHh`K@j+zZ6uQBa%-7ie4L4hXMZBX*^(=Id1QLCWj zc8V^+OU~txJ;`P6u=6*C{G8MzY^HokJN{=Of4#-0dbNKz{2> zs^-Amg_>86>H~b0P&Zmdn**K#yi%z7R<6Swn&UTC5k4jbwV)g|09dXYyDYSt$>bUb zCD)BzZZ1m^2Bfu;vi26sR`C&blOM&tYK57|jIO7ruc0c^CS7|HfDX5NdFdO%?PM%{ zbGV&s;6KO2L-`pCd3K z>XIXH64QWXo$K1shW*=t~hq8 zD7oP8np2MY6-qAnyLKx_Rpi|0T)7q{?xy3{fYQ0Tm!3Dqgb|z8*+5{jS+P! zJixcu>UH_oEs5Q98NtVB!q`ohk&#%_XMQwMoi0~IGMcVl9wbIZYF3uaT_O=T_RE=^ za+8b(Npp>+#N)b9pVTcMLQQ|hIT-Tt`ilK=fVDXzc2<^wk^k0;2?6B-Vz5-Y~ za+ONK&jM>tu5u}OJFs@S;t^?zu#khm+QU0GBJ~O3zk#)jmtG1^ZyNY`RZ77PfVGpC zQ3`Gito^xarQoi>+MzqnhBJ$RrKfi}K0JDTqBDnsYnQHiX?!ZU^z|+$l*Si>Yp1S8 zY5Wmz?bX#Rjc)|kZe6WXc>HZ}?R(XZn9E($>IZ+ivVK?<-ET541J}M}gVOi{aP3SsER8=2uD!`drSU!B+QBVkaP8%tS{lCwT)TOyG`dAe{F0 zT3MWvIT2X9duN6FvMO>@NG3wkw9doe+Tm*x;w71^>SS)hOnZE7F_XUN9VsuI%+E2? zF5kKTv$TIO(>`Cj|5;jH{yx)A-+BM5w0JAbwAa_cYK~OpQ(I2F7pB_n>l88n`J|0**eqC%ha~`nv{JPrJax#~LYu7KkH2y5O_Wg1~T+h_;-Qe2!%Pm!J zhJzD72&cWj?&Z0^;k5hLBNA;Tlc}r-p8on^JpHu5|H~`S)q~RxU@vQK4)UEHa!H#r z-K}rP<=b3IH*w-uVxXP6g7THU0Zw~$y~}eC!fCfIeAq~LEOQ{Q!fC&*$j%qzc%69B z8G&Qhr#v?mPJ4D2*bQLv-43T+yT0YQwQ%y;wJt*<;@gEw(GH;R1RiR`PEuB}q%7@8 zX@_D-79UIH@~a{0RCtIi^}3$uHWhzREV`a8{|$$UHr#(I9-(I1x*1KyCDe&?+?tgo zb60s0Q8)G0I+r!<$aq{d0j^*a~!z#7gcHeMsV#g%6m91`}@JQ z$JneC9)A&ByNoT|((s5!wMfqdZp+ zPJ4i7mgi1`>metxwJR>58`EvN2{Nt@AdgW$Bac;oA=A|(*i=!GvsrFc99dOW zLsnCn$m3Lf+{rc0Dy5SznDsHc;0f8>;J&jnq8kNoo=DWVIZ5iduzitcJ0#CTiC?guhiQ z>UpYq0$iyL$foKIkY;K#+s)Nrwp*w-*lww^T049m`5m@TS05tJPzR7_s-Kaq)W68q zs#2SXbC&9J9(T{Gs%)RFY9ZSw=L{Z@Q6Bp}M>POBSDlJ%r%pq*SLY(nQ(cf9)PC}I zR6W@4q}pN62au^l7gYe#RrNz=tHH<|H4@oPO+@CZ>B#QtIP80t1<0OiF|wDs z8<|uGVDr^OY!|3!kiFGLWTD!QJYRjtUW(LvZ1+*qPjj3L)IPTRsxOfJ)DOrD)gQ?I z%4y4OpDKnNsH!3_Qnip5t9r;m>SW|#)f_oQwMGtA?U0wK9>`+V8#zq%MP8~JQJ>4y z#cW@$ijl+BNaP4L0Xb4lL0+MLpeCbKzxEMlw3-carJ9c%qn0ACQU|H?SalEE zssn1it8!2aT$P7f=&JKkH@m7IYLTl3qi%84C8%3nbvbIWtEO;ROI$UY)NQUBhg!-f z#!8cx1ce!d2>TXvpLEYo3dr|kg>VDKRS3QJU?y5DY6|Q;?wbE4^ zQTMrOGwOaQO#JgnG8`Uds7tA0Se!O^1Lbk(1zw_NovYP+kvc07sYstnZI zt~ws|j;m^-cG424U9M_{de>E*QM)N8iZKz;72RjB>0dII%@t6o5T>8h=$1Fm`x^%Wf& zb&%sjea&e^edDShQQx}iFzP!F40Xs=6&PaQyDEStFqM*YI^ zp?>A0qJHBrQNO#Y8|n{N^+Fw{U!(ryFj0TeE~h)r-yAKee>hsy5m&7S{Fj3!H8rAU zpr%FC4XEi6^)YYSpAk{>NnICFOHnf;Y6WUmM6E{6j;QBRb0X?grq%1=m?dtAsI7o= zBWgQpUPLtkyfLD#=h4KQBI*+MH$S3wl3_ta?ZsqaMBNW}b3}bjYEeY}fVw53{zlyz zQI(i07DrSbCQBmfYSe8JRSj@yMAbsw9#Jl3-Vsr2;qHv61ElVXC?D?bi0VV?o`|{% zb#Fv91zZ+Utx(G&svT-YL}jB^MpPl{zK9xtx<8_(Q0oUGs+iP+5jBbGu7X276j86h zJseS2!mW;|ZWR4UL`^64XhiKM^%yNk>T!;p)S8I8nbZ>zwFLEKL@lPCYa{9&QcrR0 zsHY?9BfxbL^$4kFI26>g5w#xmTtvN#T8|0p`H1=!^+H4)Ms0|wiZ~D(BPt#BVnlsG z&0dPA>ZD$ds5+=k5!DFwN<_6py&6$xqc%rWC)8^+D{4zb6`{69)D@_05j7U|dPHr; z-*|%)N9xUpT7-Iw%A>YZdDM=Gx)1esL_LIhhgzd{M%1oWjeGn281-31 zU55HRq9&sD)8wcxNZ}oP8Bw!P2O{bgz^Gb^%uvgaC#Xk}HPkamCfnO_7EV?hNOV%0 zkptBZWTAQ=IY51d9HK7g%rGJUMuIisPZSH4(~05D(zoMr$LZfwe7J!Tbu6HxY9d*D zkP)SjQFR8=Qyq{MR5xTrl|-hgzQ~vwimar@BP*+E$hf*5d5oHmJXS45rmJPhDrz+{ zL#;(tRnH@bpTmIeTS^6enr+&e(^0MrsQ3BsB+lvYL-PMJ+`(Ru3SXs0~P8Z9<-^ zwj!0n}7Mz&VnkY}kR zGNA?{&sN3AHfj{It(u5DN6kf^t8PWMQ+FZTs};!e)T77_Y9q3vdJWl0ZAW%idyrk! zSIDmFS7f&O6PcqTUB!v3gv?ddklj^XWDnIGnWu7)JylO+FLgdLsRkhP)g{ORH5}Pn zjYAfyYmn!w*~lU_AK6FUj=VtKgY2uGVPE~!Dz-0FPb2%Q7mx$gCgec%0rDcXA9=C* z4mn8uiX5!|K@L&TY;od_MP8z+A&XTF;bUIYoVfWNdtcn&zsXP}5!Y7itCzc8+%9Dxqe&stRhBtLma~;(QcN+?gnx zxOOO3McMq6i(a*6i(dhD4e+6D4e)YP&jd4qHy94p>X1UM&ZP{-Lw-|6Sa)Wqn0z! zQ7c^46onIaI*NIv8;Ut2iNcAy2!#`ODGDcUBnl_)Y7|b~3=~e>4Je$rMJSxOyHPlC zD^WOct5G;{Yf(?QYCQ@k?qw8C+`A~8xKB_xacvpoIC1}w!ih`E)lOU{3MY=YF^Ut{ z422VyK;gu7M&ZQuMB&8sLA^*Lqh4~=DAddNfT&HhE(#~^VbrU5uBgp;t|*+i%_y9> zEAzAy_Yobadl8Qag9(oai^ki;##5J;q;?$;<8aVaXnBt zaTlU+;s&8`;;usB#7#!w#LYnA#4SMK#NCg=iCc@piCd4tiQ9z2iQA3(#8vxIpW=R@ zKBG!Kv=f(!!ihTx^#x}W^(DR)3MVcbg%j5cg%dXvg%dXgg%h_Jg%h_Dg%kG>3McLv z)c1JwD4e)0D4e*xsGrz73McLx6i(bB5Dl^CvF`ICvF3(rP_n!L*hvG zoz5zDn)-~ymFgt6>1wS}oThFl&Ottkmc0NqleJ1mJ{~9))_9a*VqzP5U3{ld))YCE!)`Ush+4kBx- zUy)fVl9Y9^3bKyMMAlV}k@Zw7WPQ~U*+6wiHdN;$8>u14lhhdG$!ZGn6g8_z*2TGO zH&M4Cef0qHRP`iMsW*^K)m~&X^(C^o`VrYe9YMBK$K=atI2n1mIvsh2>V!N~JwZFP zQc1R3s{zQf)No`%O-G)s?n1Uv&m!BZEy#1!yU26Zeq=lK6SBRE7Rb6-1=&GmAv>zZ z$WE#iva{-l?4o)hyQ+c6Y&9C0qoyLesl~`#buY5JdK}q9J&(*&+mJog`^aAE8)QyD1LRQE40(w<2U)Cgkpwr8m#Qm~m#JyU%hdwpaCJ9w zgj$UpsWu?5P_H9LslCY2>MP`x>M(MQI_7*?7i%ELs`|)rsx@-F>WZA8ijWgkG4g6P z9yv+PLrzw=Bd<{pA+J@>Ag8F;k*tfmQPY@rP}5y?1jV{|41MJ~784ZfVoMb3;yEbR z#U3cu#eOK(#Y<2(Fw3G?7pI_D7jH$eF5Zi(pq@c8hBOom&ziJyhRX=3nvH1DVe{V+IR3|@$u zyFjFNb_tU(m>>olqVkAn`CZ(J!67l&7;VQs%Nx9m!AT=9crluLRD**Uj2DBKqVmv8 z`4ZxNabm>a<)}P5Q{JE%2D%+yvD=|*FM`{q9eQJ++u>Ea9V~-M80dD`Y`24Da1RE$ z9bU8B!7_LS1Kkc=>~^pW4q>3%VXNH^mO-t4K|5@-+rctuhk(;*W;h9-EV%>BKjO++LfL zq2d`|IO+~0L0TkU z)kc(V?t^v#x(d30_@U6?Yui9q!5GvZh;zU%`&-+Z7o&!w@V<7b|elE9*;AI~e z=w19$ZWqR2UAT*1%k9D#?8D$Me%XIUZz@?$oOtYFyhMK4f0cq;0re30?^19f&`5#* zDFsgex>evKrQqd28wLKi6#NFzR{}epU6WscP89AqExx!{9SWcQ6KNUV>-m&53g2IY1W+9P?z(HR4Z6MQiU{L*%pboWc1N~pP>Fw=9 zgG}2%Chnkw%R_^Dwt=3#O$m!bgZf7`2&VU!L#qb1m7d;BG2ev-jgD#%6jQ61s}O$K zjRPy~3%?=N)dw{m7t(2TDt&MEaIBU^b+>to9A5U4sJe^|{sBZr)Iy}AR_N^)kWnYT zggj45KHqzFV5(Pd1d=C~vX#D7JD8P>bG{Q!9yrWyTAn)qciaeyYi=s*iGS_H8v*4B z+#-PWodxj$K(hpH8NlLpJDIlvJt6REp6ls-j(vgTAK%5C>@z&MN5UQZCO}=5rtC8f z5dRFI(MU42_Woebb@iUT)TMsBBjgw{ILrH|#K6hC7wCO~&-Q}Lj4imWPNN9(;YWhc zH4VD-3Te>kQS}X=qa2d1Iu038jfGMjkTEp?nV}{l>pAf{S8<`sFT0H=g@$uOH=r2; zpBtRflyBY%Uouz=G4Qg_@zi`a9JLI|Sl@)wS=-rJwWp}F#+|V^g8Z`2vkjWfqN(cZ zP)H}wTugm|YvXXUN%aKPZr(}1o^v-?^EpnU@|i@>Iy+8t9;N+6?EG^;Pj##$8gEnc!UVGZM9YMwm+RL_G0wSNlZl1Jl zw}fcEZTlzaayfzm8*SOz^y=n?=6-ppuNP(HIQ|eQ>D0}G2W(SR)@@MD`vk|4wM0@E z1gR4>*UzLpsg`5RFAN}4_`~Fp%h~4rV|s~@HVyXsQAiE5D662Wf`X3KwM?h)>w?Bw z)`n^a^>G9CaZT#joWw{_xdLv^11Ng0lF#v%1MlM3e1_~QVoq|U_d$LeN)fXRQ2PT& z{lT21Y-Rj)29XoF38`3;#or_HWh;4DwuDFuRxHV4Neh?>QFA<6}T=#w_tzN$4OyaV$?x?I`Q-OHI=VgYgH=~aqIAvtbD`uu%(~ZEl+4PGe|bpFv?!D7HmGHiYnDZsT(5@IY>P6veu6r+4!N$E zR^w}f9D?K5y^Q9n4?0&0FsNtB>Jd`&EXtHM32LF_y3wLcu2ms*lSP?a??Jf@$Ti=h zO!GxA52yteWty*fNG-G|Q(%9n6;j~MDa!G$2bE4;_ZHKs&4E4z+NdGu;uLE7hyOKH zu~19OG@5zhC|ZXew?X*3rRBUl`hpftZK+1T+nFYlQh_mYER)$tzDwKY3z?LTliV*! z*(w&ZQEy|piw?b-$Md_OPhoMZjwkTN}9lz1&fSPGh zCRa}=)2%Ja{SlI@ppilZY>2E)H7xM9a8fw%9Pdk%CK8o zl*!dQq;9e(lWQuJ+koyd-=a+OJrq(4EXp+Bu8>-2QKmp=OxUec6z}x`wY#-B(B7bS zw-(g&4}Uh4>DFZ$E$G(I!kca_E$96v-CBfGTdHBYwNyZN>jE~Ct0_ER$fR_foG0FqIYS#7%H(}IfW#&CI?6SUzTtEh*}R-7Y7mTG_<4I3p2I7>Y+9H`)n2mNgd$UZaCFj+$hvhGY`iEc6=5o}rvvKa?j~~W&<+12=3dSlY9X3SA0(es=nF5;rRBV577(eAX4?gxu@LU-a@lGDcM1t~ zehNx7lk*=y*Pg}L{aMmM2h&ud(#`xK$uEbG1eC4%x!}Kkkmlt4R(41JIH)Hi+wbM5 z^}suXI&Aldy&!3eKzV0vnf)X(z%}<*z`enI?fA`she?*d%k5(%@NA)uSo`o7fovD_ z-?AAp_W)PE11 zT2D+){9E8dMYzBkDjzdI5itBW=Y_eGf3wPvW*3~RnVcOO1leaoxqn^r8#3? z0NO2Zv8!V;@y|*0Tmmr60Nw{lqoNO2u5gV z7(Tv}c3_n8k8?Wu`PUeyH>dj#fPs~n814_L9u{T1wm+f7v(3q~C|R~0zt^<^)zhN% zQTg|WR4)~P zM5E_R+l1&2&=c@2a*E6hXlzfOW*p5N{Z8c2b`q#~)H!{nb_VrKMc)aj3oXi2w8``! z*8qz$6`cwt*N{0ES(GX8y^tDYQKrCVGlE=0EXou(6UuEsftOg6Iiv4~)G&(*E-$YO za$ROoW?!>HYPdz2eSHMALiRN>MLGUybaHXVb4Hs9SlZKcY=1#WU1?FetlF}(L(sJ) z`6C-nQVPx3FkS|ZPmc?)3!8K9{^PoEjqFO7S8`pbp^IcFq&*FLwCh4`Qu?}3L;aY< z9Dm=0@Vamh`Q4bNOoLXP7*NwK$~0)FkeXppx@P`FD05wCQF^fYkA~Dti!!-BhcefN z7G-kPygHy}Ta?Mw1Ik<%N~^iCk2nO!pAKrS3(YtX)H7v06H@am%9M2o%7i;C%H(P^ zDWGn$D3hx%l=R2C^DW9W-%TO4z@kj^y&O^tEy@)52b6TWx;LjN?!TH``nu2@=tZFR zb)h~`Q_NjZ=DM&p|qTLH+?}1(?QL3p;SO$7hcXr@)cS!UkXo3$4Ty# zq-+(7S@JVUmSm8wT`VH`r{J>18)k1xb@Jm!|7Ry(EGyXDp`6H)POhQOWO35&fIV6# z*CwSqxrU1j=-Bi;@cr$G;<_ zW?Ga!9)Aav>Esq=a#ffcc5;g{xz2_%om^UtfFy^&WDjaOxfEbf&y;mvNX@e-Q`QGi zrjuKg$yIe;*vT!*c$xkFHPFBW+cu~bqUxxTau)~7=D_Ha@k}*WaF}IPd zCdnF-tR~6&k~~?GCrYw~B+ry&6G^s{WG6|UA;~;R79grtm_0S>)a-Uv`iyZE_4|an z^>@ycm5YsTJyNKb!!bMldr)$%(XD4W z>IW#feCd`fOI6Y5=K_6tQca^jA>v7G9AnV0tbv>oW8fsO!Y+RzBI6!TSyEahDLtoZ zg%RvG^fvCo;6J>Lx-7}wU9?DQBG%AbQh~Haut%GSwMprTSVIr%iFnPVsDAHQ-DzFO z&+DLNALg|02&w57WoDA^Lu!Ua>6-Z&lcT{zY*BNhhJMSCnrTrcS3Z=Ph%L(G8WU2p zEz0D&1+xoTe%P&ZkW$#o8t znTRdQG++OaT3}J8`K}46g%)KBya&om#3{=0H-g$xXmg++gW40Zpr(KLF?y7lh|4ru zFcG(aHxse6oOehjVi8VlsfL+|r2={)-pfYvGz!lbGASJ=d7dO?t60pEy(B4H#eHRK zAfl?*XiC(HbsMh#uYMmds@p;*OR#Rd)^I=RAjOLeC1r-EF&G^{g_PrDHIzKO*HGv2 z&nBe@=@>Ie4@zEb==X=xqyDOL)Kn-v>c^I&RzOLRy4(0e6jf@^y0-j>sq6Q%RM~$u zw4P*HYbx<2l!T?b@n%7tLo6J>GE=**)f8*jW-dAlO4n*?IqDK9U8`x-uKhMnmQfe^o95+3f{ckk0zu94HP(AzKWM+SZ z_5;R&r1Z&R*&3#W>@j)W8?IBw8~QNM8RXvMHtl#Xt|cyb z?sqshs|cH)50Lw-+q4*cnh=K~u|}I9CJOP3+w^+TLVO>|XtWFBW&wV8o8E&SBE%1o znvK4IcuVuMy(MNWDhCLG%;iC%5S)^kN}?iZpH%C(M4W5I?$2ccA4A<^CLL z(R6cr^BJeyUm|BU{SZbbliXh;ZJT}-CVq>wZ+e)7oa@}*Bb}N?mhmhYZyCw`Ba)q2 zg+w2IxqlL4s*Z^#_4lN%PUfhP{2Nm8TV#A4+KLlUMo6 z>GNs`lE;dXp1KtoQ`3+cYCf`_x*yqItw-{Y$}Ukn3NFf1KZ}Yv@y?X34=HBXOwP0? z{h(}p;`d;`QR;sgu;KWCQKOkIvyDY=K1Ri<5qLbUe%IC!Qgm5D(ixdA7cso9D z?nx2pQKsuS@#7xi-#>o2CkNK1?3O_L=%2Z#MC4S5*15nV#kz4sPJRea1-e_{CZ(GE zVIcXmdafVQvzIwl&DU^XnXkgVDqQnO(2K>yiGK_}r8amAJCAUl$#?{Vo%=i|m-oGy z0!_wROc2}drVeKWb-12+!`frK9R}y~rM%oT%NghrYRMFntKaN)J>BYGZhvtq4-rhi z&<)IqUqMo4vD`MMjM!lf&jHrQ-?kL|0I+V`b4=R?)*FGvY33yyx@`k^H?Sw8v7Kq# z0R9qhKo=dl{G3kJFoJC)9OG5B15xfca( zWO~C&pxpwGDFy!ybiz{LM*>*RQ0koMEhk?65&m}Ja|pSQ+Eyvksq!+V_?cK`udCqX zKK8$?dSf-2U+&|9RrCf9x}+>8J|FT$F?c30kOMFksrfPZAHuDVL}cR7XSlvT>(57G zzew{PE5%h4p{Eu-W=p1CGyUmtFB7`?%$qJ>PlS5%8}TT4bMNKZS2i3~4aqA!kP&r~ zP^u*|rrIJiR7Yez)eYHRC6P>leMCjnMWQ^%RPME)a`mZ~Q*#oOxEr}!A}0fwdK+p1 z)JA@}TlK-49wCS1)Yt}`b_~t?Mo^d>q*LP;;7X5?<4prQHPcBo738gm9Hi-lHO~g= zE9iFJWdn2=$c=*T&^yvw#jL_VNxJC6z;!5hHJDCBM+*ilDNsv+1cm&--or0{OI<~LGJqRy@ z*HdRA>#Jj$I6OZ3659>c8OTPeCgq%@CSrfGs>60;)d+dIQpht@TV!1|YB`sTYW9;% zM(Sk#KZ>i{esFjcw!;f9kHY3{b$Jwa1hR_S?C^C;B{z>$RdQQuH6`B=I8MoXZI4%l zP2^En`5f8_O1^eeL&-NtYAX32RV^joFv?U7zU8_?Nzmm)C9#$|YR|(i53-H|S4zSy zO_fAhnkfmcG*=Q+X`wn(&ofmoWGmGV*;>gpxUa+~KTQn*IYo^^#?)kFC3QVAOD#sW zRNu~w()qhK@tpHi<(3|gr&f5*pUJ$y$_qtYB_8dRb#Bj8|D7#hrx5y zlgMsrJu+AQa5tYKR9o2Yp>`qjRQDgFJf7;2x0m_^B&ohZ=BrU2#>M%G95~H`s7{>=tW8oj^x)Vz*ziMQkYdv#%w9a7-X?+_NGgyTA?mJ zP8gnO3;7@6i48KcMievkGn676H5UG^-Ni9Lu#HynX-mLnec=~nOrx8)J+y;a;<}M z8_1s_7G;`mUq~&mDARlu?hkS;v?xl`hFXt<7&&t^+s$eV>h zI|*i_^@f?`^+WQ8Q85)!EIEsH@+!9SUlHP3ZK+p}5>LZP-l9?Yw}St6#7so76F)Y?wt#DS0zm7pd@(GojVNlF2%y}uK`}luY2%ym+>0C7i6QL!Pi|3x)tP0L3>CScVh-U z1hT0n*Ti`?T6uQVIfY+$^9{eiwmC>r&|bD}e~{^dCT(;f$T~suZS*yeF9a>H(L*5d zIiQ6$dK}2vf}U@qxgf&@4Q>RGqtH*-F+&00BGd&Y+My{kX72&sEL6W#SwXIMfd3Tg z!g5sF^-=x)oPMz0L9glzPsN?y9 zm#aR$Gs?A4!@Htf3tfuzoThEBuIOx$Y*k%vs#~FQ-p}cuQqubZ{mCm)Kz>R8b90&_ zPn+ib>ZEtOs-oHcEt0+r?^@%(d+85^+kaF{|B@0kemLed{hEY-Gls5f%KIx--rr98 z_o3}Sk@TO#?IWK4%DXP(--=C3%A+$lO^;wTNeYa)&ehZ};x;X*V3e1PuMTVCxsj%8 z!bAnvYx-=MsOVN~y5^gp@@Z12M+3 zlA5MVp`CbMX+1HoybSRJGxOHbD*TNkQEMNKbwz>Z185o3_$#Cot9FgKQd-kYi9hA7j%{@sSdU53y-T`d47Z z*VZ&NIt85{KyMHvbNnMWo9QI4=xx%as49yBs;@=qg8cd+)!(9Y>-gtENo+4~pc!Sm z^=^tl<&89XgUoDW(91$}a0>NS-$K3g4f1zDdwHGIJhY=0AzdeNKk9XUd3@bWADV8t z#NH4d7Qnjo67DU5HD5PNHP@(9fjjZbyIkMJ>i1;(L+RBcr0v|8soo$^-DO9a=}DuB zaiC8xz?MJlbdf?j{ygAi{PM<_+0Yn22(nR79+uR``ep9^Rv$5|!&AAstyI^IUV z2i2oCSmsQ@kz1oqU#SKE)}?BZI01Nqz&vGW!3ubZz>{p)KM%M!zr1U#I{O!Zj1=@* z8yyRBy`WPpG%+7!rJz&o<4ddt+9dF_Qt+EVp9?&_6#Okvd@=BKrsa?Rm9}bFG!d(r z)-jYFdWjZT^b)JtL0L!p{70e>7Nf*!j#ZJ=hYHN+0Q?D9+$dHz$bb!cMdB8aCj^}v zEs;*Vz&1Vts*iACDdTEOqK=-|7TMjR z5vZQvZn4pGK@0fh-D;zKLB~9b;_Ok*RjwG)O~i_>;u&+)%`a53#eYQ9p>em5ws=0yoan- z@LLNazlUwK2xNqyt8H{F$PI!%VxftJAWsVVSa4M0&mVmpt;cManDS^`$rMqhF?G^O ze2Ce5J8`|(JMjp%Dv7; zZveelY@fB-z<&^Av!Kt}=(`}_3%cGy6Mur#x&!ou|JCp6VbNNwHvD%}If-+z7$8XMtOVuy-7G9_7pqO;Hk$Gr|6Y)_g1%y-&w*?g^i><(4f3_1n{D(5 zkPO_)ye%oz(|&@V3EW($ZJP4T4AmNBqD*J6+h~u__DzGzNh#BH9DgWA*GhqJ86#=; zatAsagVs|14r3&)nO9oyZS>ISZDV9++D)JzNclVeMt z{pO|?<2IcE+J|4>0i7Xu+Hh!y9yF--&-{5I`n5r|H(Ti`(6^+7Lwcz2Z4K!em)|6R zc~@|fQv0+Wyf*weI#AD+RV%FLM8|ryNSF1uh=+B1wREZr)~jRe1>8?hFeghRJP0I^ z4euoh4VbFu`(RWJ=#~+B1jE!EsjnP&yDlK>h0E0Wl=t5&;!d4G} zY!vijeY~-kbzQcAd@1Nq8~p`DoWx$2Nd>sUTHB`K#)*^I>v9{-0u?8**Kiwc0V)n` zuMrlS=nN{ZW3Q2>E%fp6v0or@9eZ)Nnr=18!&fnZ#C7b&ZEF^M50H4lz3_rlu)h&# zr@&*jT6Nw7a!AmtZ1h)<$_qiq+GqyI$%2lv(WW4s1syN#7`8 zTq(8H|7APTE&vw_c%KFjN;^h}08AF}en|(GvjA2L_<-!l)HM1sz*hpUNr6sMwv(^X z1@dKUn2dp95lIO$6n`Sb7l^8!{D&7yw$*{AQT*wVyw=GQEJ+OeYSKZfy-9h$oG4>M z8=MzF=3-Gp9Rg?y8OE-*Mry03YO+?ESH>j4`gDJpPykE@k?HEJ!c?nx^W;k3tAi) z%gN`l5}?NfzSK-ox@3PH$Qy!QE`1^_;$4se#w#2cS2(yq)<>M z9$h)zvHU?mR|_0G=4Os$Cdgfaa(}EgmdZH(Dj-?ElEIy@Vr)8@{~VO8U&-K3Sc`fc zO4hIBIJ174L;4K#8y^2nPA~^5yKyQV29<|`lh^3|I)1#lryo~MPCul(k~T||5hqWp zCa1AOwljW}p(i7=_&SpL($G~s`Hw!9-%gLw&$!Pm{~9Mtuzbeb4}ZuQ(y5LnD6VxZS%8)se9xCCKroX}Ou{?}B|#II8J7EaVk;}*mK)sT0%q+&#^G^BfmsVh+{ z4IQVg+{PRXAu53!zY-~#0`imVbW^4B`n5xE(pYXxqlpoqG7IGM(koqrZb^R;@PqvF2lQAc{oWWq1~T;w(1C%m zkbKD+`1=nyM;FWed7<$E(E4X$JSZ@pqmQ%-H%gquFMr6tq(kGTAUy>g8W`)=_4@*i z6Sz2?MhlH+fUFXfNS3a%Zg>A#AQ{;Cm&w=-jo$>7ft`POV5|pr;+qg={OK}GY_6K` zIZgQGkKC-!gK4_cK*T4>A7%QxL32Q5MCAvMk_zgXnczYw8BzJc9qB2m(iKoLO7bUJ z?OkaRXyupEh>sgoDrq`tr43LQ>}TiK8tOdSn0vcHWeDa^v#WF%R2~q|pYgh`z8sm8 zCgVp&T>f+hR{shNtTq>&AuocFqS~x+A}97Ew%&%B?-lGly@Ra20@1(%F)u|t{R+7@ zBe&|a_LfF-LFHv}ZLX3$Zp@(bKtFB(I?+_kpl^bn5cQlk*Nt9PVw<*ya&~fiQ=38l zU`V%rFT_jp~o-^kpcCpkx5`R4K;>Rd>xhX;) zQQ|pJ89QxO1;(GsAyv^WvDP%imxAE+o1xietyox0?JgX&ykV{OHxPp#XZ}tKbd0x) z(=aOkw)9c|ra4D$q2X_L(q-t$*vh}dOP5|Mi%#`r+lcxUCDPq{ z_{*1@!-}4F(vSHws=p{&^g@gDs^RvAv(irpw>P#Q`O}AK`sVMVm%IwKvq#p35;w5u zWv{{s*?JOvm^v1{+ABj|vv#8FricmgaX>GdyI`Fx4dIdq6r`9LwSla_WiC(uGZ|!M zM*RP04eG&Escp?<(vYglOjy+GDQXf>&q<~HL`daZl%7>g?F(#c12Hk`vd!Gnivou8 zE9z%@=0;uYSdfi>fL>^$w}5s(4BFpDp8|bHN*G|HAANMt8bdhb_ z3Pf(EE*dnEyIS3tw$;J>>tMX1wki+ps6r&4NfB#xsW9qFWK3O+%y9fAsIgMLA;v#4 zyIcqQ7QdpQHu?@oB|215v5g)CO&4^SjXHlvof`a#F169xAjgUAWj1;mXiY&cx6vHX zi=>3%HaY}klAt4ObPC8~K}Xu??I3Fey~0MH0vWrFemlxWUk9x(br@}-iBCagp(+{^ zoPQzzv(J_x9KXUp#F(UU$D0LB8rQt5-ERPO4!@!aDa!FXgUDyRizeFW5K#G?c+n)Q zzn0X*@u$HLuK_>#==|;Q$4WJ>IXeF&d}HCSEz398&g56{#~p#6a&*2vTuF80A$ODyiplH51`#cK{(&9D--GaL^!$IdQ zV$<cF;+G}yawqX?Xmw|pxny{i#J?TC zn(H~u_!Zr4d`NwA{MI1)MBi(jXc-iap9>`)VlG-%jv5Fh--|9C}$N{-nvSk?215b42#FUZ#9A zGevs8=olU74X3L zxpcc=QP&VR@d@N)=@j?xX@in^sO(XgbJ2)`Wf?B$*irXlQ>YZ6O5{+0%+3Y5|F^nag1xL?1$k08H&&#pF%d-8uY#U7IuArvs)AlNdJl-K zR0aAQ?_mi~fXIqckZ;?*0xBy?L4k!Pc7w%ZnK^7@NL^&+Fin{`>|!opbmcEL zbC{;g95#^oOXjeGK~{mfH4+PeWg;)&(nR`?3vI!$qw{~j%R*al>CyS);AEjKxU3A%Yv6#zO)MC0mNZkL3qZs>D+s(DgH8hx zx1!(*aqWX1qCbV>uK<=svmglN==L!V@j573Gz)^uOpAIQO6JmntE_sNT>GG8(JUBi z?aNRUF z9v_LFP;y<_oB!)|4zY0juYsk}doMGM-d)f{#jU2}_FfSfm$b8!s2_4G1I`TSPQb6w z*L&Y@hNcvhIw_7nDC8foc$0Mw)CzvRSDBHf>)<~E@|vIzn;vY?9UyWuZSP0SL}bwK zL0yid_hTtrPYU<`sv|4-$;<$aeJZ!c+PRrG&V%YM)Dz{XK~Phr)F;bP)1j`CTu)g$ z)CJO^#?xnFzKIdGe3eHaJ2+{r(3`KND(7V_nT6sa_ao^UC+ZYSlca(!r6DeIOCWtH zj>*W9rE$~M7E4(~{&ZP>ot36%_}wHlQOZ!4$rY{6tNWziHni?xS!*hB0hDwWpFp6_ zAr?Ue2+M2eFP>Szox@Tl2*0;!h~MNeblvsRpgUVY` z{otl?jV3bg;{_0}RB(I(@p{K5T;3eGK`q|9+F#Oc%ory@cSsQg;#0G*#FXLeyDxYO7=?33PCB*89sHsE0@Nrm zp4o`e7gW+T(R(2^t8A{sPf&;3Qpwpt4m}bR)gK7p>jU^N-B_(dm>Z{bBj^*H=nI_N zgI&)nWqnNu-&m^bWx#D>X^zhgRk{%E!kZnu5^`J_r8rZkuR@MFImPMB#^Bfoqt1PD zEKJiW1H+vL_kA8!WYR9-oJ2B&nYc?})1ZmbaQiPJ%Pod;5{p4jxEO>vU95ST5Xi4Z zY%Dg8jX^&IZO{jFiH-gPdaLxkrPeT$+65=D?keu$$cDco)sfBIWzJ$}_*;d)^XU92 zcrOS3u2jD@6NbMSsxJ>(`*)Yg>Li|pYAZ*u%xVG0e;;^+z{^bz-8i}_ednR5bB|EL z9BWZ0LmiYZAKdF>hI1FtZIa=cRC5GvJQS)aGqeA!wfCSsX27)|s_wrT*%)?cC+&LX z&$Vwc3vBV1g$8dm)CPKQX?y}KqK|dG(`tcU)D4dCoGfU8I{<9c(1KIqks zq0yIRjZ9~FHRKPJ<@JE}zk$E70cYc@vb>}nzse&4f3OVC|DaI1(|()kw2t2sbmI@q zfZwI2Iqt>@(L++La8{iM+E7OD_cpo)^ff8r2fKu~Li9)5_FK>=rG%esw92Ez|GI(x zTyCVD1yws2>X&lV0H|S->sN6wt+_ks?~~!>W={WiGfebSB8Se55K@1Xq0Cvz+z1~X zgrVmK<4CIOWPTCi6+>K~mCVYIap#QKry$M=SC75B53!}f5}99-W0^RfOnO^$W{bT z05|SJxD#CKBpGf=n6IXtPd8BfDYy;NK$+#aogtTHbEeE6!!qmGoIXkM^ff`5^~!Un z!u_;>{WWx}&;~(=kM{*`xe)jyQ+@AvNGCoUc(}l)1aKV<9|C?;;3jTmCYGR(8pl7u z2)h=zY0#JC^$_|U5#GAB^u`*4LxX0Pfm34+@Q9nq*F1p5<#lRo1ink)76B~YkSD^a z@jcwT!nF)I@qRolj6r=oXn8${e_FZBHThz$b8j)3Pj_XkX~)lNEJs#bdXD+D(8~<9 zW4sDDlr^)a9s4sc4{)OI5j+sbENh4CB=(A|@5v8T4t7@tevv#XiHDF zoHWTP%TU%E(L9V~<;dDq#wa>2%>J${O1ex>wwyHChb&TAZ$_7g*>{&QioO9O3su&8 zWtk%|veablDa$ln9(B(DqoR}b;U0G3{rMuNPM@{tRG1eUk!QbV%FvZQhh8ojzxA$v zMOrCqMbx?C6zqS}ruw9$iaUD(bk&ofU03+C?<2iM%+pMIC+UABovzc?DUmCn1x|1NcT5+>A~JI6!Ns)%lTlFIP`0Ei7dMqH zSy7U5#a7%_l5$O1)swd;#Co4~%B|Zt4{nwud$-{wf^xZ=_2R2s`e*QjVGnrQ;lz7{4Y} zAY&`RGh=qEdgTU95OcDnBJXfhu%;o&M|-$!Rjshq>87LC6v3 zNO7i4<3f%&M~c&#jlu00gmI3Pf#Ej5g>jA&j>mvPm^eoX9L$M-!R^0Dx})KoMBVkN zIEPphxCAkA4m0N(bTFuibJ*w%P!s2{hMCkZn7dZO+i?zkZY_SR^O()hyUC`O`Idu96=j@ z3KhmVO7F=`9A3;r=<8fU{IZ7w(c;?I?&f#we z;~bWO-vv}>`}BZyY_-T1#5rb#**>!j{1u=k&S9gQKuw&(Mn45LagNjxd$Ot9Ke)>x zwlOgJvaFHm49!CRKv`Z7Xukm7#5v0Hl6L%YA%Cz8Pv{WJj&qpKv=-FFIa1Rc!Kn~E zB-JwWBH<0thBAV`x6$KX4C5Sj3C%0^+y@XoTbcKFIjPp)OgH1H^e2*p>cgyG6#W|#5pW{ zPKZmK!z$-7@Z-Wbhu}`;cAzf@(Y6xj&`|sbpi*%Tea7PHFPFqQtOk#t8p2iFZ9BvE zaMHe`^dQb5#~Q>raxf0!9KUO0y~niQF%IG!Lqm(Ic5#{0flJ~XrkW1|1#u2*BGxNe z{8hLh&S9M-!+jp+tLa+#q+d93XH!X>qa1f)$Yt62OqplH>AKXhIen7i=ZE>~mFKR6 z3*sDq(*{9@kKY3v#5r{JJy$MY;;#b-aSj8=HQfA_k~l{lCYGR(8ohzTIES>D332FP zhlz764-JTOlo&WQHUo!o4h@UT%RPy}VVpz5;thEsoEoR%Act`d&58HpX<-a5#2}1w zl*wFkI-DKn(Bq}L99eDYIVR5W5JT-4?+HBIRGecG0TL7Eke$TVNL8ZGgy7q<``CI7 z?gNx1C~K!IJKEBdEhkNK262wGwPBp2j8U{1jL!b9EK0gePqz4;5ZQw`#|2^b-DQlT z(_u`Uqb&0zj4U--d&)AO!k9S6tL(y#bDaKE80XMT8M@M~(52!WZvvP&hc?wG#foz@ zrb&Z1hwx|jCLP2%bb1=;AkHCa>y*gJNy=qV@;2Fe5jI~ZwU7>4yh|{>C1RL}q+r7& zZ}CsUzRNUFEFxney}P&~=RIGBLUD#{Nq;WRlr33S^d)#wdhjs0fGZY}l-Nh{IbtHA zkYPF=A|feRRZrd{87n+j--3PRKHdVk);ZyWZ8XUN#CQRo$`YGG;ue!hIwnQ5LQ-Z4 z)xK#;JWRokzGL_ZWq5_>sbA2JTJsGTtwDbN_SX4zbVO$```YL_P;to$``PI0pyEXpUfA^g)GitZUR2@v{;0Q%zf{=YGVo`E%3n`~ z18npTQ1PM)2ioZ4V#~jag~4O5auk8@v?HVjr4HLOH%NUCB>|;EZjjPvrlgnfzJcul z$0IeG(@Tus7+3;Ig_oF{wDgWr+5Ao+Uu^LvYcZ7E-BEa{MVb4%riRpI7NzUx-vuQB zk;2O@%H(=Jq=s9R$@MXm#7YWBSd_{24^;IXP$SDxwSgs!QW!jXq7TmGN`%zaWn0nj z2PJ{B!pSC3Cb=Ac0_ctW3a7kAI_Ou4tj};{`4vtJT2(q);CXcd?=ReRY0n^sUkp;W zK427em<*L!pSif!Yy6jVA5{4I_qn$8tuwr$S1%B8J9zFK8GsOc^JB2M+Iy64*&p ze>W8|)QEo?h#fIB1r~ya5kp;|^jM}RU^`+c#=&7PgEA4reeB7NnbMyR(Wx?J@u5|H z#Ct$Z#Lz+$he5+TqfGAVyTgc~j7XC^nD&}OnTX*pr-r)=sIDP3t8A{sMNnbHP#=~a z>4|9}OvF&b)uoz=Wg$$&P{aBJCtd~)BZijs=OIkQ&?>vad#Q+_hV{raJ2*Myh#00g zQ>W~ZBVw51bY^34IR;_GFlAu4o8ZETVF~9X9u8q5h9$6RwZvAqFk&d2llT@SyfaE8 ze)^s;VrbSZgEj*-5knj80cs+K)-aRW1!rjlyd5#rUCH7XN`5P1SeAbd-i{cS@O-)y z%DyuyMJ4`)3L}OkE#UZd_LhzqYDzby-vP>w7+TaNP4?DDzwu1RHh#2k-4cu!kigI3_r%e+!XMmcBp^X-Rnuwu|jsi6i!_*ObvZ>qOEH(b((CEvu zMy4~Y5BURSc|D;0kKs+kuq-cW$9F#r_=9D5$FB!vM+{A8ItSE53{%q_x6p>@A*oh4 ztBwP0coBQ~-bR;#nmeQH64r+3kGAa&P!ln<(H}wWh+%3t`87W(9Wk`1wooQwXgpa> z>FLWXWPRXG#Lx_r65jF0hSVQrD07xFm%x|Y8I>B3nd?JbB8D2*XC-qVcuB<2!lU~F zTq1^6IZeQi3nPYtJDJ%)B@sgn#fJfviWtffIPsal!JSc7gU6SJa25CO110AyEt5P! z#88ekh!}3bI5vngnc+71Dm582!Z?T+?hP%f+Qnu53S1H~G}X-fxFlj|O~iU7i?@Oc zB8JvUGF(BJucm9|lYYU6g5Wkt17()y=7wCB&6zSE2+OQvbNVF3Uk>xtE6;rd7eox3 z&;~(=kHe+P77nO9)mDqSSEALPvGo` zp&lRaa8**F6M`XNfDi%%0mZTql(89u z0)h0LV$osKm}0&!4VV`6lVogd@72fg5r!5j?Y;iDn9@FoO^He z=?-tL-}=`2VCB}Sz0aM_9Z&V`YEIK3$qJr};AGTL6aDQ3rR2F_)Dy!*W;+=5#4wS0 z7mRvh_%li_ z-0LTXbT68O8Ye<-P~_hr3RvQR`exKd0~WAEK^X-R!pbOGv?;M6%m7geGXKIbh_)k) zMnSYYNz|327m-9ON*!l=7)PNB^D{Q$WcZ=q@ta_WtX#qhamZ!D2{cAyzQchQx>H9@ zl>&~iFr>a9_rzDqrz#wM74+h$Hw{%PsB0+g+;2b?j?+1XPvDN+sX{y`;-pF63ZMQp ze)SQ5g%ge91-Se2EEE>6{)iPTJkh}T8VAGTi%N^Y-9w379v5YYf$@!w#3(O=`;nqd zH5|U;$lqeJ!hafWn&E=)PzIT5)!c9Jo=p4|USU*CGFqXpQJ8KN{zqC`e**MZQ-XLI zaZr118Pz=D^+sXF|1H5Mpnr@KoSB%Q75>t2v;KElco)I9_(fa%70y;?ljn28bp=vF z=v)(*z9Slr8hD<8tJl{GFNM|v6nVbU;>b@Jc!7aW75M|BwNPu(30*dywqXcQv(Lw0 zA)b)24b}JJx&yk3V0_soW?K4T5%v1R@LZ#?xLWo?>wah*pkykv7LSqen}Gfxc!`Gj zSxz|l-|%DcSBS6Qs6H6iL7aN@o`mofMhiZt(yCtZSPgZgt%!7(l7^2NOFFiz3V&i0 zRvCp;q$>1Nzt;)E%ZyLZ3b!*HzIyXNOURqK@JOi6!(Sneo3N^yM3w_0AFXhmdf-Lf zNcCxVr=e~Z6n}TpeH#=#Pc2-ZNQM6awWtZGTN8_9g`51Kx!W|yr?}ldfa%e5;YRf( zU@k*2rY$#W_)UUWQP+T?N3?~T)z=Yu6u7&AzK_4cEfW0>NX;LC-bo*D;0M&zR0pIN zp?B#r5s7bA1EMEBh4;j2NMB9E(;-sc8Y>A-5&(IT&~1y6q)OOP->LluaQ082?yE+f z1$Zb?_tVEhak0h%<^;EkSn8!0H-q8?cT}TZHVHl;5>&DN1l9Ow;{r z#(JTn2JYXWc;G%&jcW3n`aGua=~yq-vATnz4_ykMsYZOhQb44homff8z}m0qwtk#)NW98o}%#8YSckc^if3N!9*(U zIH(%`f%)F#nb%6IgPYC-yrqGQaYG*%6du;V1OUHJ0B}SDl>qLhC~q^MPPV5#0OTm4 z@2J@S-dCSR(TL(tpaVl{Eg0jsyYsU)~Y;XOcU|4VOs zW934sl6l)3BcljOt__17#6;3{H)$wcW*W7}J-_X(6oPu&8$p?iVU`H(@1t}Z>4%_z zZm*>L8RvlT`lFG0g!*W78mX~FK^X-R!ZP2*N)o-E*oF52yO|`Kwxc9P?je=IXzR#l z#F9#sf-+X7Xc2nbUzFZM7kP`~((RSKaLYIcgxBwl*V;wsU7OKAN$np5ne_9R(KLK0 zUO=x~%%tDLjAqkqV+3`aZyGyRe!+vCN8n9YyYQ>b1-tCl^y0amq_W;t(=q>cX~DzZ z4M^Yewji{eF!n7zJkjY6yp}#;ZqFn0B{PP@($x_c^@IPz3&j>M?n9;Wf3A3 zV3X1MV7_JDM-lI~GZ)z@tqN|lTMt2z_7Jv-e(ff&V1wN{6*~-?U<)?l*KQicZcs;?fWJ72IQY4$sC- z10({2r{0-?-kEj}kZTxmj-w@<(v=8!U0XuGa$J*|s$dSDrLnrYovUx1?@%VySj$?H z>0kGLg}Uwi7h#f@+62wy)kElbc?eUy)(C5O9TA4S3lXMz5rk>pXoNMrNeI)us}R=m z79l*%TZu5kTZ^!^cRRvNZ!5w&-fo0-z5NJJ_YNV<@{S^`=Y58-zV`#d2HpvT*`AH> z;5YQr5$1S}5axO<5jOVPBW&X3BW&vRN0{dgN7&38kMIm{D#GU8T!byWN`x)FDuicx z>k*#q-GR{c9zb}G_b5Wodluoj-m3`Pc!v?T^^PGt&-(`9`QEPx+j&-=gI~z4iLis0 zg|MU76k#XNMcCQvfH3U!LfFL{h_I_S5@9!QBEs(8bc8*;c?f%Y%Ms>#>k#(x?m~Eh z_aMRxy(bX%_Fh2P$2*L$ulF&+e%{vz`+Gkl9N_&I;XtouGyHCuS0CYE?+k>Oc;_M< z;&nq9@%key@P;D1)EkX(sCPNSVcu+nh2AoR!@Zjjj_@`h9O-RCSmZs7aFn+nq3^wp zu-JPa;b`wmgeBgO2ur=c5svXv&v2}W&GG6Xoa;43IL~tt&i6VaT;N@ZaG~uD#N}Gs8;Q$e+nb0>h3#E| z%M#n0hs#pitHh+iQZ$c9aa49k$mAmj_TJTpqN& zLAdO+z2Ug*vc0jmJY;)Qad{Xe!v#M`m%a*Das>+J+ce+Xsat6x%DD^hOZY2TXl56h z+pY9BfgMZ%eyvS_QU3;T?K1%{HtIC1s^3w_$pJB#$R&o{L3yMP2lf}GwbZ7?K&O>H z6>t@)SK9mk39{fNrQTUIuRZ5&0&RKsA+)_c2$Q@w5Mt}}0WNi+RIuD+MM+rcEr9hS z{5m^3mKCS@Jg0fUE5g}DGrrjC!ppO2Pa5gk>!pD zEKhNevaa^cpwuajyG}EWV7X5lbYWYl+Nqqn`zcU$ibJ5`(@w+6(-*nmk((-8J0R+N zU(^#+Z2h74a8T+L$C*rVA(e@)G1St;Sm6zz%qb3z!96VeqJi;5jp4~i(+dA&V4UJ$ zm>W2pn}JnMzu!h^Uu0lBVH0Uz3D|t^i(%gOs0=n44yQO`oGQ}+!{PZ_jN`~k;XhC? zr#NB?ifd6DuQ=E5w+T2aJix#>#Sy^Dpy4aQeNLYN<3Sv8R(LZIbBcoz_f;V3dtci` z8~+Yeo#K#a(@d-|)T?h1!;DI&8?Zlkd5VL(lHg}jd~u2+k-rbTJjD_4mU|SGJjD^C z!pU{8-_h^42`qqp7GU|kFQ(X(ZV@PXibGJ9pyVkI%Exkd0#&CtV&>2`eg~8}#S!GL z?eRA_b&BKDlwkaXCSm^6r#PC|)e5gA*D!;@3T=ggKE-h{6x1mWq2Nv@luvO;^md@? z6o<&oecqsNO5Lx3s#6>i%{U!v6o*8I0ad3sBsv$UI>iyIu|p!;UoAE6cB6DWQAu@% z_YMDLBF_WbO{<5goZoMg$kV;$b};ie+Zi zH-R>%5&VNh{{gB_amW-})Ys@wQukt@>J*1WX8@I_IAX)ey$6*1-j|>bgHoqBXpbP~ zZr$Ji1g}nUsA0lU)db$Gfu>F*P^y)327wPwam2=B&K!f&DGtWDRdTih4^D9i{2hbS zDGrfNC>t){I2e-NZ$r41(-u&0ii4r_B0zDcIJm{quLZ16aR`H_-)rF7_H${*9{64- zQrD+AsIK}H$7@hd9g6~F+CQ)|=NOs;Wqpd{7o$-}CYRH&A-1>X{WhwY{Q&9jeTj*f zSF-e};PfdD(MXD0YvN_wA|CY%EBz^O`V>bs?i0i1%6KZxP>wE36UlKSrF-Bw&AjSd z1e`v_u@D8&9X|bL!1{Y%TzqEIr|%M@)QS;ms_Z2ji~3SQyh0-sMT^lNy9^l;Qcms4Ye`LJw%zLo6vqK5(aMo~I6*1-PZRwJElQlGLy{GuJZO=^DUNeP zI{MoQO39^Q)G3Zc=2kH36h|WS1{igUqc^gUr#QS+N59{OnFKoRX3%k`IF15Pr#M)Z z8%3Pr=mwMOQyj#1xdQk46bIkmi+g>FgYHF>P~+5cE`@EfN1T^Ib9p%|F{0GU_~{=! zAHdIQj2M$zyAAje9a9@1uBC3e@Qss8_2S=vN$UU|@=ivKP!vrsRwGJn@fSEaLP;%y zU_~g)Xfv<{L`La0LXKFZ17UpIlO)DCpm7okOsr6BVf zjI`(q!f04VZz74tR&*0dw8TZ|QEY@B%0?d|j2z-9J;p7gAVR;Oq}aFVF);nAQW*si z`uVfW-_AkuUsE*tZLjEfQr?gUy}t=ds*Qs+&hbI$HTtEhOYv-zoX+cTO>jET&xNf5 zr<3l~G88zS0p##2r30sv@e{}|_SFGS%e8tMr?V4M!#i&&O{Hj@PKLTs&TeC)JxFLX z6%K|Ssa<71K#tjB%<=+YJY&GsbabrEmxe#_5bHDDGEq#_0?= zD_r+N4a4aSU}d%NdEkuGNt_iP2BiKN^d5RqHX-gTAj;|7!tJ5ZTYxI3Q=(4*UCU0V z7-m#D-AeC)mrf^lCBgqg@rBcw$e-Oi-suc@%N-0#I-M~pTn@@Ooq+``cQs(?bTY-J zbRPjFolZf$2TD4fl#k{90aQ7iF>`1eH|P^{I)mJ`J=%j)PUrBfVElwW!u+Y7&WKTX zZ5AtVZlT7F0;h8t6qM5`6x>yWvePNihkz=lQ{?6zH0YaB_iLca>6B=VzQ*a4=vhFO z)7iLQtQN~KXX>vGltMu{okGE#YodKJl%uJ-twc2KbUtmOeJT{(cY!LWQ=)$WRZgcw z8(d_Z&RC5d650N0sd0N4rQ?Z8sxyo?{FjM54`_Eec;$2^@^o*x+YSG90*{k0prq5O zI@32mmD3rU=J1ZVej5Frie+ZimOz!$DbfBwmD4Fxm|)PKr0yc1%ITEoT|lMNNhQ`RC~K$lHltBTCYSR#;K1or#rz16 zb~?pG%qv;?U*NRUDH=&}4F~9W*|vyB{lZG`2u?el)woLymn-9`G|NqzO(e&Sl)lo$ z%d5_91*e_P64*d@`1B)ywbRMPcg9m&rP~7or&GaG8J+-GJDqDVvFJn^tN?7BPO?}v zr}L;$fYTW$;H@Hnjnm06ZF#K*=VKFWoKA*mH{?)YH5dcVIGxPV?#JOkDck@B<8&rO z&VC%6bUJyw%%XG~QO{9MX9EniTFzHJq|^CwSL1Y2CaFy*O7iyxe1o!2ZO&j;H{*2D zvcsAVNmhtrYNxY1l$6t%pp-n`L_b1{5~t~qWQ8aX?Q~X|=x-+|B|i>EIh~2j*I<;> znaDKgZk*26D4}#ZCxLmU1vc-WGm}84y#hMU=}d;rl+($o+$h5791U7Koy2!pfqU(A z^8I7D*G?zhizcDQiI5uMky$xAVQ8*l$6UThz=v=3o!Vj6lA`Lt{$C4 z7!82vl_XIwj?N>A7Ly2_QHic(0znsITO>oDaJsT|)xMOsuCg{K& z3n29aW`R4#_%dV_bH_L>_pyj^$Nq)X@N24+rcyNS7(=g6&hA@Adyvp(D*QbtpdP1SqYM?qP}E4OF>f+qsZbODl96 z=1lF5eEpckJy7)-V64Ut ziEMxUTbU0VrQ?Z8sxurl{FjM54`}x!c;${I@^p_k1{7)j>jd6%yMvPMnCeVLK$SZd zo96HeNrQe*#WJ(%jX;$&le$!ztZ1_vUbOQVP(!S^fi>VJNCQLs3Vihsaq`EF;&b?fV4X%CSqR6 z(k}(4-7(QfiYqtqvTYHM`h}Ig5}bC&s&QKlmn-9`H20e{n@EluDg9#;FRwcHCphhn zeGePx4xip~bl{G0@tt3&t8OY}_%*By|TBC3&|2-=OSMA7b!bfa)_qT6S2| zAqgi8Aof>QD|V3a$S$ZP|n+_6OF zZ7}LHz^73{>5iQ>#JFS3B+zMXf-(vs#gxN)0ULLWU@QC)5cBC6BkoBc(j8L?=1q*bW1OIJ$9e;n?ieZSYEK2F z+_6poRU=sL3WF}JgNCzHId%75pvoN+X!vEI#vM~-I}SvBIz~M~#n!u5J8Imqsf zA(e@847D^dR=7PVBD1Mw}IX6^L=i7;%39qCOo{-zipT<|N~eNwh7{wbZL`5yOm1ryDQ=Ub~n^ z#TV{aBEK2DbjJeTa$f)?-LV)I{t}dN#{vuBG_ zF-pf1l~iYV-|$~1@;snjYl?Bl5_!7EPo^3E>jd6%F9apsG1ZyI09Ec-Y?`y&`3C)- zie+Zi4M3GUCeeLBl{+R=_`sk)N!>qyDtAnxji$!CV^lJ2uM0s*cT7-app-jCy8|(I z>;Aq3ymH6XFyW|b0>9HxClV-?YtFyG2kuyGJm!3BaB{~O=T^z7Jx#b{0`FjOa>qnE zKJdUDBizcF3n*~M7)sv=D9#<@7E6B$uy)6U!PAc#xVAm4ow0`%nuOG~J4SWY?%3~8 z*6!FMR^}W-S3+64V|B~5Mje@4P8-0%r(>#^!vJY_OiaYQlBG`vr`<8pNQzr+;$_<+ z9`y?=eFr%0j#c9h7%o@FQ)zx_(rh9*Zlv_&D|DK9)w!nNv^zEnHqaeDeIQ`{=@=K^ znMZAvJ`1pR#}vGb;ST_7ckBsFEIN?}_Vk!LMi#5)j$L9D;En|fR)Z@68+VLh+VWZr zwgEQo7{jz1awxDG90h0GG3IFZ<8Yu9(y)Uz?pQ+P>^9(}JI3Q>4W-+NdX93(Iv~MX zP6;-rF?TF~jB&>(lhke$C3%7Y-=OSMdog$&K;@3nvcsAVNmhtrYIkfml+>qV2};TD zo9IVqQQ|ZmlB^Krq1~|>V|Dbm6O@wMfKl#PB2x-RxnqgUDlp0&8-Nl@ckCFLXIfzM z{y8%VblL^u65O%b0F*n%s@y2T9XkSAyJN(6v0-BEj`97uxYzC&-HRrn#)*&{6zL11 zfF%y7Z$>F7qaZ?#R2eBpr;=VN#(k86%pT~s(M5z&-;b^&i8^p}9Z9r~L^qRkH-gOM z+4#cigLK<}t8LXuS-1%6X46p_C$F)smjO4u#|q^YSk|1$mesU8w`^gO)fBH-8qfvS ztG&&Jy%@SiLw_O)KEen4Hs0*tbX@(U4mga97x)kMAkh zK&)%0Bfh581i#r(iv)GuK8kh7P>Th{C3BM&;7hoaV1=M|QwiPnhFT&h6>B0WdIxsX zrGiqi)*EV>pj4~_pw4N6Sj)+3cIr%2!E#Rmr8jUiy^a!4sH4(qvrtnj1*Os&3yNML z-t>AwsaR_bwMtMb)=Qx5GZ3pvP|AFN7;3ekl=<9ib*wdlQVAA=x|0&TAx7bc(1CtT z=uPC|nTqZO+M+p7{YE6JzUm+DAE2T{-JD=F^*WB^^U>q>5Wk5m=h$=M?NDGfqGF7? z6@4s11-O#xlF}JHe>4&=ATmN7Co+X@Ns5wMWG>y3R43)p%2;P!2l#(<=Irjs_Zxb9 zRnVCkdJ$2qP-C#C>ddSX-ARpsF)d0t$6h zS{n?tQcxdaIC?#ypOh@6AO z3y6$R$BA^ITau!r7U@s7BtP_cZioM=Rs$)&vYuHsz9m~r2 z?ByiIRyi5%-qiBy)Qo>YjlOa|a!n@xCd-I?ypjKg>|83s$YFNsSlnCc4nL4ech1y2 z8fG6N;>h7~3iy#zR+x-RSnfAaI0#{6QTq$2uf?cv(keXl!QV){>oJz3I}lI>#VDpM z@M0Rov%;4Fy^EA_+?$oJ$VL9{BY;MYPqIdq(!EhW3e>5B@+7VNQV*oT-&YR-c1Di% zGI6!M1_*604`Gsb4#H%wGeW!(V;C;e@i+1^ifYoG17s_qc+VjhBCjXX4fQ|?Ct*Du zc@<~zV`KD{k(0e$(8N0v5GHw_B6Pge)!68G4G?B}=OSE)f2o!`;wHRE;U&bsn$k0w zO$WLLe3i3 zC^gFqO2yh`sAYmuv5taLvpiYNPIYO-xc>lEvpglBP)DV8*0Y*gDJYfJC7{$SFDMmj zrlD2|O2xVzl+9ZfK`HaSV5rrCQs(>CP-_IG5mz+of^%p>2{tbbRUnELdJpWWx;3lBcWZ_o zb%AYf3<&j!J8yp;ih?rL_u_>ehl%u^u(lDnY4O zAAwTcT2RV-&W)N{EhuF^*HCK&r4lRvbtmt{V-&u60#tTuRnbjAWw$0&^$+(TDAlbK zjHbKwU*J`@Cd)a0P`9SQYDC3Q-I@x(-MR`wSaU%brTau!r7O8=(3rLD) zl0?fx<^)Xs(WZ1u3qa;Ux;>X}+tKYrY#i#O)ZHBG`GWxekDmW}KNRxe2j#Y%q4|hn zg${!~RnKRY_@2+u==n6E-?72;{NEAZPGw3p-2p=_5|nDXpAEHGP+T%Mccba~g6d2q zbo&}=iJ(-ha!{)03rfYh)lka>rDE*|r6zQ;nw|O=s$jX_164hr5>Tk4(rUO#Q!53f z(&`OL^?X68Sknx(N>D1+t)NuT7nCyJ^M+b2C}qCy47Em3D!~S~o1Pz|EH@vh?D?vq zlYq*ePpIl2?ror=&1phUFq-c9uYy-SpDgEWL0{m&YDC3QJ)a7|J%2fb$froWfXE1S zoXAgfOH!27B36IgvQ!gN=3aE@=w`f~Ir{oqJY;eFt=P~NwGZC?SJctw{d3#F_^pgB zR@l8my`m0yY8PNunh%6tQCHOQl&`4Er4);Bw3fBi9d^8Q=Uk5xSfQQ}&nKmxyxIH` z={ZH6y?b!Az1;|tyk`mXjv!36R1&2+iCPirNco6Pd-9?&^>Ht$+)KnjL?1f91(v-Q>1cFAZ3J3jZ>ZtXbZv9r1DN6?-5!ar~Gd~_3j6Jg;Z_{ z>~7Ptvp}=jKod08?aN<%X=1A%R7S5_C7_J-HXun9!7{CKKl@t zllUu|OX{WtogH`^AO4E)26VRbKS5d-0(Oe}dj+^!-a`*lTDKug^2&&@+-bP1!(Y(? zieyr}8_27KUK?k!4*=N@0ME}$@V+m&iDj;~3hI#P0KA>9& zu8O6h#%1^}z{iNXLBQeTcTI4Y4tyyZqfmE*5yEoE%F zz$_pe3B6gEB77f^Hway?vmnxPKLO(~H8Ef$n&nE9a823SxuCtL0=LoE@MiuE}twG9xIiq+t5O)V3Yight4 zwGAMv*{Ml1&${z~s%-!zpioDbz)&j%rPBHWl-dReO2uk;kET`$O2rxkN^JuKrOda$ zP^$%{%(u%>YXqf>0ZMIvW0d7KxHo+Ur~teTSPdcaHM&OukrC=RkrQ-FQk2vpA!J=ZQnU_9)UBfwMCi8u zI?N$8#yoN!YrVWyW&mprc(UGlxobU}>1d`;u^``MP z)0@rLJa0K)^Szt+iime8A<5gR1jjp|giP;UCFFTuC?Q|fZQFjTTcy`$AJuIzLfadU zFv**VFxgv<(D80XnBv`!u!i?I!jN}>!(#|jy`K@LdG@pPmfU&>)4f&*Yk6G}p5{dm zW_S}2*7jy0%=9V|*74ROtm|zO+(nyTZ!;Y zZzIC9yj>i=jIfpWDZ;b8?-06PDr|F(*Ak)UbwSwL8;tN=uM}Y$ZwA7)-XetOdAA{4 zxNzYtE0ljM*}CS%6l>HHY$oq|4Au2J2AfI0v)W9K8HFEXc*Hur>QY>vOwCGh{3kQ$ zz}*f4p0YBs5i#wkZTU}IR;?5|bm{nyPOS-)#-sn3zw@cLrc^$^i`LHNyRPa^y*Wlf-8A$AJ)c!jccCR!duV(C-nioY z9|N6auf!xd-BSfR!i73QIaM|HPO3_81zGM6+|hp6?=u^0oFdl}KLbt{au!fr_gSNT zvCw8Jd>9m+BK7gR-5i57@C+O<{dTTDT>W-#1*0jCqX*&7pEP+G<;p0}AYGrrDDsQE zQ5buc*9AJZcOk+gZy>^CZzMv;D}Rkf*`-$?2P-@V&|3WY*iUoLl&0n02WZQ;NtQpE z-tD9EaENl=Bc5|x^91GQdmlpA@*epVdfp>Z`lX1kfFye<%_z5@Ag6dQTt{R2H^?E+ zLcCOO&T$)~xeO((>7@fn_v#|7<>ewg&GQguc;_Lk?R7_(=?y?w$16Zs*Bg!Sbnh~R zS>9}f^}MABEidalq-MFd;ikMb>NJ)5Mzz9+Ujy%c4zo@Zb>@nxP8P29q*lQ0o{d74 z)?62GH&EjEk)#+$8Ch-_xGnher>k8awT!S@c)N)UM<6h^%9s-fe*=ZiXha`Bm=sg^ zKlX4Q33#Z0_~n$wti(d7rkw?jn|8KnT5eVMHi}AhnDmqF)24@eI(V60HlQD>{_FOrqxky&7HJuasyXpra{;3f?WI^#{y@Wy}A^vGRXjI?^6A zS#A6OIjdNath7eh@6>!24f+sgYNfRSKn|1tumbRbF(#PIKQV_!$du6;xGi9bf-(vs zgzLr$ybYg!JUP?c%%MRRFp;^FZ;=|AhHA0Ia&VV?+-nDj0>iE+# zM&O3LkMXswj8e#3pfEnmS!ky?<1;hLfE>aGe0*IiV=Clli9H=@Ue*+GE?>0^A{H)E zxfXOZtHQqa1$+snhy5Bf)l-5ByAo8{+er-l1Kf%@#mQEvHiBRA>G@?TwNk#t_2{JY zGOD0T#hKL3%2)@vWh2{~)G;;VP9t~9%-Ct<&e<7zj2zC(IB4W9tuo#>a@V#QUmLkw z=ZxQt+&w=d33+n*`Ta67jofQUMxK!`7?IH$@{G~=EV_4TMlZ+ow=Mf*{gK?^fxk^Cy^GI&wOGRRe=bIIb2lgDdV8%T~+X86Fj zkvwvB#x}^iNglO6;}OVvNcJ~p?1Ri@DBha!8f5zAj!C0;X1ovi&wY?f9?!_dFQstV zO7~@a3j8ICJ9fVnnGK78>+kbsVx51k4-li2Qxr3j{fT}60rg;NBMI@HRp54?q8@Ew7KR9Q7Y`7 zq|w6WsyU@J2+|N1sOT3F84=Ojf{V+sBY+5HTVW@Y@)y;O7a{!H7!K9d1PxZT=VEas z$g(g`5y)|*uuLhi!4+3wUrt0)GLPBVz^$;aB)l-eo=&?Vwq<3{1Gkj;M^4FC*i}T1 zJ5_OX3b#Pv4pMqLp-76au;W^y8%B#)DwwRh5Z8It(9$;je%LY!|8^k@n2~l zB$Y9-Zc9c0e3;=D|G6n;mv4(D)jex(%JhaLr*LJA%iCmCYplY->uxP}z01wZw;*6Y2xqi%GXpi28Xy(rwMrE``|PB1TI|?9bv<5-(rP6*8;k4N_ znQ~h@v`|^g?KcRX_Y=~Hyo{jI{s2JvWS%-H0P;B@YKqdxcZ5upI=>RaA2OP;e3B6U zB+($wK_KNaRxLuNOC*aBem-qtAv0twkC3Y+(t(iK66sFJJc;xnWKj&M zuwPz_^N;Rbr7z!v8y3wgkUP|9)M;ve|WrXP+k{l`q61xoH^w~+=5p~I5BK`i! zykJlOt=9-DOs-2wOZ+mz8^wwO)hh_PRW%wVXcmB(gx@We?_j@&NDGPFs3OI02CZhx zi0hHe1&+0u!`8aqZb$4iUAbj;nw4Tre}NmK!fu0anoK`al`d#;tJ(DwR&@ zTPwK?K1AderOyq*i%uxz@?`4?qK0rkAISZj){E(bRX=C>l2q$@`&m+(p{-G2zeu+O zlZkgIKmiUCRFwQDYR8bl-{P2R8PeVLU4mZX$O%=ev_B#4Ag@c+xNnG?!+Vr~gPngO zcs?(KF_>N2AK(Pd42AxUdJe%P;0+C(fH)lDH5v5>;nJ*>;NOy*^vN_d-vL``Pa^CH zj}C?_>~cc>qlT)6W)Sp;fGX{|1idHYEhgj(HF|Zt~rdkrbJSL25ploO^XDB{gT{!Vd}LqzpPoPn z!r6A5K6(@3OOtpC=`aPk#3mEgSZY(Zue2W|y_50fa9AVzF;M%6zWEg8d69_iG3%+Z zPbH(CMC36+Zbb>K$PR=B$~H$xV^^78nvu}tEC96fV!X8BS9H^9yDL0Wy%|uh87g8z(Y+PNByGV1E($qbl-d*6`z)BkV zgOqLx5S4Q?i!y#xcgyS$?lK9vRTiaLeS+HBY;T9U2&&hZu=c{@v96;Rq{919guzOK zNma4zmWX*S#oiFhgge(z>>fH0v4c!qX?G|2DV|0sK&HJ3S&(Rw3VQ(I!$e`Yi?N$n zX%7WC`z)?_46d-B*@og3Clt@PobxHcv4Z4osVm@voIncCpEAenDd4Uq{w2lBT;~x! z@l*+GZ+ICLR+G{zB62K+(2#QMc=4ofPWB2rGH@lj>%{BuRB#O70+J#mMM>&8|IBV! z?Rw5XtC%mX!jtIkoSA%gZhg$3J?FQhwYKN{_OvecoZoRc66`s@(+a-pyn!#_2l>+F zIlgpF<5ar!c#t%^_v5=Bg?#Bbi7)wc`O@nqzFc@OUwZH5OP>$;a?u}r>DQ7A(f@qD zTzoNK28`g#z}b8mw2m)>AL7f97x)tS6qnE_d}ep^>v%TSHc|?)fLsLLv2Fo)?U|MK zeRM71mS+dA(tel_K5pk|Le$n$BR>-|D@Y9K{6&b`NNOGD5RgSu=QKi=Nu)j@D zC3N$0`x0E2^xFfn(jG?gVBVb^2H;Qtcr?KUj5NIxNQ9nvRNDXGk;jq&40mLh#7cVt zX)m&Q3%2);Y5RzS*nQE~a)&Xe0zrx;yD}Gp%o8uSCmn19l0K`!8Rms*n z;44$vbv;5+-i8;1>xvOAL9((#5`KIK;kU%}i*$fE$L!MnBy0|+&q)_pm|p8RYu>@f z6vcHiZfu%jE$M7q#RXO_Va2E0ss7bSP~ByzJ7*zOEI0cgerOke#r4%^RHUe>$$+0E zs=;!6j1d>>1;Dhd6z5O@G{uXH`@W$X35xRyx4`Et7vZnCiHCN@p_XO z-l%xU;a_MkZt<3DQ0{*Eq~8d`pDB3CNAtIXe-3}eZj8q_qJcDd1L(Oi)FIJw&jCDx zs4mqkG0#vv1f{Bb6R4h*_+rw9qPj$>vhw=p-fxup2qiA7YJ^|G*Lo9K_ZK`TLit&4 z7C7by2|iZWRrYE$v$82V+NJ0#RrUij&}Ng-nyc-`hcQ$k4eI+B3fhAU&RWsbRah_9 zfGQvLeMj)AFVPJFszjNtvY#NdO@OMbR$#G-_6Ar$QiP-`yEn{aj|?GL>x5 za%i0Q-AFJf{w*+Wr(d9SG*HUMlbXJdeiX8rJ(a}9zR51GvmTKK!vMB5%T$xv#9C`_ zzB`|ivX0@;o^s+JeAJBpS?Qs}mQ^waI{URkZzyEdI^DmxnPpMS`tu-M4WZ-?44h+H zD+^l1J?r^9LB0mu{{q5$5Ui4#DB`biYAOC>XIK_lzW4_uB+2t`NJ{e;fu&|EIV{*z zq;=kxA%74^YVMLJ1nCg@QKp{_lDdgi(gLZU(77tMvHu-dYFW@*adGa+hloLgzw^Fw z{ASH9i;O<{83ZMB6E*&w<`+U^F>wDn2vrb9--e)gFanuajkoR7{5?>i&f)(8VI1jB zMWFtbybQ6G&b}6~tXehwku5BXn$tfM!l$HL@&m&5S}mK^lKl}aA)qzcu97US6Y^Vv z4D2dNw(HMGIIyc>DSNW(UXX!Z4ar7_T~~sP*|nQ4l0#8HYV2Q!T!mfxNg8(D13KQW zaT>7ePtahywm37LJAba3KX^i1XOB+#{y)I`?y16z zGdhKrlq$Q14Qz6}?u~Z+?@03*kj=XA+|-v|p$M547UWR+Iruw*STvL2_vN2SZhjPp zj4>bCd*Zmh^KV0*&m=dd2Wx#gLW$mh)T~d+8363Q9oN^O8)Ex*jmhin*YQKX&HAR$ z42MjA!A`<%Fwa!0E2O?>U|Mak(f%P~;fL+dq?_CM24520M|1ccdl84X81%B9K?9M0 z_9tCIA-yAygNp{~O^0MfMuMxdS3d%3Q9!MSG?-o#)~FL3ATk?#m3{UgXl)I&9_9pg z4xoJZ#pT?Y&PD__B7{yRP#|X za`XAd7Tf?;_B~YWaDc{&eSvPbVN~LxK!Hnqqy6zI3VWI<>^ds!^+6Oa?2Y!Jzkv>- zqp-Q(E#D7wuC*8H4)_(!Xiv$&+SHuZr`o(e4M2Z5q!m1t2vwLQr#{JJm<^|{hM5LQAc z@r4>ytx>03|6`;2tm3)|w{Oj-I950O zL9eCXxr=2{FD^b8!EVjw5j)Ls{S>g&n@cZ;a3KUXh*4vMT#)O(85RbSBpKv(kbyxY zNd}n=k`2-sf-%S<85$^J2zDX_y3*)hltpSIR^sCTZggHbbfco14a$B-o1VJ^tP4w580 z^asgys0TsXp;UGZZ3l@NJ4j60VV3L{)0}pGKU6^3fz42nV1_xM12a@6nqgiWZHAo? zg6?3{j2SKl8JIzmWQGPH12agH%D&HEwji*zXxKl}K!j zhk%Uj_fG1B$#AqaUIJEZjZ^hdW*YmwCqc*W_u@3L-}?a?YHQpMD>}BfF_%NCs;x0p zc)zz2Lj2a4U5Q#ccVm*hPz(0Pk|bB+SCE0dB+2$VyS=cNVU4{;gADe^hBWrN5oF9> zS<)b|*Gpi9z49atd;JYM-d=GUu-Ew=w7sGb;_W3>*6SFil1PHji7^xwKUNTx5HYz&b|pDFoRJuW|#~z zFoPt?3}KLg86-(&r~#7A@Ft2O%}{;{Gf2#sL1NMjm5F9Z!9p&~@RjCizd_6F8*;nx zU7{J@>Z;991Nwm(jG8gSW@rUwkR+L53dq0=k|Z;90m){l0YRGK4`Hwe-Ub44|b86;-RATeo%n?!sz!!%St zn}L?ut(wn8gVUh619Y%#NRpS0cfbbAtYOWvQ7d088-_H?MlX=DWn-t#l?+GA?A2h! zvhlR0IWm@w`$5Mq8*v&~HjY7qm)Ux~5|<6B%F9MSsPM8e4?_I1!OQGR2`1SIwP2Z* zBrUUFfDG&^wm8xv7>!8B++6N)tUTT^BN@tG|%zfw==mj&%cbd!t$;<3-z4cIP)kh2^ zqh^NEbI=Ngk|b#;Re=nKk|b#;`5<{HwSpjr(n(zsxy(w;3?+%lp_FxBKI$MQ)={W{ zm{D439_t&KVQli6^4kM5c$&-u$z~YUSDRrKgkVN7Y7W#I!JTadGBATA$qc_C|G*5A zBr`k*lFhIRf;2-nQ4KSrNX(c)V$uvlb^Ktr@hr-y%rGt;54JbllaIoqr~I@!+1hDt z=y7E&y|VG+O0zfPn|-=z_~w|tv2L;Ro=|CZv*{^PJ3K++M}-6VQQ@ujugIAn7Y^jd zg}2&WF0w3sW;if~K0~?9J`RAN8xG>|Bu4VjJ+B6&L*D=P^Tc zIk?;E=P?p9&toJOJddI0U8S-jgHjs!t^4ceT~|Wj=Ux2Vrb6p+!w$l8o1a1RbDL)% z#Gc!%)_T;>VZXY5%ZtT$ze%%s#M1MMvj*snUIZcN=thmrhK~L#(g@5ZNiy5BAOo{W zlFYUWBzN>82*z;q+~zJ_5;@)_W;(jWWJiBm+JiPy*P{Zeqx18t4>V8H9@}9b_+Y>v zOSHpt1GOD~gAmxks2Mv{feh>*NwR|vGO&Xr$qr|OWIOzZVn{pucnUj6%-BI<(hjLl z=A(vU-fJ}|&JMYn*ZraMSbJPxg*?sWAwKtpR)e(_MnMRyVAPBienSp{6(mVkcn)M> z1xb<>sz9<8MnRBPXe(-Arag%nD@aUQp`VUlOVy;EzX}yly#Y_^8`A`J_geD=o+n^9^|(8eKLt@Ae76O7gWd6?>(KuPg+6esjvvL6USnqfS-b|3FF94@a)5&_rASxA z;$NZSa|!N2)aU|e6_8ZMw-ju&JC3(gKXk1AHz4iJP*A0L1X3y`m8udU-AD;^qWdWk zlFIm&0wl83uJaMTL3<+-`65W<&xAxsH}Vm5B55}x5tg!X8_lL$lFHOAq&4l{&YG1b6FeXhiL>7|qOS+bZoRLGbLB@8%+jWr?+t}X+R_ufymoz+wUqHw2gyS@@6Fzf@ z-U*L{5Wf?as=O0k2^HQ6?}d=K6TTHg^=XlPR{eDUXXw$az#mIV^1M{1zJFFke=KE{ zEUrQ&b>vL4cKsaR2mK&${|^XHK`5pZ8&d1Mi?ZwcYryi6jekMlBO6u;eZY29C+AUe z4Qlybf%t&UkYq;wfNc!e-~%?v@&|0|z;YX?ntULtiP+8kSHQ_{w)x8Kqx*dL963aNsj+2SQ^@+Bc%He?utnF zEsP79V#iPHbpQOJmPPZ*=pPXH6L9w{gyL0+x=Zb_zaA`2WTWpR-B)n;AnA5U)E#fT z{(r&JggSa8>7F+XUw4O4asrKQ%8-p(b)4?_<3ZBIJvx_EZ^m5eBQ;Eck z7zG)d5yuOA(6f{cV8x7BE@{k&Z-9=U5#uy4Bi1O=Gh$Z=@iU@S2jY%e%F-n+3l5CQEuz^Y9SePUoWUxpW(wO9JWFIrhYMrZM8~gVmsxpaQ*ft0S zTG;OQVcJ<3l=MhUlC-eR0vR-;B)QCezy@WGV^QY1AcHa+k~%Im`i~VA=e(=pzTAgop>KkkLJ}p%u4|~d3Ebhx`fp0vrPO)YEgkPG-YMj*{zbSDU zZbwZ^#w{Hr8MzU+bfzb(F&zyV`8#fRC#Px_8w0ByMQ!pt-neTGAF@3kspE(Z{_H6? zA^jbcM~jh{jD}x~m-%G1X!milb-TS5_y4s)wd{`j&GtgXzTKuDC#;LkQ)59;&lv85@(7(8dr{9N)$?BiO?L9_FG7}iTZW+O3LCTk!OxjJ5@%OF=riJ8?=VtRF?v67!ejc1RutTSk=@By?@bQ(1i zL{?|K)*AWoDb(@MQKwK}fxTYR*;4ytb#CF09uGA#=*^@?LKcwkNjL!HPZG8Qsc}a# z`T=EdLZ?7;YF6hC{?C*GaKGCGlMyv=_5=A)&}XJPhx}<^xqa_|5VWtvQFK>`q=)5~4|E$g_{`=4hoW)C0+8_yom}W;muxLX(f_4H7eEkeHeC zcwn!8I3H2fNkOXTC(A`WH)t{s3heoOwnEpl{&k|BM$Oc7C$xfkN|Ne14`fhJNm4y8 z2FdlT4?)&*yDo`rZi$(CN=!EQei5Gse}7a!H22X2Gt31YH1`LIW|+THn_(A(pt+5j zF~b0mff*!8X2=E^m_d?chA)sin_(9OX@>7aHB56$%$Px9(hSb-d^Dwa-uyX=A+DQcx3&8z$<-0>=32LiA1KR}4B@}&>vQ)K*L1;swk4^P#ZEQX*mp;dmN zR;$HoA-v^Sukv3*2v&KiMXP+1X?m59KnQkmQj1slrC@oLe*!}FReq(;o9F(nDgGJd zqWKM(hk{Y_mktLTw7Ow+tMe)^F*G)B;v`0G{5=XHn|6aPf*j})GfgWo*~52>_&m^8 zpp>GA?@y@WGqQ>=Y0^~D-+P7b;XgwN>T1+X4_^r~=;4y29zGIe(8DE3wLcRi_wb)l z3~7d=q8g@$OU#%-V$uvh>iE=)*bFVF$C=?|f*D4D4hFilGau0`D-VA>(2K6rX1E?g zUGfFUEx6Zs7=xiYVH_Tubq`i~ zd|Thj>XGJ;0>!I*v#ZSlO#XbO7;ITRn)zRWWq*F|OsJ9fz6l7g^g|)=N`F46*h;@o zr;tkBtVbLFL9m?BACv<28CD6c^vARsuk<}azBfy+^d%62m0oJmN`Dhb_UB)O5Uli4 zi&y%SV0oo)bIqw%`tNk!owyJ zWb>ZXMTi^h0yE7k^<*#4+Le#Oi@|Qqj_c(uG;gZd4s=k(R+`L10zB9|%+bBP3_?&> zqh@+}63C#JOOkr|>&PJJ<&vb@Zve@?ybOXgLuXM9GuS0&%pfsoh9NqBu*BVlGK#_O zCz#i3p99Ej}(6r=)er?6U}h>d~JqJ5Q5%d)QlNAgAB|dNistU z$iNJeBs08;+}RA9AV@Q8J%t%0X3QWlGw1P2-(D}F-E=+gUMT9>S(AAnx!2!&t*+;L z5Q2IdHB-;4KnC@cB-OJQ$e^B*q-()!_*nBj3v(vaZZ@L`2ELniiRffr)Y2*NTACm7-@xeO zXXDNSv6f0LT1&$qc`cm`Ay`YL7O$mS!17vp7(#Wgxt6eFR(^`#9eq78vLwmKrPIL% zwl%DSCNR&&B?go7S}HNJWEv8Y2FyK$0VQS(C^2I|o;Lj5`6z;A@nYHA_7|)Ybtu(j z9u&BvEU3~QKpuu z;H}5-BS5Qbp4E9TqSGV1U!?gSR~Vdvf{mkMV9x{H@O5 z7a^730r@W|t*%W6&FroAK>#iB8B*iKp=9{n{f(2N2b2G zx@ormH|Q{M{{VzO5R}?Jt(MJd-e^`ie~nQ&6WJZrDm2Tl&dc^EfIW|jF%iM9BAYdz zC)f1t8!YPz5dJ}^&4EzTSE$k8y>U|`|5lI@;8w{N6y=0YM6oUXGNiGK%Gw^n(^OU{ z?j-f6^7+O?xcZD_|2FV@ffuh7WDAgMN|HnVA+Wa*QG5Vl3muoN$#lw%mh~>tD(!sD z)0$3cPX`^OZAi+PBX(N8XDR28}`U z*CW@Fn!gt{fBiAHpg`38J9Qjx{sy^zr<+9cOOl)40xO#TRZ*hV*~F}RZM%bw+27M~gSMRxTC{CH&2!r#?T=;Jh78*FzPPln z(sBPs+eSXYm@9bd|8e#nU{Vxa)Ns{I@6PP9Fgr7ZUI_#1F31u@BuEee0m(TCEDM5U z5L5&KQF0I@NCsb`iYQscj2KW*LBYf;m{3s^B^WRueCOV(nyH-`-|zeXeV(nVKIhb} zTh-Oo)zv-S$bz@NAe6Kd)FZ-|=xAiV(=p~hBR+^`S9}@jd`u1Qj848l{z^PGzs)zn zcIO_<=OdKVw2IH?{KR)s{9VM~8Rcgo)y{L;5sUxRYC3iSs}{-Yf%r&C?H4O)q3jQ0 zMlJNvMRJhQ&=C;R&|}SD=1^{GUd2#3A~mm6iYP@*r}E9~`md z8tKU_?)e64#m}avh@O-oa7~G?48EMjzfC-zq(_EMw;-Ll7vDU4O7?rEF<`aYC`S$h zQM~stJUVk4x-GIee4{tu-SP#Fv0m6X_#>8Qdb2N`9wIBh!k?{jowh=~R*u?2R{C6G z3lG^A_FGQUk2e8`HN*?o4jiUPSX9UGW0yw zhxi0g@d0h&T`!#c`N6J%^eJ?DR4Q{%W7xvq0!h0;Hhj}GF~1^jkz9g;TM^T}Fw^N) zfJ5j*REy-#&^$<*2~o{zq}nz35wEdZJ08~C(Yx@jTRRA-;GB!)`G=69MH5J_uOerS z#Zyr&RC*rLaOXKP_)gRyzZZ|*oOj*FJ;~q2au}vkvc*;3!$2#!j4}=G$`v_GIaA)U zE5fqtR`U%q3bLVl*CkIAzPeiI+E8zVmv4}rRwn(-E(vFl1qRPjS zYB7P7J=i(*MY2V56`+$-Al(najZ?5?|3cyf<$9fRwe_e1+Cz)?k9m;eOw>64jAnss zwHv7Cps5*e=WOYmD|XuUuRKD@)Tp$GKpOyz77(EvV5~ z$t-N$C=}=ocmch9TD~c{v7D%O{}O!Kh+96szS2?+VfCcVtEq7Eg_A<>i)b>0@DJre!e9>S~ui5+t1QM|J%6}^sAC!YU{`_^QW*-3gZ4TozWF)$WwnhS; zg2WDa46ZkZI`td8skA;|NxTbn5mJ|=Eg#?tNc4RM;%2&$Xh2S1T)N;5VEG^7V&^at zeHO$i`c3r&3)YZiJtR+%WMaHzh`c)g4zN>+9TLyBm)GYv06Pi<{q^qiId0LzAHa6O910$$U=4yD@;A7<4x)aOQq%HxL3IsrH7RIBL2C-SAW(m}PvECtv)+$- z7ykpjVs+YE7$bJbryzNs8gorrApZ}r&jHA9^qvr}QDQn0hbi$k5}zW`?~5aNSs4<2 z8Xm{tWVKbGc3O@6W?*jtA^LoWp8SZWY046)lU5{u9B3Mr3N9hYe-c}M9I8-Xg*?-> zI)l{f(ozd@0p@4EkEfWC=<~;?agwA?7i=TRXOKKciA?zSIuiWHE`F(9L|cl$W5&hs2bPP4BvBW?JZiaEND_5% zD=j+`78x1g2g-#xBh3AE*V>5IX z=cTXxyRi8zHt8fE`ero7!@jQ{!RsQdX>91*wEU&pg*Xbl-~1c~RgU?K3(sbcwu zkUIiAzX=kRk?1!Ii6%(wkh?$d3an~~Ku;$%|17Ha0f79?NPI?#+Nj}aBno~*(60($ ziCwTmHpb>T%Jz{zEx+eZGy|!>MPeu=!bsdhiM2>fL89Ox1pOxAjJ1*yS$l+d9ElyW z2*UChl>#AOxFCX!{MHavX6`L`*pav#PpIHCsz51l-%$m2An^+leQ5Z8U)Pt9F%07c zG=%q|5xfwCk-UIL@%*n*DH_N7&@gUGXgDvRp*(*(Bs7@kPedX*oG(D#CzC@M&I=yH zM*i3EV>=~EK7;FLZki4hk_aPt!7$=lfg4MSr;(V-q5#4#A)*1ipgM8)gS&wer;xZA z3I5{|r`F4jd80VOK)_ctzb%@NMx6WykWhmS_P_yT>Zhf2G7Oz+l>Z$Bp8)UE6>>vz z$NAbD%HIu^=6Lvx3LR$0bUX54Rz_PI@We5U+6}=a!7Igds-t^D`#BYm6`X;1Br%l&Uwk*)4>mnN+HP%#(vu*RnvTgSU zutzW_dWL+UZg2UpK$g1^DE0Ny5$b}lY8iX^9DL~J5Yu9REWJX$OB+3$mdGqRQMf?X z*bGC|6;%F7NVTImdHNuF`!(KzJ%~O>B04R50<)opxCj|M50cK5S}aQ-)Gx(;QBDP} zUWEOk)Gxx`L=8lpH0B(NTtU85H&^4=2^^!AfPah|7~>&$g)D_dOw3ql5+pjM;%Mot z+`gOZkL}W=+m~&Mr~|0Q_+ODJn=PnJgDKNSnd*Cmve6+N%~qPI2aqA=qMA47tGP10 z0c{lX(F)uO$@8|5k6qp<5BmS6GHJB=pJk@e zdA%~v7+Y{Tm7Q2Ql^sEw@goJ+foj;Yd*-z4}~$O#R~yOUpPzHkbhUwx$fg&N()yH4%X z+teOeBs0MLMh5{Mv9Wf?99!&d4A(Hr@qit93G_VwyxMf$I{2bJ#|~nPTdb2;&9MV7 zVaUJ*MWC~nuFY13JRr9*5S+(J55S&j6a!WPgn+rZZ+TEp0pN{Z$M40913Tj+%1FgZ2KR`6Ku0 zBGw^6MHI04J`-sQV~aQXGx9%zW-3i-cF5T<*%%%KHp58Y*YQ&z00nCi^m`0jPf;TH z2Id)*n1sZBN@VZH2^0w)ZF62}3@_BPo`GxqMGIncyPuFj54Y>&mt4`gui=V7w)km(MuAny9aPEZVc=!>9;>AH zO6&RJYWFd4s$G7WeYn|! zM8Ez>@NPVe1lO?stGb5G(U#HOxI`DqlLG9<{E%+x{4bzaQ*|U%Eoojq#%_}O{vy2J z^Jk-Zt^P;N(J#I^x#rG z8(?~ZuSEU|(97tM;VXa>n&!5e=yUQ{pa{ND8HhymLZy%lR{{Ao!Scn*mFKN1fkHA| z3FN;EmM>UVBEeS!1CfYc4cL1A^=wVBe9>|RUh);eJ4l!-0>Lv9QzO0#_(uDWIsRm; zspQCOP{nPS;~(NV{#Ck_X^y``(sU^kM^UJ%EScX9RCJy++ioqICrt*c=SeghT4;(} zEbpy_U8zotW%*=?^GE9#RzhJ5WJfwDQJt*m1fPG#oyG(r`caL=a>xoYsK2MdQwKiL zd?agti2I(#+cb@!_K%$_`0E>iThzp0f&7aUv?JpcvyI~8>!F~rKBmAaG}00%4bKW4 zf)w8UaSNSY%hdx#$F`!TG1Uj>mW{Haza>s7l8)DyHMOeNhEG2$BzNn|ewqYe5<{Ih z&rfrR6_RIqRs3qM(3j4UHF-ouktb2Gq%qX;W`V4G15i5bVr4-A6;k1IH zO629hM}hYnB(s!iGq&!=)v2VV7^R}+zcmtzFXRa7@*;H_TG@%4jKp2ps?5o!G$hrt z8#1bsR5>{R8}+sSZTtT=<%u>Qra#f6_rZy%p&_Z`EqLPJE00JiC7+RB zPKRgsQzw=0Fxc&pzry?(jT2j347e6i#thoPU#A;zha~ec+}7#Tlu};YgW)?tLFZ1~ z1!}ykbuAC>&C{*ZWqpLK<#{PpZ4@}N)?IIz%mmzN}w{tknZ~ zC*^p=vfDCctx_}b0q6&@(Z9T`l@DeR zo`bj%q!Z~~?9zBCx_#*tk;jFvd}rK*9f5U|(Pf5A_K3*6(*MaxxR}?8Tw!RuhGrrQ z7P7(8Y$Yn zIn-*>@1;GE*9vH)0?@f+K%tJZHQG?~EK1p04r&qQddQ+wuDynuZ&51Ox1eM;axJhZ z)qLqGnp$X4s`;)p)FO*g2D^jWNCqE{Q6g_5&@TvGLPwve=sKV|R|8!ZLskFCI}Bu_ z4)ki}Qv|&((%%LL`ua6`qb-i@36+In+PN}7hWw5Fzrd|AWf3~Qst8kjHz7>*bwKFz z^+o9SO+=XHTY)g$_bkF9zJmxed`A%$^_@dl%$I=@0=_(inZ8B{gT7l4hJ2$DhJ6zd zVolKBU?hrn{LK)hIBEFGy-26Ke*Tu%P^+X-J&QC2kdbl-)t8=4snNO@#r2s*vvv8PZQe5MqdK*1)&2hH2gh~5Ipn^ z)lP)7vDJx?VHy#|oeCSJ$gF#}Eb-TRe2S-r6m`c)QKH=jDTV>4i*dZq*O0yU9wG&I=iSS$p1)ap|&X;QdDF2ue8P1g*c$m&p zLYDXziE>bR@bblyucEY{0eDKu5-p!i5p{{cCnK2%-hmBQme`LQy&Z{&$jp+*k>eue z$dYBqrspadIs?ohn-1l7NGnP+Sw@rRp@4L!haL2kk-q~_`Ir)Ao%cazdj2T))+avk zGL?2kL{c8Zvl(kp$Y1QlM+9Shjg$t?PW)Y-vUx6rsseE+n?oW|f#J&vz7CwoK4S{M zTnF10gT}dkmq++L?PQ6PD?OqCI-jQt8mBpQW59Si$TFnxbd;gKR1PUbX@)v$=yoc@ zvjQsG1D?)uC>6qLrf_i0DoO{}^4P(3wHJ9D&&pKaP)s3kq!w9$FA(RX&GeRh00m^E z{Eh2R>6w$7y9$X}G;%yxcxd9oQy+`|4p?UONYB+cH2=WAXJ28ha}`D*YZ$ADPnU}H z90UPp#W{=wfk#RlF7S&UICulEOA*OO;?4W9v9=QNfv04s*i87PwzjA(H8@hA*Z5YA z6Xeh^qw#Gv?#AqF*Eo46D!qC$3fiF{5j=z~YRFlP~BTq!7W%fa%pvftS_s{1~H6fac>ruvZz-8lUjKJ$w5#c>R-=|z}*v7)g09_z>zk*RG zY=xQwIY8BxA?4vUKpGQzu-ViY+8qdeXDsl}Z!=6oir`3tzH3{U0dxcY1BWa$yamX9 zLJynr-^JFCguG|9MeuhZSG558ehgK+EL;ijO++0rCYobwUIdN&0X2)Nf^Hmo&-Z8& zf0#f`G}K2Hb#w~twS|WI_{ms@QLVieiv(=&6N^&0=tb5I`=hL5F@qxbu0j7B%Yc3d z)KA(^ZS5t49=EmOmRKCaf8ev&4(3Bb*RihQKeu>lbj^1&{1+C_N3p8X81PHU{+AX{ zZt48%4gZzJTlU{D{7H+q?0*m5X$AY=So@Ofi(pZ}OnqxnWLgBP80wTo@zEV@4T`=1 z82HXAP#GLxsP8RG8NA<6r!7huTm_0wrhy+VifdSPCi(KC;m=q+*HG~hT#bK#M-&4; z(>PeD1J(s~oT#%2R7X%l@EYO z7Nr{J5~$K`VDJx%QjL=Xn5jQ4N*QcysJ|>q87u%rpLhveicums9_VgD|FO{U5}@1h zAGl(VRawsgdXHeNPN^}QT3=lAA+SN!fv3w@!-&e~44k21KFeHF1S=NPNL{Rux{`r2 z3#pp|F2H{vR7gF@z{LxxrvP40>XL=jTMX>lYWE$$XGxu7sd- z8$rzkfu(xDsIE^?DJNGOL9L_$?dfwyRXahY-2Dgw`cQkIPJ)2E5$^9GAEQ>Tn^eG4 zDd86Hpj9{gyGpxsy^+>SE>(VYHmdrzigvCpag-4>NDwFs^e$<3yrC_i#?uzI7{QGR z0^SiURgG}SNE_KwDo0Hd+@Fl#rUZf7T}3-;ZyMVIE<(9m%?O&<0pp2K)zF$cuBL=Mq)kuS4-u_F>>!#t#j`%>vGcUK`uy z$yL;08i3;ipsmeuiz-0@1iWL~*#hG9j+t%*?QH=!g|hI35p=KxY(drQJqWn1I>ifw zdj=d&a60R&UYdhCoLTMc;BY-d>GCgv1`woR@)YQONalI0`Bj9=y*E^9r3oc^>xB|IxMs)8^x{T_on$l~fYLcL@d@`w^ z0m$wo=w~;DWg#Ery(G9z(zH}hMl8VtAXk&1zkK+oWP%MKUm?K&dC!Gpf;8?Y=V zB01%7rF=KI&Ag~quP7Em|P7P5_Cj4hy@s09s;;2v8*J5dX|8^KsxKs!-QVw59y8r3*kMZ42h&4X$y z{sZ^gDjtFPipqTsWcl-cJc6JamVMBU95viT%~{nvW4QY?XVozE9&K}y=B&z5fjSe$V813pPvrWS&K090Zu;As}D zdr@WJHU7l)#4@?IBpo?C%PmRQsFn;6M*`5H_3lD;Ilnu6c41{O)T7bN~Z zC}D*yamNr`5%9`F@M6IKP?@XjGTqGvUR_AN5Ab5L{YWAB7~pzj`#*)?Ujg$wsn^I+ zrDF9Ni>^Mi0O}>u-8>%MrZ3WKZHc=NFy~w+H*-!^&8}F7o=iEHO84sfbk6m*#BBih zQ<7{b1a}AQrE)gfaMmb-=~8{GxeVd6an@XeZ!{J4NfTpugYh1W30nuwh0?+6U^HWLeY0rBPYbJi(DxPJgXO^Z9v7lK3g~^57cdCFcjy#1N>5wVMq3j;(zM=sD89Yiq9<^pLH+dNQuN@Q?K?y7tsQ z^fBmrme!pPbS-H=mQBzc=1`@D(G?G&oj;Nytv-yDb>?DS(e+QM@&oQOi0ls=t5r7t z`*c)?{z4$Ke=*<@>K&mg42GMi!NC8)b{J))Ln#q4{<}f(d+*(PL$onWdG=A z%1$;NN{I-SL1TsgQ1)1p{o^=M_Hr;ZTKGSSXZC@iW8Hr&o;d}k`yZ*oembu(8nlzXTT1w(`>tXu< z$$e_OAGWX1b}`=e(y>T)>998r`5o+y8s+FlOaWkjO;L{4aA}zLU++|VyO>{4ANJRB zBGO-N40qh>|YJom{wUs ztr^THiytQ7-`|=R1T=U(fbIn5QM#`4#$M>em710AeS#S7uu@eh27M z2jIrw??vGgKKqn9nD&Vbtwwu`@KwcxxOhF#AsFd^sKF%I2=Flcrw+5lV}WcSba)~0 zc0e?QrH-(~!6QKF214pcg~qJcI1g$DoJbwTD_S-30$BH=?a{m)9Efe|NU3-6HajMQ zvw+e)%+$Lrw8l;#B|SjzQMSIuc30XSt8A6Z#Lp7(pL%aBmo+5{_6GM5@e`8sYr!2M z{=Ve=*WgM7!QY>puLO?EpOTDso}|4H>*4T`3-R8FsMZdR3pH5 z5w$p;sxb?2Y3e4+lrJw}yEknwSH7IZc7@{DUKyV?SPSqVqE;tR;{iWK)PEAFy@1aV zwKjqBmJp&g{!=$3P%QyZAnMTs>LI|d5cPNhbri5u64Vn3R4Kr%hdGYEJ^S6Yxo*o=c#91)S@GdLeT|^@KXwgxdPdKK2y!xrVl*g+%ZHS zsc3adPq`CEq4b`}?FNWOYp=tT+1#~A(`fBYQQJQuO(U>3q_!&~O(U?kxY{0yG>tai z`fB?rq-nJAHc;E=k){#A+f8j>i!_Y@UbQa8E_o+8BJwFtWy6r$`+0UA9`wBx|K6|2 z;i%Wn)G4UCr$3na#1>_XF?t@++57M?!0-6?{*)wh)jtC%q6Y5yd#@DEr+S1aawkk= zI6vTQ>ZF|URGESKlDKXTHt&V;lz%+3G(C@#a^4e~M5UGf52%z2W{bIB)Ry-4F$ic! zrTpq4|2UhbUN+QkidqC-QL2!O+R!L+q9oPkV=C=u54(N}X}CHTk>hw|%_%6P30X*& zUg!Gx*xG`8PEm=kLvrTDfE>Rpy_Vuk8EOHsD7}WZf@X`kklJ$EkifGQ0;+%$mfZkw zHcfqEsN#z1Ma6S2RY)mqh#V1~KcJ?Ggp(x+2;I)+uLiymJ84E z7_@0DgYYy2$|bb0wYM6ywXMAeD2+)@`c7Gn8d{W#Z8H#oo#d-XGHFb9Wql%|~sj0e# z+N3BdNK=DBt-`;vGp;_G-)Q*f<0_^3Pr#Q=L;iiL4&1}(X9>JVS)`TML&eI&O3D5w zRZcL<&;He>@Vsn9-~OvPJnWQ?`3wG?pZ?X7_U<;L{QFzYY9v(@eqk}H#Zo`*XeEc4N0{jWepPM}YDZ}R_&tEzNS6=vc zu1%i5r{QZQ&p#jhtCYW9^89ZbzESf0m%-PhasTGz`5S^`zGc$*BbC!*eu$> zU!fDyMH_{VV$&H5sY8TP(>hGix|LYbRI)?_`$JD_5=Czzp$vUO^5CODX>qt{8?s^0 z?|{+*P|*$+>U|!o0N1ud*NpUrtXMiVDQ!JQDKbHy#dQ&L^}Wqu{j`ToeMhyb_XrUHl@aM`SS2;q1EJ}TitkA?-sCCyCPUgvR#U&8i=avft(_A zk3z{Gk$ui+Um#Uz9aSj1mMg{m_|MtPAQd9A=Na(8Y?P;zkrT*%7CS7bPt{MrNATcZ z&QZ&L)ha;lA@pMl&7KD2T|z(O(MXkg3_t`A<>s7>mg+o7^yYG$fnBhd}q*Xxtmb- z)KeSDN%+sHBgr>L*-LeQI&UVpPl#_UEsms0;Q0<@H9V=D(<Wq_Y;@F|3*>?@Qo$<-iR{IlZY4dL`LsFfLeOhipuF%fp0XPb9MJj$+RwXYC>{8%eY(HhYcf z-mgwNFn9QQZ3wc$?K9M{Bs&~T-_R(Vt-;eHP8h8*n48eSR@)xm`)%mC4OCa1oa z`mElW?h*qx^->=->W=}_`6s7!A$5sd4R*e(JPQE^BJF)`)&<(+y{_b@Z zwc>W~23GJG5%~`kbmK4QHn(^sG%kkjoRPK-x2u82+8N!Yfazvv&I5%UIR=>SW9G~% z1ZQ0%`Q~BH!a_#+0H&LVIV%gnYXQ@FI%k8II-_ZlF9FlNwwxyl!B!_r-rQ=# zSwjHRgW)+ZdhG*>cWu@dLmse6k@Yihx=omKSmVOIAy4v?;yGUxGCv70Ju05_XJHHb zfYXE4Iai_f8*N9*WK>>C~%jYN>|E$akpbHw(b^cBdFwC8r@6L)RzrBwUGLzYLYKha~3+*LBeB`JK1n6ZB8AO`wX|i=F~xX*>Kx!P91oit4n^I zD`&sWsq$7B?&EmQ8o}K!jq0SWiVkhUt$3|2;%vM?xWf%6QmpFoIIn!)ZUpJJfPK&M zT9drlS|o6 z3WPh=NN-CnrS77p(C!r@9g$obn?}2LHP8;su%%If!^fuQB2+D?7rnpF+49jm*i z8&n%e`9V@8*M}~cvD6IJ@1*?1Qd+x3+$i}+$vNNq$-X+*swkasYx80XXueEwCJMn`pslTM+Na5Tm-7R3+SJ zji5-n)$*1jPE#qaWWtfFY=PxS7bCdQ7Q{QU!Km6KRSEZ;5%jeMmLm;smg4FV92sc~ zEJqd^!9rUQ@5nbswI-=bxOJQ9a(37P%aPd-^a{g~S8Rdh$Z;b$X$#^Vsoq?hIhRx= z+{s4ZDUy8GybnS33^)=hQY?Bf*(VizHHLqMmXlkA?$zi6o;=0R2@E&Y=Az?(K8-zY zRFC|-$}aJO(QmW$RCVFjyG48Rrp?7lRH~^)_0_+t)KTW8eS%N02=B!~c-I-q@b<&? z5-*|#oO$!4Fzbn@P~*buiH~5d!&*;V(gde?dp+@U0BSw)SE6F;iPx3Ig&<*$i&S(y zF$UAR4;E8SL!#FcpGR4GJ#jyh)_US3h-f`A+!V3Bp4b3J%z7e=Xg#q_JF}kH0(yr6 z5xF=tem!wFc{qd=?4epuoZ2V4p2$4aKvaDTs9sNGl!_AB83kJV0;xjJ!=A|Q2vDsj zGDvcfy~=h;8L!Rz(JnEk5N`bO6iV`%m`pw@b#Ds>+~wVoI))p;F7 zJM3vyU%%*jB0E&IJpjF)7&D!>6sTEGjKa>YlBh!7DR5>zF^=>#&C-d0d% zJ&||ZCumiX_d8&-o*3JooX>8R!Ljwk!YXS$k#~1&J&|>MNU0S$T2Ew*3sxAdCq^-~ zi>(~Ao*2h+T~uCLPfWt9qgY93J&`5Rs@N>8Co+42T0-TZ^+d*AxyuX)ilFtxSZS7% zw4NBXqRmIw6NwP+dbFNiPy7miWe9UL!|n4}9Pdpxdq{LW(c-wjx%~`x!p_Gvan~8H zwAac8}LW3CsrM<6}NjYu!6^k$U!LddLn+!kF_(p3jyo(MB9-M z0PFQc8!kRFx}Ip2?%oPmuP55@D!_U@kvgMklH-8&dZG=NyCb@uXu(+n07usox%UvO zhS;o4hNShxC@Hc|1COpJs-AWIsOWm4ZT?=s(e*^j!i&J8>xs(3B|wGN6S?W#Mx&$a ziE~<+TB;#3avUcty`FfVkyUbbuq;+s#7iDmt_Yx5Aj{dZJZ?a(j^BM2f}5dY${E z5v1D!_C3pckF}o2yI9q?6>z0KN`USTcGw;vvJY&#Mt=8XKA%RRPA>dRom2fl`?bPz0vhVs{-tU zYNLCN;QrKP0(SDk63kd_v)HJP+BKWk&J0lz8b0-U z;$>*{dSZN$WKp<{Cul*o&uS(zCfp|sS390_SdbN-Xssuz5vvCvy`Gq?Ku0z0I-?rr z`&X6SzCRlM!sL3Zk!#(j9oYQuQrz?~s#lY%tmb~*NI$Tp+}s?f8r7bpi~TOS%JT4W zBmL*!rNS+Fzcv{1TTK)z*79(sk+w-LjZIJ8KaI3|aw)s1I^&23%$`gxrS77p(C%p? z9g$p09a2rB-TcYg>I_>N6*zosdcJ~6uP0LFW9Qjer%3(q7d z^?G7VY3-Ib!P83)v7Sh6tELWW4$o~(fygQ{)ml&F!Iq2(w>@yZo=7&$#A6{~y`E^p zM+_WJqn%?WbirxS^~BGkE?{v3uwGBJJd3){Z6e$aMpZA(QbmVt;eKxfJ#9hMjBu+> z*X0be1vH%MB1S`?*AtT$@vIT7v@Jx7&}J?h)uyB>;WnG0%X!WgSdPqwK(8kzcjTB6 zoVG2*J95oTZRTQ973MNVP$b=Jhwy;)CWJyl(}e;UrLC&t-Qs;2X_UuHcqiAo)1UTO+nPrMpGW8n3~ zd01WJ^~74EzCe*Bzx@IqCzvWkF^{bE?MytoICdU_Hz}B~h@N81UWp$&W(}?XSPu++ zGBf8rpSWc|2EjXprxINpW=)f!H9vuCz*}?FmJ{j@C_>83;~*NVvuBnAozd;FR!o! zH6fri%B*{X2O*#z1Z2G%D^di{8uZwQ-J*`9qj^M-z8^$S>SujxXJ}y1^9dPl12r}u z87?b|Ja@|Xpw_q%eiZ2iYMeV8Dtf3t%P(VgmCW4+ZYxJF4x3FKBJ zknP*YQju+Nl`}oCiS6=$r8}U?CB5DJ5#sw+$+(sHhABmv?^!lw+Hw-U9CaZ=MrnV! zuXF#PJ>$L>X@z{$IPR-><1-Y_cy!7u0mr#d^}k$jy8i{SXA1SdSD}yfKiYC0CO7yu z+Hw7l**7Ueu<8WU|K7*83|UksP^$ltAsPCJGmHhQ`rpME8o2|W>HfC|0@eRq^g^92 zG9Cim|BgYR`d_R_5&YAj$LP%r+7Z?Nu9|52pPiwBLC+^-$OonRpQ6ZfXC1u3d&uF3 z?tk|~rTbsZu9CTH!Rh`NZ^C^QobG=K`A&k<{V&!$%BGigneKm|V#gNhf2F~lDr)yX zQgi=%3C`>Ow*qZM-N;yq5U0BlVTs-7#+24iqSQujZWe-mP%auB)+v9ZPjo7?(U(Y3 zQ@f3R(5W(bEdBHwvB%QCK(oAf!hugB6G;QpCYv^N@CJ(f=DxX02-g5N8`wEb9m zV@8((Rga~U4H;7CKA`HcbPM&KS*0IKuXXudjMM!OVVq8R>9d%}i(rC0?vLT0mbH^V zNI!xmb+5!cCUu<0BoVh4_#jSP_&<>P22=TQtY&M6vc zO47p{WIVD^mZZC@bWbxfS9-paI?KVhEY1bWmsiz;t4zFIBl3|{=GZXX^xOuH9!ib; zDKlZxxy&UU#}7>CmTY9L^elwpGyF$9o?YY+E24LI*^whDpts4Abk~?}H%1oAl5|7( z8%jTfm!UY1z(tuoy8b?tA!MZ&fANUy2k~!F5s@@k;$uuwRHzY1aqs|4W^S*>^y8HXE>Cku$rAKq9I8|9LA<58sgjHN;SoToE(w{Uxi_EI(KFxY};0Xe}bYR zCwK0+esmPKqYROo5z@GoJ2YaNEBE$bO`p2ek-Nas28RNr`wqE_ZFD10y6up=+(wTB zrMn`ztG~5MyMR0Mbju@mc<=^4Iu&+B?pjL_91WD-oRquKMxO#o_bPHX+2}VwX=Kga zN_E#23YJMzcPess+Guy6)W>q4vC)Tt(%pgFm-zh&s!4+H0Hs4W_qE4vGYzGhH_{me z(Y=A(AwfFt(V~Cu+wrPk9Z>Y1=G+fsln9OjO6&KzCv0>RP+H%}{iY~5d#_M0&K(q{ zcPf`J0>KY@Z}N@~R|hnT;0uM|Nr32St=!)=Ox*yF^#G=&nOq^KMT=37dXYI@J9Eh8 zj&y%P2D99;#iO8B}nSv$N3d!@z0rAp=6%VL4Emc zs;D?Off6Ou;81aa2V*IIXivsDpaD;Kt^rT?wkxjk5Wtl1v;j)TZ^ezC!WnddcY?20 z4*V9+a5Bh&Wpx>N8geT>lbnAMJXd$G#dG=YVDjoq@bnFwif?)da7J@$OhC94=l6>D zdOS73_9n&Ko{IGIFm5l;U?2|@dRR3CL_RMyomJYwEeL%z(qv&6t0c3 zrKq($7r~f{n8*|~!CMXIVXoLOBgNYWdyVFbueFTM6_1h==cqU}SEPk`GgqXQGc#8# z-#R*1ESyEp6+44Bb451CDm7P}1y0Wu8^WYhiS8YgG$$^aEAD|p&lNu>hgjh?D|aO+ zQLCMrE7FRfnJdy_Uu>@UWh+zZ8_~?5ax;uQ8qoJ#9T27sWVh? zH=04s6?-77Z6$aHl$tAU97bpVL1a6Uk5JDQO><$cnA_gW6)kNrAE=ru+UPQ%YOZLb zhk>fOBE5&%lvWO_u6nLmr330m^S`y0AUFW1nk(Aq8lY;fXrrG1wdaalpS!2JO(nZhC%v_P$&LOREn;Oo{6`6|`q*YUl%FGp$sO%D7 zGkP;uWIZ1auIQ@0F>}Q@TT0c~sLWh3iAwEgcM7C>u4pwFRZk0EGJ-zR63`)}1-~0X zKU+YK*p<4zn=WTSQk8H=L7?Y~RymdVU7Q{P}(_NQyXHu1LZ-YS3 z6_Y#ixDkxEEm)5HU<8wFLA)c^_0Z)^Nvgu_M+o#>F}Wiz8o`6M1aL zR$b1+Nmas~1A(3^CU@kh5v;Z?SdLuPQ(IVL3*sFaXjB`Ls)V~80zFqu?#M+W*k)U> z9BI@`Ti9s};vJc7RL>+;3C|G-{$;L6g%!H-CTjUHerKdy-v{TZipM>9nZ5Po=?9N9 zng)}5Xy__Q8F{Ywna5KH5}qsmtmZ+aP%_W0pm?r$A%U6ziY{v_{;uYV4^S=+Xu!jZ zufX$M5#Ot(xgt@*vmYqW71Ou?!Sh@(*W$VS zX7q+NPcQI1SFGkGz?nl{m0XOF=Zar=JZqugx#D%+&h+Rnx0mMt(1+1x6>EEG0fh6Z z%(=gS;<;iy&fv-Hqvwh@Dg#_Z^cJb8HFGegi4PA$Flsnf+fpvv5nECJ8YR+-`oZ%5 zYeoG7uukx9xS{R=kUDNfog^Z715Dd1>cI-p0 zh3?SaLa(AxE9$?^h+9$roeGGqsMD6S8)c}MAjhq!Gy6At^ek@T(flfFaSASLWXPh9 zgHkK%WJre6ArQeUK-G$R)|e<7SqRVcih9#~&5C+`ORyROy`nw<0=1$ZD^dif8T1&v z^;|oWjuJ(1BPg|^ZfAJipyv}Zd<{yis4I#*cV2@x_}Vc1&@1Z2(5iYxJ!V(Q-0I-; zih8^Ww*xr6qMnd%6ga)29%~+D(@VQduc!||BNkdwFO7;8zC%W8UQs`f{iIja^H4A8 z?uuH95T{qvNuRi)&aZgt@uCOs3+(DUhY!wPx#IOX*q%K3(v^U(0;e2bLyqZfO?kU8 z)7Nin`WX5Kd@5eVt^|q#38Aoss_xUe^HxNWNBI{eYJzb=I*_7F*(T|JNYjQW%Oz)k7z1=`$ zmj~7Y|3w-df-(ZYfV;fzL9?jwC zu?8GH-io75Lpge4I!Bw=a`eFx=?B}8T%D$TZn#ZSel~W>+;qg?K%2$ z8ApHhi>A#QpGTgi z%^vFbBt;8)bF^?IM~k{{A@JdQI9fc9qa_@iWd=v9YI3x? z3rCNP;^;rCI9julqjj%ywBbvRHeTZB(eO61^7yqJZSKI)meCw-TgcIlO&sldjiaYO z=VbSDSP6 zdOk;QjN@qkVvgS2&e2uYa7_NJ|CwCCu$+c~N^fumXrIjX&yqdJdsRCgyw^e*Bbvv5r zHf`Phc?LVa$5E$mDQa8$97lD2->I%Z(hh+Rahx{T#LVn4`Aean$1viaPaAdxoL`#W@;yEk}czax}OLM?(g3G;|zC z!)9|dd=*C{_Hi`w1V?vV;Am9(91({>H`>m%BH*sIJ0X@e#2u&=(@HR;p$B0Kb+W^Ru$%Fwl7=xcFZ zhmevDIf`iqhQ0^abwnIfbvT&W`0qMe`KMl+`8HLgdGdJ$0kM4KyR*wfb>ba1k-s?Ha-^Ed%0~{6nm!rNvaMbT_j&93%k!BmvaJ2~pGh@*~s5f$0{KK4<;A#eRD*afxU#nvtR5#TYj zbhJqty)NCj0StRiE3Nyn)I5NU_7nNBHwSL>)UfWormUqE+L`l8H8nSq2%J1bj}C4b2< zCKFqUJ1a{LxFE#%H*qz87E|wXARZ^;l79uF6o2cQK-$zrAUyEAv=D6%g7Ev=rO`%O zD=_WTNEChNYI=2losoEw#ve%e_-f2rGkTZ1G+v6a&}2L=A{DWSF%hf08KWx=nd}i6 zxS8yx<%1PX+$tmUQ;tHO6BSdYCYwe zX;CWI3`5PbD3$9uP*uty*Boj!89GI^4E_i-QUT~(GN4dL*{Tefsd*NqZ1n-Ph;lt- zQ7YGJL(R7+mFqoFG8?%TSd?nMB7m7%Xi=*9ZZy;)i&6&f1htV2J{+S&a4V262wg%4 zg{kOiAUWtd8S0}WTz%C)g4F;ICTe+Hqw&l8MD{3fdx>8|EvMc)Os@zQ{Bq#lt0ej? zInaUXvI~ho%2^y?PDX9+q=aVF6_p6fs3${9(D3?O6TbnX_uOaHCy@-T zHw_X_X8Y7mk0OC5yYZl&*szx{k>Wel3XtzJgiAQl^&t{-vJ|`k;(LaS zwej7vn{3^OQ2KWM2wT2sNPB&A5IVkx5vKT-BTV(R9+N73zV%4^eVY)b`L-ZT_w7Vj z#P>YH4BtM4MSTYl7V{lN81NlOnCbflVbFIDVaWG4!mz4Q**)aMaK{&hH^NsMq4ZsY z(BrFv(Ccf4(D8LfnBwb)Fx7VlLZ9zGgnr+H2-AE^5vKe0A}r!thcLsp6=6}|3kZw( z-a#1feT6X7cM)OGR}6)^s{8?5eg}N*3JKw>j!^n~BJ}tgBJ}!hK|4~lk7=!pbsJ1AN-3q7fZ zb;>2e?*ZN492vH#B1HHc5En}+p=}xo=3?td(mWG0D#C4ncEQXj^sIJ{ND;gn@KxwK zp;u#K?c6$0`OQGR9-~C~b)fWSiO_yi-q%3rmVW3h`e>#Mas9|?5tQB4LUrgs0#(jX z2kDs5K5?#aeNgmLi_klT;C#UJ+3nD~8YY_}JjK9=G|am_{5aq??O^0^A@#d}>HFNF z_bl7$(~{u};2xs_-cRJRdf>-M_zxYiI1y|PXe7Z$)n1}brmO|W0bWbg2deojYBS)s ziTaR+l0pWL0RD}rk75*VhXBdG73jwn8m$j54_U~{P9@F(3Sok6n*bBbRsURaEta-ccntjr>TAaK|Z2okCgm8@O&_mh<4~wpZu|D~oQavia)PR;XSg z*9sinR14MDHfew8e3OCG?XpmVMDAI`-KZaE=6uwdXp!WpJ@}ew=)rPd-k!$G-k}FY zc6;p0_vlEQPXkbB3d%u$I0ZZOuvVyrE`!HiHvovfzZ$xw5L^c^-K_|t%7lKy+szgLO^c}33Z7V2zRLAy2f*CLAWa+;Gv|a-lJ+yya1RUI|%hE1fKx>$~l~b zdh73-^XcBb1o-NH@H}51u*yhvK&1JySu5=r4wBZpaP6qZivp`l_=rNd+Y}i6ydyNS zP=ob1@Evx`xYGdBqkN%Jh144iJla-gy$1LcsqZw6mURxB^v>zfT?TT?V3VFj4Bc(D zm2hta%)`(9(we#P%)spfj)#~B>?Ty){U+ZOJ0DLp+%@3#;y*MkkvnL(88)YEo(5O+ zcI2BaU%*aQyG*!wfZ7l|N4{dg{Q)f_c&_r!d4mQfcRirP1kcm(VTL~jRC*xb`5HdP za5q3x2wo`v!cnh_^vnhH0>MippG*+S1i&YoO+X4J*;#O(fe4frb4=8sq;MEqa@+rZ!AUU6znG>u| z@}7a<)=}m)yz|w}lh5m(9f0K!P>)#@?GGoFT=nFFWB&1YKEV78@c*U!n=GFCfzJP( z;h%`-RsI`rEi(uIq0Kx@Dc7w0OAP;HJkR;PbnNPHWIxjht_B-ddZHs{)XhDi?aNVt z?3b~1hLDyd4ee&|ya8KBLDl@(IWWTVwlRh;DuZ3XOu>J!(_Yx{D)SKMBXod`_6KtJRXFwB&M0n+8(^S10J2vD z;1k}E*5oByq?E{h8Vp~&42>~VE0O)SVTMH+k^PkchetuD0~`7q3}4rbh%zEOj5g*o z@yIBss$Vq^%-Qzv=r&0IBz=kOqbclw!luZe6qFa>+6^K_t+|Aov zMfz9hV6Eu^1a%_-_X-F}qjiEbaxsm#id~T{oiR$KQO~Y8gfLD~(3yfX!qPe|Gy%;W zD=s7*r&dvl<~C`B@$yf}&!?bo^+MxbB`cDsR!I!UwK^fFc#z~Y+*ka7QZ&L>{ESjG z9#{O1QuOotfHUi993J6MyDtC9FYbFC=eL?(*)641F6thx;VnUH9a9KyK`pNQ{g(G=o&Ztv(7;Z5o`mPx@q_eqi@)Yc^UUe_YFX_2o+Xef7YeBUjU}%rm*@5 zw1OS(7g<-p(aKUdHEJciL5(9}zib=zS+$*;3y!YE!)b|J9mA!|pQE+X`Nlr3^A)l4 z@huW}mfJJSZETsMp@WfxyWy6w2 z1>G!dF6fTJo~th9dNyfk30vADnY65tma?V%QXJ|)w$&SqG|QIWlgw%tBQ0%9V+J|J zV~Tr+k(RZk)SRkpOFG9$Bes<8QYAiU0IY3ch$TKoSZ)%puYU-$n-uQQd}tQ)f4|8pjt^CpwC;s3Xs zI{Pq_{igpP*|m)ou<_qfW7y2K8)D$ZkfI8?OG9abMI)uS@|rCeHL1fBUJ&^ntrO7NZ$bg>2OjS>`j zNf*)87O*2q&;kOUwsf;SwR{+B1l?@`H;c0Hs1fwA1y&I!Am9#TR@At|%()EDXn+=O z3PvNk9}w&Tu4_LysYmR^gWBv<9i>WRiRG;e~q|ViQGHDPZBpfp3{Y%21#qb;kowiwhq~{Uu(fUTVNfs zy^UbLE#O&$I_Osz!9rVL4LqM1!6I8=jVndJQH#*wCAPqFvXK!iwFQ=wMzG2jSWaetE5wodXvs$`0ludMcsIfSDFk-}e6}s%wedS!ogV384~H{U z+3lcO_ditEtcGe(b*P@SRHE|J2Hv7!z8bpbZNSq=y{(Y?q=9!7QvV6~T~hBVq%L(z z!@CQqYXL5xTJ0&MZfoG@3aJMGUQg;53aKA3@JqJZT?P0#{D%+NYWGb*wA>Va+n%%V zC_p<$xL+B;I|+i=>V$j6sNPLbQ9l!|`<*W5P=bK^nQ$8z!Qlh}bt4Rp5YVz)_&r;o zoE&es_ifJdZ(_I7r$+|uWe5G@|oeju{q_- zUxxeE=9Dk)X|-4x{?6vOU#VfYx)FSD3&>eL;VLkK)3$)DYr%3O_`w#C+gh+60(uA} z{G%<1`k*iFP8!vj~KFwT#<9v5sC3oKhrjp~;Km1S#;QT=ACxT2P7vr+w?pt4FlZB&2Q zDxPtWE#YRI(Y@-=cmZz0f#bdXkInHML}l*ze;7LtFez&P|Ih5rF}FvZTkduaufU;u zvK;OLrw9nr6i^W;eiFRIq`dg1w_+#a^*sK|#a{C@3m|VnzKb|M&Zo zWH)>3?|J_BJe!+&y+6rhl1wI(NixRszYPtX@M37UGI{s$3 zuD=s*#BT}-OFP%&UyG9wOobhcstgW+7QYx;Rpg2?ll;z}#{%!w4!BKZchqYty`6UF z8r)W6b!Wa7_!I`RM~?M<2G{0TzX*ICt=r{Te{OJl+dA9{{0yx-MgH87iAmV(CydJP z3cR;EC-qRT&Z#}L1MrJ=%hwJCpG>W1zIHyigxN=H>Xr2!z!F@)9Q=j}>A)Pk1Gvc! z9AJRPOjg}yEdx(e8>qGGvszd1Q){6eq_s?igzrs2lQ0KqO;%D>a?<7^dTnL23FH~urWAU z8AxxFa?}IB3}Z0aHn0xyqA{4N4Melf;vZvhrX7NH7TtbzoW;wLP-iOxdC{V~y~Y~t z9NV+1QZF;w`L;jRI#_PB3v7Q%+X}78L>zB=g#E(0NL-NZr|^DroK7^D5n*p|zCjfX zM$llUePkGkZhfSvcVb&~B!7d4#>(mS-pY9@@L7Lz`n4 z>`WIsM)3cx4X(5eG9Byqj*v09$~NEyt80lmV{o-?z@*d$eT>0e+aU8w!U>Nw2J>u# z%!>#ooNNrPu?;e>O7H<`V{ol)kaLBwzzzN@k zRqGu^PHeueimb#~Z?pwkv(n*Lqur=AD+!AK&|xmrnsxTAjkZW@)`{<9w41bMo%10^ zyIE@uPh=bnI7mHqmmab&oq((p@HKd79HAP!J72pE8b_hV?#b6)g2qv=v3v8i4bV8U zHFjUV_AfL}JBZz%r?rwd-Ou7noVc`Ou_m4*Xp6kIc&+-hC-8gew(jNfyNOrv0ahE=UHV-!?cWV<2g1y_Gcu##F#h*dy0t+ zNGM~ghC|_Fe?`KDFyXl6m}{Ga4-+SVBRO~_FbCYk3JR=ahMybk-i zw;Hz`Ym|d`1Lo-Cm|w8gIv;*Afa8{9|3tz?|KQp^2HQopNw^ePd`1hJzhG`&P8mO5 z!*R>8eBE^+1a+KoAx3)eYC%h9)aUn**;Qt}GZk zCUeGNbQi{-;1{dX)_;ig3qW5HR~MXOS^o&sAMep(HQL(6a1JNjeSqs6gkP*}!C98| zQ9#Rxch}aRSI~O%m6)=274RMfw@=8#L{+Vw&FTGy#U-4u9A+}=r@p{yVk@mPwDY?n ziu=fVL#qAZgad(3WawRU@aaIi&xdt48>@rvXAUa$T{s&Vq=X(u_=~Yg-ik0@ybxg= zUZC<)?y}OAn|u!1W@<-hjbS;F4}iDh7duLlK($-tFr}DH<3#>|*5zvGM;8dqJUuk* zUx^$DE3q8i(316`v?NrMKQh}`j%{d}ZIeenfKj8lIPkcJMwuu$k=8KibrDYL1c|+B za7TI@dZMDt87Fcq=#8`;Z`;l^bb@VrJLsGE#ZIzqKR5Jb+t!`uIzKVoQ*7HBLnqp{ zeLxSM4%X-b~-3vlT*kfy4zGHH)tzQBi2 zIxSB+7WiUHr^{GYosQRmJV$zlqADFf1o@TpOxrecEtciLFLsuqRwnHad@QADDkn3K zk6tS&Vy8m8iTc?E(t^u)^|DVRk)_7yoC0aeiIEiVtWok47!_QHkj~X*oCi=PFSqbw zz%9&{FeeriRKv*JX_(SC@^YA8;1ox0!r;boIMvqxr}o4o*ZNAYIsS)5Gum^ewo_BF zhZ-_g^nNw!&63?&dDe6{@Pl@Qodu2r~Sa^I^oBQPGDD zjB0K&-q*H$O^4}m%cQ0W6YVkc$` zecl6y@CMI>^H2p(@Mn`TVHS z;To}sYBWM4sd&{fj?hS6Bgn-0UlA*>w3p98uZ}+qdr^N3++u$`+@}5x^yanp&%*Yt zu74i>Ep`1X@$Vn3GB_Lm|A+s#;s36G3jBxh|6lCCg#Y*T^4H+sy}kS|sqX5lBXy*X z!IMHGyDz-XTjm?|EN8UeG@j8U|6<6F ze;r)czYlK2Ukc&+(X3uD=+%kr3<;~xvx z^{2v(_!q)0@UMjH`3vD<66(|V_a1(wx4Tz22uK!~EgkRrA3=BgbKtuEY`77B6jqZ! zNA)HO9pL$4_XrdNT^PdVKuO|ddKjpbk+2KU5aLJm3u=W&1D!)`-ta1XDbU@-Pq?*j zWx|#Wc^cR&?T=9#*l_$e;JW^{Sp|sL2iPv~KcRvDCEP;)Teyw9aZb6QFIx&%5ncX3{_|w$+DYO^DJP{9hqE zenE;!&=PLMuYp_Or{H4oQMiTvA#fY{qu~1f$#9GOv*AYl*>H>f>)|%`?}ppNe*$h( ze+ArT{#v-r{jcD*@PC9G`2WBy@tdSsCM)5#^y}c3`uoBy^ZUY$`$OS|{;_b&{i$$U z`4_?6&7TXm!e0Wn(tjFmmH#^2YJUyf*8WDgZTuZ@YkapOW-s~y+}-^)aQE=*;3oWi z;MV&6;qK`l4!50uJlv#zI^6dDOt^LaT(}+lC2;rhm%>f?&%jOlZ@}&7e+0La{|(&E z{%>&WeXkQ1k@913_wj4scJVvG-Pi96x2u0R+;08}aJ&0w!`;un0&WlgX1G252jTAT zKM%K;zY1<|e?8nj{&#Tu`hUUg=NEOxs|Y_1_dve}ZhyZX?f}0p+=2cOxCi;iz&+TX z1osgCJh+4WOW_{s&xbqMzYFeR{^M|m_^aR!^*6#D=Klb9xc?{I!~JMIZr^?d+#~$X zaF6s4f_s!d9`4cp#c)UZ*TWs<-wt=Q|1jJ!{_}8;@!x?v*8ddlvHlLY$N5e6cARm3 z2={ou7VZgtH@GMI{o#)H$HJZ9Pl0=qKOOGL{#>}H_>19A^q0Y%K)3%IBIyTLuf?*#Wuzc1Xg{NZq?`6s|V+dm8LIsTP!&-HJDd!GLw z-1Gfs;a=ds3-?0*6Sx=ozrmgE`UPDuE5h|l@NcH;C-CoL*YApdm$?3c_&3Y-kHEj# zu74u_UF!O$;ooJhe-Zv&?)q2Z-xaQZ8~)94{fF@HO4olL|E_ZV5AhF=DB(u@{|CR) z7hS&0)0Lf6NWb=Eg@nMH?8~dM8m{ZNha2&`z%B3(fb01~;1>F$;WqM5g6sQd!Y%S= zz>WG>!7cU|!fou|1-FU63~p2ZdAQB|x8OGS*TQY#e+f76x4|v(|AZTJ!bW)f+U-r5=(0+JOG&Q(@Nh_wUAy&WdaZ%Z%g0Hskbi% zx{>((9DFO#6T~0n;OBupAYPq=KL*-Hye0?#2GqD4@P|3LB~X%hZ4T}XG?4hC96S_g zD)G7;JQHXE@y9uM2@r=*m41?gp9A7xtI|(%@FzgO5Pz0~cL7y&2mT@lw+9+XygmmX z1#}kih8#Q#XbJJg9Q**#^Tc1dY>Jt@dZS@D^Hc#=H_{uWH7Y{|FY@ z5B%#K9!9|==3CT3J!#K|djLz!x8~qJz!LKxbMP2oiTN)%cpC5m{7V1G!S@5bN&L6V zgSpZGSFP~yW25cTn!N6p9;k39v{(=LD^PE|bX3~_btm?7@Bkobur`TEgH>CP2A1|- z(}=Y9G(H_z+EvXW(yr3@N?>UvwTMV7N#k3ArTtS9k@k(*7w` z{h=EF2rTWNxPD8aQoa~ih_rvS^`5}e3TdU^6)Njqz|soYE$5KKfu$8vk%K1y zODm)@2hRYOR!CJ2z6n@bA+00Q3ehon2w3XFnuyeg3LmkO*7%j~u5ehezpf|rI!xMo z99Zg!+MLvA4=nXWhaB7!Sn3JAxRMTJD6rHMsT}L^z*0}7bMX1VQcvuigRcRWdZJ4X zei&Hli5@xlRbZ(n_RqoVfTf=3orAXmOFhxo#u2X4w1&+6EBQw<9FLsie7O6t0 z29?Q@C)>0KC}#l2CNfD>xa!SnFanZH+?$*yO@<_M?51QTC%6Js=F&~I>0O{Qiu&~I zalPyiiGY*+ML*Nhvz@KM%|@SQ=~Ar*uNvu`29oN`4V;_w*y!^u-8yt{qhDz0)}f~v zeY&NqL*HbinGGa;=(W)0ZP8Vo)|qs5s(WBt-UMA<{nR%7-srOGGFN?iAT}%50dMkp z=xWPb(ClW_^A?+H(>+1ub}NH;f-bn*Hgy37?=+(37N!dvuIfm`#W zHjrc@!0ipC*#3}YHtt>edXmnp*ipbTclRC}2h)IMIQIS7fSlk4Pxm2Fc*?UI#2oolEm;?OHy@P#S$Gu z{qYe=4AZZ$8QFtosF zQ8uBJ_5R8YxF2=En+jI^A8}_dw@AJ;{R?WcvdJ|L`kGVtmEB5HdDrCB^aVJ9@LqcH z=wMl41Y3p`05@j$u=*eOJo&0Za3y@)M_=pM6YQ3JPs89*5Z3i&pYQ;Nz75K{zU@!Bhgir~>3cc(L)?tczJcJW;hQym_*=98s zQ$^%3P!75*``V_bfm}!WjZK$;a1dqL7Bz-ah0x=5vtB$fC8|Y537!qe0mF>urmP2CIQT9tiDfS^G))8g+2DN05q)O~3VAd#Q znBSkpLDBW9>L~j=8xR&i0OfGQvVYVanh9Xt=fWeP^FCMRs7DIPY}?>!V-T?oSU~k~ z#MQ>2z&4QkQTT_^%!GY8JT>jP(+%ogSXN|v<_Tzn6OBQ!ZD1Y#9%InhHc*Fu%VUU;uu)$W?O_Kfq924tH{CAfO#`4tIWaI z0CSP6vg(|Zd;plOrLxw#t5mLya0PG?ahn{x9+-U>Wr>_X{sd<8t*kZ&m!jU_!WdMmXtb{d!qr-{^_ZqYy8=w~Rm#Xq22L|HhFoPw$(`Xd>4 zqjQln&AnP&7)9~@Wrf!ZwxX`-<5bVYe=d3w?_IlKHvVA+>&|H7INfCri&t|`-TRe6 ze+zm0(p2#Qn)eVipJ5HuVFgRD$1x4@gZe|wF_gm`qR}Dr8$4;O2U*r4#omF$HA&)! zX&SND-2F!UsDK?Nk6SxnN0rq&~1TT!IULxr|7Bv=v0`Mo=yz631gmHbrC0fVqrF9M2;48` zl@s=Hz#In{zglC)-%|%T-)M7fO~q+}(dOBjcvc3F!GN=0;@8*)N?Qf($3qdtYc0)* zZ87*d3#(L%IajEa598M>4da(UxbR^d3(Bdo(jA2B+s5Z}<#t0yfY#voA-=$-Q$V?T zPJE$tnK5=cmoA6S>ErR6vISW#c&*<}|I}~(Z~aZ^oRS^C#VU$&_QBVXIBPw=xPey; z(}Tp7faAAWDc}U>-4x?* z1uJ2|yI*{jWe{v4O@O{{Q};@B1C4)R9W5v`bhT|;2g=)Le2q=}f_7!NAKG*bDDSE9 z4K2UPp2Z5(nS8p8uM8HzfVb56M#~^rYP@}Uuy|AFwi4d>d>Vf{*k-(aWf=tCRq93@ z-(=G&P~L~*n{B!es9c9%XV2KXRpWd=5saY8dSn1SIXOibEs$B&*cLR zj~dR?cFHG!bEVRFvF1+sOdzgj8gFb+cnc8Qb@3*;?Indad;*y5x_C3!O7QR{1t?az<3LHq!{yLoa&R|@>8Dif5YN=+9I%nD{lkL z!K?9-Of-7~af)!f)U_&Nxs!!QLgQkp@iN!SB&AI;{zBWIBv3dD8W&TIx60QR8Lh(B zRG7<5m{qnWnG~)t{#xg2pFsN=zj#~sRHT7Uys+stcpHvid=C|U?+hkW*bQhRajnJ| z3VsOaUE+4`DpV{wkmM&o9D*9}pvz3}8K@J)k)dPBHrHx{y(|MKxj*nE{NgE%+2nPS zX93+poYt7FA&-ued&FvE8Ek^MW<82jr##OQ7p-e9mm2RZ#Z9$^E@QX_ zEIDd)S+k88m*AZ}8>x^P@b@yFzu7P=dY=a=DW#X1jRtc4UB3ofuaWdHB^>D;jO0V zJjgi%{+0r88f4MWVk((37+0ejKe&g3B-I1{ zsPB=$z8>%=`-8Br2mEp0$`WQyl#fBtY6!)$+m2hp#NoAyfUEqe9)&B7R%2`O z$|t0(;HQv}U z#NiJ8B4#i7x|BKXN?;B{h^2Dy-oSie7)$5iLBM?L80(mWPXOjy$5^Kvd_FMWBgQ)C z;2VJX9x+y*gC7Fsd&Jn@8Z+ZCaTl2H5o7!0SZ@L5d&F3m9J~vd?-67B=HU39>OEqt zYYwgl=G)*{cPSetO%4O*+u+!KIVEHQFy98pdgS2gzzRXZ0p^SIST9droa?^$EV%P0tgk1_ZJPmR`*a^*y~Z$oXeAIexUw-VxTS3W5C=R}B(`k>%p zld$c&)srC(;PyX79r4dEDm!{68o9J==@$LF0wW5Gs;`65A@`$sT3@{wn~kv9s`XLx zj&_`1@550Z1S{ssP%XV5zhxCRx3F~B189Q(i+Il~bV^5IhZk(@n!+M^1t2@u7B*=` z``FEeZpksQb=2-Hde@_W^+X|8yHXe1s`hcaVKP5j+1+i}@eDZ}k0?k@cu(O;0P29A z(k?LCeYU2;x*l5WAsvO7BZ>^e*`S=lpo8% z+ks^zxW{v_|Daxi_lX?b23XdHd&Esp?dSJ!@O>Ri14%z*s$JTQ!W=CC2J`+p1x_-ZEA%*j5eWRqzmE zFc7)+QlWZ~Viu|NQW5WI3|_VkBudKQOk?nhZD4iOKVb}BwGAX9DunN0AUV9kj;W-L zGN^f28@z5CSaBF(4BoH}tV3J|gWC_oX}(pcR#VBICRZlW#iHdS+UjlFN{(Y$9SbXY zQ~X|`THsB>Vu^6VbD+tpa;x&SYoW=@>GvCIQUsjvei+Eh-Ca3&0I-bPa2i?13C9BS(I@8S z;PZiHJV&I_`G00(WnNvy78Hi_VIspg3T%^b88G|bVqOk@3s?qn6z1TsfaM0?xRH9T zt8N|t0?WEPO>%Jfgn9=YYnp@i1(ua`nl<7Bjn0Sip}?|Yc#B5*RvMlR#5douppj}I zsl&|%mO)A-jk2{PzN!MucVe+v4t^GR1Aej6MpngewiJnP!DV1myb&LVR8;hJ|1UJY zQHYf{ViC>JVo&O!O|2}=3G0B_PZQfM2loS(u@2Q%#MGFJa3nMtj?p?_I}MtQc4(8Y zT@FpgG}Pp4w?dPl5N-3dr=ZDzhu!nF_n^sIIJJ#fjp;MCF2ACuw85UXfpz)qXAIie z238eto-t@|8*p%kuI!&S274(3PeQli@VhZc+Xhw~>Xz$BcCrnuI826tEOoQD9S0u5 z36~jdA6sMSPWYM8y4V3Lf6boOVeV^d%3n8VGKi>~RRHmsN8lzCQCPY+;sc~k?d)XG z@H8063OM^UQiI&(j%FFmgMqAo)5DIeW$*wDWCfg_jrbgze~33=a1-OOeq*GR2^lht&u125^JbP{x;Y{u7rh-O7pIwn{>6rp+UcwXXaT=B)%!D;T*`~Y0h zt?HlW5HuEht2oQ4C9A*-=t?d(++FtY?wNbpc9*w?wT8@7ioJ+HD|+~C;mz@b=aDvk zE4UFq0k^>43$EvPhg+z_#_MSbjVrS`wFg0|I7lBZ7=}IGwki(hYR9%=aH5e0SyC+{ z89N&iUr$#I);?sZP9>|dp0O4AY(}J?pus0I>AXmR}qiR8mnpI!HvLg zP&!UkdyJv=aPlUWV^EpC6GmP|KYtbeJN{>IUH?0{`0#M#CCs(LuVUQ)9Y)Xx24iV- zeAdVbCWFi&J<+B&f;>q&UM)wcQohqCnodxZC+Gx&L65_);-qYTsJmEjqLEHklB5Wa z;{<0z>g^Xg6{lp6t9{Ke(nKX$zHWi^G=3G6vd40Q6^2gE9>xhag8oa}sX|q9JJAr4 z?ixWEit=(y&>2c6%1gAlmpBvC$1BHmL+1h#xR$$>|D*~8Rb?y2yU0md%~ zs-=}er)acK7ERV@<VAApkOB?KATnQ@x=F;n5a8g zP`^&==c$4wdiM4coN07D-dOZ(Gdg%2I$y$6UZ}EI^oMv3!Ml+7o~3fS6)U*`1zU|Y z(~^|0f{(SYODsv!DQE|Y&*hbuseG1W$MZ z=fCy0jQ_co?lD2R?*xAv|MUJ+M`2lv+~8-X&y=z4UCu(8`TzgSbd8h@`Be0cZVC51 zResE8ro|vAdrg&-l0_Y1l4EE-GcA5q`RHV<7hBdM#Rfr=@A%%P1EEFsGt&}?Dw+jo zak36KpP4==6Str>B-Y{PGt-vDwFlT&V?HxY2|a+ID-M7M3^J7yik$^wJ~OROaS_N? z+UQZi%IEW-9QDJ`OiSccRk{(l6`N*QN@;B9x6Mkko6NI|jVtYfA z;`wo&77T&Ln!rD8&{4L>tI7_7l(rjMdo_A}Gm^=M{&W?I;oEaPXUg-sv} zyS{~1=}|bB_O2?TrwKj|Sbt_(^{Xm82UyB;2g_Q21o?4ja+#aYOw)@eM-IP)CfB+7 z%(SI7TdAH5GoP8ZwC>ROWSIHPw53ge#wWwfXQnOf255XT%zS3r(q4hKz=KxrPD2b; zYG4scgZI{1Ac-VbURd%rx+LgjpByjU4DOQemI<5G3>E6E*}HDnV6rMX0_~;&j8ANW?E2q2M`BdWj-^_i0Nco z2`%R{)0Va!8oRjhnQ6AEt-GzNyu;%6)z~Y1W?J1V#Iw4NYmGLcp{9;pJ`e^ReI=in zmRpM4%gQH#bCi{QW;)Bm>%ci63ZI#_6YODwC)+6#z5~oIHGF2;w%%g!6x+JI-~;P3 z(<&X?0&(z`d}dmuV;`WL&rGWfJ_cBSX4-1GNy{KS51RhWw3UQPyV3ZY;adJA5yHoz z>Ca5(Y400tmhDf4`2#flnd$ST!c|eMT#W|G@i>{w-5C}h06d>~j>=$fHj7YrHn9H8 zv_#sQC-^pC{h4Wn7YQz2gS-C;2xOkStIo8^oJc2N{h4XGnMzKwXsEK291Y!kW;&xe z$(aV@Gt-jl$$LP|XQstaeP;S2;M-2bVey%1!90p8TFJ&A>d!^vGt(IjBNu?pXQne) z?&0c2o;=z3!)K;*4V=i$(Cp7lOHr5mdSneG`!mxbF+cQYqFb-ky8g^`R&UOGP2^8Kiug0Gt*gJ{L7+v`ZLpizKW<; zs?SVU;xp4f;Q`mFd+j9*48!a2$^in@18Yse%jibIuW}%>RhiZt48TuJS02n7q2xFC zSD8|Cu2BxjDtx@fXOWFED66pR+^N|FCHV?M8_Z|gY-lEflRoo=q#F3t% zn)%Qrh+)|vq*JTr9pig=*0(&v$|YD6ASuM-ky(#?#B^$gL6O5AmGvkOpW-pN6EeT0 zT{#9{^2E2aB@Ki33_T_k%9L@kNgw5dX!I|@Vs0gP%tREH#m(T(D_-a%17`yr16v%G)OcVG3C@W{StRf>Wi6j-is&; z;y4A2#>hoT$0#E(nCH?AO$)OL#O?t{&#+?7QZ z3V19IOx>U7U)=(G{(RqQ+oQ7ZC5hd%0t(+Wh1eb9g*QPw+o`@AQGV|CBByQl>i)n# z&O~c@zv_1@usZKtZ1%1m2D+KFTlG3nj!n zx#vA3Xg&?_UO)_jyRf&0WYnmT7tL}Sj>o1`y#$+#O6&crpT{PT)Vg=@nej08s;q|_ z#lvFc3M1UQSM@9KzzDbQ6JS`sj2dozqB?>^r1$=V&`NM&Z#f1MqT<3oXWzV4uJvkd?}g;PEG1yljm2Sggg(q{&C$DK%M6` z03IDD^&qH~=f7ar%JXgr*2?p9v1{e|6WF!#oX3(pXGyQ#4|^uh+YVyvrWH_-JRc9y zagSR7a4g zSb2T{bd%?z(M;$0!_e$JXY8Cz!a4N^ACElmd4lWo>G|gNd-?CZ_cnFx#Kqi-aw{P!>&R+`%c9b{N0jwO;&U3x7M(I9S1)nPc+r%jiBrAMO%x!viY54d zsQiY~_8axhs`$FtnE_G6?QR^+^O9&+6+;O-bH(EC0IQtuBP)enQT!V zDylfEDg2BIJt5AQ+~o@E#TWEOP`q>!>#-aC2QzXLyQp$2%B_T`yvsy+5hf~8Xo_V^ zoI37`-|G?7P_l#QLnV~wME{_tp|p}MI?-df`_ReQqLAQjqTf{5olAjRQEo+rT}?Lh zG$hPoY|R^mgy~#;A2zSXW^GrQZ*(y?lhH9en-^%$tpralv7XLqGTEX!R8(=cQuu~v zEzbF`qS;({%~iOAwmhlorfm_Y1*SQ+JO#ndh7@K0Xms@qgm@};n-}gtv`jOzD=hzy zX6Cc4aTP3$q2y$mnSxG+7pM9qsQ=Z>6qDR$rl9w5P$#H7)ig7|f`7L}B-Ktj$Vf9S ziLrKqX-2x(k|buq-H=o>(~@>)41={snq^7Kmp8>UGc8H^>TIM-ElK%04w7nSGS%FY zEjR@yxCXSk4VqAM7=WUl3hQMfU1>=wtR0Y4Gt-ikuQn)2B3*4s%GVG`ZViq#*OFB7 zU1X$rmZXwzsgbU+Bo*KnkW@1>D>*@9ys`3#`fux$54H8W^Gw+73 znwd;FFE||qkd9NpXsBi;BOuMpGqDkU4}lj`jI!WFzu+#n5;Tkcz+G-7P%)wril7os z8!*|T6XkAYVfPDB?=`5Ex=*Dj~{TI7RlMe-WyZoyo?wnH@QxviN|NQ7RgK9QjU`Rm>l<}QH5N_ zp(uHSTe@>wku1HIT!8g(zC;+DB#^ujJDdZ=u}#T^*!de~f2H7i5q7?R!jrYjlQ&_9 z50^Zf~Mi8xJZb~kodUG>E6 zDR~ce{zd?pyXPcv19nD7o@=BccfadZMT$o6gesAJz{T9tqS28D_5Op{cZzmn(j~Eo zz|#o9sgOOa2EaYFG@dfRgndCT(8_7zeUDIEBxktUm|TLGOxfi-6^zL&w`ez-BrkSL z9%oRDEUH9iUlOk<-()bg#fVDseX}Rp2Wrn-*cJvdis|GBFgGH3x!)4Tj{gPHA8WGX z(LUmz3%9`Ea}q8KzZPzx-?vxPY2-I)2SdMP8_v%Eei%xqAAE=VpI?hn8jbyhKOz2p z-{)Pd?^^egi}hV6zl9?1zkyLuE&Qip6Zi#3;@yYec~b#aTfTQ|0ajZc(GJUe`tNtd z`YnFr?wIcAf7Q*yYRh4D1gkBN{-pq`Ew}vvotFMoxOIL>K?G|qJ2#>u%Wn#|%D-%S z0ai@j_Bj;yb_(^useftX%x_ z4+U7c_`$~_Sh={-QxU9O{2aCq_IE5Uz{AzcLYX_q-y7T0i~OGWw+nyGb*8P> z8N-V}J#(ncT+@)NQlrEVwfL@Nw`4Hh=`!=Zby@VO6@)(8XBtUWtit+SBVHZa>I;o{ zjcBx9BVKnJZP18UpGF%s;x(wzR~m7QhDKj&BT&=!rPLr$S@HIgnz zg}&2BhPx>Ay++dgsL)o8?#%}OgGNtf(Kd}<&!X)bt<9nzHJW=+CaOPabn?gy`dOpz zPRgKPG#WE8gMQV>J2iuT)9Aw~8H6>bBx@I)mO+1LRCHzrVF@a++I)5f{i)I1nHluA zM)zHrLH}qZJ*uswFyVHi0+Y^C#R?2tPOpk_(!Ct?jVvoP?4vB>Bz&>^I?Ff#U)Zl% zhHq#nR)FTCJ_aY`i(N^UH8HGBmNhjjO&0b+<-lQ;$rf%JIiw%Zzm)uP+xuo!uK&yx=TwV;u z`eUG9iL3P50kqaH=XQaYEre#)i;@Vls&K+8a1PHz`+*mw32q-?j)YIv*tmQUFo)qJ zch{%jlphDgu|dg%LE+gz914^)Ye?x60_I@jWIOAGYHAT6+~5 zKarVi@2Ua9a%vo;jHSn+acpq1&Q)WBE$v@urHgRd9qe-mD}Xp6IJuXrMg&`4_JPKc z#L1MaMiN`vU})nRT-s%OK&6z9;$-kS)H=FqRs;Px;R2w?h&#D=;L;0eV0 zy6;2cRgw$gTDoOs~)(QyB&3m!MlJD-3_?6`wJ>NgUfD?ID6rj?Bh)wg#%vcWsK7rQ#+!9o222TQ-MSOs}5OtWrR{`Bk+~0i+m50F(1HDN+(B+U)gFgWJ zo%j%!?_mrsz9r(c#xFV8eZ>kS0dxTIVeSVO9tLzW@ep^Tg{J~tO+3{7(ZY*>mJ<(i z|F!T6ps$FByG>EdOiZ=|HCqgPxLaZ2N}%qe5|UCbdB>HP{|VDV^x)=r>ax}@ev?7&h3fvuWC*w z>x<)E_WYO=I@nmBkb}npbHr2fP3yAuq)HCYgjPdsWxjR=G|q)dzLT#lfyNO} zNwbi@oT3WzacCUzlr*dPTiRRDIN~X3*6z=0&B$So8 zuRk_B~zAtvbopic9g~T3%m6KcidX;w!hsic^JE@EW&0lvFXxn8lG)ooaTlCo*`gEW6P83S$|Oj97J1BcJ=u%ll&cjiRb&9&zOJ6xdyrRc;O0VRm%m_R#WZw$#*=XJ_>mxTHf)a!7zeygOUF^`P#G|>4p#;SQ@ zOwkE$17cr%hxx3KwG_cU+X>z@(gI5=5$S6q-DpWQB1N9o0WP$pP9n87(jrUhBT^3| z-DF8aMH*(Ln=R=$kxnwwEtWK1q>GHS*peoSG~YB z>3&P8-*@KNn zdc=~>lW6>7q-B;Q&+tLXvpNkQwIq4s4{D9{m?Z^L=6gaq2EPtZSQ0bEn=1!A3ECX$ zPpS(@E|=eC;a;e&nFY|EroPc|R`4?UJ{|#E{bI_l)bdh3hfDfef zyt)*f;0WwpK%!RFopr^Bm^ zxUG~!*%!YK?=c=q$(}LpC#RqaEUFvZf*qQ3_QeNDmpPH{BOk=Z@ovct03NARdo&Sd zK@mB@$=Ks~^t#E5uE5&8ruhoje>K|hA#bBofEUZ-a-DcgfV7vooV$+KNDw$=B+ z-mJ;{wTQ987sCVqI~W| zTMB`j*I>PHu>a#V*el&(_7S3$eGMjPD!e$=Z$SO8*I;6j`x;EpmuIrl82+fMM_YXd z|89v$>O#86NHZ;I^$hyD-$)l*lEf@n2T8pKvm~Y<7N&emOS3FV`RWKsjkdBRNb20#sC!cR9N2_=}JpdVYPhR)vv)UN%`tyq^m7S z`I-XBt>J4hOH#>qvytXml1jcejdYDAsQ`b6q+Ww%B`2tPLS4OPw3Ry1LqYA=V5F*i z1Q$b6ufZB5ntl!T6m<0(j49{seio`%I!*zjp1`4vX&+yv0`YTR!W#|9yh@)oQ*b`kVV(6TF$qYx?kM z?EjG99kiNhxexcZC3xGEx7BChrA~Bvg7?YKA8GR+292c>ffXF>h^)j0Yh++^t{=TZ^N*1+&iCbbB znhA)45)3Z*z*sM~tVN1#gJdQkiVs@o2;8B=y`0$})P8_k56{MC0%H42+=2rj@iE;@ zK(wTBkn9PFl$_XfP%{BhPAIk*#7saG61)mxPe4>Yw}6@nh!S7bjA^{u&6$8`#b9qp zoW^b@AgXW<2W8JECm^chod%*NAo8)@Es-FK5nCs?3X+M%A%}hXSs9gok zOhC+NnD-29Pe9BbDOe53o`7gce?U?b5an?{8xbeK=M41(#H{25`+%wmh!%~F0Ogw3 zoPd~#lWOwCPKRbDAU4o~dC=?$h>~GUOx;|30=hi`v7x>Jx;+6gqvL+G*3FrKn3ci= zBs~FfZ7*}_=?RE^jdp;$Lp1tpI012Qum%$l_orEQ0wQ-knpqPNh4ss_cIdYgb|_hR z5ss`UAgUsIq~QC2^#sJx0B(uGYk>6x#H_WRI`oC%2Z;>nT2_8;l%+)O~Uw4}ORlKeczjgGBa~d>)EtZaQWFqa0hM%vgHyc};php7R!I!+CQcxe z`r8FGTnVfvAX;TQ{Mz7wIo9qcu9<*nhg}7%Cm`B*e_%ZUv9Mp}dMUda_Y^Mp&IyQ@ z!$eO&v`oUgjL$>e{l%wTO=Z`?r&x@H2R7UA!}ITH{S##dI&1jOw91mC*> zZaWsKHOf^Ntg;?qtVieIGl03EJ0>97fy^`bm>lb+z>hKPu{JJW1-zN~SkyGEdY$rL zfXa>qI?kZ5>~lAF0wN=(ldUJToC%1QHV&GefT&(niB^oGsLDH>4g)U!jtPkBUXd|y z!o^0L&`?uHE`J#Y1;-(xr|5`k{tb9$0%G9?cSYJy%1N-K!ISNj2?qcd(fZUJ z>*EccVq2Hb0Oq>zB~wkJmER7OnSdxs8@>XRGXasOi`SvRQvF=$S}iwe8HE2p(-RP_ zBvjgN>$Sfbwm%jfC)^jBo`7hDskFn5Hp}*>!aNO{o`5(Wky8yMC%g+-Pe7b#;nl!; z0;0sun<^(%u)#GG5EVX8a0g&L0a4*uf)@ho35XA&A+HY^c?DQcK$M$lgN8wJJ9IMv zF{3%jmK!z31Vl;oWH%5q0Z|Oq1jLhp%>+cjJc=qp$y=dqIuY5435XdD?~;Jc1jG!M zd$_uhC*3c#KTJT(HE<&J(Ci6_Qq<+X9+?Qqo`5J4^FvQSe8%W{0%BHI69@~xa&smi ziq5>&{zn*HPe9D-%Kx3v?FookT}?pz+30!#VpdlZ5P9wD35fIGXQ3HTd+%XLy@Mkq zab|Hr#vsbar6_YhL1!qPD4(hlG>LZYYaHHO5(DA6Shj|7i`8xy9GwExis7))`9mc4heBgNLJec>o?Of^BSP;_ChR zXvA3U9;A1@lcza`4KYl{0JUmCZ^MkYunfEGmr5P({(*2*Xr3~aBOGD8|Br_WyBYg2 zw!LWOqoJ`?oMPR~Sa}T6iAy-FoQ1g~8O~cHtgBst3E&IhMJKXZZ+de1=P%mkIq`Ab!>;b%Bnaq=XC>3-5r&j>Xi4 z`nF+dE1~gOAT`}SjPmz8v;+T+IH?&fm$g?ZDAj?UXu!Ux-5R$fSy&Q5grBu zwzpFk>pO;Z-5Gi zb-5lGqCy&A@D&!;XLTAhHe6D3ten=`P0(Ita98Qc_A0n{fPNvqItTv^#8nki^Q_Z% z!s?$jzDD0LRUrL<*?LJ`n`1rR;Ola%=K%9@EY%@${GsNua#|M3wvK|dA7v253lo5OFh2}MN%X_73|{7{b0^mA zr^dgkXPwlOIbP}wekR|`XlQIuq+ZmT#I6{Lg69cnd}c|#oUbi|#zso&73)ws8lOVr zGg9i+e68R&of>A~ha9i7q{g3r=+rO+Ke8G=s(6&^@KGq$*KJuSUkyoppfb7#Jf}WH zMw6z#K+g7OaB6qG-t}mu*;j_COz4X!N#=i}Gyf2Y%~`;b`CD|^Q}_X3K6IzP&B31o zOXh#)s)uf6-Sl^Ty5H*zCic|n_JJmuzcpW*22C=5n>z$P^eKh+7`($BbeO?9)z?Ae zgKp~g94|f+Rq$W=Ub;Y&%-^LoiJi*)3D6|--H1Arr7eUenIDN{W2d9>7BtEHf;-29f}~=iu4EPtkh6 z9Q-B_A7xWLtOWB|dpO~r(4@le6JframO|D4T<7y<@Y2`zqHc``7_Fa`bow4K3ECq3 zQU~N~cY>e&Ewlsk!(45&{`vmge_ZDY`Wuk%FJ-iW`ToX0<0F3RpoaeR{qag;aIkH_ z(k^GCtyaOR;9ng65ZlVS(Km-E27_#ahQS;OtLY5p&`86kU^p9`4}z(~BWwVfOn3nJ zQ+gQ@89S2Y!)ifv+NHH4A}5H(f~qnh`3y8Z3Z=$GRP!~m1%wY9sbk~-QmR!gBuiF2 zS5sg&%9kCE8A{%3KVZ~N>b>?GN1$BPO#cS2oPNhew>o|lIz>J_8n8N3C%<3wxKhfhhOTm5_zx-Xr}y6BBjb zb?ZPY5$n_!%3ktl8-3DoYHFc<_cinlnS*3AT0&Q^!%|aW$Wec(pZPpcw+Oo{xcj?= ztCso5O|wexbR^K8si&$qKW7Y%mU`N$Vw;&)Rq7e9>hhm4O7{o^@@!GnIh)a7Jrdi` zwchLb3XGA%iKX7Cn+^OpeyJBqnu2&Vaq3B}~~0OT&x zSA;q>%dsN~@fr`IOc_t9!sW0kA?kjGVQZXNYDG3YRnMo|0S~0~Rte%-HyoS%?pbQ3 z$9;BOj)dnhHMD96W@2sP*$#KA_-O_?^TUg(_$db29?_y^5MH01f?sOnuZ+>ZJoB0} z3>+oVEMT}b*8o0F%h8tQ%Lb0IEH?q(hGV40UX}?{-q>>rke52re+`p#9RFXK;RHM+ zC`NhW@v4Le^61B@=?wA~!#GX?mUz_-20WFfPLcN5%A>`Q^Sk!T-oi4WPOkl>v5>&6Q|OcL;IV12bZC1 zBfY81EbOJXIQteBrMJi+)lW|Z_|~af(Gg1@PQW%M@72tYU{VTx=^tjDgbUz&aHslF zxNLT(zfOG&&BL6#^iRc5Y6EU!BGVNx)_a(+#68tNq6{#jNFhYQsck_&|7t&B9DB^9 zwByc&H`}t6gdRadU3_29V}$z|`vTiuwDPgg*gKNu{37wgAn^lJS8A*6DoV{_ZOd>}Ai2B%w?NHOJ{ z@+sgylLwkRwBXXl)y6x{xSfS{48}lXXG=P%dsS3OvkY!;VSUDrKx5lG zU1yaVt$hlOT^#9^ZvSJ;PT#h`pt9fQ``P zB0Df&YaWfrQ*L^I`zVZc^uw+OAEM8lXQdx6$3f%cYrgrxU7+zPH$5g_I~JOx#yIQf~4)G6K#O)~tleC=~+?AAzM;l2$Y z`jo<^O*FpR-ThdDbxQYyCK-NRj+avnUXbtQR%nvpH)~B|r!sssG|BMA`I?8!VYfzl ziFGI)jlH2shToc}IpIAJx zL^>zZAG&Xf7l}^U`^>h#Vf}_1&V~tlA<}DYlkidF^CLHMeCA+fYvGgK8tK>Fuvd$S zbZey7*(Tu`z!KocIruhUc59?R$-!%Y`FNcE%>7gflU3&r3AFaPyFoObu&!D^hsN%Z z^cPk_d#q)huvv-L*4r8jr4#mtCe`&OtGaf=Nx*xiu+&TcD7Yal!a8oL|PJMU-RMMi0rLqw{kOXr$ts0OPReUlMSZW9TK``|ef119 ze~U@Xc3OZEVmHls&-C;1g{bt$g7U9M`TCfj3gB8eLj zqUy!Sxj^jqNEfJn4=DvwJw~1}QlTYD4Hj|HY~CNgv~Nk$9R9C|hYd)RO7AzMNjlxD z>Hxe=l-qKDrz_jdRrCHVbY}2AJ)kJlH;^9KBGWgJKB#5Yq431&DSdEQbp*CK3O0R6 zMb$X7J*cYc6k~H}>#CN|s`W?GgLm&R8vO@MyYyk6TfJw8vtTB>Lp--?&knC+7Mko1 z^{SjbrL$o+BXfMsY#82&UwSwv7?#WdRaG4)8#r%MIb2bhfLQY(h?I^IECfoKM^CpI zpUQhpV>jaLj$isnwoAp(sp|mHpYSLRhG1vmP&`*0t%8!;8FLx1&#y$7e04rW6MKX|z~UXetdwmP(^m{NGlf0yvKaJ~#~4@}zXzbnM&Gf0al^KYA7n zi@BBHRzlcvJPbtnXqccglune7i&0j7(R=BGTM2F@Wa~LHR)0}(xSQZseP>ki^r6ONUYv>T^ugKR%?l52hZ|kT`l{n`Eir#P9_LgoAFpOJb{yx`Qt#NsEg3u! zqT1V6?MYEmk>G za!>=^38nyFLFwQ;>3ZOMC=I%Q22)OQDtHLw71Bd(x)Ow~r;djmg%hw&!wEiv#Ku#{ zA$igdkp5y=LoJC*GdMwEIle@VU&mn$B}_0t@k(4{19Z=gHDW00gI{+K7d2T4lej=zxV<{ZBQm6G_g zP5%IulKAVcjIAe2?F3P*P9Y`nw>)V#NKz7iw|7a+MT_JJFi;k{d@GA3dMZjOSJ!A>7_Uav*r~p%7Ask?`ss9{Q*}6kk?rwbE%i>Q8dpqV z8I?U$joiy#`A%>oe6T=v(pBS1S_hLrAHnxdI_;+_HbpN0-Fq%p#_D0w*j1oQ@axpm z3f+m_3G^iK{x%Mt1^Se@w-rY4J;-0Aeea*aNYpcdgv6}rG|-aNq|{zUI>?gLq}0JiI@ppJaVHo9i5c2ykR_?So&@Pi z{5r{8C)Z=-#6iz3^DfF*K9!qISG$`Ubn3X!~Q9)#JPzo%Wyj5LkavDJbR5JMon|1-^_19_p z4T!4_=EEtB_Cb&&lYh*UM)L^F&QEQdgp~Z49y-slGlHtpeGLw6AU35u`V1Kb!UgIddh>@<5vo2W_*Y z!0FuIqOs#aXEKC=RvI|5D-FhHO(kjQN1yl|&|agLL)3~tjG!w1!73vSvLwsvchLW# z*TGgg#5~lKRrqxtk`ssBfqD`T&B6VEP9VlY;|+2xb}IO6YQq~wJDYt@a5XI0@zr^R zy6ofxWHGkjR!Hpk>U=~)3Db*FyrL{N2M%nEQy_4qRwD( z(>pC{Y0(*NleK5FyvZJ#CET;hx#C}F&a1$>CCl}rEKv7|PZiro5!;nK-Ho!yQr3$T zd^B+CCbj77K>(pLOBJ9^PBroXzI zl>Y)Q7p;rl;!H_$%40Q}^POAfWR<6|Jw&-|J-sBC1SmCnc&O0|ZH;l#o=<{-T)4g! z8>jq2V7YRm=717j`66(+bg>-29lY3_2t_drIOvBy;h0IL!+?VO`S}^_fAv__XykNwQhPnro_&WAE40{XrMOyK zQaGAy!Wm??>e3Z(XPgDE?fTy8+8)c}1pPtz2vgt3rlUal2vgtJrc*&VilhDj9>6V8 zAzTc4?}>=JzHcacJt#+c)a(0(qW6HlnFJkRhwv=uitRYsK&GGx_d`%NXzCBPZ8w3k zK~sN-MPomMHrgHG4zg0fi8TXiLwsls-V>+?@!%YMAkZjce3>GXj85#t|Hs*PfJbqw z(Q0OQJ-ap-W4y#`8yn+>4F(fz)4?&t^xiwcB&PQodWX;gX{0~`xdbkx_mDz*@AU?f zkRH-|LPEkj|1W7*Te$DN>+kbOI_K!uFO5c{(M|zGlciFeXAF2DV45eF;yh!(8v!3A zBRH2Z%ro42cL92b;2~k~=YX6%z(d2}dVtCa9%jOIy8s$N@CbPxlx;cz$R&i1G|>$} zt|xSqi5>v*D50ZG^m!n3n3j$)(0U&L{h74mloQn8qTU%mN%?@shry|Unh`u93~mjm zKfxD=eIz2>*dT#*z z0{^8mqkZ^JbF)kz>iHVu;vWB{b0V`Cp44j$MHQ*$%A?2Kl^#Y2--vqspr|3${QqWa z4ivjcwcx+mx*m$VNVVv{*sA*=6mO7fai|$WeurYB?g^;qri;=`LL{S?+(VI?6*G|Hqstn3pSA(K&Se34eq7H$g+bK%bd(f!LZptO^ zz^nU&<~N20VL9YeTGahm^P3Dl)T`^B*8JvJyegzFM&rgbB3~L+E8M;;dK0xJiW&}h z9#LBj)3U-V0N+H^b|cpmKG!sEiWj8fzjQ|wH5M>kH;8lR>JXhA) zgzH`dn07%~*UhMdqU0{P6%_4)vTjk-<2qNBK~bee-8Xcu?orgIpy-0XtVa~}D=50) zFY6ga#bMuYu3iQuC+6pY;#|EWDg5ez4&kG&kx#Mw%Tc>{dXH?1=VrWozG3NEE4X%3 zIvtaEy>?SN!}j{`|52{$l+Lu1{73ew#4I~CjWUQ%^5V(Y5Ct9he53r*!^sd?j$6)71~huLRDMy7R*ETY&SdE;Sr~6gW@o@ckm* zv+7djHQ+q=O1I_Zu56hv0Q2N4BMi2iso7V9FgO61r(c<2a7(~E|H?AqKzG1AmCV+z z$jhWDz-AboF|hx;rLy^c{Z6Fj=u|>CwTc9mreW~aGv26gyXK}YKqr598Uwz zbG*WEyd`j+9wXqDZ`=Tkcf#SfyID%y4PBlWjL}; zlWjC9Tjwxvp76EPcrcUUPT&d1c*fTrGU|)&nb8{&_yjVZ@^$>L*8YZ!=X{<1tFmmXN67h5Or-XQl&5`NZ27y7Jgg=H=6PRNb5KZK2$&~+-Ap*J z1u)P2s!X>;U>|Uv`gIS-9{|pCzaARrkvjEl;5_;3W%|7xxq&7Z>?R_04g@@@8x-yA zW^g>K8yw9Y1jo}l{V)=DEa}iw;CNm)%*?l#&ppFR)x>UiG`A8Q&+JB+4IuMf1CFP5 zBcr*y!O?r>ORH@;Ta-QHRY2boJjsM{%RTmzk527AYKMGE<}ZhH@oTV2@%$TE8kRM% z{4^gVMOj<=ZCEGTSzbTQ2$^YbCHZMe$cYYCY8quOYl!8gYqrpto|D-s8S2cTn36Qo z5}rh*euD<&nPRS5W!g*DQr#`pR1x1_fM0k^C&Ougd9GLx2IEmiUREh<90qp-%(F$j zCMskkFcvUR7n^8Th!ueazn3DjB0JWfga2taAAtC9SQ zlHXG@nUbd|`41%ZgO)NyP7#e=owrMEqc<)^7^pAQ699{(BHUNyLwK!}=XSj3VME z%l`zz_lfw)Zd`vLh~-55X!&17*l{)P^848?@jqQ5Z%(s+v0M93fT7!*>|gEn{x5an zH@m`r8i{!HN&9!Zi{HKxcPGN2{fFH>PzQX-(r~VkMWp@-m_EK^=h<~(T6P_gTJPWZk^}zje5IDQTLAh1 z{nIY6X;*7?FTgWM-Pop`ui=$|_7Gec*5ro)(F3J+kxj>j>aAT66@jO~(bJ`Nb6epg z5vd;nUy%;H#LPpSTW0(Rf;T>J3mdaox$kAh00xNX_rQlz1ZL8Fe0^ac~>~@rGtKhc*yXk1`B->WOKLh4Qyg)Vx!>TQ6A5o212@lB?_0&rN zaBjrTW*(yvyFtK>*d;vU1mKtA-yW~pNcM)C0KHA{+%WieK=efq`xXULLx)*gg-0Jort&l?J~X z@I4Adgp-V|<)mY4J9$JoEwJ@E?XgXAI%C_=>4|NHGXPr*fx{`Vo$(a7@t!d3eES*Y z+%51+*q4B!n_}%}?K=TTza_N;)T8*fpX18Q9zj*YM`Zvz^ufy)l`*QMDEbAk?>6Lk zNx~R3kt!zSWt-|JJE7ec$Vft8;V!Gt8X#K=_1fj2S=aXLWAz1V};9rS) z-Ig#Py0+(bl!<@)4I@XWw-$8*H<9=^!?Mi-^gO|Db9LSKp-O63_rAjxNAPdIE2+Oi zRMwrgIE{b%l%(4IOXZSTi=G4bJMmxHj7XSwE`Ko6{Yn|37^(@^O6ptD#ed zZ8m>BvXS!`;yF$!wz*C!?BqF%@zt(;Clm3;PA;}Bou=59I_a~+3X&Ya}XgsrYav$$l3ei^Oj&}vCiWM3Y}TN@#RS%#STsCnmII= zYwpk#uEgmIKg*o{*p@q^ux;hgT&~EWDct!^HIM>l7PekzDYiam6Sf)7mDsj$zFFr& z=da=~RmSs|Dm{2iy|Z)Eee|Wue?imL*~j0jJdeLu`6GX?@-Xlo&Ry8{bdF-%%lU!7 zSNSaBeVjM3?d$aB?^U|_dzB}F3~;{2cA)bswu79r*ba7lchmPOpX2XUZb27W?D&CL z>MNQ#h*zjDSe78Z*tvkW19&?T+c;-3w!$g8g1&5tTjhSmd~_W5Tpkxfeb`qAr^~Uj zLvg3~HDrKKQhaduT7&?ps01L58Fq%TN(v?-9$$k^El)R0mP*P8$k(~8090OuX|kuJ zyp!#pcR7kCr~*A;ITB58K;ivEpJ*6kd}*5mw) zZJgu4h~qTC*6TFK*5`D@Hs0xtZGtli+gcdG5xkB6^1&8OSduS-3&K7LL|h4Uh(&c$ zXabNXgbw2iOh)DO)Gh`5pvNW3hg-EVBajruggr!4Bdn<~E-8u$dm*Unagrz>&EL6` z6uBYi#e7<{FNf$}{Fjg8$u^6G{REIxgpN1SKY?VTca%>s(PAJ23BAxnF9foY&}tLi z4dg*WCz)6RlMmy*7>fxl?`J3PqTD>R*gjb6fdBGA zaw>5(D3R8mkRg~dk`k{KqkKcdlfzWfy^kcRqmhGVE9JxOn*qq2idzNl5Lp~!mtIdC z7gGNSboAks^3k>|VZ1hZ51ag0o19>pWKP&|Fw_$Nyhr zr>IQXW7gwY8TW&zyZf{M-;J;@$39}Sdm_#LuNFOUf-T+_X^|cMAAFpvEgp-s_&*qX z5yk>ok|@u%L*xDbU?&eY=#*IAo-f|y8Q^62UbTlpw1!0T3XeOAJ3^GY0isjnQBOXW zTv9a&h?`rCk2v9L0mtLZvB~-h@40BY90yGsUpJ)3#x(1jKzizCKAH#kW>FGvq!*=s zV@xa^im|73J#8MsCVv~TG(!4lobX*wNs8rDET3Zi$PJ1Nq)m!v89GiWSU%{(;ui3Tjs3 zGq;PaWQI;7i^%E+Hr98DSQ7pnB8KMC3x4XpgQYXNW2V-s*~qU9^4YBJ-82nLCIWCXljE&$y{H9lHVbs zRC^#Gf?}<;LZ>w>J9<=A))FMU$UZ0ftueTB2@N|x<^3C z?+`^an!FLI(Q)wdJ4DoS?)%Uecq3fo#wZ-W!bcA9vpMd4=<;J=Jf27&bsXO`N>VJJ zWWGx%$uU~z@NK3f#quvltaKxmK;pmM1!6xD2MPNK>j3$r%jX;q5#ivp?Ry%rakN|} zudeA3k!w%BlVHZWzrYsLcaqX3pK|7NQsBBe{vZ+Yh>dmgC3tYTM)(>sT7WH%L6XrX zpK|4MvI4PqTv`ZUPsF4Te67wt@X+HUI-i939J{wUVv8sr#p-x!)%FOhb(`R~Stro) zw7YeCr#%r)Pi%!Vn78A2dlv>?%bCpVLPl2bmKO2IlQ+rsa2#`4pCb0nlXwI;^}>Wd z5Ke5@HfIrt>gTR-i}u}Jd}8OWmsRJ0C5}FYd*M4?n3azBgB0&J$&=K+GP4%qJHHj8 zeHW2gSI4`0#YKJ+^|PzfDeTG1BJO_F__Pt#g#-`c6O(%iY~m&#Y%i`ZA$+)j*K`EZ zDL{{g$%$ljXOc|jiL^qx6EedhKO|Dq2S`N<2#*8dXQA(XYT%l9qf zFdCb2E&*NE_y+ zJW$^fQ%GCAl2q5r%n_>e4a9YHvCpBMC0lE9OCo2g>P_`wsiyr?yc4RM4@BkirH9<) zTxR-K%J7Wkramibc2R0R??(1(+(E!osu z7-^prY6?+(h{OkFE4&2j?$>D}TY(Ci@)Vk)`c6{aDD&}7c?77)It}duMD?fM-J5%N zCdzH!SN3j>_w$O$kCAA;YK-b3^2ZOM%wPuLJq^^I!FH0(}DJCMa|-tAAVZ}x@$`HDmd1yqtzcmxudH$g6Q_P&BzMC z!nYRNtnJwR@*GyzJq&)MDyhBAMR->i;itd?7I(|X_%!WE%IXttN;#g{| z>M}m_0>sZ!yjx9Xcf{Gx?z1xc>v)fOnZprxAAzRlqReTC-%I}YS(&*Aar)R^Ro~T_ z8xXHUntp3C&)^z4gW>}=W{w8lnBpULWFA7iCB;Wwop}%99VkBfhRkD#vkzkqX17ISd{X%Sg!666f%vHDv*@6#MylXy zV_)L9&4zyZWt6cAYpx^BZeMG_Z4OZGN{Zcyn2|3h{Y7z z?bY`45PT~80Uelb?hMsFg8!7~20p4eOLY>#>hgtzsx!?axQkSikOzXH!mbZIi@23h zT=gdG^=|JN9dK#^Dc@(Lx`g6AENVV^fN`wxE#!AGw!R;6>{PcRRb#0NA7I@qt?opE zTzUSQM45e4u#M-;Rm2T2GVcH-hhkaI6;uunv<*i|QSO^p%xmhuCdu zK(xk4kP}I;!Dv^>RZk_{cJbjDIwq^<5M%xb?)}6O*srPTa&;z9<8` zA=pQvha&uueDz`C#u}U~_in%s6ZJqORs9sf#j;8Hgup$DTeIdR;wFSTB2`?}yh-R3 z?v!-0aMMQA94B;5B>D-V!y+wwMd(p(=a7Z!p9rlqPSC*};hugQb)q@g`W9jnzZ9D` zN4|AL&0m!1gPeYnM#TK92`M7L{3}Q+JWup?S&nLlhi_cdfK}{Qi{}bU8=dG?F>WG}t z1#_qayNb9wES?WUa5epi+t803Kv~wBaLqP?ZVK7v*-6b6ggzHS zsaR2SJ)yUTP^tYFp>KvzsXapI-yzg+?rx%1T0DCQwyLOph~Nk0j3o%G9q}Y_$1I+q zL~vQ1@5Gnx!1qYyZ^yobXhB}q2%zs08sIO+zD;OB)=Z!u6PlJqefK1xg<0!>enV(F zpIp8ov?&`K{36bOZ5f?F(e@mjNzo1*T}IK4STFma$BeZpv?=JihKxi{|Cx_6sSy@2K2%W^GwIsAVM>F1ZMB`yu6%bSa z?Ul+O%I!#k{Hz@rc&|2gS+79Wp$3*%HyY8jtZC5pByD;Y_2}-TE#_>45N%w==y;0u z;OGpB_T=bNiuTI76&AKov;`Nu8PS5WtS5n9M`$S*aSfsEvfcxF3!xXWg~NnOyY~?~ zvdv=%YM#NS&k~*&^I*bL)ful5x~%@)II4eunVJ(w_npQ9+K8G@36R5&1im3)hN1X{ zfSCqxhJe`y;C>0fECZ-Tz#IceAz-cnWDqdV0CEYKZvagRSYQBU1S~Ot4g@SSfUX3r z4gov~{T>sS{!UibJ@^$0eEQ(5B1DHFIxw+KA40~{=2zR@0XSYcf^E%Yg5F|Fj8@Mg z;CFevOJqJFrwycLDIxC}nbr{SnH;NRrcHz#mznNBLGF90%qc`pIf{)h1)J*2NL4B? zJo)U$Hc2mPt|IO?${?pRbkQKHd%p~{n=Fa#5+OCt5|6l7pHDc+f+;j1t+|aKM^iMZ5A0;YUL4B`=rBDO`CGchcaV zMd`x#61MT&B5#r44x6tuWlJ6>WQ+9Gb6*T!X-S}ZEvY^?_P~sffedO+#ioBnq~lWS z5q+o$drPTmy*(s|k8Hh~AIZc(Zcgd`O{7~Sb@B?4UiO^6lO+;3O_IxlfGjgzP?`6t zo@YBqB@uFs=|y^df=VoIVmEaMQQd%`QlpJSy@d9bs2=)nl;2khn3FZK^N_I_Wxg&{ z1oxw%Vn!L^w@~ZWbfD-_9!qE=s=E-dBC;i_dl5Xu@Pj)O&+cjlgBw)9H4dTG4VU*SpHBQVOPyxH$bq1 zL@yY5Lr(jWSE4gEU4bj`aSxzJQp`uOe2P^L$!~+zpUNQx!#QZ&1czSbkS4P@)hr%6 zta3<8T6d}(QcCMYl|#xKz+mN&R;xMHdKU+6{>4Gt`#5O#HwW$8<3hZ0NQX9Tvttzp zoknm_F_nW0R&&t#at^v2=Ai3q98`VFLHAU4qDL+VJ=<~6s|N?YCv(teEeCz~a?t+{ z4hFn~AZx^f_&m}pxQnsGHx|)&I`i|1=th9U^K1T1fn0{;DO$~41We*RFM)>$kVk_A zo+6;eP`pgQ-XP$fh=N4TJA}%UmCSdN0C}R3z$pUe2lI)Vp9olF0Dlo6PZBbV`&9s| z4MlANHW)yC0=5`HLjXftQFb?P`m%RLBs&m9MNLZr4jDir%2!HiwZi!-Idd&lP6Ao? z9L0StP>pbSD$*X&g6pzg0NNeVQ4;M&=nXUaAsF5L-{5M7P_!@4-H##drj4i>OXxrb zybl5J(FIA(SzM5e?!{;(qZF-~MA}RF2&W4eQFAc?+ZgD|vYyz+vvxXB3(2ILshW8N zTw(yr2^h{N3Lb4Z#s?5zBQ@|Ggdk~5eC7s(RJ$>?MCLZc?}E`WNnW{JaV3C)C#&y3 zFxrww;#*WG?Fr$#4AGgp-^7gr4`R9eOQdEsKxz@z(`MiMfg|c2Fv4m6-c%V_=Om)&-H-jUaVjZ#~&Wh%U5f`6F|YffpR<6PpWq!x7g< ztHFr5TN{9yp=~WfMEGt1Gj}s$)&@;nhsZ*Dk+D-Lt1%Yz+@b<#4r|RloOxXy3S1Oc z;A}3iwzUOz#oWG`$aGR?`ie6xgctMgc@o3|`Z?44%?~tO&%Y|njP(0k>Gy-=cm5-~ zUC7G(e%bhqY@w5gpC{H`fU*`X{ONwTisJ_-&nRN-OXBisBeEeL_j4|fquK<2;t-2R zz@oKe8~Eq(Z@V1gt&m{J8Nfa2ctnxcrspd{)B^gpcG36;VL;^5PaX6B)7<1|(+kv# zW?C$myMuP&XWD&gx!E(`#co?~9YOoa-MQY_og3xuoPSS@7CB4px}Y-2BV1>B=gfVT z8mIH4s&S}^nU0&vv}audk7!4m@jfg03dr2o=#99f7wpW%|9HHUH>t=T4n}HLynvbs z9|69-*pxmJ=MhWAV--M!_{Bz%(;ovqE^b;qj~Ij4vTkqSn?C4`O!w5x@)WfZwf(2)f($s#C}8!%6|}SQOee=bgi*o22V%UT5B1$I~3gz zbiJAGqBYj5ZwWyMz&gu?f_EUc+Nw5`ZYZ6~j5XHv5Yi#E+UgNO$6efXjWq@IaHdlu zXxAr!HC8LobTF^6T!=M641cSww-LEP`IJN@^*C>}^jEybCeaf{&uFraoSQT=+!-|Kswz ztg$|MM~Ig}thFwWpo?Z%iEFIg;BRGqvB5V*_M&*(zt)-?f!c9St+iH3B)UAVa-B8) zUEB--W`m{Oph~W@ih)-GUu|U=`G~XDS*tB80*sr|aw4V{On! zD;}?a8C*o*AI8>LyHHkd5UZ_v5p>+t(lyr8po>AQwT`1yGq(%(Zmh9RgZ~c98msAl zg!mIN{kPhp_MP{51p}qnjw|T4#`*xVQ2Uy+Y~RblhuT;37$S`JHPKM}hN0ZPqu$f) zt2x|~i}q~{Jk-7>7i?b>47RTca{G>lv*GP~`QsHR!f4-ZC@a*yCe7{p80b*@nzU@+ zU%<=uEjS+8zBB^#e?pd5f-=V?UggF8XR&+zqas>F}eLVs+`M?|jv@$pXJOyEB z1TbkH0d|58jQ}RiBfvP&as+6CSl9?qt$d>X92@~mFgOC3pc(=6$oJ{v7050`Yy6LE zf_^*-%@Z2=zI?m_gb)q!FY7%9?IK6M9f*ZSKCKMay9jis-X_iU{vG9n>TS|o?+r7&$m$1K&%k|J1=@{k^6{?hZ zD9ipauGSiB*hfOV2WE{`7qQO~+hYBM?K*1<(*JO*?I*ZR?L`_}bFf{cY|x&wpO0%S zPbFdKrE$sfR1${rP}lZjJ=AHAnsc4y01pjyCKnv)OfWdqnII2!Z@}&Fq3#CdF!c~V zl}txjp`p&Cd8oSqbZDqEX*txr0bUMuacCIhRI=78MEl&YilZam{wWTJ{B+3LaQo3@ z=OM*61YhTbRkFsK`Kj*O`w$CtZLJJ;?e?HUUE8F&Yx_Wly0%Gk*M1vr$gaH)v9PZF zqVg%MYnx!OYnx#3knfDjeX2~*A&+XcS!2BgcY1)K&PNU7eX0U+ITTXEY_(k5y?a9q zQ%ms;p^**q)@Qn5yq}v5qm{vi*#}{$VN9AEW+v!R!VZ4ZiHB5%`DXd{k zFxW6A7}hYQ%0#GP+MzPCVdOAyooc$!rH*ec4!qJD9KPEyNvuGF;LcL~ThsT07*{+W zGo58mW1tJp@J}N_Uk4ml%-0G_a(o`~2mbA2Jc5L-m1gsxa4e1u8tewYgaVxA@v@7|7I=>C} z`uvsYz|3pPgf?|OxD;%R%LvO(a~1VM@*e!#>GIYiVLyV@2jlRJceabxiRBGRvIE1yjDzRb_3u12BsU#4W;Bf3+*9-&ixN;qDI0>Q5Js zaDg*!x5gWL+?u&SY0lq{ic6=EWdLW%cCiccs%!-=NJXnIxSkUy((r{?r10dNxSTGT z+Jd2^`a6cpEqeeGKG({>Dj9q&1s9M5=b*-q)W@gbic;Of$$;e>qB65Z?Y&k6Qk8>K(dn#0pWHE_V|zM6`~4Ud$R`CA~b>D;5K?s_@vLr^M=HC(-j_ z+%^?hDx&AbnovXGd9fr~*=S7l!1H2BbaOm@$PyNw7fU`LC_OJ`b+(iEc`;ITwHqeU z^J3hT^t@QT!_zU;<6cd-)znVm=fzU^d9f6JUMz*57fa#i#Zvfru@rt@EQOyJOX26m zQuukX6ngUC*i%nENFJ{%4sD56| zni4|gq2brhi&;~nDE+*cH7$zL&x={pqbU8nm^CAc($9-oGovW|yqGmBiqg-ES#zw} znDNQ|#D}6^KQCs@jiU7PV%9usK}0V7yqGoLx+H?q&x=_Ltd$XzeqPL47|JF5`gt*H zG55;QU?Keac`<8=q}IWpmo~z$pBJ;1S`+V79ZvZ5^J3OA6V=a)Su3qgIM;Zo^UC2W z6yworATDP_efhkY)yGbv=f(Ii?rY;)jC;{9``ONRa)MCd_gyES7qbT0d_Y}JuBG+| zYT4hv&u2B%T+OcJ@$?fPP-g8gB0g5XR}}#jG)Qvp5Vd4i}Pq5ITBZ%o=UW z67am3G{|6uS^I{h6o}p81sOtZNG5x%lm2HQ{ z`~SgC-i`8kF{`~D9NZ&M*M9xHnAL$rG0*7%{k)jflaD2rR87di4&@f(BaVK%#Sge8 z=r)OE*kn{-Ll2EvZ5p^=^3s$2CH&>RXX0_DIbZOX_t>$P?yTn%y`nCTTc^~WWqGsa zW#B;_N|w1%M&=mYr_q3tt&$o(3~D&Vmt?<>C`|yIHspXa2OE+7iv}we61a@PS`CCK z#J|&%#{vnq1Td7q(W|x6OEHl>3FtavCc4R2mSaQFmM>e8K!w2BqPQR3w5Lzjt zP^z7>oqljjX>8%m0x5e=z>>(Wor^}mzcV#tD!Ubcp?|~)XKoG+cT}jcA)&~g3(don zaXxDzgsh2w4g5Z`v(OvPi=3Z9)y+fpONbG?*;c7@k?X#pMdk% z1;0EtUjUBFUloh@p5m&Ff{2}1^It^UA!1L~{TI;_5V1QO&Mj*CJ49Dd8*OG$)27Kn z{D;z)a@sc$>8tSX*&4a)d`AGEBx-vU^(){)>TQ=rQ5^x#A!=77)pP^kbm}HoN?#sC zdK9IvlD>S8bT)n?^X!hy>MI3&5mDDhQHuc|ChGbq>Jh*{5Vbdoa{2MfZ2WunMN!=W zFCprtC~7OKDLySd{WS7)7-LJejD6qo}2TZzbx{DC#l5 zKNIy>6crc1vLXIGPef6@0MjSRJx_-y;hU<_XG5qO)-DBgoH9HgqJ;0TMqdn}D#Ht) zF2gm4=anexYf$vQOwVgkR076ddLr8MMikWq6g}JQc`J(Q1&SVE_Pi5GB}@h7IUxsK zAye<0L$HMK_Cg+HzvD4w1@iFt`{B<>hf(`Aby8A)K;Y$E#Z)xitRfnCX5%Qd>=Vs~ zU}UDz+II8#tr@PPc(k@XGW{*mGy>bnGF^x`jlgz_OixCfMjN}WOdm#^MjN}GO#g^D zjR5u#nQo3ajR5vgPP0p{Wp0tN3ck_Xtn3d&^M0rBsvfI(7kKV*=g!7RUdR1aZ5(ax zZ|st$IJ`xRO-SAc-u<_2713~a zrl^NC^{b>_1urRC$nVNfeR3k1+VgGXaDQiWMLtIyt}Y-5FP}eu6$+tOY2hv*m%HUQ zqy{0MtG4CFr-Lc;EYC5^Q0u}+zb!D}iIT5gX=bdZ z3M9paO6n3&bQHUq8M&zH!oN>b=Nq{s^(ZJhlwIXfxjxra+o)VF9I#wg$51Ze&(dgR zD1-2~2g)UMGquAt+SAm|2TJ3Ft8YlFYJQ!j28J>y>H$zRgt&%ATAG08O}D%TNB&56qO9H^ft*8)C*Ri8Pl z(d825K9g36v4$p~uJuN@^U{DP(%#YBWtJ1{Fp~3oahn89XITb>=rECcmD_@qiW&dL;muTht zQprb6xKj8Z)}qhOX-@bpTov}fzw6s`T2kIk(8|BgX-+Bst(6IKjVz{j-)m7lDT+~9 ztOnw`YBK&^={Aof!O=mLG*|NtCC^4ksrZB7Pf-56*!e%#d{OND>9|7bhktw)A!hj_ zG+!D!|2FWCQT{fu^FOcojK}w>7}Ex|ay4_LSkZG_4X?QE9P6_%4K=z9&$tiiDOEkBs;RC(x49ct1@q zvZ2v0fc{NrKLahUgTB|i4~G1VtuusJgXf!T|5LmFVEl6Q{upd}kHt*~^I^1h!6a;! zQS9T_v6*_7Ry$s-vP8q2KCOo1SHj`xmdKf8oz;I<#;-t}D;<$DJo9c3UReicat??F z?thT*=3H4)hII##c^au+h~?}TWyIuM=L~5G0b$-;#1y>OfJYLH^)E=q5AuqfVHwF8 zmiUr#_s_^g^r7E?j?PSov&5TJ?9JZRQ>cu?No_nyIfpYdK#YTtoLfX@p%&eWYo$&| z9K?Ulvg@gQ+K7w+1BB>+Ww4w%ZI?GfaGCQZdH5(P*u!>JVB-g4vzughN}g&U;%@}< zIidGTl>8CdKWOcPq;kHc3T2n3;ucf<=RCq76(X{?Xzi|EhTl8CzLKd0Ox>x{CO^0%n8_2AwizQQs%c7#^Rh5rkX#SI|n5ov(y>MsYkn)m^7 zV5efezoKR$Z5!Zsi5h8nzsXXtY@)Q2z>6}$O^oKw2fmcJX^J!2Wj*jS#H~qc-mjAKkdl&P8smZ`_L7N7Z}}jU?1^ZW>mu22VzXwE|7c0DDkh7M z0m<&2L@gnWcGg&6B=(Ep3qH^y#pJz7^wI=bQN%JHSrj1xmm*15139~GKSYKh5qME^ z$4rj*W}p_9XgS{tCdbENpr__em>kz6uvv5IE~7lEkqCSMt~FLrb4pw^Aj*SF1O@@3 z^Gr@#7xh``q6l2B;Yt_vQLTO(Fr9yLdWNa}c?upFrXB+LI8Ht}qg(}zg0?d<;m>-4 zFATKESBh#^4_5FPk&y$%N>WS+q!i$)bsVD8O&fv18eU*#3|s-&i*sJiiZDms1-y&k z4PkHqw;R4k#q0<(G6t}VirgIr?*&Zf>70Eo>WsQcP6DPcH|HD-gL4Y8>>ZEu<}D^% zSOfTxCov)%b*bLKM;!0k!Xuh|)+9yYcfgF9ZB)7r1^p z+`=*7ow@-(8?<0G!P~uX^^oJZd6`iT&wXOXhL`(%!;r5p@0N-^?&x*go8z$z^( za67qr*D6_0$i^;oVU!I#0@;=<6w*G*THtTZ4Tv%kXx9`si(ZJ5CK#LuEY@pbGuDW9+by4x6kC{LHUp7ZZkP~;0Dx}dpnYoVjJlF zLA)to-wVAZI25R5yLwc2mG$il{CTy24i9$!(Kc3KN$Y*J}KV5Y zkt%7XyrnX8aa?4Z%Qjl31Fxuv7t$N+8 z*(U`!C34j>=w#rcsmioK3WCvezN_OzR#NW9p<2+$F`9{t;gHo_StRFWL1AIJCF)H? z&+G2Uo+kp+0sV^(qzN$#^vb5aSF0ADTV=Md)k<025nFFGa!)NibZ)5#?9{5qVylei z{*RWvVM@8Vc_VAotF`j*i`Xi|!-ur=?{iBsP(h0Gp)LrBhI&fA?r^S|rrqO{p?UV!SOleTyWj-(vcdi`aPyf1n$#*p* zf{#r>q$AC`Dl^Dkznfi!)-XHS<7YfUBZ`ooAy`I<-H4a}-Jk=m(DTxQ(sgy1y ztF#Z2%Hao7vik#+>xm4KTx4IP!Dm;XJgLlRfI6!6#LvL1^~8|<_~LQF^~4aGy%4Ce zo+wK_22idi221rOQT^D{cxQZYJ&_%X?+ZY!Cx%R?T>(_DCkA1!kItECpM%rui4mN? z#f0E`q927iT!w$SMjKgagtDjp7lEqvMDmSM_EN1Urd$|WPox}@BdNOieG&v}Ju$)n z*VTU*yt$spM$XcKmG(O*y`I<_J;zJ1Y@)OaCWh7%Be_e#>GeeB*d5s}Z-LY6iOfxC z30G-@weqasdg3$Hq4h+TZ6q0OL`GN0)OzBvNul*bmIXH=E%_qFVLg#y_MU6zp9F3# zj&Qx6$PRLQq}>AQ9#odr6XlLWtBSPW0PFR{(Ej9nW~*ErT2BmD8S9C>yF=@VtmA`T zF4fU`qRdMLON`bNgP7dKMh;p}j9|Ggq4mTVtQ=>ggw_*T60C~J(t0AZg&~J%J(01l z)p|gXrm8fN3$ba1))RwP6cJocBm$quK0>xmCQrq&Z9tp)zj z+<+((f%4hG^~8{Q5m>0V(4)QkP{d7(lZ03=5+OD~3lam9~o0_}C z?^2U@kB7+IwBykdzGG;)k)B4Z+OP;+IGoRuYyFPcdZUp`mnsJiom+|@J+$hv*eavBpU~1b zOer@vZ)A*O}6wz{|&`|0Af>dLmUmbe;`$ z3VAyAm#hk|C&p58edvN&_?JPc))PZYW4AmFUacq6-j`DcIfv)oz{g8r!fInZkq28c zCIWqdtMx>(sV5#g0IT&x6Mjv@^?bB*^n?!YJJailbjhxbj0UXM6AjOTu5+7+z&@>N z<1g)PfPFAZSJeir1=grkDa6PE`@JAW-Xxv5UA*3wE0pf<-7Z|7g|CF;yba zWt}SLep6sLvJnEco*3JaceUV@X(7^)#_N@t-(#vUm(hZRc%vM{ktZQg>xqWIX!Lp; zl%RuYA<~fxwW?Q4l?dFf1>;PC;m8>X)OuoUNBVD6f*q!XNJnncsy#7PBJjHw+-?dC zN4jqct|!KJMF=^ZXI!c{y`CsJ8gr>MbsD=!tMqze43$~pom#Kg6IoAH7lG57)9Z;5wxp_Z zi}FjaC&p08qpX;kg4Yud;kRa9PfW(@8m}jcJkL+KsZrm1Ikk(t_wv*S|Lxw(pTT-} zL#pn*Bz45Smn0Fs)-Y|}d-(^W3xLXdFUf}GNc0|{^4?1WE&k@1y7w~Ay<;&7tUuZP z3T~eeR(|d)cy#hPJR~q%*a>ufT7Qk@)c+7%drobVDR29(fHFvVXdy%kq;|Vv(hAgLuGn@r_-3Vm3-jEV#g zKW+#{LqN-<^%wajLO{<6)PFHlr0}iL=)3=L(@=fXgF^d3(Zd4uKQl8tq0t|sGJFDR z!DwXoM^fauwMa>0XG5FUl>S4tI~4?^}SZeu9O9ufxCq)q*#$A0{y_zlLhrN zqw~!KM>o0DFS0_-BW)Jbj%Wza@c7R}G@|8SP#gzu+96&%3pXIr<159dj||b%nc5z94WTSLLz?OevNxn*Vy^i>CCFPv%;Hl00hz6b_6l?kK47!j( zM(N7ee?RvR+B5$9GUg&5HIDyYkwK2QQJdOl^W5&Gvj6q#fnsIVHxBJ_e`yU#NMc&0^XSs{g%*9s7Uj zf28LA*Bs8P{&zLn$nrlNw3I;{ccUkGH*+_7Jk*UI6B!56g?Jz1^?Ci0@BS1oZ(NNY zWm~mBTaR$T7HpoT&63OL_nk(&WjDLG7g|bovyZNe=w=uF1THwtQOcXslNy$k5#5a0 zsg%Lzy-Ihp`AA!iL7fjub~7?$IZHUhXrQv2Z499qXW^OZX8RzJ-RzJdi0>WjX3s$& zyIH76;rm{r?|z1!pd69i%zw4+W@d(V8vQXU!vs*Wn@Ng1_qL$M%kaYw)y+0SrMg+j zu9O9C1*f`Mq=~>=;8Zt@%J&yI)y+c9BW)Jbj!@m~t}9VRbC~-YT=+0YYVKwe;JoT) zYtTm2&9tQq;#4;yEV`R@^z{5UO6~OYA-sGIXH(JXWfk*wdPl{QI-Nv}nmV=9S1Oi) zNx-QmLz946Xf}EP;~88291{Bh47!%_?txTI0!SS(2_OlcmW63^5P7j4|_x&&%3ZE!%iDb zFhL6)&y@21j50(9DI<<&W=kl8Z}DIHcy5cdKqJ^v9?SPlA%i zv!uv#uSJcQ@fo)2c>W41bv%dcN?D)|T3j8^ktPCV;MDOPm2V_Cbv%cfN7^i=9ifir z5;Wrf<#;AFAJ6%4ULDUra<)5zmNJOry9(X zm^z+#7j|~$M$CZ(zM+FRuVfyzn)XL8`w>4(dRsO`*GQ&&lgMJ`4l9{%9-yD>GcUFL zUsx*3a}im*ohV;gQyj(gGMCJ^ENPAnvrYd5aCFag=4tCnDy|oov>Kk#6HJ+VE&mQE z-p7BYZMP08f;TU)Bd>Wt-)be(O%e2Kdgd-GneKP^l;T_QVJ!D`aM8-1E)Dov)g%9MO4!1n_5GMx-q|GeJqE+%bnf~~kv6UPPJ^OxCil|6(E^rp4Q0sKfh`SIxsx+=bLCe1 z&UfT5dAZvSt#2|=`dKY^mx=BNO24Y*US*=kfzpqDxz|n|7%FYiaQTZ~?o?lEulz+X zcdsGv%>qjI_UG<5(ZfLLr?}jkP4rWsG@Rz%LUmUa@@4qs4{^D7nCMWT)W>q~G0~ks z>Bq0!hvdEV+$6pifYR}r`*@Q<+I88y8GBI>{q&Vv?x(wgg~`1_y*T%xf)62Rm;k|7YH#w6E@%d5Cc!_2!OH;A z&4{_bDVVwe?pgy(E04K&oemx_lx-#NWF&K{cKVRZogVlZ8E9!Ex0Xdu;HeBDZJ-P! zEp6ncsJ9GJ+j&VV0&_H%X>!5LN_B@;H9EJ79h2S#e$x6vQ!j6VDygl!DK@!KiBdI7 zt6H2}r3$+PQd$tr9bq;YRZj`N(Sk9ifDR!g$VYCrFy0i9BP>v=iCQ%=rb-0%LO=_m zxfh!P!;z1)V5%uF9LcDoEX*(kk&cYis@XABB5)N1v>=*0-xL^*e5D18O@ZM^vm|9< znJI{LWWH9dim4KTqY%)7Xzn^wU^r5%t`clE1%@O2v|yVlh;-x%t=bt=B?9k3KntR| zSDFIDkus1hxYiUHjx5uHJ*FVik!Q7PUrdz zCK^l*(a^;w@mkR2EwKF$K~j!)PvmXjr}bGOW&RI9o%}3LG?}&Xr8RU&&^-AzGhf4|8iggY6YKzvnHo{pW)nMT+O`BO{>T_VQm0 zWGA67%Z8wQGIO&%fIlYcb$xJE zV-?%M~ME3xdb43$<2dFt$;*;K6|PT#;ew1|qNxu$n8Dq4`yv=wLR+^9+5+VXpW*GN`#C-Cb=o zf^3O^XONnm>A51cotLyCP^mdRS7a_UbCar7TBYZTF;s?kfycF8&lOoOf8Y{>l{b2> z7-37QDzr+^6=SGW^;SWu=88sxk>g76kQR)w3;`WNO7NQ&j5h`3h*_zYLsU5vW2!`8 zCIo7(Xq00(a##zdnidR4KG%X7rXbRh+@Y$R*)dfjFaZKJSB&k*0WDZ;S}+{>N(+{m zf=EYN3{&N-imAe{>kz29Vr)l_YQbjHg5k(NTCmL&L^{%CxGHC7OqB?1f|M? z7F=suFdRu6p)Bk%1(A+S(yDziRU&X31Zu7r+mYY3;8xRu;Yi1k%EBF{AkvYIT6IrM zmGHj?!8zuNR9M*W%A&Rx<98iTOPnjMyyJFS(kL}~`pWh`OoPeeG;}3XMxHCaZ~Mz3 z;kn{>avnqqDf15p#dF1$#h!Xy%fbv{1 z-W8rf75FuHo-5XKy+#IkV^~cZt>%guvH3FaJXg#!crO2WoFs*RBzT@H7P|=WzD-^w zpTw5uiXYnky-@I6v4!j1iBNER`JV;KbHy?jEr4)7nYr1|pm?s>hBNq+(DXc4>>v$r z5y3kEMD6t#W16^g3N|yRVy=?*w2dXV3~aqk`(+j(q+br24iIe#YdXl;S%7xnUlZax z0+~hV5JpA(5+rUVV5kJLA3)+10mJ!S*jFL1NMJ+bEh&+y3uVfCV@NPbK~MESLrE20 zz|5r|AeHY2*ri!e(*=i-HVybPpHb8jgW_BXy+Ad^`WqP%1tXE7GilScDnIGP1)BkP zJ7tNcJLK{b`|Z0I=&zK0_w8IDqoT5Dk838u#oABWUL@L#s1~AgJU#=^4gXEMdMPcs zxSz5`Wl6;|$XHpjHNP%-*B@UiD#liEQ=9K+~Yz|)R zz`;xXIe7VE4qjQt!K=GCcbSn zyE$n4JO}Mga?t)a4m#FqK{h)z;^2Z}4k|ly(77)MT}E)wZ6*g*OE~Dhj)NXMIOugP z2fgWHw6eSpjWdzZ?$>hA;|K>mALgLf%N+Fnkb_}AP|%^&YKfrZih3NZ%;I2mcMjI} z=V1NC9Bf*_!IsN7*t(B{ZFh69o!;S4*>Oj$QVK51;b3Q54t90t;PRmyTv5Zpl}k9d z>M{;?@8{r}2RXR*Z4R#giGv&Jl#$K-4LG=|kb{3!aB!e62RF~);NT_>4&B7T;d?na z@;V1UoZ{f8p56>H3y3x;b8Hr94tT1!HQEHtUSZPs(Nk6*y>yk)|7Lwwu*yw zV>nnpm4gkdIoNmw2b=EYVDrlyT>2FUTYu$Xdt6(xxuXFGm$l(wXFm=en99L}8#y?7 zkb{Sw;Nam;Dd^VL-44&v9l_h}>0D5?-kXH9w|XiD?gpNtfRn1a^DFoKz^i(S%r}Ac zoF+t7FK-#~RehW^%0j%C2qEGA46DQ-smX#yWS>ATI>S`)X9=7_2LAv^XSAx3&5)LI zIsu97WPFC5nd%TD4K)Yj!L2z}HKb%iUdi+Uvxt~!5lsA4FdOk-HB0&@-(&bZRitb7 zRuIo!;T9eG{fN=fOB+$yb6~ypXsMoq8gnq1PhdTVw&c{XE*y-Y_cv7b9CZ-~qZe{8 zW-A9{_i!-oHV(!g<6y#T99;M@2NQqhpxWJmtW5HAa8VNuE^g03O&<;>kENhb`2xOPQ*kY)E;ztJwlHEB*MEU_@32WXC8^>Km zZvjoD-H}djmacl5c#hE~{VgQBbL>MR==%!kw5g)~GR>j6PbDUJDbnM2hh{ zG-qaDK3LC6ZUgjgivMoa@vK9{@_ujiAWPolZs2Yq?t82b4nX1nCC)Uz8iB{#a}tnV zQ?L=XNUZST^OesL@AOHhMEX)NebY%4eE+4dS@Uu@<#_WvZ|C3+xr9-fXBJ!H5Htw~ zM8->LLR^BwB4JiS%}QG&;8)Tnvtf~5q$wn{SV8Ymu^A;`-+mO_#CCQWGH|XXO40_T zf|luAC_wmzWno<+4&17gIkcR?Wyre@Hfn0MLDi+Qd=F@9jX|+zc%g@UgK@%IgQ734 z2wzr1MXfU^nQI^@dV_JodV`X=)@f>kLCIYAgKCnAT$`xXEGK{}2;bL0v$BC+N(LnA zm9`22GquH_q^&WaE~8vq4NB&^R#V#yO6Gb6l+_5iwi}dez68Kb?Jy|Wd>u4(nL$Z| zvq9}AgF8c%@ZAFBLqad713_2x6p&nWodo$&2ClyBAHHJ17ZY_=M5D=1ykyS=_XzQO zsO984VCi+Of?w1+>KY4umK^9ub@>dDJkR$HsFRj)CnYqYl}I2gp^fD{Lp@Vg`&U5p z&hdn{l(w7~x#zL4ixP4p$h=(@^ma(qO+oJy!;U2XGx@36;(7nlad_c1GbowRAhQ9 z#QMklno>G_53=^mD=m>eo0JnM4}EMaeJaK1PTc0*8^aw-eo$!@p_C`jz2PpviSG@# z>Ra5%d@bPfUDiO)d3mT}Vu_2toS05<50}Vjh{)5+k$69WvL$|KIVY||+qCD@NtyD} z?QC)vNYzIQryJ#jgg#af?HI3tf1>cIM}pE%74+3{g5KJTVn36R@O^+3omdk;U;7j7 z5^_eG^Zl%;FAR!p_~LF*xxO?gqeT4T&xSU^rtsxz_1A`)se*D)H0MbCPURql@bv;r zi{6Rf%YL_w(Q!aW;-WI~2NRtKlomD;e>Bm}Ku32$y?&Ah8Cxj05hy*qocOaUj4vVVQ8@ZGfL5*kx%0PXhXyAo&prRa)Rfz-hS2BvF2gLc(6|7lmiR(PP?)aX~Bf z_6hz4A<=7n9`sqZT_6t}{RWZfi{{ET7jIo1td+{Q;DE}PVCLhID6m0uwak2yy9ylL z-jbMT(H_(_I-=n^Mivn`2AF=zNK6V-zp3H6Vd^gcU-ApOY(4(4r)rj3Csapa&t;bi z*f%Sw-;}1tk~YxN^GxY!9LUlj^&(}pwU!1DK%%5 z1Dmuo%aqc|AWC|ZmS&q$I!Q!HAJx(vQ`#X|EgG0*Ch72Tt-+*Hw+Y1&$vm&iw0;0i4`Kc+w)hk-k^ zs^z&=O8Tmnmi=F(O8=AAxB7q4t4!w|QVrSW|2dP&*-7VY|Noa$WuKz6clsZ)D;rnC z#>4ne>}(mQ0D2I@`|EEweFXgf#&lPu+Kt?FZ{B0c^}tNNO%NROKw zRVDT_RS_Nsrb6ZJ0l(zC+104beo2@1Xu&{!dAo5o^Gd-hS}@2Ius2eW@Q^BEuqj|i zq@WuFJZ%|bdTRKvKnsSN0&W&*;U+B@W(tfVPC&pNW~3?j3O62ehY}U8WiC6R8c}}o+9*N<#(~?Jjfw3-bCe1lJ$zFB8CMM=ITIC{^%3^de2Wi9 z&-?HxafX$06>Nx<1K3(A_hD+lkd$w&ogCbW@lz+c6KE-{t+Xc zZ%Zr6$CkGH3>zs9;~X!wrHt0``-0m~?y^j79JsPRIN^oqoUQ_MAXrMlqI3b?hY#*f z{70{F3(=P8OjnWK2mD2HOEbBhz&|5*Wjd!LJp}R*M!MWCZtIdQ_*@IFwguKDJIV;I zwFNS2P#66zMxegitkZ5aJntI8^>zqWyHfQa?p}Eha+58v64})VZngzhBIg;wDqCPB z@-ZX0)fQNZJYoc^ZGn}@x?kYab{&z(+bjWIAqn_#!ndcu0|6iD2Y6k2VXN+uH+#68 zq2dmx=pFxuYUmoMCO3oXK1<~cd(6NOXjtyghrR}QG1VJW)Snsn;S}}nfM2Kj(G>Lw zUuyXA6m@IBV|i9jq^SED_^A~21iHnvcF= z3sfTK8SYJ+v(mTH2;Q;wtX=QeoJvsiYt8MoIV(X; zj9{NFPzgHKaPQijN>G{M-m^KCpsT@g>sRyxn^Or|Z@ABF?uy%)v#%NMbDL9X`N(hw zZBC`-55s+7b1E(Qhj4+OjRNwx)$||(LH#)%Y{#~lFtiY(gw^edx*69s0sw1|lBC_Pv zpFWvoMt{`SOLka!@`_O%%TQSv6FjWX;|E(M0xPT@M)hNc$_i_aQT=SI@tr?oMpXiv|NX zV8p3ASvi537gtoMm!S%O2USks0ER*TLluKU!V24ANsd@y4TVa=s$_?iu3Bxvs%nQN zIl{0Uf2Rp1Y6oKpj++o-b_kL!DumA8>x5LdL$CywK(Gz}(OLoSH`Zr;=`wg5d>7In z|06v$2)K5`wFmQ2-`gy=NQeBdw{?NdUZMFX!;LTLG z3~a|pM&*IyM~`Chs{`OR>YUU~y*j7H;7-MVv|}cBI`HY_x@K~h0GBX(Xl^7<-SPhe zSc2=B0>5fPIxPi02Dr*GM9@pa%vL>StqHsZx!#&I@cc)|?-(Q*Gna5~5`3eL6#R#wac$%iGQ6YZo~?bdoDm}Cps{pn_TzY$Ea z1y-9@^G6*;nJut}&I62KsuIX-lQQZCV4)FAw*^)d&l|xkEfCH+i@%NFd^-f|EIR(= zIBTCmMqQ``vY?=+y~Y`Cp6yvRsaG2A65F2|9Xw^Y`L;jB9R^pW9PwQi;JmP|5k!NLG%gEIw%5DceaksY%YLK_G!q+oG?v(%X(^oL*#1(ydnkDe)*1i|wZ zED3P-JX5d$g6}D~BEb3mOu-rm>Q94UX@Il(nS!Swm`lNxfwrjv$A1ePzpNWw7T_$m z<=OGS0k>;5xaD@mu9#wXdk?>U1lQVviV1)0doY6Q zY(d46gyWAef)%!)Vj;ruryIfbwxD9E1mDasf*Wi>#R7@ruQq}kZ2_|~Trtz{_>UOX zO}0vw4lLDnsOlUGJJFT8DY7!-W5cb|oRtqh8SWO%Sy@mC4TXextLCh;uVc8?nzK&4 zt>M;a&N}CQhPzF3=_fJ)0zL^9y-OYr*A<6t0zQBPj?Y3x@6P1bgFBhrJ(=8AaCOPu zo5_6w?j~{@GP!@ijUsnn2A3}@-Ou3Vs6%jT57jfQ)}=9IrT!O3m*TQ(;( zOnLs=2=-(MR0x%S*Ee^2ZGrM!V7PZ}PWkI-xc6;NSn+~JL1M6;LlPv?&>RgTI%Xgx`2mH&8#L0S5 zB(ij0oue9VOpN{!@Nb2L8xNzdE%6^B+yHPO1%3@MU$Ya<%Ch40KQwSKMSTP?w=YJs zQ{b#W9j61s&PjpefVr(P8p@h+bMk!n?ijvFF#31EU;Q`6{b#`)wk7_9fW>DdYlHYy zr^&ZSaYtnIpMd|8@ma~1`0oPdp2%qB6!?3<+!PtDV#6g_{{S8jxF+5-FYO5Lpq!FA z20y{zGGHm`1iT&f`36_|GY#$=T)@GcgYIPkyavaZ};6GZZ)jeh0`y8Op2-nU!HXx}!0;m-0XwkY_eY&XY^>Up) z_>Z2L^_Qg{3Fr~R^|ZQ#yJq}@SK}exYXH~JYItTv*s5u5Wlpb0T}pk(Zfp)46E?`)vAP&>ueE;4ADt-TZIcKk=rv9%u>bgHd&SGdkmhI_89t!vP7 zTiXL@-^-w#W@{%Kbh@ow2J}JvM`vWk*B}Eca?#0q9`I+RW@b=70?xZ0)GQU2<*Pp6 zex%OJpw0%onAGen&J*Z-yb;K=MCT|}<>Na*ej<9ltqt6OO-}faUZ7B`kWL1CHmSL) zBr9$o!&9V+%>cKC{DoOEf~)WvPTq~=J!nMpvScVHBB|aqVD9#Lg)6 zPMWA_jq$#B3%xVUFkMc9aj@$P?J9cCc;A;MD*6NrJHODo=}Zlv?7Bklr87N%@+DxQ z58q{Mi*Oeh4p!m`UJGVRJ@`2&Od4J38_;}xL+IP^iO4?WQn8v93H=~arq~Lu*~Oq^ zNMOiy$v0b%?eG|t!?)=YObq*&IG>n{ zvZtz_J@Zb?spWRf?SyjV{ao%4JQhwccaR%8a6gi(js~lvFf|$)qMi&rLqoERQ1^b^tp0>l1#`Q3eCXBjhTtgTjfJh`O@XcI9V@{N zk#_;ycevig_<7LvuEx*b$FsaE@cS2j*W>s2-&x*6`27dRTk*T0o3{r)_jdC>C42l7 zov0By1-~WF=1dLo%dF2aBAT6e@+cA00>vz$@qxjdt3 z-eS;>cO$IpZGa7UPr+t+ufqnt4`8#suV8b$UtvRDP9tQpR|_`cHH59?wSledoeEpU z8xC95D}#-C^I)raSHb3bYhYvE{jk-&r(kP%yJ0==6WBcOC~QqH&=`}YUK}>xYYFRn zJz;Bk17YLdIM{?Y6Se@W{rI^F|GDej7V9d`OD1gn#YUvc>jTQy?bE;-bUCg z?{V0mw;49u+X|cGy#gEZcEX0eH(?{*KG;g$hp?5s&ta>0-@sP&j>1O0Utz0x|G?&Y z*-dz2RbZ=o)nRLRKCI`}fz9)ZVQbT;*J-aa@SZyv1cT>%^LMsE&qqWW_Z zP2u?=_t^avp8aZo8WDa(KL#pw#BT>^5aCDl0=0t20GdbGtney$DWJOvZ*pHqOW4zZ zgSn-6Y6A|(dllC8zFU%oguMlKmiImd-lwqH-q)}>-uJK}?^oEc_YZ8u3pQhcgkdXt zG1w|zP1vg5Cr{vsRBy#UStyVKAh}*W*ciTNfS=O{JgFbcQRy56h->1xPore0M_%Gz~*`FVQYG)z@Fd@hRyfRhV{K!u(iBPVdLI)unBJ+ zY=QSQY@zoGY;A83Y#r|aY>{^iwyx)%gbzM?G1z)u5o~?032XzeEo`w@3fs^d23z7y zgl*)_hHdOEf^Fhm2iw$J2iweh5VpCu8McM@D(p$#KG>Gtm$0q8pJ7{j!Is!}=hc91 z>(zyA=e2}w@0|kM!5aqK(VGO@$-5A?vv(D27w?*Qx&?_1cR-tVx(yhv+w-(CXt46haJ2(J(9NN)=4ncia9QQl3k zqrE#}$9NCHj`g;{p5?s`JI?z6_H6GM?0BzA8^@X8<-<<&ieV>t9bqSXrLa@Haj<3H zOxSb0%V4K^*TJ6at%WW39)X?aJr6tG+YLLz`xthncNBJ(7i{Y|=XtrXv%NU%9Iqwp z`Q9n87kEQq=X#T1FZ3>eo#$N*dy%&W_G0e=*h{=;VCQ?gU>A7r!(QtB411aDWwpbu z2-mBQpGB_M06&XeuLFKAcfHf_v&8kzz|R$~HyJ-mUGF^nT0Y{9NsNTkvy@>%D^?+@kmg@cTFZbDwv)n5TO_=^=jV$_5F6S830yu{NyhHHHm% z?O?OKQ(=SNAlPhg3~Y{f4s6IfA2#eQgpGLDz*h2Zg{|z}1zW{?1h%TT1vcvKfUV~3 zh0XOog^hXN!B+QvhpmAvY`Fd8`d{wLF1v1>I6ncHyB~75xg6aX_#^|r;!b{mu#ATM zQvq{5E%$ZR3dzi{V3j7|R?+EWn zfqw>6xg+3rQeY2IBf@)A;8uWo6W*5s4+b=g@VhDSB0#GMzn2291H{Lta^FvZp9RE+ zt#Us|f!_!8BjNoi@NqziPJlm3fg1zrP59#!cqE_;2!E0SF9EcU@PQQgen49Yf97&1 zX3FwKKqW3V9Di=ZC3^sWMfE}KD`D}fVQk3}V1drSzevIT2rxWUdUr)hOJ5&v3^zC(HdZ1Lgk) zu0|L5%Tg;|I;ll~IuQ<~z`X#;fVE0M2CP~=2C$6xss?1dr{URvWn2{v$hb7V>TZB#6cSH~awuRKg(OnoGQctlDM*1A0+vxoVG6tku#7_L z1Y{JVQ?e1Tw1;&A(jF>!_-j<-KewKO{j8I9JJBHJv`+vm?L=`3+!(O56HQa#u7IVT zXqEyG1}yDF^AvarU}+~>q`;Q|mUf~|3Vc0aX(!sHzz+eIcA`rP{1RYkCr(a*-vun~ zME4Z9CMqW%wM-4I~%=#o7=L%6CZ~h_7J%pove-obK8Xaq7P7QeNhaE^doI43JnC~ z6tx2=y+}KDA_{ckypfC#gCI&*^HB^dAot&;l-19!bO=avRN*T~CU1qKFFS?1;O0zK zbX&MG`RG_TH1ttK(piqqQb+2u&k7o6K{k%}|Ini~Tc-3AG%jl%k$W%06FK;gPGYQ> znf(NDMP3IYnd7NvT<*E1~na&?6I4fq@2iAKxHr8EE~NGs60hII~i{{`G`bh!fMT*Z}G{=*2ry! zpKI~btVUik)VwrGP3A_NH7M`C$jVDB-io@r;TKrE74=-hUuN+t>NSR1lt$^O_kx$z zqHA8?X!6xbybHIi1T9Nk`U5UXt{YvM;NIhdi;&DEkz?>C%R|>%-Xc+4BC-s0osBjG zD$6}9Z1fbMvN&_|sShP19tgLr&D@yaH)Ujj=Z45QXk|HOrKOE504l3Kt8DaEpt44D zi;ZpqDi7|jX11kNpEnG3TNu?^>LpN;jHfcFk3h*v>C+k1ub?D_&sdad+Y;+^3iTW9*|voh)g6?ia7%`-$)F^K z&t*`{K}iaq&!8R#B`MsRPGPq{Dr@Q3M{&t^9lOzw%Yws=S0(hOB{u zyZB@4DwB`h?}mEpKt8LZ2h@?(m@E82jkEHp9!lXGZCsYg6#kILB^N5ca0()NSV2x? z7mm1s7kl(xL~IKq2MzU@MM*VK!EVy(2bto?A4dIzr536bP~k*M0JFb| zZBhNrqk?t^%048fOG41%i9opFKK8s0LN2_>e8AjPAA7-ylzp^r09J$JHu=~~Rusig z0OdCM*vocc#qR;)Hu=~#1>>A>RQ*&S+g0DEQrHkkH=;Y{a)2IE=x`wHCu2KHDl*cE zOf%@~b_h#=a_@X>mxUHT0EAoTW4lfKuj7b2=VNcE`lVv}1xT&afWDbTRShpL2F!i) zvA0YRr{aj6Z)}gc17;99b4Gz;=No$`gSyyIdo4=F)R7g2+V^C|dFlYyq1l%J-?b>^ z>oHL5&13H+1H_2KpzkL=IFW-u*~iB|u(f{~bib{w(MxR`jD3_WVC&JXNIS!SZ1K!= zo#bJL|HR^XooIdzcB2@tk z^@T+-XeZLxP+wY+M-l|3k-G0qEvvZLGcmS*kOy3GnA)G zBZm$Dt;Ne3D!z6f)d$DEXFI5_7M*$RKykZX>_`SR5EMK8*wHjfdo2gYK00vR->^F;2nNtt2P`_K03b31@{;((&;8;++ zD~kP`Vd-UtR_>>6gk#YZb+LhSQ`9{Gb2t;Lo}!*?U@t|z5HNR_#cHOgA24vft@d{U zK0_v6Lt|6i(;py0E4v0^u^S8)6xhHGeZthuTq^`{#_i7k+F z^RF^oqjXN?zJHGqG`0m&Rs5I1@yWkf6PuH|;(uhgrZ#7#>Q^IZW(!oRs-La{Zl2ER zR5de#7Pdg8st-6mR~S3V=B$_}8bQkpfu*|Cs9I&HR3g_HLF<1N=#)NXRBbX;D!F?h z;I6P(+YA9yxHpjGYvw@N3em63M%cd1I(V5912t5~=?#u-M? zDMO$_xW))N+X7~u4&ebK=#n9jf)J_7gk473)s`|IHB9ioGlG*d1gf~I4%8Xc%@#-$ zD!EOKpt~)Q6INBa7X;i(80(QPz{9hKJH_Ty%;y=dr_HHImx1HPsMu+4aA!qdqT>7M z989ZB1=lORX~0uzz~$2GYlo?JAanvJ7eGIolN?oou@Fd&>Te6k>4Lf32u`;Jk`*e1 zdyQa#Eszk@dA$LFJiG2{~_oE0q>P!!__>q zj92yEjFI4YI~O}6lbZ{UcT2GmncU6bc)JuEnaMo{j`vHkGc&oj!10DDHY$@l0*-q+ zVq;ykr$f#(`FNA>f#jZ!*jaknCSA}8B=>a0%qt?&1*1W7Pe<%*HGi(M!iwTjkZULy z@A4^pJzB8@cY@@ej@Sge@BH5cyFhYJM{J_Yr@1mi$eM<`LHx%ixoS^GdLl=Gw4M194{X>;P`c*m9WmS!gBo1fQK=dsVVR%1D|Wbx<8!*Zauw}+gwFkq*aeW zv5Tsi_7!05M|sBxX4wMHsOon5dm}i{7RYt1u9NT_9mQ;0z`GM2LR}-6V+*WJ6`hUX zd|P1ctQc+t7ubUI-6XS&YObwH--K~BRNTB4yUs|j$NH{+lyTz9Ha|ky8d}|7PBVf*(##Y;L`WpG^vD;JNp8#{7HMZ8>D2Y|)!!O2jb~SdB>u;E+CQ@VTY>B@Wu=u>g z{n|QB&dYL&Hg>b?pLmJ(x!#ueod9#bHg;zUJRC5mW@G=c;gT7Id8_`QxebxtxMaD( zHyT`e_mT|;f5_m{1D0$D&d2I8FQsp1R5)K6{1JnzaB}8r{i6m~;S>Ysd9#7?N$}Wfw)P%_?zFW#f%56@ z*z30TxIuT>+7mCseHZ>Qf5m%GorW<6eZ$iFmjhi#?LK$eC&^2d6Qg|oIJOtBPo0NA z3WCcqub6z^_?>R%d1GGHp=KUrZdQPB|NeQ(q4I?OO#j(mw;KW}`2@xCujRJ00=dfqsl*$Rf&dg#4$=1VZ@dE+iP z1M30dqLw|(^TxuY(Uq6>Zj+7_%9rIEP+q<-uWCcC)?ZA z8<6)AtgD!!b@;Yf^_tn}=-AawXO(^&nd>^-ENmYYI*V(hW2H z^#&({X`(a<$<1~Lsw zmW+3gYN9WNP^B$$Ehygoc=u*d4}s#^gm)ink{hBgr}zz^oT2xyG9xEcd=yCjFd$fa zQKwiRN1U_w^a`2s*$?Otq{n+wCyp^Xk=cMbmG8Zfk%BuwaUH~aDM>lSF9GEQzlSvn z72oGTIKl6|$}Ui)RMqi_J6z4jd)qUpLPPCPQ)CQF`6})RimM~uPMuU4!WEAO%$sQM zbq!08TfES~yEH7tUVJxT&cS(D%aE{@`gOp(+xFhD!d4wc@ekm5qwT$!$@yns`2hbO z)-{qzjhqT-8sWE9DJ5fy%muuT)Efz>jsUvP zLW>&%;U}%Ucda0F9`*$%)$_d!E^;n7-qCySC##lZfiATh!E?#M`{3XCt>C#X;O$RV z43&kEuR(G2;(eIr)$yy2RNbN1)BR(&IcujX$HjhA!=38Ze8bcsj8@pog}prYOtz?( zqlS1G0=fBwz1kSwT+53>9oEr@VahaC&tNwuu@ZybPRyTym~X?s*Vt86^d5ol2DFE8 z6ZZiCZb-o&1LFFU*VIyn9}zF{GxcTOOb^BAB`h)f{lLj}-aM0=4~`8fzEq^L)AF|w z92-*aq)hG;aBR4}mYH1cDAjO#tundp;8tNA=(TpYAcZ;;{b>enqlUW^2_~Ct)wzf2e_br>JKG=DnBKCk4I*5XWO)-xT;+z`TR<`niqX zuDD*R-w;>#US1E^uMCz^^ip zu_=K}H}F|0>T3Z%hJSCI4VP>Ibdd1bXlW!BB}Z{s^K3xl4dfT$kZXkA1bu}vVLIFT zf#aHTC5T2xh;JbC@D`J9c;MZ!(;jpi6p|-mzpq1iYK} z&eaK3DJrQ7jCaRgc?$0L0LDdiZ(2%*jW_UgJ7@gGfVr&h%}7z-Y2cZ*y5vQ`Us65G zWLn8l9M+fs=sW}Y2^{j1z}{>tuN=P%U}=69xYo!`Mh5;EaMHwFYG3n7b2#qQDg(5hupVwpU#zN7t%resPHwdhTl(o*#{kuz z0(gxDD}PGR9HjU&BXh#4lh2z3?hblhD}^s(_Q7n&e4JI|OJ~-j; zPUjQCF9H8P{oiBptOwfvSBAegomc+b<6dSN{=E&-da0yY{%C! zHw{8kYjmr8FBYC^oEiu{`yNi9XbX~1eo01dDkDR{ zEX03}K|2vfmI^+><*l27Sx$|Ckt>W~@S7r#sFDec^L8!%3QSa7*Yj{M59un%{&)y7 z%^O%}O9H#Okhk9Cf*_wb%lAeW&O9D+__-_ZOsDX*XjpEVy-~qJ&Y`kR^G1aW*}p1x zmBOBd=y4dv=v?bIaEep37ipCHqH(N=q5d$cP8WR(rt)BTIXlS=uAnQO0IE6Z@s_7b z?SKp;I>AQA1DTDt(0LOD#Ya*NFiBkiMQZ>^hgWvSc_tZjIYp0wk(-xuk_^wvDSFK? zQ!5y!=u-opTLFg8K&qXhKf%a-O?d_56xBc;OHVwl0#v78sSy~iS9{a#GwE*78A()o z7zs*lDrTlrMKeIjE$J+#Jao3CX9+;LOFWOGR}HQOD7S>OB|TK?;&>DcOV^uI!8k=b z0Ln1x{3O^Vy9zH+Z%9FQHE|4U(S#8?U9xA(@lbqf2NkT(EG(d?Pn==Kj!2yI1aT&@ zbToWK<&ds8D|P8iV&bA1NfRd)AN!Uu95$BTLY=toq>ICvI5C;|sa}9sD`N!i)pAQI zs#+5*an(UErEgKrmcDd9U2NP-zo3gvap@7dt~d|jFu$7Lj;kU&T>TmZ_bL|c!k#Oi zbo-rd$E{xPLu@mg2Dj@bn#0|T?!TL#gr88j`PayfV6gc=+py;p-)lRDP|f$+Mne2Q zzSp+@V}$YTR`{*>UYkHy!HbhP0QTR$*CvwG@3jduyeE7`3T9xim4gr$20lTlg@ls& z9qD7JMHVG1NRhdQT5M60vdG<_#xTIkEsBeXPGqm4mROYX6`Y9d z@--fme9UVZbIlEfa0*W3dZ4w75Y}=ApwO@i>jgtyZBZ($W1z05uWKwy`6`;FscS7t z`5FYutqWh*S(M7YOAWQcqEz-hXsGKgN(IPuN%g(9B;`aZqk`DqYf~rM0jT}GHlnJ2 zMA$>9@3p06n*Ltf-Qd;t+L&|UTTvIpI8B)h^}RMGK)%;@GaT{nQN5xh%qvd05KL1aYnX7mIKy9P>^y$ZpN41kYM*Uv5+oaN-^m*u|F4eN&o z(Q7qzo!nhGxQhqP+;D<#Y4~v=4yG45i*QBbKmQI&5Ntl? z@E%GYVg8OsVfjjSuzxf{wIZ%NnUV`EX zL%1OEK7XF2nKOs9(90mY{u^MBFBBe_z16fmED%*RL3 zq|{Vqg>O<1DCYl}3WgLBJNUg6a_7 zHi9f$Ae(snUkzuza>o2u-x!eRWBrylqssGK!nS8CeUpu#k}a^JzsCqF+X5B+4#QPV z=XBcLm1utOpPy?99KR(X4ixfhx+R~RTyqjbP{TR>mp{+%2L(qB`6t*4eo7ci$v@(WVn z>jCpNHNSSsN!|~b_s{ut^!p{`+VHml4ihd)fj+%Y?#Ay!#fd(HdK+iu7&Q}3N&Got zJdBS;$`LA3_OHr$tmN;gDb_)a8H z7NS2g>A@+U1eBXj{82h$H71x3n43!cF{(k4Ac}7R%4HKDdpDCgTKov$9|&U;r(}Ea zYe0CjuZeU6Jmq_+wDK74w(s(~=ri{F{N7X}A#!rZ~1ttCwq73b?o_VBUuLSEr~;4SY>X z*y927{>;Bt!z{P3ir^B%U1xJDO{)yI!sf)Y5)x%_ zWyaL$0$c{3D^dQMWJQ(>Uh{X;Kl$7Ko!<_gD^dRKR#lXyQaOk{E{1@$~ER$`IJZc2HyNWn!%6 zocPd~|5{`f1YEc94_Jc8gT~vZwGNvL-AU|+H?CUvJ0ss2Z=YF$Nbnlf5&NIpXdzJc z!~Q`VZ3|Sc!!MF&9Hvw9Uv)K+Ax89Nx=2-q8HWEVotFzbaus+^0{LI3^E`GUcNzXr z8t+85fRak9w=$`gaxYMJ+5UIQX3mLxYtZkREYpt!uT={k{t+9k3zWUPf7A}4y+M!J z+5tcx8;6|x!A8#o$}y_{W5$)X92CcozTWP{MC+`)7ZgYG{?BUYFBGp6UEiMv&&3M= zS9O_G@J{4iL;aRUsh~@K0MDfgKZvz}rm?K+L~!@Yt_sgyJZ&Ls>V?>Mya-Ug2t zoTu%SlmX{jgI`JGPRSxbT#@iA8_2&M5XW_X6+QNn67x3!=D5y}x>kn!uN%0U`}cPh zWtM1;2oHktk0*Gp2N%Klr~eZW4g&pLx6${>#-IblW9Q-}Z~yp}R%k`c4z8pKFdsqm zt5+nmJ0LEH_<63?5KB+yj{wKz5Wl8t6_Vm+8h`n=Kgl3}2{*)rL#hoC@<1 z6K0{!Ng?^$jK4aW-232uz`uW@+ZB1BE4*Lzdb~mm|9*Xy{O~C(KEETNa>B(L?l160 zK)VQ+xChX%=s;?{4~S1e`b~A+n1^x*i&2k47Tur)%`Aaa>tw*w@b5R*Fo(QOtqTC% zPPm1JIT{MnIJGtc-%IW!&2jV-7NZ28gWU5ms#MDi&v`CJ*Ie-M)w;fn9m8k*fN-0# z=BP*HK03&!7B9R4cLWu0Nqu3ld1{f7gbp$(MF$M{7NZaSD4=t>>ViUh*zJfiOqY|O zPj*9iYOx3+-g<@JNfQ-yGv4>IQ<5;lbU6ve!A=TqNu6N4?@JRET@FS)wV2L42!>rv z=)H7i4;b~-;@^nEdd#q>_7d~dqA+Q6rHetQJhk{B0QJJ3C>=}}t9R*Wy4cHxzPjVOs$4~9Pc1-Va&YTW$+z^9O_ z6;x9^pF-gH7XadoS~L+n3;-|wr9U-UaJAv;+MKLY`L`Rcp3U)PlWn`6g@S@8ep7t=Hgs;*LVdD zqhS^R28@9DUZrT;6!lktxhXi>E(Jagm^+B0?Ni_r{;S@r6zz}#w+76&V?{d!)hJoz z$w0u|D;({dQbWoB^X*vCE-CP3fcbW;Xx9|@cEA^v0PYr4Z@yJwKLMC85{q^Z%8SH8 z3VsuCuO@(d1m#6y8vYJ2UnCao8Ekk5E2UCr-=$s+79EswI&}f_MPkvxDJkg&m~RY= z4hixyGJ%{0m~RY=4h_Cwg}o3kUs4tw7Gxzh>h*y6RKRyrFQ1E!3F^yEE}xQo;C%U9bZiRlHv`VO-{^!O zuR)Wx-L6+2y*Jx0A3HiBHPIwjRRJv==IrQnV^@0 z8?vk9Qy;x8+YP-AEhd9`c)LCf)4v+;%LS|0wKl7L+-WfR^gRgY$?%SOTb z0CNT@`dAA5Jz(BEL?2IqLl3AM)aa%ZxCk(By`xWBux!dyd86irM;p~swu+6lt-8^u zp0-soLCkdPiQYX%wb@oNKkTr=52{=K=rgveV!NphtCvwdYpc@Jb-7V(u~q5m+F?}B z*{bw(Wo=Yb4biRHs##}QsQgk{)zt`IumzGNB{<&*UbF?)H2NkZc*zz>LR1LfKp-W& z%}%N0jS|#-NDE%E1y&k{8^No#z>4BZ2;|d`JF?XWB9o^%^Wuu4^d8o#owiEiu~cV6 zB`?3)ovprEEn&$;=g$KtAIg3sle+;N?;4|TrgKtJ9REHDO5Y`7xW{lQ8YxeSqbSf4`@|F9PO_arBQA_!GdK zG>iU~J>>6-K$0IMTAA(t1_@`yqJP^Gzxv~V8vy<%1wIKd?{1>UQ{Y~JIRzGVa;$j# zae#Sa5_MDHO8|2cEE>o;WTnb1EJask`zs;g5>hnFmiUhV=ImHBm;&zr%o(j{b_)C% zVCkbP=cq+j)kpjTSUx3MB?ZpkgmYMoK&qy|?E!O%HX6<0?S?LglEHvE86VBf(Os!O z6%f~@qp=({#!=B-0hr4d(ds$L))5n|fVpB7t&svh1NamCNAq&5hT#jT5?=%7bbs`O z9Nx32r0DDZA8?%SkNP>RqA6UBC)AWnw3fv=eiOi)MTy2!;GTfFCns9lN|=6~!YFWD zyNTAx5?z-j_6HiE{sKps_8oyyZj&`b%!61vp{{9*(xY=M=ACQs=^wzLIS z8m2=aU+-*Vr-4!6+lPj0YjX_U@%J09ogJ|97kyfX+1}=qzmDMKy@(yH3W&uzzpgFrs&**QmzeA5LhAdruGcCiy{g>XLv@=?#OIlPtBRoD`|3ISgL z5j{Cay#OLTiq9e73m~H1a?}eT(gn_D{ZY^EIqC%v>4G8%_yUM%j~w*^h;+dz5XeV8 zPsvd)fT$2)6%m|#)U#)fdI3a|(-Q~0q({<}(!@E8ulf##6>&BgrAKg;M}LB;AFTT= zuFXWp!oQ!zJLmDu>cj<3Wnu{|2`|90(^-zN8qA|)tq-@(0x9p2sPR17%0w6MM0j(& z*cRldR|_`aHGs|Xn!yIWPO#ZJY%Cb7(Ae5k?gJ*#M@JVKf+KcSiN1>wp)HI|HdKF$ zx{`@3z7P}_j1vR24=S9p}^x#S~{ z0(z71napY<{uoFuGCYCRXbD-$AyNdWBjGX0vvG=h0vSsbtI;AR=|s)}bPeHgNwJiy z6S)QOtE9%Orj998h0fz}Nj7pq3jH^Tf{C8q8~DX0G+5U=1RHQ7fvtGR82^b0|2vFG z4+zFlG%+c1BGZ8^Cpy_iZvpZI(JAVy>MG}3zOT_Th4KWQ$N-?@@t-&+SstqAicB`t zR7FXSFdipzA*k-5Y$tJUGG6U#xuMDxW%;@t)YJG+OiRY)M79}pdNLX(ascQ*)XoxA zWjA)WBhj4#s6%mHj-@msY2v&@>jxX0A8^726N1l&ac*v99u`b-L)rN_>?}w40uhf? zcuIgL3Iw_mE255q&ehPWBs5(^qxvxe9^9v{x`J8bAh838>@n0Fi;{pMzkv$&#!R<< zEpjE35_N|dY5lI|FIE*z_+*z8Ip6U5waLOKht845!E;%pV1X)P;j8iFBfCIx<)h#- zD^=3zL=GEjkwqzAS?_6Ims^zNQ=|kG@5KwQROPJB1*M?t!2s}F1}|9l@BBr^|5X;x zR!I9_XZ$b!cYcTQf1SloLSbnCe;WTQ{*^~%S&P!(*6n?HtSs%{MVboZ<_Bn62A_L{j^|{-DdT5 zLlOkb*olk<#j&=xJ%gHSs2!Z`*J%=8#n*u{Tel^t3Vsl<*}5&TTrI`B4UDbZ0!y(M z9|3H(Zd>Zut9p|Iwr*F1ts0-=R^ZIm?R0K9I6m&dt=knGUL+0J-nyNPDRL_)d+WAE zZ2_gWZmSm73h)C^YU_5A!W(>ns;%1=TI_E}C#|<`R|KK1w&FJ6%+~ERE;0z5y>(j( zjG3vg)bqjHTes8swcy!mnyuRvyc2m56epL=*6k$ae-27EZS-_ERbdm&WI1Z<_Ho0V z>b@l${iSc+ei&HV*6q!dCAV(#Fie@Xbz89KlNh&d3$}xp-vQ$oy>(kv(LDl>2duYl ztGQGKF9$63xv85}>kY||gOfKjn62CN5|)_#Pr=D`Znkb)T=ccHt=ksY30%t7ZHp@d zm$G%+;%)}VyTOXB+ZOjCxK%-Lt=;#KLX{hi|BZp$=pv9zk}J=zz7x|B^wKuPOGg8@ z%k(lHoZh;fj78_vRp9j2?F{ZwaC+;ustJ;EwRL+xxChajV(WGW7kpiFX6v^2qYORX zzi!=5piI=(Z8kumO)Ph;!6O{Kb=#_met*IZ5Ot|tLH(J4WzSJByH5L88Mt?f`YynF z>$V;C3xGNIgRR>({3&4BfZfmiqFTlEQa!7Ga_e@r2s zl|3SG{8J1!G@a9e84yTQVzzF}S@>52PT9Jx;QIjUt=q}|#PMGNeBwBye6+q`mHLoT zk4b@Z-cV0CVe7UXNRffhN>O(K{20R?XTv390UspHt=rPZl`I6r=O1P3wm|-W0Hti* zX2Nu~y#|gmvK3pmE$(}8oYuzHZH}p}-c~in&^R zw#vs70aa|>R{7WiP|DVARlsKf)?2r&k(-PR{ENZqt=m=>D()8JZ=q}XlT7d*2dB4g zXK-&CZi($rh50Qwy>e5%3*N>6Wg>E8nfsXq_X50<@N!ka;jh>*`4w<|cOR!6{Q>vjb!eYon# zYfUx&uys3C;N;x~&fdB$RbBe^ygi`ot=mGeJoMJ>g z|7OGMt=man`48b<#@@P}#ZQU-w*6l$o;z}=X zg#ddt3wjBlZdi-5UcfX8{tJ4u=#;dmF92@aF6hfpL&GZyrRXBV^h+|ly~S2z!}L!w zoGy2YJ_pn2MT9nh_q55-bP7%awS@FQ-l3|rNxq4ZnW3VU;3bG5RuH&Tb&6g$zK2@A zc@Ha>U{MTNAs$C0J@OXQDH;Msq8*v^C^w(tG4fx~+@D@Bb`IoODq|wM4SLo*L76j7 zGV9~K5si-m7^SO}ah6Wy;S89nGrz^PM=ZX8n7DWmmR`d{anX#ViSt%4em4nmQ4;sj ztt-QRzw~9Y;@V9Y`_VYDQesuB;7YIB5vKH8vTR98f1!(wN2!B3g(xreWP(bWs<;oL z>IT%?`q@K1#b}}Os6xI5sTJV=v9os*Hm8S=FF;XO?Cce2BBw19o5B9u&R&spm{s9x zz8ey#YJWhH&p$#FmV*!%ehB}XlEx)c`D0BjvM9ARwUwb3Ta=_MG6vKb26(we6*7g9 zrG{E!QOegNpw`pZ6&9s@aj&sZOD#(I%KpUc>}9UGp-*uNPNX?dwX>H2C^W3XI@3^B zTa*fG2`II**P@iKhYfYDMJZqVLAiC2?&~Z{Wnb`srdC*#%D$$Cy56ExfFnSuoxMrQ zi7W(a@9b44dLK}GXD?AzKO!H3QagLoGEML7t%@3_cJ?yo!UItk#5hfv47IbD36Pz= zGvJ7CN8nMCaaNr8yF8?;l(P7jJQUYay1050|AQ`WpN$9Oa7AF6-*^mj%)xjb-LJwO z3dV~_5-4RW7T?4$+Yl2MO`M0Ny@?$g0Cosnf58=f2iH}-F?i2oLH0t-AG>v1wg{m) zb&A?zUVAS7>z@53j>Glppkh>724EY(iQ#4d#5gCu3FL$z&?%gEIk6R-7x7T`N}ae8 z&V4+bChTE28z82-Gv%-?oU?c+--T<+xUvvjH=cE3C5}QXLr&c;1=(9Ab#t4N__8X< z7eFpp1M)&A(FE>ie+fHvJ0*6(d1Mi8NjoQM6}j@*c-`)a_kr@U@wy!o^?>sE@VebF zEr%BfJ8tccl~*ALYGXg!FST)+>S%~M3jZn4N(!(BAcDwUINC#G^o9g4knB3hjK|@0 z65m43q|`n+Q3)txs@*-Z-*_1JLDIt);^Ai$G80_8TcR2~@HzL|JtBChUY^;lJz2%T zc*7o};TMgZ;tt^XXm0JfI+>J-z=`19M9$JmA*c4`^q^AbRAih}wGzUr`Zr8L_R)T- z%v+twGH>43lzH`0DDz20Ec2NFb(zlq5T+#=}yCcoJ(UaaTzsNG}{nt~p+o6g4EN{_DF548c>z%eI4|+i_PAo>!%?YA9aQ2dU2(cfg=Nc_V1ijyYIljV-6$=g zP+T%^L_Q`|D~5u8PEHfWbPGz<68 zbT*7{LXzS?P)}DWo9EIt378xdXjEKeM+z&ZHi?s&QDU0$upuspXuTE)ikD95L>$KZ zpt6+qBTHADu2Nyyx5Rl7mQE!rE-~|XD1JL3sFB3_(1*&Xpc9`@PwS`>7fpO44_jj< zD^8-6ho!HLhwfDpbj9h43$~xwdlQf`hv8Z=8X40n@e7>S!r7pM?DknqXQOyF&!#f2 z<0xIFJh{>(G_{F|i|j~Y#k42Uif1jR<{Au+m)V zx0xIK6bihUlgI8!m^>MMBGNG#w=7}$ptOZZi`?8b7~9Hc>l(rDMTbN3-C4J>8_uW1 z0W2_7!5jB#|Z z$DMf5bHiJMSJA&)nTHMUbVI*0J{goj(@Zq&f>%{Ry4}hSHJ#ni7Zn->_0-Te3@TC$ zDn2>Tu-{KOwyCBJS8dE;tffa_qT-^7Pv+r6NL)Nz&vgb$D#B+24EJa5@qI{PJ{_XY zptLDOQJzaFO}sM?yO0&r7l&2v!lMrH5lB?v5*$Xd9{#fj1lS~1Guz1;jPQbuPRMpz zG%5;GZ%GOwMLDQ*MMIn zf&D9A>3Q(;{!9NVx6;C|%oA-?-wjFn2I4%NF*^=nGW?sM)2JcR<^|;Bg#L(UIHo$N z9;ET~d~Tsde?_{u67sMF|BafcK%FWb;@MU;X@#nqGxld7S5Y-Nl68w#9R(J>4q!oWC!A%C z$4LB-P&QV@{~XLn(~kGUjs6etT&$rr&q;g)=lO6p%bT1XZdSE$1l+9E z&8j(tZHQ!AZ1!wwQ>qq!d+`@;AyM2D)bH?4FPT?-&?%1$!zj1eJQFzF>JGU?V#kjk4D-0k`3BOyf!d&C- zKCrNkarYQe*c9%aC79aiIj*of+*{-GYbbAckelcBjEmknm!j6mcz{f zMyvjp6B&zvEwa;%_3N zPHln2ne_=i#5WN~4Q^@Py&>9A*ScEJK>P#sIoE@4)mWsrQF?1U521Csn}O7(>ruEY zf1XqJCyR(+TB~;0pq{+vCOn8C#D~L1#d9gSL6+xB zK-rNkWIT+qEQ``FGO}wB;loMTDO*A0balp(AW1v35?OL4$O#lIRRYOj#g&~)Jdh<9 zY4S=fn@xClS`LP}Kg!9Q5AF)`oBowAyN=w1e@lxF;8qCkr0ChS^eDdUesW_iPR08; z;4P${PN&MY5pJro^tC3)O{rU|=y+X zPO6;Z&Sz2fP1aIeg9{*EN-vk&aQU@_{+kS&fjH$i6Wx(S8Ld-(JJF3vRB7)b`c4v6 z+6RdKokXp~Jx=N}_ZTK4lDX36;%+C%~y z`g*`A?kMQlbaoc!3_81rb3UD26VD@rU*N5{u_WgwhR`~(7icyGO(Z#4a5iY0I1Dt8 zXj4f}4WjK6xK(uO6Ky8RIgx0`#0fy#5S=8kwIbR}oQZcrPVpIu_7HRf+AcqF?0(1T zNvA zvN(VH1UPV0Ev{-QN(c{8O~O2ciS<9&nPn}AkFfCau0T%qXxu4Wzw*H+@S2bDO1H#UEFHm&8&VsU6dDJh9teR;q+ePHeth5Q}vOVHWbttM* zzE5Pk_)I&a@=rW`mB;|Tv82pMStj z4^j13Y6`-_=RFB(E9q64NqLp{1IheS*R(VhWxL27u((SQyAxjs8Yi%148o zM8Qk{8eQHra2Jr@u6QfX`GhC`Te$i@bSVTYDB5ZHO$Lyt)(In0%%+{1KfRQT=kY$} zFcZ(k>{~rhQM%%EmD1ItSA$;YvwHL@o+3XDJGSOg<4fhJSv9n?J$kibZ`q?)YxZtE zdbJ&f0DJUmcfB07zf*oXJT5;SUy+|qRV0+o8`0SJ=+&i{9CaNoKPQ*TPq&NYr~CEt zbIO0@r{`w*Idz}>l>Q(;y$U1|y-Vb$PdEALd%FDen=U{7m&woR|COJCPsq=pxABuG z?Cd(L-Uv9oTf|R#K<&P1VWC70-P?v{NY$H%+DRvWB zR{?~v(1E7sU7~8_sr(%vphk@fI7C1V0Tu8AfeR}F!tFHyHR4l>;F|yzS&FIzmRdkf z0#{o=9RR)C(R)}-4M|-i%I>Z}o$^)$HdsJi`fE+KY5>aLWMbCv?|bYL{7uP0rz+e zo<0D_ZfK~WR{`Y~kHK^3$Dq4`@)@YXdPktrR?p9N#^QhQu~E^n;NqrC40 z(YWszxG$XkC03cCZP61kUjW=FSu+~V7bRaWM zah-Y1zrxeHtVsi<3!m$}(hV9@)lS5sP2&-3aeU#G5Hf1<^$ZTA(v4uHoA*5qrQ(fX z#hX`zl_9BoBc$?O)cBQqu<+(`1xU{H7?!7;i!akLc?jK|u^c3qj>f%y2t!3UZ~|JO za$zH|#`j!_C87(DL&BuAF}Yxrk_#KEjBEK#MJ{aBfv8;gk%2sLHv^dh4Fh3f=557+ z9H^>NA6yKpF(`nY83VH`@PKF-)CaG`Fr4wf0z z_?fEXPWo0a*1ZOYEY|%42N&xu7r95ZFD%O-S1uJ_ zi(Q88Z0`mPCxib+&bYZICg>kGl_wWAu2LJ5VcBTGlYsBBZ6L4_r^P zP^n8+!$s~m?Lj4Dvv^qSGT51^$vA2vQ49aF%;5GoPtJpPQ!?O^ylXC_nd>)`A=O(t8d>%jo5XtWd zBuqR!p5n+g5c7F}lAP;t>`D;IP~=4J1<&UJ{s&*_Rq%Wspd=?e0s-Kg1u5ZI=82X> z+>k_m2NOx-ROy?W?aao1No6FkQ6QPX`$$(^0dL7ur)NBVR2gwqTL@<^-jRt0(H-Q* z*tgvR$Sn;x)w5f;CkJA4ZgL&Tx^4j{wg3lxn2+59;TZdzRy@rff!x?7NcG$F*)xz| zqYKc>Z$?cyB@kPK-zij`8mJT7hy%&#(*g}0?}=%S^GCg)6Lgyd@|GcJCvP>Zn|BXv zAa4_FR^Cgn!My#j*?B+0=H!JCNGPuWHk{WSHj>vBwo+a{*vfg6V5>MapTf^R{JTS4 zmSboUj8pRf5N9ROVJ^=}qm_X)CVGZ@4T?$7FnOnDYrvbcvmAGX%K}jpT~5tmh8pQE zt)S>~YR(14YT%A`Sr3#iCc~-=HE)9G3H-ZfxvU&IEiVB%M0A{u{sE+L70|P7v?-9m zM916ccpz62ooJ)C0@+M-l8wFsho z5pdk|+?_F0DpnG?oSmAH)vi+y|L*Jzsxjccq~^G9ruiBN`2TVC9&k<+;rsY(az~Oo z2p5h`WbZ=BQI4axLy8E8z|jPxC{+|G0#Ym#rAQT|BOL_6ic-Xi1qCb86cMn11rfUx zQN#lO=Y3};nIy;e`}=?I^SPPq^E~s;JF~O1v$M0i6N$RVI-Ec)0sI_MW30~;sJ(!H zC2DLel?eU~q~dCzEm_Qsb4qS?m{gZYPStbSNct9kQ`Hx&ja5zBnJo*W=?ggj$_ko*&5x zLQ#1bm|lZ_tE-C-sNcx7GMx$O?y^`Z%5b_K@tZfQP48cn!s&w)G=j8la{UKDrc~S% za2v^DUsp%W8CxFCB-2$&j*G26E}27rZ89B$K+PDULcHQ;@Y*C7y34j-7ad z*Fmrc|JFk36rVk~$C>c~Ol6?#-X{Nl0})(;eamLoCYt@fT1|H0Tk7{gaJgjK;6>+k;$b}GRJof564u4w0;cs39AfM^5gB`1vQl7qBnvLVuQ$MAgx+5uTw)t$RG=@Q4xr!nMvmhr z4FEii$N|qp1R`=?gU#te-ZP8A;$e)$@b78IeSrk)0q8+sAG%Y)N-zBqk%2&G5Hlc$ zd}Vof9jJeDu-Pkz1`S_=Pw{lJ_anCK-pJKuFL;f{30M?~QNh|{up}ZSFvhKpf6uU( zsYpWr{Id1CYEpN{H%ejw2}R^CXm(J-dsveoWKG&Z@ci!evEF!IRQw%Opc0bbM~tY1 zD+f_IWf0s5`=wYuRgUE;L3QBsX9@94Nl03lXbqtB z7L{ThW2l#Y3g69uXAspxQl;3;LLko*+Sf#12l5r60}M3x2Oy>3VKKY_iJi!eV5{)EATg3xrjiTi9cl z$78ZgdCGRK<>G8bHTDAEEn+98(%?5(2MS*8Jl~oNz@S8>6`0|z?w#rGISlTK@J8&a zZ?KnAzpb3I8*xf%uPPm2V+txhbpUqZpC!WGeM_; z$YF)A8Q`J#PaSHC#{k(tC|)&Xh_?a?rT`vphbO`cdCDTUgs(TadBopaG`|kqLEwVJ%_h_1F*du|Ecp5cb#t&;ID~V zkVO3fxGJ@_MM+dMz;_b$P$E_10l-<*OqNMsUd48A+FmYwIgRZKm^n&anV8g9AMhZe zRwq&80Y5|3!%5T|fX@)ME{Ss6m>|S|>V_n$5b(W3J(fhx1Nxg>2>5Le?r_3b38Jz#oGPwIOy z3Xd&nbaxC@-P#;b^pc*`Juyo7p3&&O7^)KN1x4@3Nc}L0`We(=q7Eie>F9syQSQ`3 zNmMmZ^iX!{;Uua(D0;j)^=Kkha~P=9W3tl~a_hL+1xx5l1zqGmWirxm|NGS?Y{yZL zYU*oAxksSm=Tx;QYkr8PZ0cwng_i4B?e6HAske5e@cE4%9^&5Gl`6M?#WwZ8xTK*& zwsuwgrXJW;T5jKt-_+Z<8q4ix@SA!YR};B?7Qd+naCMj4weXvI09Oy*W|!O(Q$+X? zSRabit}jKMPCsJm#j0~1ik6yEX*7EBjFg{B;Al(v#Z|XG4sTI!Ha6b^pYor}sz#%k zl(R0+`v63>he>%(Z!!0~-16=tLGW=1sPaS6Gbl9_~*A#y|n|ALxM z?(Q-c0iGw>d=3ysvn9HT(E^~HX?cl~uU=`UpQfrviZhkeeW2(lcGomgQN4-a22Is9 zQc3DfP;@A}^OI7Y(p2N5RBjxwoL940DiJKF(Sle45o`*Sb7*a9Z_;QxQ+p3k>L=XS z$F!>CYczF3EPKvsS!$+`cGnX|wNuu0lvZ{LI0MtFxXm;KQ(L>?Y z2Aac1H=_+kazQVq{b@MsepqHt?NU(QT(HteCWg z{`HEMly|piO^NLQNg)5{^_;=STI(<*g*DpH#eDJ#{eWRk&@6mj-qSIdj zU$+F(w=6n+Q*g`|7MY$;AETiW;iWh_@~9Pe;b{i?nc{A1_r&2M>=6hpdm2KQy#k@z z-i$ECehVSK<&*jpO-7^@_wtqeBHE}$a}~?+i?djVADM)>UN0unN_g?ch1_yDXBDqi zu0>hgkHH0a@x~(j56-#tk-Fmf<=O#Gy%TT~Z^JJ5UA&nm1DoEaka~%bYWgN!@rE^7 zQDCt|_-=)sCV7gtA))25N$z_LD7^=>czd#;(eHuMn*@t@GSFHz(e`R}M3*04fnm%v zJS|q@QsvZh_^n;urCiQD@ISd62J1Z?bD7i$E|UZ=_#P4Oa)i+_K&8uM!}3V4!RDJC6DS)P&<6QTkCbgyj{S;4)Bt&*!!a zF*N)nJfk;JlpgOZ7^mL&x#KEoH!@lHISA;j6{W}d20%ck*V6l9Sqk4YjegpV?Xr)2 z7WX|0iq5g6zcUlOt6)NSn22N0f(WqHO8_RHBtRrdA(#(*(b3 z-G>%UqrO@>dvPD05K?!dA5Gx=P56Oi-#w1|8<~Ua4o5QDE)Uqs98h&%Nd00iNZq5N&^xpi=EGW>?Cbb>LL{OElr^0;k$vQo0l1 zRQronkF;5fc7$qwpJT`VFYS-i-2QsPdDZ?_ppLA}9Z^eR;T&AXYK(Oa=*v`d7` zqrCJjHM>)zdr*G=L<&xPj9}Phnn>Q)#uDWt9UI>ya7QuC!j!pnS^rt#PFUK;@8`Lx z+zY9e7zksLCq&tlOW5#6met(~K$N?Pt#^rfR5Tug!^<6;u_pxh}?P2qzIx#o`MW`*oYMDVY4=1)4Cy8 zNwVi8PbCm(>w%mi^d*UsKO%BQYhNXmrw#0hNd2oUF$w>XHyET$L}ac8cW*>~QW>6x zGM=6awr|=|@a4)N(Z`1Uv}!=^A@qoWMy3JTN9b|7j90mS3ZR?=@I*9MZx<>bdzw}i z)F`6AV@o3KK5V>2z%PdBto=aBW&w3sG1xnB6AGJE2lxcyvXZ#qY~V+TD{J*YrZSJ< z_Zp2@y$R*|2{y>aJ#G9)@-6a>QT9^a=Fgf5?kMriErTPeS_kkw$Qoe?+9n#{vIg_P zO(njI95Yk4-cD%PB5OY2Pl@Vfd0UrMu&ko2uYu>41vem>s|$Pral;kI?#OzX3H)E; zCM#}EMYu|V2tQHW;=xy>U)IcWN;XZ&o+B9rBK!I>mETy1gdH?agVYxnm~BC2{BtI-FmY+sKbfB%Ck7U0o4-vbLK#M0s!t zrz;>D4@Vlism-dL=`7K3ft%W>Rv!UOeQ*M6t}tGW(D^V;hIp;>%AklIHmEv19~rbgpu0;X4lM^?tc>j2XwP-KIf8l$d~uL09bydzJ=!8ujs z3)&)^O*n4|;5Xh$6_MB6<^jdKHgA(AcblZh`wcjKz&>(7;ljBZFA#{(N#L6}^AiEn z=O!W-<1Oq2PG7o+T#j168>aYe(-BV!-@%dHv(pkV4PPR`lwMVJDP?C6o{tk2zih9! zL+^-SS(TJ2EaQ_YAEe>OAfq8kq?hvsWb{3aNYf;1&VQQgl4QbZQr+U0aYt@3IN?mt z@NmPNaNYpyy%j!>jZV&C^c5T9`TuWtfI#D2;VVc8j+*lt( zdrF?zovm7sW(wH%Ja26r3RJVL@R3m7#j?ED1K&>Plx}7kS*9hLyUpZe2lbie?lU>= zS=l2Bgj1o8vOdRD8RZ?U1*;PU!r7#`O(tiQ_ly?oHU)BDwXKUs0q97(lp5;|`7AB> zhb;YzTGgRgqDq>{ucyomE|yg1893!Q6SZJckpgq)({ott($XZUQ6nYlE7em)s?g7C z!OkRsQ8z2J>SMEHeQW5(5~h=Zn}#aGozjTtiwKdDp2R}R-Pl75A|9if$QTY;%{55m zye!D8ns4#@@gs#EeNMUq5Pj1oa!ZjJdS&x_NvpB_FODm!^1UN z+P-LMY<-liQXVQ&$>pI7X57Vt>Q7Q0HI&9~5!YCvV;atgKXA)a z7dBjX(M&~NE2!v6sK`05>TGH62xk`XJ@}9O%a<{F;PDY4S~3^$`Y0<62bw83(?=QT zgQpAN&*%~@%SV^&TD=DFF+bpHKJr9)7ImH7#VS{=YGkUS-L`OYuT^Gxnu4eq;oPAG zLrnp7rz(qQA^3tE85<`+1t`G8b_Sn1Vz{HfUA* zB2~gUqXjpc0>hD}E%6dtEY6GE5hsW_vQP^anu0_}PHNTKB2~g^c%91USyNy*G7ExU zSYH=;Gfoh59t}<4QW*~EZthJ zHH=hBrwL4TSjiJqAI(iQxoBc_8hb*k)?8V|nW-GlY5f*cPem6_qc+N$_e?I9qf|}R zs&B5Wl9|<_eX;aXztk03OaJ1$!vx6Q}l#&L=WYB@k)v z16A{hj8ax2QoNtizDg=jf7ruZC_p)%$RNo@WR(VYUyLflV^KympZFbkHJ=!>pH}1M z=zL-fjf@3q%qPlRcLJ32iP2oWL#cf1X_}{hbUu+CO1mC_noo?G&RPmo&nHGftpNJ1tMduSKh2%)8 z<`V}(pym@33~*V4&ww}Q6WK^lF2e;-dOmS6wNHX&6=k&;5Svd-GEsDv~d?K^c zs3v3znone`^KH6AkOa*q#&R>9r1`|C6=gm;pGbso)}!{+eBvwsh9Qj6G`G`baJ)C2 z$dKrKqQP-{bNXxUn3;}C;yj|cEVq%4N+g`~;M9B~b%>Tc9G&ZLkIpAjo0TpKXMu(b z+|)+3`XFF6pJ=KxhDPTTO?79$YCiF7lc?=*cle{`6RQu4&L?Izjb;<>1%;YVEIB+n zpJ>={I%#-}+eqjv1gz#0O-Bv^R`ZD_T>6gae4=UOCctVw(S%n4R`ZF}7(fLFJ&Km$YI-kg`hgjLg<~^xNnoo?9BJW4w(fLH#vg(b*c~8zKn&!s=j?O0< z7G47$olle&{slx|uZzwna`)^s8x@^TeEJ$)O4&t*rQ+nV&;VN3Sc##XsR!2cxs%w@tx86MB^ag zzR9^yb1PE}P9Bu6X>Nnb$%FEu=C+!gJn%Z+6`fBsY|8u|(%ca<9dWVKo^Zauto%6I7q?rQtJHHYLIdm?ew`{S)E}@qXI7<3R*EIzqFMX;p zpU9mp857R+z}0*r+0+A%g@Dz3q6r_=aHfxTjvmkjrbXuy>5^R==>u5JCmNnbUFSLx z&IYY&yg!8Nx+-wRANB)IC%_kP^NatBfu+X%S=*VMQwYEr= za4u-Uv!=jsq;Ph0KCx&=R%^it(?X&nziHK(B2_qXJ*e_=r5pJejx2;g%_mNd9!#>G{MWRA!FPX}z9LWIYvKI2Sdi=Mxib zNmapI<(HmMEJ7uZvRYIXJfHXi?ltp#Vi>b)JfA2szdR(w)Tvko>$3dc&BU_BF>?{T zN5Q>|Xu>hF5?wadX76f`UQe!#{bfzU+SrBPfQzn;r7dsGc7Vd9OjsMs>{3eL^DftG zW7lEZ@)%TIP;zZ78L~W&ae_WT<=WVXVrV$6Lv(HI1_+|pHdZ~-W-ZzgYHjTE%TPpfZT6qw;@4)An%Bn8f%9r@ z>@?I7t&P=|!o;byv4kbBjlDLt-P6dm`Fk6&FGrvPnjcWVyv>iQUm4B6#xJVstD66$ zer4lfiyz;KJ-Kins*N7DID7VgdUBzp2WO{^kgA6*NS*NH0!i>>EKHjZTa;#WDNy<3 z0@<)U65R<@KDl6^wH9INFh6YJzqAj>$*ucwoTR>fJmztYj?&{Wj=U>B9#RFYw>PB9 zV^Sx0OcLP>z_jUcbw=9(l^&A~%Olb0K&8h9S}Sd`^0;!!{r@3D9M6k7VUNh;c?b4n z+*h1#VdD6B-p;$3kLUPDCh{r>@e)?G+g-!8 z@Y5;8viH6jscCNP?C>lrI9SL}u7+Q;8sd(Xw|z-e)jR|ulWvxi#qdHalkR5GJ*4m) zEBL*ol6;Vm#JiHxWmR`!RFAK?h7ViP92;hv!CS!5S6agtt@V`M4V7p?N6Qs_&i z!m9b&?=DgPLCZ6qa+6#0e~xFO(U0IJPQ(&s)?C$Q68^t<+Lp*8xejs-4f3N zFIT&AYDx%iY{}`BN)HRXhr~G}tpGh&MrF$R055NOwHV&73Qu$PSl*f~D&oi8mgfk2 z!dv6ymiLPobf1FwHl$25#elqfN$T4L!{l_%%3Mg2_99Qs15^gkZ{>H@6(y@Td=VMZ+RmIIK7rjwldL&=5>>u@ zP)#vL%lRZm3ExPdG+&x?%tW6AO4pM)C)Y+ZlY50)an7LJuOKLoww3df+MB$ib87+` zN$|Nicp@NL9h38?f~gr`83kav6wVP=>2A?7@zNSHr%I;}xtu$k-;sdE+BwB7dL%?v zF3Y6WX#kSO+Bv1w8-=LuyrdP*oti6aa?y;GYMWL?uB-a+!h-Rp zz;L7{E~{BE(G(;)a*tL`DN-ez*C3!P^qd){z;L8E=5JW=peZmM>7)hoO+lg~OSNio zkt*TP8zt!qJ!hFIFdS(>B>k^81%@LNwP39&NOWYkR&6L!C7e=N?L#YmayFU*!;xWH zu*DP@jy$IY+e|^CBmZjEi$$tLuoXH4x*wkNCLdr%Lr-1|Bm6e{?~K$_LG;}f?{;M^ zLqfW{QE{5fdkJmHix-4o#6eybho<5fSMYU6^6{RDiVyIU`K*w#;FqAj{;rs)I46k` zw(J}#E|72hD*?M+4yeNu!CdfkFR|h(7XeI(V0)l+{8oI_6`w$5I2wG7vfwwlN|8Yh z46Dn)Q?BTkZdYc6;nmHRyx0p1YTMg@dRael8j&K0Z+wl^vE zxL)oF1=m+_Fp$NB9*`A5>15*CYXP4i>SIn2d=0<9r0pZp0A~^1Q@9|C;8pO;DGJtpj1~K5q`KQ)ni4PsnBD^^6jEy#rPy@ ztat->Jyv9Mtde8J2f(SZ;(p5R0P+x-`ou+J#h0K^W5tnCMJ+v3l1V@6ca&pAnt{<{ zMVefRjTOIci{fFdI1y@NtoSPB79A_nmRy10D~U|ySn&gZmM2C<$BLY`1!W_`kKyET z9$C;>u`L!k{jXz1@-%L&c$z)YV@2BXo{vEoD>6jMM0Bheh2$B^_X4UxjukJl(=jW) zUqH#RB7L+TuOdWOC&G9~j~*-P>cUvD()D_*XlQ+XfXcC=i7o>w$BHI;0H_=*ZZLA& zim?(cN5ELIS|>eLGz7i@K;>A`MArh9V?`4^3e+4ca)Ep$JI9X|CE6CKIaZYD44~#% zQKD}Em1D(QF$9(sC95}F3bm!iioZi8$BKz6U)3&ptQe#4A_<^!tZ1UEfXcDro@i!r zuc)!&#}MeTBJWK(R?NI1HdZv?Zh-Yzkzr~E!kG_PjTM`t`c;|eU^e>mus-B4R@{RG zYOF}h{ftVGHQ}UoRiiUKR;0S~l2$kcn$u%N=3*l^shXlydaPK4%J9y4OY8Mmk@b8y zIHH^KMvoN}Y)MsftUao4m?wjF88QU%7(opy07$9rw2bpy2un?gq+Z#RhJg0O52paqZth@mR4DCkSSs z>UpeqjWobnL~lt6|IEP{CN3U|VB|1-1g(1G`l!X0DfseZL9O~7@w=e*`bqNVV&3{|BS#m{a`g9W9Q|{IqklbD;Uf$Vz8+OM zB^#l)UZ-+-i0PI~y)NP!!s>PPRD?>t@jtB@kWqwoXH=x!i;XP=^pHU06>R)Sz)fVu zQx$1NO*Yiuk`lRftK9O|iwOoQ=%co1VN!*+RCDfElgf7nc4_!nZ_G8=HVyd7zOSfz z4T@9MY!9j)CN9a4$nAwK8iLfDuF{iUT=yX0)<5F201M^39Q*Bi3Fse`d}RS=$fzi& z*Y?XnaMAyc%ZrUh4-dqPiPG?`gx2`4*UC%Vq9DI{2c#*;pZ5$$3tr-A;cku=z2p$L z_$WsY{l?Lf)GPv*(xfIC``nM~~gZ(G!a}+PICQO&@c#7z5ND9?|jD5 zyMJ)>UZ5OF-mlKl?q(c)(2JuzV>sHon4^9C0mS_MyLjusryPCw8%H0dlqV|(9gaS( zji`Ely49ZJ;?}Jkm#`*roMn+e)$_|*R5{i2D_B%5)$=P_R3X*#b5**kDqS9@D`;A4 z6_OV;t^F)Vb>8Es?lF$)pW~>(e;nm|G1XAev|%PkjmmP=xIRZs+HushKS#~RaCGfl zj#@0|s9-ZkEvZ*7XnNh-9JT(8qc$fwDm=|m+rK$#pNfm=f~Fnl0=}SWN9vmknqHs9 zVCOm%Ek`%@qNwGq!#El+hNFRtI2!aAM}uGFXvq5<-ToOzLx19E z*uNYNkKiswLCZUuaWtYEMd1n$6KTKP1(iK)Q>ruc9Ns%e{eJ-9kUh%EoYYD=z-cC&1%Wf z?AthcZ~{kjR&X@$QH~b8z|q3J94-2uqs9Mm^h%j3Wb@U0j$Z4*(d(l*+OZf>+9tfo zp1QQwGriAY+dFa?`k%6?uK~_zUC8f%dKq}@cB0%T!06+mt=oGW65qO`=XFX#yq5?e z;m!=JjjmF&3mOqQMyb$Iw&qU|c=j^*7eMNmTle}1+fq*bC?3Sa7cH5&EyhSgwZNpd zL7E|?WJ6xbbObYwnBfUb+AuJ)@ZWlr^iRICa1XiEDl!iQeVx5lr!e|hF9o8Y?F}#H zqWao)-NR8g?u^^^ILuo&p5mzI1&(@qtCF%$8IJna;;3J9j&AP4QU6;xy5%m8Zk^82 zfTbMW_5?=*U*>4gevSrz$y)5^RK=nM4wf|Zdv z13xV9X{#Ms@@CT4!8a3k8uMv=u<-*T{dkGFE_ksQ3%FTHoUf5&6#1vKeTU=@;s&-&r8NFP;m$o(#n zj=QA!qhXO=nkghSUP0ecw&5mVkGzQl1Dd%S;N!}i>Ru(e4y1x6D(E6I5WXAB$@dPY zPbr55B8s9C3*RhFO*N=&%FFkPrluJbd*=HE6uqrDeY!!>*HwhCTzN&!FesVo22k|2 z;`EsYB~#7N)B^@3Q*8%Ttt?W_rdq?O3PljUpMjRE0CWx+kf>MMstTB?xdtU|^#!$v zQq40cnQFDB<{Oku^&u!Lf>a9(N>*PwV5Sxtl&rpMG_}Z}q`}dk9wmc|W0df1214I$ zOf-dNfKq{i?q{|O5aPejP@YMi3n5g9ml_o#u5*Z2Z4dT~Q&B^z@(yLhozm&E2 zDhq9v9Oz7CIfEaSQ%{Gfkv8B)N@#jRQIoLrMwaJeYMHXwe*mKQi>EiHZOe0%TOJFq zQ$nr;nYNXJzKN+?E9eJ;d|BANyo=jVDrHV&Q+v)nhM*+U z6|u*aEzl%NQq@K$@rpOdrlz0m5JSHTsi4_aX_J5P0edxVQkK~T_|>JzFDGTwry>0# zm*Jz+6G%Cn($I&svd7RbdVOe}!d$px$&V+^C6v-sPI=&Y!2Zu~SpKV5R9Fowb=_9i z)KDc9(O=umUrDS?a9g(sSHq9@CSl`vO-knf%JO`_26dCpTVKm9FD+-2yFjYGQ8+D> z6B0V1Alflr1OHaxV>U&lClyp0FB}y$53fVE-$_XLzQh)tSpBEAd_%j0oRQ{yziaAy zgJK)LVvnd)KNyseBkuUKq32;!_$q4k&xV?*+2W&$?lJ+0_PFNm?u=abTb|IM9u@6D{iKf+;VWVyv6UgXbIv9N_nkL+4TQkN|k)5PJZqGA-S@#0ycKw-`~u<>RXbA^Yj;w0)iWx`_NJ;Cif81=UtliwEJlugm&^WPE1a+| zAhhrhL6y=Le#w^w zt6rJ?k}j>)f*bg4!p7OmD+M2FL0412-bg|E>ne+Grhpxhg4Pi5u%)}{so}#IE$Cqi zxLTxz$F$%^Q($Cq3<7R2y-Y#rb87bqC-rkxTfMI!s0IO7R3EbxWI;F`z;OZkCMFin zP;i{H{4BMqzs-L{bAC|g+}})W2)62+Z!vQwfp9+5*5zlYmGurOn3v&^oAa+0$S+bS z3cMpc7RAp*m3|oO`rDeyloCpv>%oitFfh(^K+BIKOFbXdR}CU_911iFy@4N#8R_dFsmI}ye}rW(hYevrfzYyF zM(DCXLYQLzgwTsOQX&m!G0w~)cId^jaA;)C(tG2ix-rQPfxU4~Yw1K&8r?spwBZRn zNbxhuIN6lSz1SYy7sTD4%=HI1q#X)8C6QB2;BE*WAi>l`0bbAyZUg@PGp$1OWvbF; zrcVQZi?|1pxxK(o5H~B4QJ2f*tRceXq|(#0MQXQ(0_p?c(hP<3Ao z)u5VCJ#DB&kLNYKNx^(I)O`=&X{6o~r#_+KXXDft0q-OAb8+er8X?0k#Hs58?nkA1 zDNfx%!`tK30|2il^{a8}$r^s$R6DBxZ^yrXx2bmC14OT#_3tsqEZhsw&JoTxTCg`s z5SyKFE^F1kBo(zY;av5-%4dI)fZCaGnrOj+Bmp%ebdC_v`<4A4ngZ$Mc+Guea)y7) zwBVpAkgjdf+{Y#-z4}OVhfGd7^gFor)Ve+~Iq8u92gMyWIm4mqT5!Y^NQYW!?x@L0 zhlXhGQ_q~e)&H)IqA@P&7Cm0MGsTW?$O-0CMSJ4uDO#YCw=)_bKjYq^yR7_ zae!VAU%odvZdbC~t*He+m;!QE4Y>Mg!H=eZtSiBCE%?b4klRY|E(G-A5C6}mAnJp< zxI3X$zZ9)9cAD!aW$@RcrLxMxTJ@W$;*uG~>!MYsO;t3r*wmjY%xtYcW9qp&j5>Kw ztIj5=jEYJ5S(W3QsbYa)t3a!MPf{7S?$)Y5OcfW@P;JzzKa*5Ojz4PEU#5zOuVhO& z#eY$)>SCfmICgqHmm zLYG|vlv_CU5oHX8nQYUH>Ps3(s93~qkmO)~xl zvP|-#UY4mExK{Z0H%{iR2R?$hX35+H;B2!%akru9!g&-ho4YO!eqUQ^9S5HUT>LCD zC{!?2s~WQgf!8Lkt>WrouPUw)@R3!(wNqTQLlRCOaBQ=q;`r$rS=e#fW+%n*YD&qi z0rx8Y{e5^vqG~@w;SetDfS)0*uSz#2=I3SLo9_m9v&)!oF&wIJPKcKH_xHbo;Chfl zNN|fOFsfoSNLnoEzs+>b=(pBu!9Y_$r$5y#f1w3~O@Yy;1%Fpr3^4`9(7BTq43z?& zZIXe!0GOf$BTRvj#hY3%S_zmlO7Wi-++$iWO40bd5No%iqQ*%9AAf4vtH0*Pn~7zY zI!kjC%ye>euw8Q#&2*Cc8C>z<$nSm^%?qn0Q5Jo?YKJN4gzJ)Eii>80lLciV=s|+1 zX3mC%1`v!R!88}mQYTyJ2*GL+On1>dda__31aFdHhKpv;lLeC?_>BZJT{OR+ELaUe zr8^*az(uqA$%0oP7)yd#uKw`?;T#0FhPc@-n&mbU3+E?r`|kob$86ZqDR$wAKb2sv zDTq$2<6T}_FwYdw0ju^vbuE~03ZfJKc&ZYQ`1aZe?4Ux8af+{R??61d*PJ)Ojr;XB>0;cd8d z`j#(gme?B_lV`s0U+O0FE_3(Myt{B}Y3^;4lj%BW?p>3kJ&to3IKFoKz~rROyEV7h zf-LODUgZ7nmcN8 zGF@ZMeP(j97TSU1mU7J8JJM!faJVnVSZVTf#4HS`h-|KBcWB_#CVq2Dqk&Q^je z19rv1djQjmF8pq{k*9M^!zpp<(}3ymMSp4>?EVJ}`^a{&I5-P1J=W;=xbIyWD-XRp zhF-+%|Ig*D`VZs&oAKLgN}SDrIi=720;iP4JkwS_5$V6=a^BV{(@cqT6fiv#=}(V? ze*;VpMf!`IaGv`T;9CI)@#n!N0$(Qm^H4?;C(l z5M0jvZ>O00G@v%PkLHgk^;4{_SZIlM`1j|yJ)L9fo`ALyTv4f~@#Bvt@q}~QJiwLQ z^?F6svTLoUi?;^Lw}n#%GG6sl-)#)BC07sJghp^NpC7G}rxD?_1w4qXH;RMr0#tDs z)QwG8X4+I|%KhDqAE3GFit>)=ijccbFS7M{TZ z{2TuLJ-G_xxRtYcolFKVfNMA(d@nbn(W{5V`ITU6s94!IQAzzF4~pcFKR8n>`zI=6 zWAflZh>9&h#sd;XQ5Qt8JOs@rqfi6cdpY0^w$SJxiPD}C!CQc?AnjmNJ5{4YOzj4s zyYcV8-P9h_=ulH@EwscLvOCPwMl?Fy)D{43e?PQ$nA$-a9bsx`1Ko^&|4272dNZz! zgKq*pLDZ-u>UY5QB2c5Ht!UkgU?spEh`KY0x&`nwqV96jJb|jmhk(3J=-m>P_4o;p z^Mu}GYF&%*PzL_}V=aF4Hr z>D=ZyG#l1f>7`#HOeyK~=GhmS01=&xJf9?pBCB=s!@DUt+4Ryc5vDxo)aThBc|#{Z zk|2tF1%^(3o}-COCQv$cc|J{K3V`x~Yp=)lZv1;Za{CkfzD(PG-mXO} zT4&AnVDHecY}z~7hmf!&Zyu*#jB!Bcm~2`xSCY4JcjeX%a?48^1$9->8K}GzD7>4(<$7JV)m=fAem`Q__aWMB*>e&7ciC;vMEoz} z^@uP3=eD;ZzJ%?ah&ML34FP#0)k{J2+7&FcrvNs}h+1nAi?R^MS?9UOV z+TSBAW?w+)v5V!Ql5Gc}&(1}dW;Z~XZnr{M-0p#}ggpeI-yV;!r2Qbm40|=gfc*@@ zQucO)nf3vMrR}c}+V&ZQLEBXglcjbR!mI4M2+P>lA$07{2(#?|2(#@`2*bGBk7x=0 zGuBy6)-h$9=zko2seidP=y%S+E`#ppndoMz- z{SiW+eFR~eeGFl`{Vl@c_D={)*k=&>?F$G?+LsV!*s0a2V8s!ZvP&V%w96nYZI?%A z+f@(-u|^6}A^tNSv3^Q$cQfD=Ji=>t!w+HKg3z)@BXrr55W4NT2vh8p2vhN82Sf+( zpRvKJ_egxXzaU-4V9P#&AHp7w(6VPDblH7gb9p1k{D#=hO{q3DZ{=#}lmY@JjdrKu-|-qO~u^=xR_E3agdmKWaJriM?y#!&p{RG0|_KOHh*zY3r+lLXBv`-++uumfl*#99cWf!ka zZ8D6ov|SycZC{NrXtzWdvTs0mm3<4sGWKYMjy)M+mc0OBw!IEv*nS0JS^GVNp_5a!z55mvQtLzrjZg|M1E6=8LI z0m2&gI)pXt%?NARuOh5%zmKqveFR}$`xL@@_8$oA+bMO0Xkcd|%(o*58`^adUTwET z*vRgVu(3T5VH0~C!lw3v2(Pi%AZ%uDLU^sc17UOfLxe5tFA)~lKO$^t|BdiE+glH} zBJ2>t)^-G88@oQjLc1lxwsseU?d+Qowzuy<*ulOJVMqG`gxA~45O%U3N7&hZ0bv*W zLxeZjUnA^l|AMfaeGy@I+gBf_Z#x^|jdneRH`(nF_Ou5h>}5|w*xO!$u#dd~VPAVI z!hZG+gg4v!5can}M|g{U7U8XS@diQ+u&+XRn_UIrK)W%*L3SI2gYEtZhuEVK-frKI zaHzci;V_$C<2~HohVTyiO@t%t0|-ajUm_f3pFudw;+3tpTD#Ef$ zA)0F0l@U#|>_&*DTXt(iGc5Z?L^CaW5TXYx`%Xl&EPFDd*_J&I(Sw$~9?=}j-hybZ zW$!>V&$2&3gi93XYsCNIKjTe{Zsw^oAD#jX2IzN!zleh`1Ilg!_;?NzNxzl?)>0vbc`S8?zRK_XEtH{~iaA1-u;p85iQe5N8!$=n!BtxzTM9=P|jcA zGOs~8x4h$}T&)183BjH?xDXHzSc|)Oz^c@J0rPmTgp0>}3cd?)Ax1SBeix6c6g(F& zkCHN6^=L4n;70)S_@|VM$3F^w9Wal7O3NE+3O)ju$3M254^{AKz&!p5sk;=i=F`xp z@c8E{7mt6GIu|gHLL7CkP^y~)=21viT$bGc^C%=c4juxSM2JLX;<40CRsBadCer;T!jm8vhv;CG5DbRsBTexMGI@b3aif4z326`-vKHa5KQ% zPt=TqZvf2wM6Eb@FktQ{YRAD70CPXlAP!yxnEQ!_aqw2a+)rE+2fq!N`-yAg;G=-K zpJ)*W{|uP>iIyfDOlgi$5B@XSFf6MsSPMu8LJLi_50LSMwl&e&K(-Lt&Ok*r9U+<2 z7CYkN&l|AnTuZT4HZ>Jz0V|_!m6yKs2s%S#G#2h_2+U~U>49^A?CT=|AbcLlCy}Q& z7!hd*kk29w=_DdSkxdtp+5Hieq+fMWSSy$3hxQrQ2FD7PQK zX{O5mE}ql{@9$@MZhj7#r1RFza!cOgl2CsGGI6}dh7uaHWl}#t;e5}-_tgDZk%NE# zK*|*}vj>ouZyykTSaJ~grP1$!@-xbT(8(Sjb8?Z|8_ZWO^ zveman^J5L3yH(%Yni`)#$;n)wSgqDZPcV2R>lT`yWbj7TV>N%j!ON^yYieo&rLsN@ zp6?dTJGw>Js|cUKZ@v>WJG}85b>C=Kn4Ud8ITd?+hVLwr@$I4cMlzothX~&WT418N zK>2phLKAHXlyA-~?YuRXac}&-zaO%ADEvuTb%STIuRpYWJ7$@o^-TiGcYT(d=t`h` zk7k95z6g{T?ysV1i)%g~YHCdarJC1I;Q3jBwF$iNr9P}46?i0xssM@~1lW*BP$9Zx)&mD>|AKfC*+3H!zZ=H=K=#|#PIQlNY@a+9%J`EHT#B~W}Xa&r=O6cpe3 z+>%871&Z%dZcU=ftW`G~pG~3~gW`LX+mfi>pxDC~42q6^;kySEd-!4!wEz^m@lq1C z5fnTBauW46D0X9e5_KFD-zj}1iMjxaJ$%ieWZ#y(PI;)_Xit5cS5hrNv4=a7QVjyd z9=?%8%>l(8zL`Wl3yMA5nMmPje>B#@+tC-7q+1G=Q&yaTAAvRe6#x47ajEh)UK#QP ze$Z3=fps;B4?JUeI(~q9mRpIvF~rKe#uZXm78&$d^kVws!Bl$;j0Rm z&NqP_@_e&{(H21I91>7_g3;XDfY1Z?fj5;2KJa`K0nB!$@##CvVF;%{siK*2KrG9l`TBC z3SfF}K5$T*XoW30`34TjD_}CADyKInI{5}ZNuuu4)M10-F|}`@rjEQ7EvGWLu8lHy z)SzUl=RwigJn(7EAVwS-{VbM1_)Y?)b9~@)Q~R$*zc96#h4Qh%!134)HkNMr8fyMa zgQrSYE_c`bR|ZeViQ?}DPtT(UzBYJrOY!S9|Bb;L_TSO`34=H6{{WsI1q_@t_9fXD zz7l|$`p%%pwD48a)G33KeOxaDb+MFeqtolBRw%C~0sNC|cqg_}QSi zgu^}{Uw+p7F9y#glzh2%@*EuaO)kMU8el_E^tfK&bQ0AW6rJ<~XA&q?@58~-IXZAQ zffv37fN3xoIGzGGx7U{{$Fa@dnbY zSjC7QXEa<~!F-nKp58%T2nYOe>M9z}h*K8;rr}JWRGfN{hD*n(rvRp>%L2hT^(GBp zWvZRMfKQXUqM_z8$)lO7L^%IJLC@m_D*aEYI#AHsyg(Hz;jAE>uA0j=IcmA`MCy#t zf~ux~_nY&e=JFCbS^LhDT2Rdta8q&K0Y@wU0@Y29+lq5sb2UuP@alpV)HDUst5Vl1 z!?hAQtQmU)3tWqx3)6zyoOQl~oXjNlVMLSpJ zI8qCmBnhO2d0Noa6j0?U3!Ajynj``52$sr9*srC{Oey6fhY8NFT5xTWK<=&*omB-j zHwB!9bhm~Uv@iu+VA-S#A)sdo0|ki!ES}X|OOum1->JFlOipGx8yr0t6=-dh+^a`k z>bO0BJEm2Jf-6ky8n8+YI3IfLO`CklSzjxQ#)q57F=%% zxGJQDr?jAxDPRk-TpvQfb=4(NAe>*o(R&dBH>mroeE#Iba%TsIsS!%oD+roEK-Wrv z9&(jyRN1&f2pXuO|#+ElZr9sj&9f6zGZJR_v6Oi;wN1(r16^4aAAnBQoz%6qATvml4 zm<)0?32wD$6}}wX8|$!~4It^6j=%s*KGTut!+wzTOh@20i&k?bTX5eYpXmq;wB$1# zi57Z8K+kjp23hi%j;KI5lY!GS9f83Xt=c!N3+Hj*Ul2FMJOX~%iEc4G0^(A4f!oNp z$*YaP&@!;WJ_)(7e@AH9slbGN6+)MA%0tVxZZ~WRrzzm>WM*g_+*`xL3|JkPcY|9` zNrszTv@cSs=b@nIQ39jPBfxkb?uIW4qgxmElfeE^9}a+M}c1B)!D7bG-48dzaUoVy9G40vT6{19N8 zHw~;Z^K>?9cy*k5Ct#XS4XlZSKLt!{5Cad#!RG0@ogHHc8X0@`sXw* z?Nk9y%k2ZtD;%G81w_m3123uuBbVE60z}L0120(_6`~En`3ewUK5sWpA;S3!FufZx z@Jbw9YLdJQf{88Tnym~^<-M*wn{oghYp^4v^aj+xTh@~Rh%n{A2!#u053xeKq=_p>?JMT}Rp@*7K+ieW=pJ zD6KyZ9LDQYr^86ulsTAJjIB5Rq`6*iOh>h+5dsnUU4sXyb$FUFnAt*h2A)F~VU(3# z`X$1;Kfrq9`Vh(W#tEWGSDpOu)w`8VFZ~i>-B)0}@fe-_NP;M`9E@CVoXG41L&v)3 z(?sSJ7`fiK5G61c2uJD`==H|TB+zN|LC38(-U)!ZV$V62lE;R*+L@?QwceQc+KsTS z)*JJ7e{8Gu#sKb8_KT=9vU##b2_@N%~ z-|z-uSn0FBEg<_iLQ6jSUtt}-ZB{CnY9C!|fjNcHvM(ca*%uJHZLB`UY9>slQ!c$I z$fk+)Q0ilti_8evu0Z)$EkTVt5JXQ*FU%${0wI^T8c70IxjcXFK^>4pogy~_-$`7y ziwb3V{((R^2LSPOcv)8}53o2LcSg=vnyX-PX^;u$cW^w&uE;l@r8#w4%4nko+3Hq5 zXQj9r;CLXNo1CsKI36tLC3Azo@!-6AGB*_*55U!`03$z&#Qp8+b45MB1ACu5!H2oS_$xM1<48 z7WF!Fmc+l#oS{uwNaYKU)UPwI&V3D2JTURK)6`Uh;sKU#tfr3! zkAsr0GmlZimyQNvzRp}0v=LDAb>@W1_Td`^O1{oKq0-dr%%1=+UuRA==RJ+Kz=5bm zZphb}lLP!Z^EdG$`zjbONn|!Poa`#JNxuq7mYq+V^sA7&K^le?wj+#xQIJiWg>RYw#mX57$%&8@MNvDtZ73 zo4E>?ybr++GC+41E2j>*!7Va^LjvzL7vk+h7+}=EsdGOzKBSGBmY2V1{`(YcjEIP- z=*saQe1xR@{F;cg1Tc`mrznY+0vvcS8^q1W&thA+wMbjukJ>`un~M}1Db-QxD=g2q zB=kK8gzo1BKcfsZx)&(j7Ylwq@xv$@{uPSTWMNF0o=rJPKS%lgLqxA}34TG2XbWK= zbe}4CoYqB1)Js_iUp-K?FeiAD&I&p~XQ1>Vm*96MdM6NiVN39oiLL`eFJ=jTf6mDA znup|Fv*3?OS#|?OcP4^A(<+ZRZ-#5?*91y=I|Do|M+lxy;Dv83D7qCAJex#q2Sv9! zg1;wHxu1Zdn*%|7>zsEF*Gldgz;tsUh$5R{*BVxS(UbYGiW;2O(X?1@ChT zR^qIBGk#{73a2+C$H8L((^XtB90xA~Odoa)mWwOoGl1!yZLqw0{DSrkF3bUY z39b+ae+ih@LkBCz8Mz3UZs!N9#KAU}RnY}iFjrkrN!zsnzj+3p99BiDBv+1CqR+QHFl2&&#)J)~>14Z9C2z6E|NTD3S6MO9IG47*N9*`r_P&avL z+73c5`{v6A6~Q1e)IEu+4~qKm(2cS;pj5)w9w_a^P|sKbkvkA5t;q=WRvA+g;hPAU z)?9@88YXgA0Hrk-AuMf-)oAWEz_jKfgf)&_?YVn^&?<-!zO~1Q?*tH91rbuK3fZSz zF$>Etac&L`R|d&7;VTQ67Dt38##~j!E&xSmqR?a?N~Nveq|y5`8I>g-36xf7gr*p1 z?i`@BydpGJr``aBmRE$PQ%kTsT+6Z^UIs;{t?Nx^)s-WC|qrAvn5|7g}s^BKLa@KV-nN)^f#z7%22dk|mN8 zxn+R_ZvnDYA-*O+{r@U(y<^svzsx%9s8K+!Z)Xl+7Lk$V|bQ!2rFqXvYp%p5#JMDPZg zf{!6-EFaW5qSX37gX#*3y4ldnv3!JYIM6+mV0)}OR2@$TMc-)+y<+69%DWmIo%BNc z+k6(S+wcMOpESD~+UAAA@w^g|*~+rsy_=6_7!g>MHaZnSEp zkL)QA1Eo`T=+{^`Cw#wX^fz)#_KU)oG9M2y(h+>xL?b}y>>fH}TDV%HXH9JX|V0wwoS-Z}6zFCI$4EO6|2%qzJ-;q+Y_#(A&gRRd1*-yysLz{J~X+^2DN zJ#Pr`%mL7+DO}`D1$2r`q-)4|7!Zx?LdDhCi}#rGB48TVh5VLL;m$q{m$a%J*YzR7 zJyBODL4_`dsjPIR7W&6I4}=DRp$w}Vi>WXoJOE+8v2GE%;Ogw%{68Tz#2Pu0`m_adJo`O7w=(NL1FZ~i>N~vBV zQUM}4sh=QYz8AI^%I#xVC1BJ z6=Y$|!bi%@(3ASiB+zO1fsUKh-wZ%b>a&!0O6;8^wFRnFP3jY0yE3-bq&{zV#I~B$ zr)^`G(9X%G%b@J5K$PUo2>oJ=13LB!i7jkG1aDH%i-K&z3MpAH3JUv?q%L}eLJIsB zaaa`INf;d&g%ju(HSfZi^o!0ig){|}O;@#r{~v8{0v$#1eUDeq^h_p;lMskN=t(9a znFNvv`@ZjC2LWX#KmY;R1QbyaQ4nzfQ9%?1L=h7wZn}|t_2a8GToBKfULDNVcEIy-_9bL73J#XV) zs&uo)o>fVTpXUi?V5PJ3{6AR343tnLm}w^YKSS+PL{Db22Lhi$F5A?Pcv2ytvd;q~ zAGET}EC7bq(+>--a=3gqr{4|S;&26SjyqCS_I(alG3>|Y$N#LZn_lQ#WZ?0s8hroL3_Vut{8*K)8?0^9;H_ZJ2mC&2vy zbCY7QNdi0xFgGa%nCXXk&1|q$0{kyvF0c)@PJnCQuD2Zq+a$ov0rxC}bUTxkWF+Z283dS1X@l((ddS&; zxp_3$Apu?jcq`$K3Ggj|7d8Og*_3^@w(W-jbDwRni>be>qO*JjaCs@@whd_8XjN>Nj{g(_Vmw5Uw@F71bJ6x{{EZdBoK!PGXt z`+}p;DqoEuINg8v0a>rcVw2HGusa2>^#y9|?`$X5_|oc9KDfbWB>f6mrIWYV$pH0T zlTgjx>Sk??+Z;^3h^*!AaIllKoIM3D$Y6G-PyNWMV1@zBEpoWK+?=*`J-Fa~wk?&t z3CVZyO~Bv-K6-~2axkW{9|N5FJGON`=+mc-hTj4#yGS2OfWHOIn}^`e1UTs)`$so- zCBS)rdFvhA?Sf^^qOKd+T97^3k$S`}B@d73k^KnwI!EeJx0E~}c1gYNNImA3Vtu%C z4BV@4`Gb$UrE0yHC{^xAJ>izB>epqC)RS(hs(u}Gr1rR_s`}-b9*XvqXqJJ*aG|A0xloU zbOa8#1zcIIfB+W&2M_x6?H1}aTKC&hFS?~9AD7g4NXg#N!#@3!PGXBaLSO3E#PX+TO5Ip+ybt)IN}I=;udhVX4ZqY51+aP zT#eNq0=)AMe&H5yy}7y45%|h2;BxXsN8oF>fXhkGLv|M5xCLBJc5no~bqlzhJQo5o zME>9&206^B>{a08O7fGBpIdasz3qT`w-Wp#0e%KBpBM-KOn~19ESt3d@+~?MGZOz^ z?^<8>?+}p<*?+r5vNLxAj=9|h@Y|Qt>}i1bUOHIAuje>A zyXAoS`XZR=kB^Qjdoy6Zu?p5qfFB3^KK_GQe%HW|{v*4@7r^CH2DSaXXVG24KJWhl z$LIaQx_)-i1g_@8`jJa8+r_EuQowwQ60Da1cL&VHM8RB_WA<)?QQ-LQCK#^HoeNI( zH|JI7t^g;ynDeW1o50ED=la#T-QZ-4b3t|PFgW@3iy}XVF}uXB(=V{w7ASTLxK6+J zjz9yqfNKc2&=Dwc3&`qWeNlPT5h&9F0kQ7#;a5kXv0K39L+K;7lTFKz`h! zh1&;afu9C&xR!2?)>ZZ~him0Fto4GA+BRFeIjz?goP0K*t*Zm7>|ubpKO)%9ulGmD z1zQv=fz=R@-@NGHcGhL#ZV1S4UUc;HR?==zm%srCaDPOwlfOR7 zUtQp12ylNyu(Mz9kErT{dQ9(+2zK%7{Sj3K@*q$+0~Wga_5O&e0^J}Wzj@KkulGm9 z1n?Vg;N&+iy8HG1h&X3IIN&Kgl8160EKcKtZ(v$salk0Ai?cjE2ZxB6kI_1i-8T2{ zC(u&ApgGS|WyG@aN_ZR6DpgW=8_ZOEt`!)|kwUgv)O-qKWp;tv074aBnt=$U#b7PL48NR%i({Tiz`mE0Q8aKgiRRvSrL_-r5>iH@*^<&;l;5YQ`x zN3yCN;rD=Kpu)59Hd-u8J0#};YD;)byfmt~JCLzN@itn7NvhM#L=UYJ$vy*Mf_(^{NFZ`yF#FX zLX~kLl{^#3l|(1I(Hnt0OmvF=(J@`~P2aZBvo*>Bs^oz{C*VJOYP>!4l`DC&Lrv3^ z)CluY$qPVrNx~OVr^oZPwXSrib2R1Bx&_pu_|KjZ&r2ombI_UbY*g|GK>wla96@z; zD{Bj!?&v`uvUoa{^DvSJi>GMBjLi3_K)s3Pm%qVFqm0RVQ}FSXBm*a=r0{`WrnEgR zfE5J-o%BOWL(^?2g^C)QX+zxCtdj42OP_W1=Jdkv^STWrzwS`;T$C6}{v8xw{noR; z8dT|cqVGwQn;)_H3w1{mK7Pqbp6~GXSA~R+Po0x@g6C_IdW&@v3qO@*NInFLZ$9cR zad{;do#d|_YN?CTTHd3!)@3eA>M6MaDBg?LTcO)omj$h0_k)4p`5L_56{qGGI{GVJ zJVzm0f1{&+<*E6Dj{YhaANy%wm3-3CUwuj*o#j@vM!>qjeA0soGTIrxqZ?hX+WP|5 z^|?R1=26qovH)aR&{6aa#8ugsLm;&dGfU|#lDbi+0=oZvL4ozQK=SF&>3(9}OIoPn{-8KuTbpeSO4#mfu_4_xz5DbSZr!OnQ4TwqZnH2bj^Wm} zYE%bMd_H4s*VRQWRXhSHSKU}x_9-PUJ`YHpVL-6-Q;_7FfN&j-Wqu{{y zwsXu8r!`=%!?B*O=0Wm)eHF2ujZ><)7$~Rn);=e{?m#%%whplS8c9+QJqd~nJFGYK2a-qd_pT|WSi$JU+E}yhx#Vx=| z_dHsSOCAi4BZc*LylY7nIE4bwk-~cC)cmdBIci$R;vGX*Ve&Je_;ATOUPTq3+Xlru zY^%HR{z<3B@thHBQnLSbxE{ty;iS(7`KB+s(MuQ=#vr$zZZ5k&;RxVf3Gi&dyzREi z-MM71bl~0z(pv%ZZrtjV06z_wcjH#y1o%V1yc@Ur8Jqu#m7r!2y^L#8tgc3OgF~pA zaftVKi)42PESdw1W1=bLt63A8ypOlK8QIr4ngiV;**gI9_TCzl03Qa-`*>?`0{k^# zE={q{aFss5>elU(oqbp@E3t-D6;RpT9Byb;PAsVGSrCxM9bqp9l~QD11(=JMtdR-u zcEDV4VvVwYhLycsW$y=EzXG0*HsWJ~%Kp-k9+Lq3U)F0*tg#73@*H?vf^-MK57Bmo z8*Vrj@F#@FV=aSt(eM&Lr;i6T!GW^30OH~lYofghgQc^p?FDdrMrKu3=e`BU2aVPw zgR>mh_@_^&?37pZ`V?!5{fpdUnCFMeE^@fDt8zN$hP@%c6)M(r+ff^z0h}vQtaB3Z z?CXGY(TFu8p~7}J@Jx5jWWNNM4>qh>3DTcC@NBnqL+`74>54VSskDam0dawgb*=+t zcLl`NEY@6CUE!7wFjtRQiw)PcRL1J;3&C-kWL@m8Le1Ui=w0I0lOZ;HCpgZbtV^qN zuQ=Q?H>Yi$0C!p?^i~-4(a5^VRCee!Trvn>VHCUIa=>c|U#YzdM0qLBUI6$o;j3)8 zmB5<;*P8_R8XN8+aLVf#j|s0f3iF&^qE2rL_%XuQ8+{=czqIJSljFPlVL#?XD|0`n zOjZ}ogy2g2ObPD2UgkC88eTe+1~CIwZwyTRN>f;58NZ;^Tk61T?Y>{{P9PPNA!yH< z0-Q^!dT#;VOxT_)1?Z6OZS_*$z^x;>n{3sIL}dfG6Ic29pDlyNqwtuBg97uZ5qPY=Io^LJF`?-70)__wKlr;BHovGpHw z_-$2rt)GO6=oM3;f0vAC+BKK{P>0`Ml^6X+yhzJ3njG_wXW?qS&Sl#Mp}u-}l3HU9 zt5TlZ3ju7nt5+_7zT3$6K8<@|{MYNv!9k1W_XTi*%6(}ysRQ(NqvS7in0|4F_a-X; zA&2Q7XZWmB<$nyO;WMx{kT)c8YqkeXKrJIZh_@HoHz~Iqr z9_rEtWBXeJRUwMQXdoos-2erSMFAwD-iE&;SKL^Tr zB3N@l1n)Y=U5i6L#9TIYR4&(PT@Cnu>;z87PZtJKE=HkZJAnn-0~Hmj1@=@sfkh;7 zC$KzG4b?xM7o?|o+{Fl)_7YKJ1I zC~a#QD7_QdMQN@39qJkvrL~TMGV)Q{RW3?bpZS4Jt#(nm`l1eXt&7qIhlA2Pf#Z}) zz67XyC$KK)cA)N^z(jTbNIniq?*y(=Y4%Rw)6nDePGHttU=;d-98@E^p?3n)0oe(B z5D_aM#?wh!>^N2vCK)TInAMp{iS=QOZ(FRPj7`F2(i+RyL>!u2_XD0uo7ODG4|=6$(D%DVNyP`-iUd5VXg~H9omdk(%K}I*CEHZSG+sF5sA-E1Njoj z#W#aophB$>f8y7G%4-)ois*Ms@gqm=L-R85`<$x~?GpL~D3_V%wGAx>%Jt-Vo$(m& zMgwKeX%qh^PwnM3k=N zbP81>%A9h#Bp-7WDw@X?I*GzSv;`f`=^UC01v;G5H5rTWWsPsnWSxV!GLzZx1Hr1e z4R|i)%{kw8lVSl1sASxJsmoK6RL*5gYwuL7;#4pt7vtvNIOO=g@2A_m<4Cr7qrOg? zhen~zpF&Nkl-U67Ha`d;z=JBd2dJyfe?rpL=51lt)#eM4bhY^|BwcOJyrj+9ze9)M ziPPrw`_sGg8 z-%c?xKPeA070ULdQ9auUsPq>h5HntXhBX><-SQ8pB{3eX@0hHKNux!goXPUL@YJ(B zfQnCN%wo(E%p$gX1bRv-V)akQ+0Zo93eh}73tNTw8=KhntqO~+MsUgMM|sA|2k@|i zhYDg6BRf)9Ib1+uJu6BME12YOET{8_!YrOT<+G5qZbxS+zk@7e7GveY^4enYBrJc9 ztiq`w?QFv;yf=Yi-N@6@%_$d^X-iZ%LNR%^K{^kV8<&j{_V$2e( z1+kAOqGEa=wt6%wrdenZqSqi=*hY2-UCL-f>tdE>66F~yXW`2K<>3Ni5+gfOSUIdA zaWzXVhrFA4+jQ;K=(Oom<@*@BDKH&oOF&s%pk;A(QC%4$FCX0*CTX zsPG~V);1r6e`1oca>mLT8*~v2Ffx*d+P*~_4V7V(8D_go1CyD$OdCz`{OMt&W%*5j z8We3TqIpJ*n{i&TzZwnk<&A}3C&|ya7$ruaE=7z2Xx|yrma9Q_7Z6-OW<(5{Gm`FM zcG=?qUkC$6kum4o7>vyoV66vmNS9a!liO4I4z%lS_-<0sdh-+N8)Zxu-DV^WsR?go zQU;kak!fY#l?K0!GDVs8MpCDkjE1_~Ps57t^HJHSs%4qK57?(zGS zwS%#R> z2;gT1DKyYiQIBCC5BrDSGQ^EOs-gkmAs%KB*aw@+dI86Y6^)4xcj1*Cfi$TrpJ-%n zQWf1OGF2Wc>6K&^A;+5Ca2!U}Vy{(>_$2Wr zCa)?clFX^*JFi1!L%rkRu%8XPZM=xL6}lD5y! zQ@Xd8br;}4RU9UArgu8cy5MPq>&2Z=6?2H(q+5tpA_Y?w=M&!Qm5o&S7}f(tJVuVZSyG^6$tyJDb{(dQUjMr6JxtY{Xe!5E+iK?2a$c2%z zjCfV3in}PhP1iy(rwUOXbS*HWDd(XoDjuZNX00cU!uuE%8VcD*NeyD}?kBx_H1aJQ zpnJE(2L{ySrztewu8fKUO!f1U)svEnLqtY;tISm@UKce(1f?@qzD?wL0jd`JLsEzM zHL|M3uKbGBh4MMpn3k&if#~88rb}@J)#MMLW`=dkB%EVq;L;f@XKbXzgy==$H9Wo! zorT!>cs<#|ADV#Zd_wVWd5Znc<+&M7yvv~6uoLe(JU5E?AUsWM)4d|M3*sXg?|F7^ zIpX4H`Rv?5PQ3TL+~J6iqfDO#x#u9xxmcV2OL7+=K8^T*rMZ_QK8Nvvm*)QUnO`kt zeDI3g(ZE+SK4Nw5U5MYn_^2CmcOkx!@zI-d_aZJnjM=I zdnDI7o}_)N*qi$i@Vlrx;W=duL!@I%AQr1W#FMfTslpqZbScLEA;ZGf38eK;9u7?b8Hrd=f!83crm*!ZJTE}t6Wtwn zeg>pZR3sDrQ(q$FbnSytg6atekxkTUn2OufoylN9S8ns#r@Uj{F70(}`fKxOMC9MeU) z7rDVM?qR>n`win)Z(tWtRa?ln`VF9Nrm{H{~-6|2ZiJe4oDf%Oo$jY3aU@kjF& zcat0I;&i?{0Y6FV(W+F%KEhF5rE*=69woI|d5GNjct>QxRplE*r%9*eH6y@-sys&Y z(yHjkM9->f;VYt#OFhReRQyP^tLr))Yly(hA$FoSaJ1gWA^klZI^Oe5lBzsOrT1c{ zRHf%d0Fx4P)R(!+6jC!1U9_o8Qln3$Rgp~!AJ6ASOe$zH*3G#4+;py^VL2)bDEd^) z8C^3KB}6Zfues}s?k!Nj&Sa`F$BL#DSS+7{cL`LsA^dg~pG3E!GpT#@#7?>-Vf)1H zMeYGZrUg~F%7NrA7YC)Q3(usgIEz$wecG`%tBNs1JQ|5Lldi9dN#y)S73Z|28RSwm zCjz3Zx%0@SyEy4>nw!t2>>KZ(IQ z{+D-kVh5sCoaK(x7JaTC#Yq4q%UB|2Fw+)Y&5-A#04$EOig9>Af~LYW@R zU?MZt>8}!9v;Y>YGjOOpj&x^PIIa6bpa9NuBB9Seg7$gyEsC5 zRk@DbuT;>t4V=@cihhTI_S89vUBW|E#VwRh*7>tGUx^+Bgg<>ZsJ*1uRd?k8@q6O+rSF>Ql&UyH?gJOsu#ipB2*-4( zkvA#ufJbgPbxj^4a+UUV3goK!$|nOAmr?37R|`!42uKfkoK*4^$t16Ri{GDB*iVbv zwRbB8QmWQogpN zZgP83ayp^LhE%a!>s3XFP;*xu$9svsYMr?q`47+n!s!y7UI@i9DsPBqA^m8mn%;u= zy{z5J4vao7V+jwcqC0_$tJXwCU&6y&en@AM*XNNdo4*Itq9@g%5gucC(}C|-^yR9$M6Ye81nq`P(Ej5f6*^omsgAcv&}pXxo%c)7XzhiE!4|8h0j46sk6ayx@@(%Ldlt9*!nenzK(CkW_MLIe8JjL`x586DDrA{Kv{ zPrRD#Q-Q%1Mf@P|N2PdW@PP89j=BetN+an6fB;cE6eNTlU4&F}&)Pn<0dMFA&-?*t zED;rSCD7N2&ZCZl9tO&_B!lgpSXwr-j!%un|KQ6q zT@{1xvW1i3ifSb_u~VxDiR4d#AYaW4-bo1;)97;)gl}dV)dVr|eh6EHf^AU&)}?5= zawe^lIHWTE5u0}Q+D3-b$c$AqGU!4YxzaW=2u9|8g2dbG zNrU9FJv)4`Gi02uwvSrFZ$)}ehwpUOqBR={>2$-{>E>-gQaYaeCds_Fkd)3hTsq(U z#n1o;Db(x7}p^-+_$Oe_(zz2wSA}ig?AANe#yfxIAqiY_YWc| z7thB^Q@e=lmcx&fralb$8-WM6;EroGh*i$%OZ;SDS8vda_bpY7?6uShG z*ANN5heKNX*AhkZuP~BRcS58ah}6#!8OTUB&WKTnq+R(sYST8&K9N5Lwb~!-8W5>V z5V;i*RU-q!_qgT88R!KmcZ1yPf`@-@FqxM%9FdT+y zE5<22qf&L|<4|`I4%xvi7(VjvsyF^Tze>lm&5e3JQ2uc5pKqFKG3Imm&*K%p3f=w^ z#I5<@zgx=I_O=B7QeE)xatP9V&P4!c39#!a@#ByI8(k}7vRgz``G82({rqU0>7_PF?d z=GFIWQ_W|^yyYsRxBpjmb?zDGx0RH&1l7q^Z~3G1&3}BDSLLs*zZ0}7_yZ{l=5JAj zWb!wJK0=Q(iJ6j*hBvz4&)H*@^%O)ZhQR1q)-ACA1+@oxe|f`H>oIl8e@yb1=FDBp z*4c~SiIOtN^(Xw(&3-jrh1_R z(7yug8;0($kx$Vdxp5%>HZQxI4TmdX%>oI)tKiAi%2dT;id95!93_Gv^&PRpYG6g3ce~b__GMtaZw| z8)Nm10Xf;I!|P7sR)-vYT4qhx3WscwJ!CcXrVTwG zhd#2Qu>|z9Ls_C6qopLBZ1cw!;QYEPb2giOB~q@m|JkNCK$_7 zovf5qFH3(!I_tJb+EQC$x^bsSh@y3{7G}yVU~fxg0VKF%Cu^SDM&v^WUgTDc^u5$4 zJGHZx8^5`7++SPo@y@ygsEK*6op{kl@nithe0~ksko_dk$G&8Aswxf1GV)@#dscL-drh zC3=|$(J7HpD{PH_+!~)r>+S=`tyfvKJyoqm8ed^^Vb9l+6FoO2r^p6ylkfAXtjV5D z*tKAHKsG;?oz}yAWIMR+k>ZuM*i5&WHgO|3j)YlrJs-zS{6e>^T$uPg2j1TuX?dkB zw!jnbeMKTsRhdQv0O07YZ5$(xTzvc{WsaX3h*q8EYl@{x6pjjKq@H9qy#X{hM= z=EU^)nY1a4uM+)$6Lwl;Dg(&wn% zdwvARuNY+Qu}kObS>vzwsk2g%-GzU6QpA4{5Gv)>Iqb#)r_PWQQLTKn>}!!@j~ z*J>@!=6_IzUcP7J-AC))<8YO}=Y@;=na6YO@qFyJVT8Ll@>ppP)d#|>3U_{}re?j1 zFg9lHG#d86W$Ia6o-*+!($m14)t>lfPyNX?&@%NqLRHoO7so(p`cEE}xy=)LZ3{4+ z+M!eCkvR0I4Sh(cndm%WL!ZT^_PV4@7rx)d<>Do{c;Ej=EJTx0N|n@Fk1vh21c`{SN655~S~U z;7<~y+jsY=C`wm9QcIivrIaut7|Fh;#x{SWkh=S@Tor;|H%_{mEn*B|CW%? z89jaK#Xli^($lIY44O2nN+QtYj-1TKo)TwV%q;apzJqwTlMw&c!?~O-9$DGTryeDo z<&`EfnX`%%mfLV$uXt;+_Eh9)z?=VqbSOc3Om7>`OOXB(uy|PL)gEdi>-yN9H1KLq zG~BeWPob$0~@Zq~ajlhK|^Lnp_ zwMLI&J~b4hcILV&#bU^YiTllQMMYma(88*#vF?hU*)E%+I{n!@lj7 zlq<3y9IyA8UwL`Cvd88~{}Fl$pZTp+x--DP;=n&jH9OKnN9yT(=C29TZ#wXw3DRec z($o3Of4rQ++qO#{MVXdk7MZ|F4z<dKkJVN8c)BHt|FzRoXV*bK9VO?LbkDNw&Z@PFc3H>+zt9ZUV`9VdnQXsUo4t zdS;jTyW5~-9J$TmPKt5eT6#!}6i?AJyUc%Vhgrimw*wq!cA19HRSDW=`?GD%=cCsN zHeUe8nO$abb-lBu+T3Z?^*#m1nO$ZLduAtXsPoG_$L4C;Gdq``{bu52Pd4(q%%|_z zbT2sq_>dR1w8G~)t>kPEkC=rwP?$VruJgrviaw{q-q|*Hi<^^EI(#pzlXraE-%MAE=|Ci9iUw61nHzy4d zpGI>^a?Q6Mm3IU_-&r5i=<4(72EMWqykARMVMN!3eX^-I<#8hnO>@U>IGn&il}y2r z4{%df8?i}e%9TcRKm%LlU=)r#TiEGk#OnEwSJY_$OtWA;g-=!4K=o*RfMAH`MP7KE;OzOprwDO<>ANWxEl8`sn3MYp~+sQukemw2P4(PXENtAsZ3AE1rWQ7-=;EEqTISOV{&Q+;xcM zZ9-%tA|;G?p75)*%z$dOe}x}<&!K!(^jIgNx82cW#L+7=-ztJi#_SfGSqny^$8lSe zvC;?~g^<#zt98nJmr(1!i*-RV)_jh%n`(62z%JPJwr(CfFz*AEm4{oW8=#in*!pE1 zegX;GV1obT`_5?YQx%y<>-*6aRKWw7i`Kpg!^!7i?-k9kdlG#=^DFk<&@gr`?>7$k z?ehdj5|m7MmSDsB1%G=~ICE0LtzUc8c9_hZrV92WUc~tHfEAk`PbqlCfzQb(IO@b_ z)bW0ZxXi3)Q_18(c~6I90-isQAP>rl&7{xv4hAn1>BTOkWQVP;OO zcPB#pY95Y;D(Mbl=~BF-^B863xvh1JGz%lAc#B-c0>@f}Df3!Ft)FeF$nX9n`n`8Hy(01C_i5n#$(?lD& zRUwJwn-fT2y0m&vZ4@x~q?piMVn zgfMEIC(u6lCy^H!;fe7oA{abwg|o$(+X|K=WM9hMt_oHo&e16I?rHo_H&!o% zcv?Hd`zyLsPyDBKwCclo{;C>29C(|4;F;FmYe9$IF0EUfmu|#ULI&E)z+#=#D5xL6 z+rYE|`Mwo|5;9WWFfg6bGG?^0YDPoB>x|-j^^EZAp2u(}(4^BC6!6?>IBdcktkogR zWSZPIAF)vvB9?hEVwG2+_`Lq`r?hegmYDBd|QNl7x^~^bPi4|(C)b?9_cyVT(SB51C zeps4ot&b{sTN|0DZSS(J6;WM7kJwNXLORc

&86+e@n(sIF#i~W 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�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 z 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

e9J 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∾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 F{|h++uR{O; diff --git a/selfdrive/ui/qt/util.cc b/selfdrive/ui/qt/util.cc deleted file mode 100644 index afc1c03bb..000000000 --- a/selfdrive/ui/qt/util.cc +++ /dev/null @@ -1,248 +0,0 @@ -#include "selfdrive/ui/qt/util.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/swaglog.h" -#include "common/util.h" -#include "system/hardware/hw.h" - -QString getVersion() { - static QString version = QString::fromStdString(Params().get("Version")); - return version; -} - -QString getBrand() { - return QObject::tr("StarPilot"); -} - -QString getStarPilotDisplayVersion() { - return "6.7"; -} - -QString formatStarPilotDisplayVersionDescription(const QString &description) { - if (description.isEmpty()) { - return ""; - } - - QStringList parts = description.split(" / "); - if (parts.isEmpty()) { - return getStarPilotDisplayVersion(); - } - - parts[0] = getStarPilotDisplayVersion(); - return parts.join(" / "); -} - -QString getUserAgent() { - return "openpilot-" + getVersion(); -} - -std::optional getDongleId() { - std::string id = Params().get("DongleId"); - - if (!id.empty() && (id != "UnregisteredDevice")) { - return QString::fromStdString(id); - } else { - return {}; - } -} - -QMap getSupportedLanguages() { - QFile f(":/languages.json"); - f.open(QIODevice::ReadOnly | QIODevice::Text); - QString val = f.readAll(); - - QJsonObject obj = QJsonDocument::fromJson(val.toUtf8()).object(); - QMap map; - for (auto key : obj.keys()) { - map[key] = obj[key].toString(); - } - return map; -} - -QString timeAgo(const QDateTime &date) { - if (!util::system_time_valid()) { - return date.date().toString(); - } - - int diff = date.secsTo(QDateTime::currentDateTimeUtc()); - - QString s; - if (diff < 60) { - s = QObject::tr("now"); - } else if (diff < 60 * 60) { - int minutes = diff / 60; - s = QObject::tr("%n minute(s) ago", "", minutes); - } else if (diff < 60 * 60 * 24) { - int hours = diff / (60 * 60); - s = QObject::tr("%n hour(s) ago", "", hours); - } else if (diff < 3600 * 24 * 7) { - int days = diff / (60 * 60 * 24); - s = QObject::tr("%n day(s) ago", "", days); - } else { - s = date.date().toString(); - } - - return s; -} - -void setQtSurfaceFormat() { - QSurfaceFormat fmt; -#ifdef __APPLE__ - fmt.setVersion(3, 2); - fmt.setProfile(QSurfaceFormat::OpenGLContextProfile::CoreProfile); - fmt.setRenderableType(QSurfaceFormat::OpenGL); -#else - fmt.setRenderableType(QSurfaceFormat::OpenGLES); -#endif - fmt.setSamples(16); - fmt.setStencilBufferSize(1); - QSurfaceFormat::setDefaultFormat(fmt); -} - -void sigTermHandler(int s) { - std::signal(s, SIG_DFL); - qApp->quit(); -} - -void initApp(int argc, char *argv[], bool disable_hidpi) { - Hardware::set_display_power(true); - Hardware::set_brightness(65); - - // setup signal handlers to exit gracefully - std::signal(SIGINT, sigTermHandler); - std::signal(SIGTERM, sigTermHandler); - - QString app_dir; -#ifdef __APPLE__ - // Get the devicePixelRatio, and scale accordingly to maintain 1:1 rendering - QApplication tmp(argc, argv); - app_dir = QCoreApplication::applicationDirPath(); - if (disable_hidpi) { - qputenv("QT_SCALE_FACTOR", QString::number(1.0 / tmp.devicePixelRatio()).toLocal8Bit()); - } -#else - app_dir = QFileInfo(util::readlink("/proc/self/exe").c_str()).path(); -#endif - - qputenv("QT_DBL_CLICK_DIST", QByteArray::number(150)); - // ensure the current dir matches the exectuable's directory - QDir::setCurrent(app_dir); - - setQtSurfaceFormat(); -} - -void swagLogMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - static std::map levels = { - {QtMsgType::QtDebugMsg, CLOUDLOG_DEBUG}, - {QtMsgType::QtInfoMsg, CLOUDLOG_INFO}, - {QtMsgType::QtWarningMsg, CLOUDLOG_WARNING}, - {QtMsgType::QtCriticalMsg, CLOUDLOG_ERROR}, - {QtMsgType::QtSystemMsg, CLOUDLOG_ERROR}, - {QtMsgType::QtFatalMsg, CLOUDLOG_CRITICAL}, - }; - - std::string file, function; - if (context.file != nullptr) file = context.file; - if (context.function != nullptr) function = context.function; - - auto bts = msg.toUtf8(); - cloudlog_e(levels[type], file.c_str(), context.line, function.c_str(), "%s", bts.constData()); -} - - -QWidget* topWidget(QWidget* widget) { - while (widget->parentWidget() != nullptr) widget=widget->parentWidget(); - return widget; -} - -QPixmap loadPixmap(const QString &fileName, const QSize &size, Qt::AspectRatioMode aspectRatioMode) { - if (size.isEmpty()) { - return QPixmap(fileName); - } else { - return QPixmap(fileName).scaled(size, aspectRatioMode, Qt::SmoothTransformation); - } -} - -static QHash load_bootstrap_icons() { - QHash icons; - - QFile f(":/bootstrap-icons.svg"); - if (f.open(QIODevice::ReadOnly | QIODevice::Text)) { - QDomDocument xml; - xml.setContent(&f); - QDomNode n = xml.documentElement().firstChild(); - while (!n.isNull()) { - QDomElement e = n.toElement(); - if (!e.isNull() && e.hasAttribute("id")) { - QString svg_str; - QTextStream stream(&svg_str); - n.save(stream, 0); - svg_str.replace("", ""); - icons[e.attribute("id")] = svg_str.toUtf8(); - } - n = n.nextSibling(); - } - } - return icons; -} - -QPixmap bootstrapPixmap(const QString &id) { - static QHash icons = load_bootstrap_icons(); - - QPixmap pixmap; - if (auto it = icons.find(id); it != icons.end()) { - pixmap.loadFromData(it.value(), "svg"); - } - return pixmap; -} - -bool hasLongitudinalControl(const cereal::CarParams::Reader &car_params) { - // Using the experimental longitudinal toggle, returns whether longitudinal control - // will be active without needing a restart of openpilot - Params params = Params(); - return (car_params.getAlphaLongitudinalAvailable() - ? params.getBool("AlphaLongitudinalEnabled") - : car_params.getOpenpilotLongitudinalControl()) && !params.getBool("DisableOpenpilotLongitudinal"); -} - -// ParamWatcher - -ParamWatcher::ParamWatcher(QObject *parent) : QObject(parent) { - watcher = new QFileSystemWatcher(this); - QObject::connect(watcher, &QFileSystemWatcher::fileChanged, this, &ParamWatcher::fileChanged); -} - -void ParamWatcher::fileChanged(const QString &path) { - auto param_name = QFileInfo(path).fileName(); - auto param_value = QString::fromStdString(params.get(param_name.toStdString())); - - auto it = params_hash.find(param_name); - bool content_changed = (it == params_hash.end()) || (it.value() != param_value); - params_hash[param_name] = param_value; - // emit signal when the content changes. - if (content_changed) { - emit paramChanged(param_name, param_value); - } -} - -void ParamWatcher::addParam(const QString ¶m_name) { - watcher->addPath(QString::fromStdString(params.getParamPath(param_name.toStdString()))); -} diff --git a/selfdrive/ui/qt/util.h b/selfdrive/ui/qt/util.h deleted file mode 100644 index 9d62b34cc..000000000 --- a/selfdrive/ui/qt/util.h +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "cereal/gen/cpp/car.capnp.h" -#include "common/params.h" - -QString getVersion(); -QString getBrand(); -QString getStarPilotDisplayVersion(); -QString formatStarPilotDisplayVersionDescription(const QString &description); -QString getUserAgent(); -std::optional getDongleId(); -QMap getSupportedLanguages(); -void setQtSurfaceFormat(); -void sigTermHandler(int s); -QString timeAgo(const QDateTime &date); -void swagLogMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg); -void initApp(int argc, char *argv[], bool disable_hidpi = true); -QWidget* topWidget(QWidget* widget); -QPixmap loadPixmap(const QString &fileName, const QSize &size = {}, Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio); -QPixmap bootstrapPixmap(const QString &id); -bool hasLongitudinalControl(const cereal::CarParams::Reader &car_params); - -struct InterFont : public QFont { - InterFont(int pixel_size, QFont::Weight weight = QFont::Normal) : QFont("Inter") { - setPixelSize(pixel_size); - setWeight(weight); - } -}; - -class ParamWatcher : public QObject { - Q_OBJECT - -public: - ParamWatcher(QObject *parent); - void addParam(const QString ¶m_name); - -signals: - void paramChanged(const QString ¶m_name, const QString ¶m_value); - -private: - void fileChanged(const QString &path); - - QFileSystemWatcher *watcher; - QHash params_hash; - Params params; -}; diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc deleted file mode 100644 index 81ef61339..000000000 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ /dev/null @@ -1,365 +0,0 @@ -#include "selfdrive/ui/qt/widgets/cameraview.h" - -#ifdef __APPLE__ -#include -#else -#include -#endif - -#include -#include - -namespace { - -const char frame_vertex_shader[] = -#ifdef __APPLE__ - "#version 330 core\n" -#else - "#version 300 es\n" -#endif - "layout(location = 0) in vec4 aPosition;\n" - "layout(location = 1) in vec2 aTexCoord;\n" - "uniform mat4 uTransform;\n" - "out vec2 vTexCoord;\n" - "void main() {\n" - " gl_Position = uTransform * aPosition;\n" - " vTexCoord = aTexCoord;\n" - "}\n"; - -const char frame_fragment_shader[] = -#ifdef QCOM2 - "#version 300 es\n" - "#extension GL_OES_EGL_image_external_essl3 : enable\n" - "precision mediump float;\n" - "uniform samplerExternalOES uTexture;\n" - "in vec2 vTexCoord;\n" - "out vec4 colorOut;\n" - "void main() {\n" - " colorOut = texture(uTexture, vTexCoord);\n" - // gamma to improve worst case visibility when dark - " colorOut.rgb = pow(colorOut.rgb, vec3(1.0/1.28));\n" - "}\n"; -#else -#ifdef __APPLE__ - "#version 330 core\n" -#else - "#version 300 es\n" - "precision mediump float;\n" -#endif - "uniform sampler2D uTextureY;\n" - "uniform sampler2D uTextureUV;\n" - "in vec2 vTexCoord;\n" - "out vec4 colorOut;\n" - "void main() {\n" - " float y = texture(uTextureY, vTexCoord).r;\n" - " vec2 uv = texture(uTextureUV, vTexCoord).rg - 0.5;\n" - " float r = y + 1.402 * uv.y;\n" - " float g = y - 0.344 * uv.x - 0.714 * uv.y;\n" - " float b = y + 1.772 * uv.x;\n" - " colorOut = vec4(r, g, b, 1.0);\n" - "}\n"; -#endif - -} // namespace - -CameraWidget::CameraWidget(std::string stream_name, VisionStreamType type, QWidget* parent) : - stream_name(stream_name), active_stream_type(type), requested_stream_type(type), QOpenGLWidget(parent) { - setAttribute(Qt::WA_OpaquePaintEvent); - qRegisterMetaType>("availableStreams"); - QObject::connect(this, &CameraWidget::vipcThreadConnected, this, &CameraWidget::vipcConnected, Qt::BlockingQueuedConnection); - QObject::connect(this, &CameraWidget::vipcThreadFrameReceived, this, &CameraWidget::vipcFrameReceived, Qt::QueuedConnection); - QObject::connect(this, &CameraWidget::vipcAvailableStreamsUpdated, this, &CameraWidget::availableStreamsUpdated, Qt::QueuedConnection); - QObject::connect(QApplication::instance(), &QCoreApplication::aboutToQuit, this, &CameraWidget::stopVipcThread); -} - -CameraWidget::~CameraWidget() { - makeCurrent(); - stopVipcThread(); - if (isValid()) { - glDeleteVertexArrays(1, &frame_vao); - glDeleteBuffers(1, &frame_vbo); - glDeleteBuffers(1, &frame_ibo); -#ifndef QCOM2 - glDeleteTextures(2, textures); -#endif - } - doneCurrent(); -} - -// Qt uses device-independent pixels, depending on platform this may be -// different to what OpenGL uses -int CameraWidget::glWidth() { - return width() * devicePixelRatio(); -} - -int CameraWidget::glHeight() { - return height() * devicePixelRatio(); -} - -void CameraWidget::initializeGL() { - initializeOpenGLFunctions(); - - program = std::make_unique(context()); - bool ret = program->addShaderFromSourceCode(QOpenGLShader::Vertex, frame_vertex_shader); - assert(ret); - ret = program->addShaderFromSourceCode(QOpenGLShader::Fragment, frame_fragment_shader); - assert(ret); - - program->link(); - GLint frame_pos_loc = program->attributeLocation("aPosition"); - GLint frame_texcoord_loc = program->attributeLocation("aTexCoord"); - - auto [x1, x2, y1, y2] = requested_stream_type == VISION_STREAM_DRIVER ? std::tuple(0.f, 1.f, 1.f, 0.f) : std::tuple(1.f, 0.f, 1.f, 0.f); - const uint8_t frame_indicies[] = {0, 1, 2, 0, 2, 3}; - const float frame_coords[4][4] = { - {-1.0, -1.0, x2, y1}, // bl - {-1.0, 1.0, x2, y2}, // tl - { 1.0, 1.0, x1, y2}, // tr - { 1.0, -1.0, x1, y1}, // br - }; - - glGenVertexArrays(1, &frame_vao); - glBindVertexArray(frame_vao); - glGenBuffers(1, &frame_vbo); - glBindBuffer(GL_ARRAY_BUFFER, frame_vbo); - glBufferData(GL_ARRAY_BUFFER, sizeof(frame_coords), frame_coords, GL_STATIC_DRAW); - glEnableVertexAttribArray(frame_pos_loc); - glVertexAttribPointer(frame_pos_loc, 2, GL_FLOAT, GL_FALSE, - sizeof(frame_coords[0]), (const void *)0); - glEnableVertexAttribArray(frame_texcoord_loc); - glVertexAttribPointer(frame_texcoord_loc, 2, GL_FLOAT, GL_FALSE, - sizeof(frame_coords[0]), (const void *)(sizeof(float) * 2)); - glGenBuffers(1, &frame_ibo); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, frame_ibo); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(frame_indicies), frame_indicies, GL_STATIC_DRAW); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindVertexArray(0); - - glUseProgram(program->programId()); - -#ifdef QCOM2 - glUniform1i(program->uniformLocation("uTexture"), 0); -#else - glGenTextures(2, textures); - glUniform1i(program->uniformLocation("uTextureY"), 0); - glUniform1i(program->uniformLocation("uTextureUV"), 1); -#endif -} - -void CameraWidget::showEvent(QShowEvent *event) { - if (!vipc_thread) { - clearFrames(); - vipc_thread = new QThread(); - connect(vipc_thread, &QThread::started, [=]() { vipcThread(); }); - connect(vipc_thread, &QThread::finished, vipc_thread, &QObject::deleteLater); - vipc_thread->start(); - } -} - -void CameraWidget::stopVipcThread() { - makeCurrent(); - if (vipc_thread) { - vipc_thread->requestInterruption(); - vipc_thread->quit(); - vipc_thread->wait(); - vipc_thread = nullptr; - } - -#ifdef QCOM2 - EGLDisplay egl_display = eglGetCurrentDisplay(); - assert(egl_display != EGL_NO_DISPLAY); - for (auto &pair : egl_images) { - eglDestroyImageKHR(egl_display, pair.second); - assert(eglGetError() == EGL_SUCCESS); - } - egl_images.clear(); -#endif -} - -void CameraWidget::availableStreamsUpdated(std::set streams) { - available_streams = streams; -} - -mat4 CameraWidget::calcFrameMatrix() { - // Scale the frame to fit the widget while maintaining the aspect ratio. - float widget_aspect_ratio = (float)width() / height(); - float frame_aspect_ratio = (float)stream_width / stream_height; - float zx = std::min(frame_aspect_ratio / widget_aspect_ratio, 1.0f); - float zy = std::min(widget_aspect_ratio / frame_aspect_ratio, 1.0f); - - return mat4{{ - zx, 0.0, 0.0, 0.0, - 0.0, zy, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0, - }}; -} - -void CameraWidget::paintGL() { - glClearColor(bg.redF(), bg.greenF(), bg.blueF(), bg.alphaF()); - glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT); - - std::lock_guard lk(frame_lock); - if (frames.empty()) return; - - int frame_idx = frames.size() - 1; - - // Always draw latest frame until sync logic is more stable - // for (frame_idx = 0; frame_idx < frames.size() - 1; frame_idx++) { - // if (frames[frame_idx].first == draw_frame_id) break; - // } - - // Log duplicate/dropped frames - if (frames[frame_idx].first == prev_frame_id) { - qDebug() << "Drawing same frame twice" << frames[frame_idx].first; - } else if (frames[frame_idx].first != prev_frame_id + 1) { - qDebug() << "Skipped frame" << frames[frame_idx].first; - } - prev_frame_id = frames[frame_idx].first; - VisionBuf *frame = frames[frame_idx].second; - assert(frame != nullptr); - - auto frame_mat = calcFrameMatrix(); - - glViewport(0, 0, glWidth(), glHeight()); - glBindVertexArray(frame_vao); - glUseProgram(program->programId()); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - -#ifdef QCOM2 - // no frame copy - glActiveTexture(GL_TEXTURE0); - glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, egl_images[frame->idx]); - assert(glGetError() == GL_NO_ERROR); -#else - // fallback to copy - glPixelStorei(GL_UNPACK_ROW_LENGTH, stream_stride); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, textures[0]); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, stream_width, stream_height, GL_RED, GL_UNSIGNED_BYTE, frame->y); - assert(glGetError() == GL_NO_ERROR); - - glPixelStorei(GL_UNPACK_ROW_LENGTH, stream_stride/2); - glActiveTexture(GL_TEXTURE0 + 1); - glBindTexture(GL_TEXTURE_2D, textures[1]); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, stream_width/2, stream_height/2, GL_RG, GL_UNSIGNED_BYTE, frame->uv); - assert(glGetError() == GL_NO_ERROR); -#endif - - glUniformMatrix4fv(program->uniformLocation("uTransform"), 1, GL_TRUE, frame_mat.v); - glEnableVertexAttribArray(0); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, (const void *)0); - glDisableVertexAttribArray(0); - glBindVertexArray(0); - glBindTexture(GL_TEXTURE_2D, 0); - glActiveTexture(GL_TEXTURE0); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); -} - -void CameraWidget::vipcConnected(VisionIpcClient *vipc_client) { - makeCurrent(); - stream_width = vipc_client->buffers[0].width; - stream_height = vipc_client->buffers[0].height; - stream_stride = vipc_client->buffers[0].stride; - -#ifdef QCOM2 - EGLDisplay egl_display = eglGetCurrentDisplay(); - assert(egl_display != EGL_NO_DISPLAY); - for (auto &pair : egl_images) { - eglDestroyImageKHR(egl_display, pair.second); - } - egl_images.clear(); - - for (int i = 0; i < vipc_client->num_buffers; i++) { // import buffers into OpenGL - int fd = dup(vipc_client->buffers[i].fd); // eglDestroyImageKHR will close, so duplicate - EGLint img_attrs[] = { - EGL_WIDTH, (int)vipc_client->buffers[i].width, - EGL_HEIGHT, (int)vipc_client->buffers[i].height, - EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_NV12, - EGL_DMA_BUF_PLANE0_FD_EXT, fd, - EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0, - EGL_DMA_BUF_PLANE0_PITCH_EXT, (int)vipc_client->buffers[i].stride, - EGL_DMA_BUF_PLANE1_FD_EXT, fd, - EGL_DMA_BUF_PLANE1_OFFSET_EXT, (int)vipc_client->buffers[i].uv_offset, - EGL_DMA_BUF_PLANE1_PITCH_EXT, (int)vipc_client->buffers[i].stride, - EGL_NONE - }; - egl_images[i] = eglCreateImageKHR(egl_display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, 0, img_attrs); - assert(eglGetError() == EGL_SUCCESS); - } -#else - glBindTexture(GL_TEXTURE_2D, textures[0]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, stream_width, stream_height, 0, GL_RED, GL_UNSIGNED_BYTE, nullptr); - assert(glGetError() == GL_NO_ERROR); - - glBindTexture(GL_TEXTURE_2D, textures[1]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RG8, stream_width/2, stream_height/2, 0, GL_RG, GL_UNSIGNED_BYTE, nullptr); - assert(glGetError() == GL_NO_ERROR); -#endif -} - -void CameraWidget::vipcFrameReceived() { - update(); -} - -void CameraWidget::vipcThread() { - VisionStreamType cur_stream = requested_stream_type; - std::unique_ptr vipc_client; - VisionIpcBufExtra meta_main = {0}; - - while (!QThread::currentThread()->isInterruptionRequested()) { - if (!vipc_client || cur_stream != requested_stream_type) { - clearFrames(); - qDebug().nospace() << "connecting to stream " << requested_stream_type << ", was connected to " << cur_stream; - cur_stream = requested_stream_type; - vipc_client.reset(new VisionIpcClient(stream_name, cur_stream, false)); - } - active_stream_type = cur_stream; - - if (!vipc_client->connected) { - clearFrames(); - auto streams = VisionIpcClient::getAvailableStreams(stream_name, false); - if (streams.empty()) { - QThread::msleep(100); - continue; - } - emit vipcAvailableStreamsUpdated(streams); - - if (!vipc_client->connect(false)) { - QThread::msleep(100); - continue; - } - emit vipcThreadConnected(vipc_client.get()); - } - - if (VisionBuf *buf = vipc_client->recv(&meta_main, 1000)) { - { - std::lock_guard lk(frame_lock); - frames.push_back(std::make_pair(meta_main.frame_id, buf)); - while (frames.size() > FRAME_BUFFER_SIZE) { - frames.pop_front(); - } - } - emit vipcThreadFrameReceived(); - } else { - if (!isVisible()) { - vipc_client->connected = false; - } - } - } -} - -void CameraWidget::clearFrames() { - std::lock_guard lk(frame_lock); - frames.clear(); - available_streams.clear(); -} diff --git a/selfdrive/ui/qt/widgets/cameraview.h b/selfdrive/ui/qt/widgets/cameraview.h deleted file mode 100644 index 29aa8493c..000000000 --- a/selfdrive/ui/qt/widgets/cameraview.h +++ /dev/null @@ -1,89 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#ifdef QCOM2 -#define EGL_EGLEXT_PROTOTYPES -#define EGL_NO_X11 -#define GL_TEXTURE_EXTERNAL_OES 0x8D65 -#include -#include -#include -#endif - -#include "msgq/visionipc/visionipc_client.h" -#include "selfdrive/ui/ui.h" - -const int FRAME_BUFFER_SIZE = 5; - -class CameraWidget : public QOpenGLWidget, protected QOpenGLFunctions { - Q_OBJECT - -public: - using QOpenGLWidget::QOpenGLWidget; - explicit CameraWidget(std::string stream_name, VisionStreamType stream_type, QWidget* parent = nullptr); - ~CameraWidget(); - void setBackgroundColor(const QColor &color) { bg = color; } - void setFrameId(int frame_id) { draw_frame_id = frame_id; } - void setStreamType(VisionStreamType type) { requested_stream_type = type; } - VisionStreamType getStreamType() { return active_stream_type; } - void stopVipcThread(); - -signals: - void clicked(); - void vipcThreadConnected(VisionIpcClient *); - void vipcThreadFrameReceived(); - void vipcAvailableStreamsUpdated(std::set); - -protected: - void paintGL() override; - void initializeGL() override; - void showEvent(QShowEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override { emit clicked(); } - virtual mat4 calcFrameMatrix(); - void vipcThread(); - void clearFrames(); - - int glWidth(); - int glHeight(); - - GLuint frame_vao, frame_vbo, frame_ibo; - GLuint textures[2]; - std::unique_ptr program; - QColor bg = QColor("#000000"); - -#ifdef QCOM2 - std::map egl_images; -#endif - - std::string stream_name; - int stream_width = 0; - int stream_height = 0; - int stream_stride = 0; - std::atomic active_stream_type; - std::atomic requested_stream_type; - std::set available_streams; - QThread *vipc_thread = nullptr; - std::recursive_mutex frame_lock; - std::deque> frames; - uint32_t draw_frame_id = 0; - uint32_t prev_frame_id = 0; - -protected slots: - void vipcConnected(VisionIpcClient *vipc_client); - void vipcFrameReceived(); - void availableStreamsUpdated(std::set streams); -}; - -Q_DECLARE_METATYPE(std::set); diff --git a/selfdrive/ui/qt/widgets/controls.cc b/selfdrive/ui/qt/widgets/controls.cc deleted file mode 100644 index b74272d0c..000000000 --- a/selfdrive/ui/qt/widgets/controls.cc +++ /dev/null @@ -1,168 +0,0 @@ -#include "selfdrive/ui/qt/widgets/controls.h" - -#include -#include - -AbstractControl::AbstractControl(const QString &title, const QString &desc, const QString &icon, QWidget *parent) : QFrame(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(0); - - hlayout = new QHBoxLayout; - hlayout->setMargin(0); - hlayout->setSpacing(20); - - // left icon - icon_label = new QLabel(this); - hlayout->addWidget(icon_label); - if (!icon.isEmpty()) { - icon_pixmap = QPixmap(icon).scaledToWidth(80, Qt::SmoothTransformation); - icon_label->setPixmap(icon_pixmap); - icon_label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); - } - icon_label->setVisible(!icon.isEmpty()); - - // title - title_label = new QPushButton(title); - title_label->setFixedHeight(120); - title_label->setStyleSheet("font-size: 50px; font-weight: 400; text-align: left; border: none;"); - hlayout->addWidget(title_label, 1); - - // value next to control button - value = new ElidedLabel(); - value->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - value->setStyleSheet("color: #aaaaaa"); - hlayout->addWidget(value); - - main_layout->addLayout(hlayout); - - // description - description = new QLabel(desc); - description->setContentsMargins(40, 20, 40, 20); - description->setStyleSheet("font-size: 40px; color: grey"); - description->setWordWrap(true); - description->setVisible(false); - main_layout->addWidget(description); - - connect(title_label, &QPushButton::clicked, [=]() { - if (!description->isVisible()) { - emit showDescriptionEvent(); - } - - if (!description->text().isEmpty()) { - if (description->isVisible()) { - emit hideDescriptionEvent(); - description->setVisible(false); - } else { - description->setVisible(true); - } - } - }); - - main_layout->addStretch(); -} - -void AbstractControl::hideEvent(QHideEvent *e) { - if (description != nullptr) { - description->hide(); - } -} - -// controls - -ButtonControl::ButtonControl(const QString &title, const QString &text, const QString &desc, QWidget *parent) : AbstractControl(title, desc, "", parent) { - btn.setText(text); - btn.setStyleSheet(R"( - QPushButton { - padding: 0; - border-radius: 50px; - font-size: 35px; - font-weight: 500; - color: #E4E4E4; - background-color: #393939; - } - QPushButton:pressed { - background-color: #4a4a4a; - } - QPushButton:disabled { - color: #33E4E4E4; - } - )"); - btn.setFixedSize(250, 100); - QObject::connect(&btn, &QPushButton::clicked, this, &ButtonControl::clicked); - hlayout->addWidget(&btn); -} - -// ElidedLabel - -ElidedLabel::ElidedLabel(QWidget *parent) : ElidedLabel({}, parent) {} - -ElidedLabel::ElidedLabel(const QString &text, QWidget *parent) : QLabel(text.trimmed(), parent) { - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); - setMinimumWidth(1); -} - -void ElidedLabel::resizeEvent(QResizeEvent* event) { - QLabel::resizeEvent(event); - lastText_ = elidedText_ = ""; -} - -void ElidedLabel::paintEvent(QPaintEvent *event) { - const QString curText = text(); - if (curText != lastText_) { - elidedText_ = fontMetrics().elidedText(curText, Qt::ElideRight, contentsRect().width()); - lastText_ = curText; - } - - QPainter painter(this); - drawFrame(&painter); - QStyleOption opt; - opt.initFrom(this); - style()->drawItemText(&painter, contentsRect(), alignment(), opt.palette, isEnabled(), elidedText_, foregroundRole()); -} - -// ParamControl - -ParamControl::ParamControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent) - : ToggleControl(title, desc, icon, false, parent) { - key = param.toStdString(); - QObject::connect(this, &ParamControl::toggleFlipped, this, &ParamControl::toggleClicked); -} - -void ParamControl::toggleClicked(bool state) { - auto do_confirm = [this]() { - QString content("

" + title_label->text() + "


" - "

" + getDescription() + "

"); - return ConfirmationDialog(content, tr("Enable"), tr("Cancel"), true, this).exec(); - }; - - bool confirmed = store_confirm && params.getBool(key + "Confirmed"); - if (!confirm || confirmed || !state || do_confirm()) { - if (store_confirm && state) params.putBool(key + "Confirmed", true); - params.putBool(key, state); - if (state && key == "ConditionalExperimental") { - params.putBool("ConditionalChill", false); - } else if (state && key == "ConditionalChill") { - params.putBool("ConditionalExperimental", false); - } - if (key == "PersistExperimentalState") { - static Params params_memory{"", true}; - int persisted_status = 0; - if (state) { - int current_status = params_memory.getInt("CEStatus"); - persisted_status = (current_status == 1 || current_status == 2) ? current_status : 0; - } - params.putInt("PersistedCEStatus", persisted_status); - } else if (key == "PersistChillState") { - static Params params_memory{"", true}; - int persisted_status = 0; - if (state) { - int current_status = params_memory.getInt("CCStatus"); - persisted_status = (current_status == 1 || current_status == 2) ? current_status : 0; - } - params.putInt("PersistedCCStatus", persisted_status); - } - setIcon(state); - } else { - toggle.togglePosition(); - } -} diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h deleted file mode 100644 index 137b3ef8d..000000000 --- a/selfdrive/ui/qt/widgets/controls.h +++ /dev/null @@ -1,328 +0,0 @@ -#pragma once - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "common/params.h" -#include "selfdrive/ui/qt/widgets/input.h" -#include "selfdrive/ui/qt/widgets/toggle.h" - -class ElidedLabel : public QLabel { - Q_OBJECT - -public: - explicit ElidedLabel(QWidget *parent = 0); - explicit ElidedLabel(const QString &text, QWidget *parent = 0); - -signals: - void clicked(); - -protected: - void paintEvent(QPaintEvent *event) override; - void resizeEvent(QResizeEvent* event) override; - void mouseReleaseEvent(QMouseEvent *event) override { - if (rect().contains(event->pos())) { - emit clicked(); - } - } - QString lastText_, elidedText_; -}; - - -class AbstractControl : public QFrame { - Q_OBJECT - -public: - void setDescription(const QString &desc) { - if (description) description->setText(desc); - } - - void setTitle(const QString &title) { - title_label->setText(title); - } - - void setValue(const QString &val) { - value->setText(val); - } - - const QString getDescription() { - return description->text(); - } - - QLabel *icon_label; - QPixmap icon_pixmap; - -public slots: - void showDescription() { - description->setVisible(true); - } - -signals: - void showDescriptionEvent(); - - void hideDescriptionEvent(); - -protected: - AbstractControl(const QString &title, const QString &desc = "", const QString &icon = "", QWidget *parent = nullptr); - void hideEvent(QHideEvent *e) override; - - QHBoxLayout *hlayout; - QPushButton *title_label; - -private: - ElidedLabel *value; - QLabel *description = nullptr; -}; - -// widget to display a value -class LabelControl : public AbstractControl { - Q_OBJECT - -public: - LabelControl(const QString &title, const QString &text = "", const QString &desc = "", QWidget *parent = nullptr) : AbstractControl(title, desc, "", parent) { - label.setText(text); - label.setAlignment(Qt::AlignRight | Qt::AlignVCenter); - hlayout->addWidget(&label); - } - void setText(const QString &text) { label.setText(text); } - -private: - ElidedLabel label; -}; - -// widget for a button with a label -class ButtonControl : public AbstractControl { - Q_OBJECT - -public: - ButtonControl(const QString &title, const QString &text, const QString &desc = "", QWidget *parent = nullptr); - inline void setText(const QString &text) { btn.setText(text); } - inline QString text() const { return btn.text(); } - -signals: - void clicked(); - -public slots: - void setEnabled(bool enabled) { btn.setEnabled(enabled); } - -private: - QPushButton btn; -}; - -class ToggleControl : public AbstractControl { - Q_OBJECT - -public: - ToggleControl(const QString &title, const QString &desc = "", const QString &icon = "", const bool state = false, QWidget *parent = nullptr) : AbstractControl(title, desc, icon, parent) { - toggle.setFixedSize(150, 100); - if (state) { - toggle.togglePosition(); - } - hlayout->addWidget(&toggle); - QObject::connect(&toggle, &Toggle::stateChanged, this, &ToggleControl::toggleFlipped); - } - - void setEnabled(bool enabled) { - toggle.setEnabled(enabled); - toggle.update(); - } - - void forceOn(bool force) { - toggle.setEnabled(!force); - if (force && !toggle.on) { - toggle.togglePosition(); - } - } - -signals: - void toggleFlipped(bool state); - -protected: - Toggle toggle; -}; - -// widget to toggle params -class ParamControl : public ToggleControl { - Q_OBJECT - -public: - ParamControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent = nullptr); - void setConfirmation(bool _confirm, bool _store_confirm) { - confirm = _confirm; - store_confirm = _store_confirm; - } - - void setActiveIcon(const QString &icon) { - active_icon_pixmap = QPixmap(icon).scaledToWidth(80, Qt::SmoothTransformation); - } - - void refresh() { - bool state = params.getBool(key); - if (state != toggle.on) { - toggle.togglePosition(); - setIcon(state); - } - } - - void showEvent(QShowEvent *event) override { - refresh(); - } - -private: - void toggleClicked(bool state); - void setIcon(bool state) { - if (state && !active_icon_pixmap.isNull()) { - icon_label->setPixmap(active_icon_pixmap); - } else if (!icon_pixmap.isNull()) { - icon_label->setPixmap(icon_pixmap); - } - } - - std::string key; - Params params; - QPixmap active_icon_pixmap; - bool confirm = false; - bool store_confirm = false; -}; - -class MultiButtonControl : public AbstractControl { - Q_OBJECT -public: - MultiButtonControl(const QString &title, const QString &desc, const QString &icon, - const std::vector &button_texts, const int minimum_button_width = 225) : AbstractControl(title, desc, icon) { - const QString style = R"( - QPushButton { - border-radius: 50px; - font-size: 40px; - font-weight: 500; - height:100px; - padding: 0 25 0 25; - color: #E4E4E4; - background-color: #393939; - } - QPushButton:pressed { - background-color: #4a4a4a; - } - QPushButton:checked:enabled { - background-color: #33Ab4C; - } - QPushButton:checked:disabled { - background-color: #9933Ab4C; - } - QPushButton:disabled { - color: #33E4E4E4; - } - )"; - - button_group = new QButtonGroup(this); - button_group->setExclusive(true); - for (int i = 0; i < button_texts.size(); i++) { - QPushButton *button = new QPushButton(button_texts[i], this); - button->setCheckable(true); - button->setChecked(i == 0); - button->setStyleSheet(style); - button->setMinimumWidth(minimum_button_width); - hlayout->addWidget(button); - button_group->addButton(button, i); - } - - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), this, &MultiButtonControl::buttonClicked); - } - - void setEnabled(bool enable) { - for (auto btn : button_group->buttons()) { - btn->setEnabled(enable); - } - } - - void setCheckedButton(int id) { - button_group->button(id)->setChecked(true); - } - -signals: - void buttonClicked(int id); - -protected: - QButtonGroup *button_group; -}; - -class ButtonParamControl : public MultiButtonControl { - Q_OBJECT -public: - ButtonParamControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, - const std::vector &button_texts, const int minimum_button_width = 225) : MultiButtonControl(title, desc, icon, - button_texts, minimum_button_width) { - key = param.toStdString(); - int value = atoi(params.get(key).c_str()); - - if (value > 0 && value < button_group->buttons().size()) { - button_group->button(value)->setChecked(true); - } - - QObject::connect(this, QOverload::of(&MultiButtonControl::buttonClicked), [=](int id) { - params.put(key, std::to_string(id)); - }); - } - - void refresh() { - int value = atoi(params.get(key).c_str()); - button_group->button(value)->setChecked(true); - } - - void showEvent(QShowEvent *event) override { - refresh(); - } - -private: - std::string key; - Params params; -}; - -class ListWidget : public QWidget { - Q_OBJECT - public: - explicit ListWidget(QWidget *parent = 0) : QWidget(parent), outer_layout(this) { - outer_layout.setMargin(0); - outer_layout.setSpacing(0); - outer_layout.addLayout(&inner_layout); - inner_layout.setMargin(0); - inner_layout.setSpacing(25); // default spacing is 25 - outer_layout.addStretch(1); - } - inline void addItem(QWidget *w) { inner_layout.addWidget(w); } - inline void addItem(QLayout *layout) { inner_layout.addLayout(layout); } - inline void setSpacing(int spacing) { inner_layout.setSpacing(spacing); } - -private: - void paintEvent(QPaintEvent *) override { - QPainter p(this); - p.setPen(Qt::gray); - for (int i = 0; i < inner_layout.count() - 1; ++i) { - QWidget *widget = inner_layout.itemAt(i)->widget(); - if (widget == nullptr || widget->isVisible()) { - QRect r = inner_layout.itemAt(i)->geometry(); - int bottom = r.bottom() + inner_layout.spacing() / 2; - p.drawLine(r.left() + 40, bottom, r.right() - 40, bottom); - } - } - } - QVBoxLayout outer_layout; - QVBoxLayout inner_layout; -}; - -// convenience class for wrapping layouts -class LayoutWidget : public QWidget { - Q_OBJECT - -public: - LayoutWidget(QLayout *l, QWidget *parent = nullptr) : QWidget(parent) { - setLayout(l); - } -}; diff --git a/selfdrive/ui/qt/widgets/input.cc b/selfdrive/ui/qt/widgets/input.cc deleted file mode 100644 index ae36123f7..000000000 --- a/selfdrive/ui/qt/widgets/input.cc +++ /dev/null @@ -1,355 +0,0 @@ -#include "selfdrive/ui/qt/widgets/input.h" - -#include -#include - -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/qt_window.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" - - -DialogBase::DialogBase(QWidget *parent) : QDialog(parent) { - Q_ASSERT(parent != nullptr); - parent->installEventFilter(this); - - setStyleSheet(R"( - * { - outline: none; - color: white; - font-family: Inter; - } - DialogBase { - background-color: black; - } - QPushButton { - height: 160; - font-size: 55px; - font-weight: 400; - border-radius: 10px; - color: white; - background-color: #333333; - } - QPushButton:pressed { - background-color: #444444; - } - )"); -} - -bool DialogBase::eventFilter(QObject *o, QEvent *e) { - if (o == parent() && e->type() == QEvent::Hide) { - reject(); - } - return QDialog::eventFilter(o, e); -} - -int DialogBase::exec() { - setMainWindow(this); - return QDialog::exec(); -} - -InputDialog::InputDialog(const QString &title, QWidget *parent, const QString &subtitle, bool secret) : DialogBase(parent) { - main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(50, 55, 50, 50); - main_layout->setSpacing(0); - - // build header - QHBoxLayout *header_layout = new QHBoxLayout(); - - QVBoxLayout *vlayout = new QVBoxLayout; - header_layout->addLayout(vlayout); - label = new QLabel(title, this); - label->setStyleSheet("font-size: 90px; font-weight: bold;"); - vlayout->addWidget(label, 1, Qt::AlignTop | Qt::AlignLeft); - - if (!subtitle.isEmpty()) { - sublabel = new QLabel(subtitle, this); - sublabel->setStyleSheet("font-size: 55px; font-weight: light; color: #BDBDBD;"); - vlayout->addWidget(sublabel, 1, Qt::AlignTop | Qt::AlignLeft); - } - - QPushButton* cancel_btn = new QPushButton(tr("Cancel")); - cancel_btn->setFixedSize(386, 125); - cancel_btn->setStyleSheet(R"( - QPushButton { - font-size: 48px; - border-radius: 10px; - color: #E4E4E4; - background-color: #333333; - } - QPushButton:pressed { - background-color: #444444; - } - )"); - header_layout->addWidget(cancel_btn, 0, Qt::AlignRight); - QObject::connect(cancel_btn, &QPushButton::clicked, this, &InputDialog::reject); - QObject::connect(cancel_btn, &QPushButton::clicked, this, &InputDialog::cancel); - - main_layout->addLayout(header_layout); - - // text box - main_layout->addStretch(2); - - QWidget *textbox_widget = new QWidget; - textbox_widget->setObjectName("textbox"); - QHBoxLayout *textbox_layout = new QHBoxLayout(textbox_widget); - textbox_layout->setContentsMargins(50, 0, 50, 0); - - textbox_widget->setStyleSheet(R"( - #textbox { - margin-left: 50px; - margin-right: 50px; - border-radius: 0; - border-bottom: 3px solid #BDBDBD; - } - * { - border: none; - font-size: 80px; - font-weight: light; - background-color: transparent; - } - )"); - - line = new QLineEdit(); - line->setStyleSheet("lineedit-password-character: 8226; lineedit-password-mask-delay: 1500;"); - textbox_layout->addWidget(line, 1); - - if (secret) { - eye_btn = new QPushButton(); - eye_btn->setCheckable(true); - eye_btn->setFixedSize(150, 120); - QObject::connect(eye_btn, &QPushButton::toggled, [=](bool checked) { - if (checked) { - eye_btn->setIcon(QIcon(ASSET_PATH + "icons/eye_closed.svg")); - eye_btn->setIconSize(QSize(81, 54)); - line->setEchoMode(QLineEdit::Password); - } else { - eye_btn->setIcon(QIcon(ASSET_PATH + "icons/eye_open.svg")); - eye_btn->setIconSize(QSize(81, 44)); - line->setEchoMode(QLineEdit::Normal); - } - }); - eye_btn->toggle(); - eye_btn->setChecked(false); - textbox_layout->addWidget(eye_btn); - } - - main_layout->addWidget(textbox_widget, 0, Qt::AlignBottom); - main_layout->addSpacing(25); - - k = new Keyboard(this); - QObject::connect(k, &Keyboard::emitEnter, this, &InputDialog::handleEnter); - QObject::connect(k, &Keyboard::emitBackspace, this, [=]() { - line->backspace(); - - updateMaxLengthSublabel(line->text()); - }); - QObject::connect(k, &Keyboard::emitKey, this, [=](const QString &key) { - if (line->text().length() < maxLength || maxLength == DEFAULT_MAX_LENGTH) { - line->insert(key.left(1)); - updateMaxLengthSublabel(line->text()); - } - }); - - main_layout->addWidget(k, 2, Qt::AlignBottom); -} - -QString InputDialog::getText(const QString &prompt, QWidget *parent, const QString &subtitle, - bool secret, int minLength, const QString &defaultText, int maxLength) { - InputDialog d(prompt, parent, subtitle, secret); - d.line->setText(defaultText); - d.setMinLength(minLength); - - d.setMaxLength(maxLength); - d.updateMaxLengthSublabel(defaultText); - - const int ret = d.exec(); - return ret ? d.text() : QString(); -} - -QString InputDialog::text() { - return line->text(); -} - -void InputDialog::show() { - setMainWindow(this); -} - -void InputDialog::handleEnter() { - if (line->text().length() >= minLength) { - done(QDialog::Accepted); - emitText(line->text()); - } else { - setMessage(tr("Need at least %n character(s)!", "", minLength), false); - } -} - -void InputDialog::setMessage(const QString &message, bool clearInputField) { - label->setText(message); - if (clearInputField) { - line->setText(""); - } -} - -void InputDialog::setMinLength(int length) { - minLength = length; -} - -void InputDialog::setMaxLength(int length) { - maxLength = length; -} - -void InputDialog::updateMaxLengthSublabel(const QString &text) { - if (maxLength != DEFAULT_MAX_LENGTH) { - sublabel->setText(tr("Characters: %1/%2").arg(text.length()).arg(maxLength)); - } -} - -// ConfirmationDialog - -ConfirmationDialog::ConfirmationDialog(const QString &prompt_text, const QString &confirm_text, const QString &cancel_text, - const bool rich, QWidget *parent, const bool is_long) : DialogBase(parent) { - QFrame *container = new QFrame(this); - container->setStyleSheet(R"( - QFrame { background-color: #1B1B1B; color: #C9C9C9; } - #confirm_btn { background-color: #465BEA; } - #confirm_btn:pressed { background-color: #3049F4; } - )"); - QVBoxLayout *main_layout = new QVBoxLayout(container); - main_layout->setContentsMargins(32, rich || is_long ? 32 : 120, 32, 32); - - QLabel *prompt = new QLabel(prompt_text, this); - prompt->setWordWrap(true); - prompt->setAlignment(rich ? Qt::AlignLeft : Qt::AlignHCenter); - prompt->setStyleSheet((rich ? "font-size: 42px; font-weight: light;" : "font-size: 70px; font-weight: bold;") + QString(" margin: 45px;")); - main_layout->addWidget(rich ? (QWidget*)new ScrollView(prompt, this) : (QWidget*)prompt, 1, Qt::AlignTop); - - // cancel + confirm buttons - QHBoxLayout *btn_layout = new QHBoxLayout(); - btn_layout->setSpacing(30); - main_layout->addLayout(btn_layout); - - if (cancel_text.length()) { - QPushButton* cancel_btn = new QPushButton(cancel_text); - btn_layout->addWidget(cancel_btn); - QObject::connect(cancel_btn, &QPushButton::clicked, this, &ConfirmationDialog::reject); - } - - if (confirm_text.length()) { - QPushButton* confirm_btn = new QPushButton(confirm_text); - confirm_btn->setObjectName("confirm_btn"); - btn_layout->addWidget(confirm_btn); - QObject::connect(confirm_btn, &QPushButton::clicked, this, &ConfirmationDialog::accept); - } - - QVBoxLayout *outer_layout = new QVBoxLayout(this); - int margin = rich ? 100 : 200; - outer_layout->setContentsMargins(margin, margin, margin, margin); - outer_layout->addWidget(container); -} - -bool ConfirmationDialog::alert(const QString &prompt_text, QWidget *parent, bool is_long) { - ConfirmationDialog d(prompt_text, tr("Ok"), "", false, parent, is_long); - return d.exec(); -} - -bool ConfirmationDialog::confirm(const QString &prompt_text, const QString &confirm_text, QWidget *parent) { - ConfirmationDialog d(prompt_text, confirm_text, tr("Cancel"), false, parent); - return d.exec(); -} - -bool ConfirmationDialog::rich(const QString &prompt_text, QWidget *parent) { - ConfirmationDialog d(prompt_text, tr("Ok"), "", true, parent); - return d.exec(); -} - -// MultiOptionDialog - -MultiOptionDialog::MultiOptionDialog(const QString &prompt_text, const QStringList &l, const QString ¤t, QWidget *parent) : DialogBase(parent) { - QFrame *container = new QFrame(this); - container->setStyleSheet(R"( - QFrame { background-color: #1B1B1B; } - #confirm_btn[enabled="false"] { background-color: #2B2B2B; } - #confirm_btn:enabled { background-color: #465BEA; } - #confirm_btn:enabled:pressed { background-color: #3049F4; } - )"); - - QVBoxLayout *main_layout = new QVBoxLayout(container); - main_layout->setContentsMargins(55, 50, 55, 50); - - QLabel *title = new QLabel(prompt_text, this); - title->setStyleSheet("font-size: 70px; font-weight: 500;"); - main_layout->addWidget(title, 0, Qt::AlignLeft | Qt::AlignTop); - main_layout->addSpacing(25); - - QWidget *listWidget = new QWidget(this); - QVBoxLayout *listLayout = new QVBoxLayout(listWidget); - listLayout->setSpacing(20); - listWidget->setStyleSheet(R"( - QPushButton { - height: 135; - padding: 0px 50px; - text-align: left; - font-size: 55px; - font-weight: 300; - border-radius: 10px; - background-color: #4F4F4F; - } - QPushButton:checked { background-color: #465BEA; } - )"); - - QButtonGroup *group = new QButtonGroup(listWidget); - group->setExclusive(true); - - QPushButton *confirm_btn = new QPushButton(tr("Select")); - confirm_btn->setObjectName("confirm_btn"); - confirm_btn->setEnabled(false); - - for (const QString &s : l) { - QPushButton *selectionLabel = new QPushButton(s); - selectionLabel->setCheckable(true); - selectionLabel->setChecked(s == current); - QObject::connect(selectionLabel, &QPushButton::toggled, [=](bool checked) { - if (checked) selection = s; - if (selection != current) { - confirm_btn->setEnabled(true); - } else { - confirm_btn->setEnabled(false); - } - }); - - group->addButton(selectionLabel); - listLayout->addWidget(selectionLabel); - } - // add stretch to keep buttons spaced correctly - listLayout->addStretch(1); - - ScrollView *scroll_view = new ScrollView(listWidget, this); - scroll_view->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - - main_layout->addWidget(scroll_view); - main_layout->addSpacing(35); - - // cancel + confirm buttons - QHBoxLayout *blayout = new QHBoxLayout; - main_layout->addLayout(blayout); - blayout->setSpacing(50); - - QPushButton *cancel_btn = new QPushButton(tr("Cancel")); - QObject::connect(cancel_btn, &QPushButton::clicked, this, &ConfirmationDialog::reject); - QObject::connect(confirm_btn, &QPushButton::clicked, this, &ConfirmationDialog::accept); - blayout->addWidget(cancel_btn); - blayout->addWidget(confirm_btn); - - QVBoxLayout *outer_layout = new QVBoxLayout(this); - outer_layout->setContentsMargins(50, 50, 50, 50); - outer_layout->addWidget(container); -} - -QString MultiOptionDialog::getSelection(const QString &prompt_text, const QStringList &l, const QString ¤t, QWidget *parent) { - MultiOptionDialog d(prompt_text, l, current, parent); - if (d.exec()) { - return d.selection; - } - return ""; -} diff --git a/selfdrive/ui/qt/widgets/input.h b/selfdrive/ui/qt/widgets/input.h deleted file mode 100644 index f1c1f7f8f..000000000 --- a/selfdrive/ui/qt/widgets/input.h +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -#include "selfdrive/ui/qt/widgets/keyboard.h" - -const int DEFAULT_MAX_LENGTH = 512; - -class DialogBase : public QDialog { - Q_OBJECT - -protected: - DialogBase(QWidget *parent); - bool eventFilter(QObject *o, QEvent *e) override; - -public slots: - int exec() override; -}; - -class InputDialog : public DialogBase { - Q_OBJECT - -public: - explicit InputDialog(const QString &title, QWidget *parent, const QString &subtitle = "", bool secret = false); - static QString getText(const QString &title, QWidget *parent, const QString &subtitle = "", - bool secret = false, int minLength = -1, const QString &defaultText = "", int maxLength = DEFAULT_MAX_LENGTH); - QString text(); - void setMessage(const QString &message, bool clearInputField = true); - void setMinLength(int length); - void show(); - - void setMaxLength(int length); - -private: - int minLength; - QLineEdit *line; - Keyboard *k; - QLabel *label; - QLabel *sublabel; - QVBoxLayout *main_layout; - QPushButton *eye_btn; - - void updateMaxLengthSublabel(const QString &text); - - int maxLength; - -private slots: - void handleEnter(); - -signals: - void cancel(); - void emitText(const QString &text); -}; - -class ConfirmationDialog : public DialogBase { - Q_OBJECT - -public: - explicit ConfirmationDialog(const QString &prompt_text, const QString &confirm_text, - const QString &cancel_text, const bool rich, QWidget* parent, const bool is_long=false); - static bool alert(const QString &prompt_text, QWidget *parent, bool isLong=false); - static bool confirm(const QString &prompt_text, const QString &confirm_text, QWidget *parent); - static bool rich(const QString &prompt_text, QWidget *parent); -}; - -class MultiOptionDialog : public DialogBase { - Q_OBJECT - -public: - explicit MultiOptionDialog(const QString &prompt_text, const QStringList &l, const QString ¤t, QWidget *parent); - static QString getSelection(const QString &prompt_text, const QStringList &l, const QString ¤t, QWidget *parent); - QString selection; -}; diff --git a/selfdrive/ui/qt/widgets/keyboard.cc b/selfdrive/ui/qt/widgets/keyboard.cc deleted file mode 100644 index 9ead27b8d..000000000 --- a/selfdrive/ui/qt/widgets/keyboard.cc +++ /dev/null @@ -1,182 +0,0 @@ -#include "selfdrive/ui/qt/widgets/keyboard.h" - -#include - -#include -#include -#include -#include -#include - -const QString BACKSPACE_KEY = "⌫"; -const QString ENTER_KEY = "→"; -const QString SHIFT_KEY = "⇧"; -const QString CAPS_LOCK_KEY = "⇪"; - -const QMap KEY_STRETCH = {{" ", 3}, {ENTER_KEY, 2}}; - -const QStringList CONTROL_BUTTONS = {SHIFT_KEY, CAPS_LOCK_KEY, "ABC", "#+=", "123", BACKSPACE_KEY, ENTER_KEY}; - -const float key_spacing_vertical = 20; -const float key_spacing_horizontal = 15; - -KeyButton::KeyButton(const QString &text, QWidget *parent) : QPushButton(text, parent) { - setAttribute(Qt::WA_AcceptTouchEvents); - setFocusPolicy(Qt::NoFocus); -} - -bool KeyButton::event(QEvent *event) { - if (event->type() == QEvent::TouchBegin || event->type() == QEvent::TouchEnd) { - QTouchEvent *touchEvent = static_cast(event); - if (!touchEvent->touchPoints().empty()) { - const QEvent::Type mouseType = event->type() == QEvent::TouchBegin ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease; - QMouseEvent mouseEvent(mouseType, touchEvent->touchPoints().front().pos(), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); - QPushButton::event(&mouseEvent); - event->accept(); - parentWidget()->update(); - return true; - } - } - return QPushButton::event(event); -} - -KeyboardLayout::KeyboardLayout(QWidget* parent, const std::vector>& layout) : QWidget(parent) { - QVBoxLayout* main_layout = new QVBoxLayout(this); - main_layout->setMargin(0); - main_layout->setSpacing(0); - - QButtonGroup* btn_group = new QButtonGroup(this); - QObject::connect(btn_group, SIGNAL(buttonClicked(QAbstractButton*)), parent, SLOT(handleButton(QAbstractButton*))); - - for (const auto &s : layout) { - QHBoxLayout *hlayout = new QHBoxLayout; - hlayout->setSpacing(0); - - if (main_layout->count() == 1) { - hlayout->addSpacing(90); - } - - for (const QString &p : s) { - KeyButton* btn = new KeyButton(p); - if (p == BACKSPACE_KEY) { - btn->setAutoRepeat(true); - } else if (p == ENTER_KEY) { - btn->setStyleSheet(R"( - QPushButton { - background-color: #465BEA; - } - QPushButton:pressed { - background-color: #444444; - } - )"); - } - btn->setFixedHeight(135 + key_spacing_vertical); - btn_group->addButton(btn); - hlayout->addWidget(btn, KEY_STRETCH.value(p, 1)); - } - - if (main_layout->count() == 1) { - hlayout->addSpacing(90); - } - - main_layout->addLayout(hlayout); - } - - setStyleSheet(QString(R"( - QPushButton { - font-size: 75px; - margin-left: %1px; - margin-right: %1px; - margin-top: %2px; - margin-bottom: %2px; - padding: 0px; - border-radius: 10px; - color: #dddddd; - background-color: #444444; - } - QPushButton:pressed { - background-color: #333333; - } - )").arg(key_spacing_vertical / 2).arg(key_spacing_horizontal / 2)); -} - -Keyboard::Keyboard(QWidget *parent) : QFrame(parent) { - main_layout = new QStackedLayout(this); - main_layout->setMargin(0); - - // lowercase - std::vector> lowercase = { - {"q", "w", "e", "r", "t", "y", "u", "i", "o", "p"}, - {"a", "s", "d", "f", "g", "h", "j", "k", "l"}, - {SHIFT_KEY, "z", "x", "c", "v", "b", "n", "m", BACKSPACE_KEY}, - {"123", "/", "-", " ", ".", ENTER_KEY}, - }; - main_layout->addWidget(new KeyboardLayout(this, lowercase)); - - // uppercase - std::vector> uppercase = { - {"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"}, - {"A", "S", "D", "F", "G", "H", "J", "K", "L"}, - {SHIFT_KEY, "Z", "X", "C", "V", "B", "N", "M", BACKSPACE_KEY}, - {"123", "/", "-", " ", ".", ENTER_KEY}, - }; - main_layout->addWidget(new KeyboardLayout(this, uppercase)); - - // numbers + specials - std::vector> numbers = { - {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}, - {"-", "/", ":", ";", "(", ")", "$", "&&", "@", "\""}, - {"#+=", ".", ",", "?", "!", "`", BACKSPACE_KEY}, - {"ABC", " ", ".", ENTER_KEY}, - }; - main_layout->addWidget(new KeyboardLayout(this, numbers)); - - // extra specials - std::vector> specials = { - {"[", "]", "{", "}", "#", "%", "^", "*", "+", "="}, - {"_", "\\", "|", "~", "<", ">", "€", "£", "Â¥", "•"}, - {"123", ".", ",", "?", "!", "'", BACKSPACE_KEY}, - {"ABC", " ", ".", ENTER_KEY}, - }; - main_layout->addWidget(new KeyboardLayout(this, specials)); - - main_layout->setCurrentIndex(0); -} - -void Keyboard::handleCapsPress() { - shift_state = (shift_state + 1) % 3; - bool is_uppercase = shift_state > 0; - main_layout->setCurrentIndex(is_uppercase); - - for (KeyButton* btn : main_layout->currentWidget()->findChildren()) { - if (btn->text() == SHIFT_KEY || btn->text() == CAPS_LOCK_KEY) { - btn->setText(shift_state == 2 ? CAPS_LOCK_KEY : SHIFT_KEY); - btn->setStyleSheet(is_uppercase ? "background-color: #465BEA;" : ""); - } - } -} - -void Keyboard::handleButton(QAbstractButton* btn) { - const QString &key = btn->text(); - if (CONTROL_BUTTONS.contains(key)) { - if (key == "ABC" || key == "123" || key == "#+=") { - int index = (key == "ABC") ? 0 : (key == "123" ? 2 : 3); - main_layout->setCurrentIndex(index); - shift_state = 0; - } else if (key == SHIFT_KEY || key == CAPS_LOCK_KEY) { - handleCapsPress(); - } else if (key == ENTER_KEY) { - main_layout->setCurrentIndex(0); - shift_state = 0; - emit emitEnter(); - } else if (key == BACKSPACE_KEY) { - emit emitBackspace(); - } - } else { - if (shift_state == 1 && "A" <= key && key <= "Z") { - main_layout->setCurrentIndex(0); - shift_state = 0; - } - emit emitKey(key); - } -} diff --git a/selfdrive/ui/qt/widgets/keyboard.h b/selfdrive/ui/qt/widgets/keyboard.h deleted file mode 100644 index e61617283..000000000 --- a/selfdrive/ui/qt/widgets/keyboard.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once - -#include - -#include -#include -#include - -class KeyButton : public QPushButton { - Q_OBJECT - -public: - KeyButton(const QString &text, QWidget *parent = 0); - bool event(QEvent *event) override; -}; - -class KeyboardLayout : public QWidget { - Q_OBJECT - -public: - explicit KeyboardLayout(QWidget* parent, const std::vector>& layout); -}; - -class Keyboard : public QFrame { - Q_OBJECT - -public: - explicit Keyboard(QWidget *parent = 0); - -private: - QStackedLayout* main_layout; - int shift_state = 0; - -private slots: - void handleButton(QAbstractButton* m_button); - void handleCapsPress(); - -signals: - void emitKey(const QString &s); - void emitBackspace(); - void emitEnter(); -}; diff --git a/selfdrive/ui/qt/widgets/moc_cameraview.cc b/selfdrive/ui/qt/widgets/moc_cameraview.cc deleted file mode 100644 index 8410583bb..000000000 --- a/selfdrive/ui/qt/widgets/moc_cameraview.cc +++ /dev/null @@ -1,230 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'cameraview.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "cameraview.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'cameraview.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_CameraWidget_t { - QByteArrayData data[13]; - char stringdata0[214]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_CameraWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_CameraWidget_t qt_meta_stringdata_CameraWidget = { - { -QT_MOC_LITERAL(0, 0, 12), // "CameraWidget" -QT_MOC_LITERAL(1, 13, 7), // "clicked" -QT_MOC_LITERAL(2, 21, 0), // "" -QT_MOC_LITERAL(3, 22, 19), // "vipcThreadConnected" -QT_MOC_LITERAL(4, 42, 16), // "VisionIpcClient*" -QT_MOC_LITERAL(5, 59, 23), // "vipcThreadFrameReceived" -QT_MOC_LITERAL(6, 83, 27), // "vipcAvailableStreamsUpdated" -QT_MOC_LITERAL(7, 111, 26), // "std::set" -QT_MOC_LITERAL(8, 138, 13), // "vipcConnected" -QT_MOC_LITERAL(9, 152, 11), // "vipc_client" -QT_MOC_LITERAL(10, 164, 17), // "vipcFrameReceived" -QT_MOC_LITERAL(11, 182, 23), // "availableStreamsUpdated" -QT_MOC_LITERAL(12, 206, 7) // "streams" - - }, - "CameraWidget\0clicked\0\0vipcThreadConnected\0" - "VisionIpcClient*\0vipcThreadFrameReceived\0" - "vipcAvailableStreamsUpdated\0" - "std::set\0vipcConnected\0" - "vipc_client\0vipcFrameReceived\0" - "availableStreamsUpdated\0streams" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_CameraWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 7, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 4, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 49, 2, 0x06 /* Public */, - 3, 1, 50, 2, 0x06 /* Public */, - 5, 0, 53, 2, 0x06 /* Public */, - 6, 1, 54, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 8, 1, 57, 2, 0x09 /* Protected */, - 10, 0, 60, 2, 0x09 /* Protected */, - 11, 1, 61, 2, 0x09 /* Protected */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, 0x80000000 | 4, 2, - QMetaType::Void, - QMetaType::Void, 0x80000000 | 7, 2, - - // slots: parameters - QMetaType::Void, 0x80000000 | 4, 9, - QMetaType::Void, - QMetaType::Void, 0x80000000 | 7, 12, - - 0 // eod -}; - -void CameraWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->clicked(); break; - case 1: _t->vipcThreadConnected((*reinterpret_cast< VisionIpcClient*(*)>(_a[1]))); break; - case 2: _t->vipcThreadFrameReceived(); break; - case 3: _t->vipcAvailableStreamsUpdated((*reinterpret_cast< std::set(*)>(_a[1]))); break; - case 4: _t->vipcConnected((*reinterpret_cast< VisionIpcClient*(*)>(_a[1]))); break; - case 5: _t->vipcFrameReceived(); break; - case 6: _t->availableStreamsUpdated((*reinterpret_cast< std::set(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - switch (_id) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 3: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< std::set >(); break; - } - break; - case 6: - switch (*reinterpret_cast(_a[1])) { - default: *reinterpret_cast(_a[0]) = -1; break; - case 0: - *reinterpret_cast(_a[0]) = qRegisterMetaType< std::set >(); break; - } - break; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (CameraWidget::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&CameraWidget::clicked)) { - *result = 0; - return; - } - } - { - using _t = void (CameraWidget::*)(VisionIpcClient * ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&CameraWidget::vipcThreadConnected)) { - *result = 1; - return; - } - } - { - using _t = void (CameraWidget::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&CameraWidget::vipcThreadFrameReceived)) { - *result = 2; - return; - } - } - { - using _t = void (CameraWidget::*)(std::set ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&CameraWidget::vipcAvailableStreamsUpdated)) { - *result = 3; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject CameraWidget::staticMetaObject = { { - &QOpenGLWidget::staticMetaObject, - qt_meta_stringdata_CameraWidget.data, - qt_meta_data_CameraWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *CameraWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *CameraWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_CameraWidget.stringdata0)) - return static_cast(this); - if (!strcmp(_clname, "QOpenGLFunctions")) - return static_cast< QOpenGLFunctions*>(this); - return QOpenGLWidget::qt_metacast(_clname); -} - -int CameraWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QOpenGLWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 7) - qt_static_metacall(this, _c, _id, _a); - _id -= 7; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 7) - qt_static_metacall(this, _c, _id, _a); - _id -= 7; - } - return _id; -} - -// SIGNAL 0 -void CameraWidget::clicked() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void CameraWidget::vipcThreadConnected(VisionIpcClient * _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, _a); -} - -// SIGNAL 2 -void CameraWidget::vipcThreadFrameReceived() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} - -// SIGNAL 3 -void CameraWidget::vipcAvailableStreamsUpdated(std::set _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 3, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_controls.cc b/selfdrive/ui/qt/widgets/moc_controls.cc deleted file mode 100644 index d4d33cd2b..000000000 --- a/selfdrive/ui/qt/widgets/moc_controls.cc +++ /dev/null @@ -1,956 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'controls.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "controls.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'controls.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ElidedLabel_t { - QByteArrayData data[3]; - char stringdata0[21]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ElidedLabel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ElidedLabel_t qt_meta_stringdata_ElidedLabel = { - { -QT_MOC_LITERAL(0, 0, 11), // "ElidedLabel" -QT_MOC_LITERAL(1, 12, 7), // "clicked" -QT_MOC_LITERAL(2, 20, 0) // "" - - }, - "ElidedLabel\0clicked\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ElidedLabel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void ElidedLabel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->clicked(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (ElidedLabel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ElidedLabel::clicked)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ElidedLabel::staticMetaObject = { { - &QLabel::staticMetaObject, - qt_meta_stringdata_ElidedLabel.data, - qt_meta_data_ElidedLabel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ElidedLabel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ElidedLabel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ElidedLabel.stringdata0)) - return static_cast(this); - return QLabel::qt_metacast(_clname); -} - -int ElidedLabel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QLabel::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void ElidedLabel::clicked() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_AbstractControl_t { - QByteArrayData data[5]; - char stringdata0[75]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_AbstractControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_AbstractControl_t qt_meta_stringdata_AbstractControl = { - { -QT_MOC_LITERAL(0, 0, 15), // "AbstractControl" -QT_MOC_LITERAL(1, 16, 20), // "showDescriptionEvent" -QT_MOC_LITERAL(2, 37, 0), // "" -QT_MOC_LITERAL(3, 38, 20), // "hideDescriptionEvent" -QT_MOC_LITERAL(4, 59, 15) // "showDescription" - - }, - "AbstractControl\0showDescriptionEvent\0" - "\0hideDescriptionEvent\0showDescription" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_AbstractControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 29, 2, 0x06 /* Public */, - 3, 0, 30, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 4, 0, 31, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void AbstractControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->showDescriptionEvent(); break; - case 1: _t->hideDescriptionEvent(); break; - case 2: _t->showDescription(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (AbstractControl::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&AbstractControl::showDescriptionEvent)) { - *result = 0; - return; - } - } - { - using _t = void (AbstractControl::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&AbstractControl::hideDescriptionEvent)) { - *result = 1; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject AbstractControl::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_AbstractControl.data, - qt_meta_data_AbstractControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *AbstractControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *AbstractControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_AbstractControl.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int AbstractControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void AbstractControl::showDescriptionEvent() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void AbstractControl::hideDescriptionEvent() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -struct qt_meta_stringdata_LabelControl_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_LabelControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_LabelControl_t qt_meta_stringdata_LabelControl = { - { -QT_MOC_LITERAL(0, 0, 12) // "LabelControl" - - }, - "LabelControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_LabelControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void LabelControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject LabelControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_LabelControl.data, - qt_meta_data_LabelControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *LabelControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *LabelControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_LabelControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int LabelControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_ButtonControl_t { - QByteArrayData data[5]; - char stringdata0[42]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ButtonControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ButtonControl_t qt_meta_stringdata_ButtonControl = { - { -QT_MOC_LITERAL(0, 0, 13), // "ButtonControl" -QT_MOC_LITERAL(1, 14, 7), // "clicked" -QT_MOC_LITERAL(2, 22, 0), // "" -QT_MOC_LITERAL(3, 23, 10), // "setEnabled" -QT_MOC_LITERAL(4, 34, 7) // "enabled" - - }, - "ButtonControl\0clicked\0\0setEnabled\0" - "enabled" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ButtonControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 24, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 3, 1, 25, 2, 0x0a /* Public */, - - // signals: parameters - QMetaType::Void, - - // slots: parameters - QMetaType::Void, QMetaType::Bool, 4, - - 0 // eod -}; - -void ButtonControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->clicked(); break; - case 1: _t->setEnabled((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (ButtonControl::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ButtonControl::clicked)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject ButtonControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_ButtonControl.data, - qt_meta_data_ButtonControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ButtonControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ButtonControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ButtonControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int ButtonControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void ButtonControl::clicked() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_ToggleControl_t { - QByteArrayData data[4]; - char stringdata0[35]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ToggleControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ToggleControl_t qt_meta_stringdata_ToggleControl = { - { -QT_MOC_LITERAL(0, 0, 13), // "ToggleControl" -QT_MOC_LITERAL(1, 14, 13), // "toggleFlipped" -QT_MOC_LITERAL(2, 28, 0), // "" -QT_MOC_LITERAL(3, 29, 5) // "state" - - }, - "ToggleControl\0toggleFlipped\0\0state" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ToggleControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Bool, 3, - - 0 // eod -}; - -void ToggleControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->toggleFlipped((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (ToggleControl::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&ToggleControl::toggleFlipped)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject ToggleControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_ToggleControl.data, - qt_meta_data_ToggleControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ToggleControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ToggleControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ToggleControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int ToggleControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void ToggleControl::toggleFlipped(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_ParamControl_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ParamControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ParamControl_t qt_meta_stringdata_ParamControl = { - { -QT_MOC_LITERAL(0, 0, 12) // "ParamControl" - - }, - "ParamControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ParamControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ParamControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ParamControl::staticMetaObject = { { - &ToggleControl::staticMetaObject, - qt_meta_stringdata_ParamControl.data, - qt_meta_data_ParamControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ParamControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ParamControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ParamControl.stringdata0)) - return static_cast(this); - return ToggleControl::qt_metacast(_clname); -} - -int ParamControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ToggleControl::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_MultiButtonControl_t { - QByteArrayData data[4]; - char stringdata0[37]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_MultiButtonControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_MultiButtonControl_t qt_meta_stringdata_MultiButtonControl = { - { -QT_MOC_LITERAL(0, 0, 18), // "MultiButtonControl" -QT_MOC_LITERAL(1, 19, 13), // "buttonClicked" -QT_MOC_LITERAL(2, 33, 0), // "" -QT_MOC_LITERAL(3, 34, 2) // "id" - - }, - "MultiButtonControl\0buttonClicked\0\0id" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_MultiButtonControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, 3, - - 0 // eod -}; - -void MultiButtonControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->buttonClicked((*reinterpret_cast< int(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (MultiButtonControl::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&MultiButtonControl::buttonClicked)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject MultiButtonControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_MultiButtonControl.data, - qt_meta_data_MultiButtonControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *MultiButtonControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *MultiButtonControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_MultiButtonControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int MultiButtonControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void MultiButtonControl::buttonClicked(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_ButtonParamControl_t { - QByteArrayData data[1]; - char stringdata0[19]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ButtonParamControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ButtonParamControl_t qt_meta_stringdata_ButtonParamControl = { - { -QT_MOC_LITERAL(0, 0, 18) // "ButtonParamControl" - - }, - "ButtonParamControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ButtonParamControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ButtonParamControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ButtonParamControl::staticMetaObject = { { - &MultiButtonControl::staticMetaObject, - qt_meta_stringdata_ButtonParamControl.data, - qt_meta_data_ButtonParamControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ButtonParamControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ButtonParamControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ButtonParamControl.stringdata0)) - return static_cast(this); - return MultiButtonControl::qt_metacast(_clname); -} - -int ButtonParamControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = MultiButtonControl::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_ListWidget_t { - QByteArrayData data[1]; - char stringdata0[11]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ListWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ListWidget_t qt_meta_stringdata_ListWidget = { - { -QT_MOC_LITERAL(0, 0, 10) // "ListWidget" - - }, - "ListWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ListWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ListWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ListWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_ListWidget.data, - qt_meta_data_ListWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ListWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ListWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ListWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int ListWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_LayoutWidget_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_LayoutWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_LayoutWidget_t qt_meta_stringdata_LayoutWidget = { - { -QT_MOC_LITERAL(0, 0, 12) // "LayoutWidget" - - }, - "LayoutWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_LayoutWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void LayoutWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject LayoutWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_LayoutWidget.data, - qt_meta_data_LayoutWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *LayoutWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *LayoutWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_LayoutWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int LayoutWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_input.cc b/selfdrive/ui/qt/widgets/moc_input.cc deleted file mode 100644 index e1881853e..000000000 --- a/selfdrive/ui/qt/widgets/moc_input.cc +++ /dev/null @@ -1,394 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'input.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "input.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'input.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DialogBase_t { - QByteArrayData data[3]; - char stringdata0[17]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DialogBase_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DialogBase_t qt_meta_stringdata_DialogBase = { - { -QT_MOC_LITERAL(0, 0, 10), // "DialogBase" -QT_MOC_LITERAL(1, 11, 4), // "exec" -QT_MOC_LITERAL(2, 16, 0) // "" - - }, - "DialogBase\0exec\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DialogBase[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x0a /* Public */, - - // slots: parameters - QMetaType::Int, - - 0 // eod -}; - -void DialogBase::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: { int _r = _t->exec(); - if (_a[0]) *reinterpret_cast< int*>(_a[0]) = std::move(_r); } break; - default: ; - } - } -} - -QT_INIT_METAOBJECT const QMetaObject DialogBase::staticMetaObject = { { - &QDialog::staticMetaObject, - qt_meta_stringdata_DialogBase.data, - qt_meta_data_DialogBase, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DialogBase::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DialogBase::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DialogBase.stringdata0)) - return static_cast(this); - return QDialog::qt_metacast(_clname); -} - -int DialogBase::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QDialog::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} -struct qt_meta_stringdata_InputDialog_t { - QByteArrayData data[6]; - char stringdata0[46]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_InputDialog_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_InputDialog_t qt_meta_stringdata_InputDialog = { - { -QT_MOC_LITERAL(0, 0, 11), // "InputDialog" -QT_MOC_LITERAL(1, 12, 6), // "cancel" -QT_MOC_LITERAL(2, 19, 0), // "" -QT_MOC_LITERAL(3, 20, 8), // "emitText" -QT_MOC_LITERAL(4, 29, 4), // "text" -QT_MOC_LITERAL(5, 34, 11) // "handleEnter" - - }, - "InputDialog\0cancel\0\0emitText\0text\0" - "handleEnter" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_InputDialog[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 29, 2, 0x06 /* Public */, - 3, 1, 30, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 5, 0, 33, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, QMetaType::QString, 4, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void InputDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->cancel(); break; - case 1: _t->emitText((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 2: _t->handleEnter(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (InputDialog::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&InputDialog::cancel)) { - *result = 0; - return; - } - } - { - using _t = void (InputDialog::*)(const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&InputDialog::emitText)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject InputDialog::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_InputDialog.data, - qt_meta_data_InputDialog, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *InputDialog::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *InputDialog::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_InputDialog.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int InputDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void InputDialog::cancel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void InputDialog::emitText(const QString & _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, _a); -} -struct qt_meta_stringdata_ConfirmationDialog_t { - QByteArrayData data[1]; - char stringdata0[19]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ConfirmationDialog_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ConfirmationDialog_t qt_meta_stringdata_ConfirmationDialog = { - { -QT_MOC_LITERAL(0, 0, 18) // "ConfirmationDialog" - - }, - "ConfirmationDialog" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ConfirmationDialog[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ConfirmationDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ConfirmationDialog::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_ConfirmationDialog.data, - qt_meta_data_ConfirmationDialog, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ConfirmationDialog::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ConfirmationDialog::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ConfirmationDialog.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int ConfirmationDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_MultiOptionDialog_t { - QByteArrayData data[1]; - char stringdata0[18]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_MultiOptionDialog_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_MultiOptionDialog_t qt_meta_stringdata_MultiOptionDialog = { - { -QT_MOC_LITERAL(0, 0, 17) // "MultiOptionDialog" - - }, - "MultiOptionDialog" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_MultiOptionDialog[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void MultiOptionDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject MultiOptionDialog::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_MultiOptionDialog.data, - qt_meta_data_MultiOptionDialog, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *MultiOptionDialog::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *MultiOptionDialog::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_MultiOptionDialog.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int MultiOptionDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_keyboard.cc b/selfdrive/ui/qt/widgets/moc_keyboard.cc deleted file mode 100644 index b3542dc2c..000000000 --- a/selfdrive/ui/qt/widgets/moc_keyboard.cc +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'keyboard.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "keyboard.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'keyboard.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_KeyButton_t { - QByteArrayData data[1]; - char stringdata0[10]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_KeyButton_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_KeyButton_t qt_meta_stringdata_KeyButton = { - { -QT_MOC_LITERAL(0, 0, 9) // "KeyButton" - - }, - "KeyButton" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_KeyButton[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void KeyButton::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject KeyButton::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_KeyButton.data, - qt_meta_data_KeyButton, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *KeyButton::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *KeyButton::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_KeyButton.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int KeyButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_KeyboardLayout_t { - QByteArrayData data[1]; - char stringdata0[15]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_KeyboardLayout_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_KeyboardLayout_t qt_meta_stringdata_KeyboardLayout = { - { -QT_MOC_LITERAL(0, 0, 14) // "KeyboardLayout" - - }, - "KeyboardLayout" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_KeyboardLayout[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void KeyboardLayout::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject KeyboardLayout::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_KeyboardLayout.data, - qt_meta_data_KeyboardLayout, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *KeyboardLayout::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *KeyboardLayout::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_KeyboardLayout.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int KeyboardLayout::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_Keyboard_t { - QByteArrayData data[10]; - char stringdata0[99]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Keyboard_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Keyboard_t qt_meta_stringdata_Keyboard = { - { -QT_MOC_LITERAL(0, 0, 8), // "Keyboard" -QT_MOC_LITERAL(1, 9, 7), // "emitKey" -QT_MOC_LITERAL(2, 17, 0), // "" -QT_MOC_LITERAL(3, 18, 1), // "s" -QT_MOC_LITERAL(4, 20, 13), // "emitBackspace" -QT_MOC_LITERAL(5, 34, 9), // "emitEnter" -QT_MOC_LITERAL(6, 44, 12), // "handleButton" -QT_MOC_LITERAL(7, 57, 16), // "QAbstractButton*" -QT_MOC_LITERAL(8, 74, 8), // "m_button" -QT_MOC_LITERAL(9, 83, 15) // "handleCapsPress" - - }, - "Keyboard\0emitKey\0\0s\0emitBackspace\0" - "emitEnter\0handleButton\0QAbstractButton*\0" - "m_button\0handleCapsPress" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Keyboard[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 5, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 39, 2, 0x06 /* Public */, - 4, 0, 42, 2, 0x06 /* Public */, - 5, 0, 43, 2, 0x06 /* Public */, - - // slots: name, argc, parameters, tag, flags - 6, 1, 44, 2, 0x08 /* Private */, - 9, 0, 47, 2, 0x08 /* Private */, - - // signals: parameters - QMetaType::Void, QMetaType::QString, 3, - QMetaType::Void, - QMetaType::Void, - - // slots: parameters - QMetaType::Void, 0x80000000 | 7, 8, - QMetaType::Void, - - 0 // eod -}; - -void Keyboard::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->emitKey((*reinterpret_cast< const QString(*)>(_a[1]))); break; - case 1: _t->emitBackspace(); break; - case 2: _t->emitEnter(); break; - case 3: _t->handleButton((*reinterpret_cast< QAbstractButton*(*)>(_a[1]))); break; - case 4: _t->handleCapsPress(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (Keyboard::*)(const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Keyboard::emitKey)) { - *result = 0; - return; - } - } - { - using _t = void (Keyboard::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Keyboard::emitBackspace)) { - *result = 1; - return; - } - } - { - using _t = void (Keyboard::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Keyboard::emitEnter)) { - *result = 2; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject Keyboard::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_Keyboard.data, - qt_meta_data_Keyboard, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *Keyboard::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Keyboard::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_Keyboard.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int Keyboard::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 5) - qt_static_metacall(this, _c, _id, _a); - _id -= 5; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 5) - *reinterpret_cast(_a[0]) = -1; - _id -= 5; - } - return _id; -} - -// SIGNAL 0 -void Keyboard::emitKey(const QString & _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void Keyboard::emitBackspace() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} - -// SIGNAL 2 -void Keyboard::emitEnter() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_offroad_alerts.cc b/selfdrive/ui/qt/widgets/moc_offroad_alerts.cc deleted file mode 100644 index e667313d5..000000000 --- a/selfdrive/ui/qt/widgets/moc_offroad_alerts.cc +++ /dev/null @@ -1,273 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'offroad_alerts.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "offroad_alerts.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'offroad_alerts.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_AbstractAlert_t { - QByteArrayData data[3]; - char stringdata0[23]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_AbstractAlert_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_AbstractAlert_t qt_meta_stringdata_AbstractAlert = { - { -QT_MOC_LITERAL(0, 0, 13), // "AbstractAlert" -QT_MOC_LITERAL(1, 14, 7), // "dismiss" -QT_MOC_LITERAL(2, 22, 0) // "" - - }, - "AbstractAlert\0dismiss\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_AbstractAlert[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void AbstractAlert::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->dismiss(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (AbstractAlert::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&AbstractAlert::dismiss)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject AbstractAlert::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_AbstractAlert.data, - qt_meta_data_AbstractAlert, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *AbstractAlert::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *AbstractAlert::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_AbstractAlert.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int AbstractAlert::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void AbstractAlert::dismiss() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_UpdateAlert_t { - QByteArrayData data[1]; - char stringdata0[12]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_UpdateAlert_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_UpdateAlert_t qt_meta_stringdata_UpdateAlert = { - { -QT_MOC_LITERAL(0, 0, 11) // "UpdateAlert" - - }, - "UpdateAlert" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_UpdateAlert[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void UpdateAlert::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject UpdateAlert::staticMetaObject = { { - &AbstractAlert::staticMetaObject, - qt_meta_stringdata_UpdateAlert.data, - qt_meta_data_UpdateAlert, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *UpdateAlert::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *UpdateAlert::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_UpdateAlert.stringdata0)) - return static_cast(this); - return AbstractAlert::qt_metacast(_clname); -} - -int UpdateAlert::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractAlert::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_OffroadAlert_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_OffroadAlert_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_OffroadAlert_t qt_meta_stringdata_OffroadAlert = { - { -QT_MOC_LITERAL(0, 0, 12) // "OffroadAlert" - - }, - "OffroadAlert" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_OffroadAlert[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void OffroadAlert::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject OffroadAlert::staticMetaObject = { { - &AbstractAlert::staticMetaObject, - qt_meta_stringdata_OffroadAlert.data, - qt_meta_data_OffroadAlert, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *OffroadAlert::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *OffroadAlert::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_OffroadAlert.stringdata0)) - return static_cast(this); - return AbstractAlert::qt_metacast(_clname); -} - -int OffroadAlert::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractAlert::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_prime.cc b/selfdrive/ui/qt/widgets/moc_prime.cc deleted file mode 100644 index d75c5771e..000000000 --- a/selfdrive/ui/qt/widgets/moc_prime.cc +++ /dev/null @@ -1,445 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'prime.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "prime.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'prime.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_PairingQRWidget_t { - QByteArrayData data[3]; - char stringdata0[25]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_PairingQRWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_PairingQRWidget_t qt_meta_stringdata_PairingQRWidget = { - { -QT_MOC_LITERAL(0, 0, 15), // "PairingQRWidget" -QT_MOC_LITERAL(1, 16, 7), // "refresh" -QT_MOC_LITERAL(2, 24, 0) // "" - - }, - "PairingQRWidget\0refresh\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_PairingQRWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void PairingQRWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->refresh(); break; - default: ; - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject PairingQRWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_PairingQRWidget.data, - qt_meta_data_PairingQRWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *PairingQRWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *PairingQRWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_PairingQRWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int PairingQRWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} -struct qt_meta_stringdata_PairingPopup_t { - QByteArrayData data[1]; - char stringdata0[13]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_PairingPopup_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_PairingPopup_t qt_meta_stringdata_PairingPopup = { - { -QT_MOC_LITERAL(0, 0, 12) // "PairingPopup" - - }, - "PairingPopup" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_PairingPopup[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void PairingPopup::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject PairingPopup::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_PairingPopup.data, - qt_meta_data_PairingPopup, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *PairingPopup::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *PairingPopup::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_PairingPopup.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int PairingPopup::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_PrimeUserWidget_t { - QByteArrayData data[1]; - char stringdata0[16]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_PrimeUserWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_PrimeUserWidget_t qt_meta_stringdata_PrimeUserWidget = { - { -QT_MOC_LITERAL(0, 0, 15) // "PrimeUserWidget" - - }, - "PrimeUserWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_PrimeUserWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void PrimeUserWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject PrimeUserWidget::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_PrimeUserWidget.data, - qt_meta_data_PrimeUserWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *PrimeUserWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *PrimeUserWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_PrimeUserWidget.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int PrimeUserWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_PrimeAdWidget_t { - QByteArrayData data[1]; - char stringdata0[14]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_PrimeAdWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_PrimeAdWidget_t qt_meta_stringdata_PrimeAdWidget = { - { -QT_MOC_LITERAL(0, 0, 13) // "PrimeAdWidget" - - }, - "PrimeAdWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_PrimeAdWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void PrimeAdWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject PrimeAdWidget::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_PrimeAdWidget.data, - qt_meta_data_PrimeAdWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *PrimeAdWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *PrimeAdWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_PrimeAdWidget.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int PrimeAdWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_SetupWidget_t { - QByteArrayData data[5]; - char stringdata0[38]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_SetupWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_SetupWidget_t qt_meta_stringdata_SetupWidget = { - { -QT_MOC_LITERAL(0, 0, 11), // "SetupWidget" -QT_MOC_LITERAL(1, 12, 12), // "openSettings" -QT_MOC_LITERAL(2, 25, 0), // "" -QT_MOC_LITERAL(3, 26, 5), // "index" -QT_MOC_LITERAL(4, 32, 5) // "param" - - }, - "SetupWidget\0openSettings\0\0index\0param" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_SetupWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 2, 29, 2, 0x06 /* Public */, - 1, 1, 34, 2, 0x26 /* Public | MethodCloned */, - 1, 0, 37, 2, 0x26 /* Public | MethodCloned */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, QMetaType::QString, 3, 4, - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, - - 0 // eod -}; - -void SetupWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSettings((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; - case 1: _t->openSettings((*reinterpret_cast< int(*)>(_a[1]))); break; - case 2: _t->openSettings(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (SetupWidget::*)(int , const QString & ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&SetupWidget::openSettings)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject SetupWidget::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_SetupWidget.data, - qt_meta_data_SetupWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *SetupWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *SetupWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_SetupWidget.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int SetupWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void SetupWidget::openSettings(int _t1, const QString & _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_scrollview.cc b/selfdrive/ui/qt/widgets/moc_scrollview.cc deleted file mode 100644 index f5fd143eb..000000000 --- a/selfdrive/ui/qt/widgets/moc_scrollview.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'scrollview.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "scrollview.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'scrollview.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ScrollView_t { - QByteArrayData data[1]; - char stringdata0[11]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ScrollView_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ScrollView_t qt_meta_stringdata_ScrollView = { - { -QT_MOC_LITERAL(0, 0, 10) // "ScrollView" - - }, - "ScrollView" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ScrollView[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ScrollView::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ScrollView::staticMetaObject = { { - &QScrollArea::staticMetaObject, - qt_meta_stringdata_ScrollView.data, - qt_meta_data_ScrollView, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ScrollView::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ScrollView::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ScrollView.stringdata0)) - return static_cast(this); - return QScrollArea::qt_metacast(_clname); -} - -int ScrollView::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QScrollArea::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_ssh_keys.cc b/selfdrive/ui/qt/widgets/moc_ssh_keys.cc deleted file mode 100644 index be700f923..000000000 --- a/selfdrive/ui/qt/widgets/moc_ssh_keys.cc +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'ssh_keys.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "ssh_keys.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'ssh_keys.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_SshToggle_t { - QByteArrayData data[1]; - char stringdata0[10]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_SshToggle_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_SshToggle_t qt_meta_stringdata_SshToggle = { - { -QT_MOC_LITERAL(0, 0, 9) // "SshToggle" - - }, - "SshToggle" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_SshToggle[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void SshToggle::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject SshToggle::staticMetaObject = { { - &ToggleControl::staticMetaObject, - qt_meta_stringdata_SshToggle.data, - qt_meta_data_SshToggle, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *SshToggle::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *SshToggle::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_SshToggle.stringdata0)) - return static_cast(this); - return ToggleControl::qt_metacast(_clname); -} - -int SshToggle::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ToggleControl::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_SshControl_t { - QByteArrayData data[1]; - char stringdata0[11]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_SshControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_SshControl_t qt_meta_stringdata_SshControl = { - { -QT_MOC_LITERAL(0, 0, 10) // "SshControl" - - }, - "SshControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_SshControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void SshControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject SshControl::staticMetaObject = { { - &ButtonControl::staticMetaObject, - qt_meta_stringdata_SshControl.data, - qt_meta_data_SshControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *SshControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *SshControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_SshControl.stringdata0)) - return static_cast(this); - return ButtonControl::qt_metacast(_clname); -} - -int SshControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ButtonControl::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/moc_toggle.cc b/selfdrive/ui/qt/widgets/moc_toggle.cc deleted file mode 100644 index 8817cbaeb..000000000 --- a/selfdrive/ui/qt/widgets/moc_toggle.cc +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'toggle.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "toggle.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'toggle.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_Toggle_t { - QByteArrayData data[5]; - char stringdata0[45]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_Toggle_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_Toggle_t qt_meta_stringdata_Toggle = { - { -QT_MOC_LITERAL(0, 0, 6), // "Toggle" -QT_MOC_LITERAL(1, 7, 12), // "stateChanged" -QT_MOC_LITERAL(2, 20, 0), // "" -QT_MOC_LITERAL(3, 21, 9), // "new_state" -QT_MOC_LITERAL(4, 31, 13) // "offset_circle" - - }, - "Toggle\0stateChanged\0\0new_state\0" - "offset_circle" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_Toggle[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 1, 22, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Bool, 3, - - // properties: name, type, flags - 4, QMetaType::Int, 0x00095003, - - 0 // eod -}; - -void Toggle::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->stateChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (Toggle::*)(bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Toggle::stateChanged)) { - *result = 0; - return; - } - } - } -#ifndef QT_NO_PROPERTIES - else if (_c == QMetaObject::ReadProperty) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - void *_v = _a[0]; - switch (_id) { - case 0: *reinterpret_cast< int*>(_v) = _t->offset_circle(); break; - default: break; - } - } else if (_c == QMetaObject::WriteProperty) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - void *_v = _a[0]; - switch (_id) { - case 0: _t->set_offset_circle(*reinterpret_cast< int*>(_v)); break; - default: break; - } - } else if (_c == QMetaObject::ResetProperty) { - } -#endif // QT_NO_PROPERTIES -} - -QT_INIT_METAOBJECT const QMetaObject Toggle::staticMetaObject = { { - &QAbstractButton::staticMetaObject, - qt_meta_stringdata_Toggle.data, - qt_meta_data_Toggle, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *Toggle::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *Toggle::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_Toggle.stringdata0)) - return static_cast(this); - return QAbstractButton::qt_metacast(_clname); -} - -int Toggle::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QAbstractButton::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } -#ifndef QT_NO_PROPERTIES - else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty - || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::QueryPropertyDesignable) { - _id -= 1; - } else if (_c == QMetaObject::QueryPropertyScriptable) { - _id -= 1; - } else if (_c == QMetaObject::QueryPropertyStored) { - _id -= 1; - } else if (_c == QMetaObject::QueryPropertyEditable) { - _id -= 1; - } else if (_c == QMetaObject::QueryPropertyUser) { - _id -= 1; - } -#endif // QT_NO_PROPERTIES - return _id; -} - -// SIGNAL 0 -void Toggle::stateChanged(bool _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/selfdrive/ui/qt/widgets/offroad_alerts.cc b/selfdrive/ui/qt/widgets/offroad_alerts.cc deleted file mode 100644 index 3a4828a2a..000000000 --- a/selfdrive/ui/qt/widgets/offroad_alerts.cc +++ /dev/null @@ -1,138 +0,0 @@ -#include "selfdrive/ui/qt/widgets/offroad_alerts.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" - -AbstractAlert::AbstractAlert(bool hasRebootBtn, QWidget *parent) : QFrame(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(50); - main_layout->setSpacing(30); - - QWidget *widget = new QWidget; - scrollable_layout = new QVBoxLayout(widget); - widget->setStyleSheet("background-color: transparent;"); - main_layout->addWidget(new ScrollView(widget)); - - // bottom footer, dismiss + reboot buttons - QHBoxLayout *footer_layout = new QHBoxLayout(); - main_layout->addLayout(footer_layout); - - QPushButton *dismiss_btn = new QPushButton(tr("Close")); - dismiss_btn->setFixedSize(400, 125); - footer_layout->addWidget(dismiss_btn, 0, Qt::AlignBottom | Qt::AlignLeft); - QObject::connect(dismiss_btn, &QPushButton::clicked, this, &AbstractAlert::dismiss); - - action_btn = new QPushButton(); - action_btn->setVisible(false); - action_btn->setFixedHeight(125); - footer_layout->addWidget(action_btn, 0, Qt::AlignBottom | Qt::AlignRight); - QObject::connect(action_btn, &QPushButton::clicked, [=]() { - if (!alerts["Offroad_ExcessiveActuation"]->text().isEmpty()) { - params.remove("Offroad_ExcessiveActuation"); - } else { - params.putBool("SnoozeUpdate", true); - } - }); - QObject::connect(action_btn, &QPushButton::clicked, this, &AbstractAlert::dismiss); - action_btn->setStyleSheet("color: white; background-color: #4F4F4F; padding-left: 60px; padding-right: 60px;"); - - if (hasRebootBtn) { - QPushButton *rebootBtn = new QPushButton(tr("Reboot and Update")); - rebootBtn->setFixedSize(600, 125); - footer_layout->addWidget(rebootBtn, 0, Qt::AlignBottom | Qt::AlignRight); - QObject::connect(rebootBtn, &QPushButton::clicked, [=]() { Hardware::reboot(); }); - } - - setStyleSheet(R"( - * { - font-size: 48px; - color: white; - } - QFrame { - border-radius: 30px; - background-color: #393939; - } - QPushButton { - color: black; - font-weight: 500; - border-radius: 30px; - background-color: white; - } - )"); -} - -int OffroadAlert::refresh() { - // build widgets for each offroad alert on first refresh - if (alerts.empty()) { - QString json = util::read_file("../selfdrived/alerts_offroad.json").c_str(); - QJsonObject obj = QJsonDocument::fromJson(json.toUtf8()).object(); - - // descending sort labels by severity - std::vector> sorted; - for (auto it = obj.constBegin(); it != obj.constEnd(); ++it) { - sorted.push_back({it.key().toStdString(), it.value()["severity"].toInt()}); - } - std::sort(sorted.begin(), sorted.end(), [=](auto &l, auto &r) { return l.second > r.second; }); - - for (auto &[key, severity] : sorted) { - QLabel *l = new QLabel(this); - alerts[key] = l; - l->setMargin(60); - l->setWordWrap(true); - l->setStyleSheet(QString("background-color: %1").arg(severity ? "#E22C2C" : "#292929")); - scrollable_layout->addWidget(l); - } - scrollable_layout->addStretch(1); - } - - int alertCount = 0; - for (const auto &[key, label] : alerts) { - QString text; - std::string bytes = params.get(key); - if (bytes.size()) { - auto doc_par = QJsonDocument::fromJson(bytes.c_str()); - text = tr(doc_par["text"].toString().toUtf8().data()); - auto extra = doc_par["extra"].toString(); - if (!extra.isEmpty()) { - text = text.arg(extra); - } - } - label->setText(text); - label->setVisible(!text.isEmpty()); - alertCount += !text.isEmpty(); - } - - action_btn->setVisible(!alerts["Offroad_ExcessiveActuation"]->text().isEmpty() || !alerts["Offroad_ConnectivityNeeded"]->text().isEmpty()); - if (!alerts["Offroad_ExcessiveActuation"]->text().isEmpty()) { - action_btn->setText(tr("Acknowledge Excessive Actuation")); - } else { - action_btn->setText(tr("Snooze Update")); - } - - return alertCount; -} - -UpdateAlert::UpdateAlert(QWidget *parent) : AbstractAlert(true, parent) { - releaseNotes = new QLabel(this); - releaseNotes->setWordWrap(true); - releaseNotes->setAlignment(Qt::AlignTop); - scrollable_layout->addWidget(releaseNotes); -} - -bool UpdateAlert::refresh() { - bool updateAvailable = params.getBool("UpdateAvailable"); - if (updateAvailable) { - releaseNotes->setText(params.get("UpdaterNewReleaseNotes").c_str()); - } - return updateAvailable; -} diff --git a/selfdrive/ui/qt/widgets/offroad_alerts.h b/selfdrive/ui/qt/widgets/offroad_alerts.h deleted file mode 100644 index 2dcf4f9d8..000000000 --- a/selfdrive/ui/qt/widgets/offroad_alerts.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include -#include - -#include -#include -#include - -#include "common/params.h" - -class AbstractAlert : public QFrame { - Q_OBJECT - -protected: - AbstractAlert(bool hasRebootBtn, QWidget *parent = nullptr); - - QPushButton *action_btn; - QVBoxLayout *scrollable_layout; - Params params; - std::map alerts; - -signals: - void dismiss(); -}; - -class UpdateAlert : public AbstractAlert { - Q_OBJECT - -public: - UpdateAlert(QWidget *parent = 0); - bool refresh(); - -private: - QLabel *releaseNotes = nullptr; -}; - -class OffroadAlert : public AbstractAlert { - Q_OBJECT - -public: - explicit OffroadAlert(QWidget *parent = 0) : AbstractAlert(false, parent) {} - int refresh(); -}; diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc deleted file mode 100644 index d04cc9118..000000000 --- a/selfdrive/ui/qt/widgets/prime.cc +++ /dev/null @@ -1,266 +0,0 @@ -#include "selfdrive/ui/qt/widgets/prime.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "selfdrive/ui/qt/request_repeater.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/qt_window.h" - -using qrcodegen::QrCode; - -PairingQRWidget::PairingQRWidget(QWidget* parent) : QWidget(parent) { - timer = new QTimer(this); - connect(timer, &QTimer::timeout, this, &PairingQRWidget::refresh); -} - -void PairingQRWidget::showEvent(QShowEvent *event) { - refresh(); - timer->start(5 * 60 * 1000); - device()->setOffroadBrightness(100); -} - -void PairingQRWidget::hideEvent(QHideEvent *event) { - timer->stop(); - device()->setOffroadBrightness(BACKLIGHT_OFFROAD); -} - -void PairingQRWidget::refresh() { - QString pairToken = CommaApi::create_jwt({{"pair", true}}); - QString qrString = (useKonikServer() ? "https://stable.konik.ai/?pair=" : "https://connect.comma.ai/?pair=") + pairToken; - this->updateQrCode(qrString); - update(); -} - -void PairingQRWidget::updateQrCode(const QString &text) { - QrCode qr = QrCode::encodeText(text.toUtf8().data(), QrCode::Ecc::LOW); - qint32 sz = qr.getSize(); - QImage im(sz, sz, QImage::Format_RGB32); - - QRgb black = qRgb(0, 0, 0); - QRgb white = qRgb(255, 255, 255); - for (int y = 0; y < sz; y++) { - for (int x = 0; x < sz; x++) { - im.setPixel(x, y, qr.getModule(x, y) ? black : white); - } - } - - // Integer division to prevent anti-aliasing - int final_sz = ((width() / sz) - 1) * sz; - img = QPixmap::fromImage(im.scaled(final_sz, final_sz, Qt::KeepAspectRatio), Qt::MonoOnly); -} - -void PairingQRWidget::paintEvent(QPaintEvent *e) { - QPainter p(this); - p.fillRect(rect(), Qt::white); - - QSize s = (size() - img.size()) / 2; - p.drawPixmap(s.width(), s.height(), img); -} - - -PairingPopup::PairingPopup(QWidget *parent) : DialogBase(parent) { - QHBoxLayout *hlayout = new QHBoxLayout(this); - hlayout->setContentsMargins(0, 0, 0, 0); - hlayout->setSpacing(0); - - setStyleSheet("PairingPopup { background-color: #E0E0E0; }"); - - // text - QVBoxLayout *vlayout = new QVBoxLayout(); - vlayout->setContentsMargins(85, 70, 50, 70); - vlayout->setSpacing(50); - hlayout->addLayout(vlayout, 1); - { - QPushButton *close = new QPushButton(QIcon(":/icons/close.svg"), "", this); - close->setIconSize(QSize(80, 80)); - close->setStyleSheet("border: none;"); - vlayout->addWidget(close, 0, Qt::AlignLeft); - QObject::connect(close, &QPushButton::clicked, this, &QDialog::reject); - - vlayout->addSpacing(30); - - QLabel *title = new QLabel(tr("Pair your device to your %1 account").arg(useKonikServer() ? "Konik" : "comma"), this); - title->setStyleSheet("font-size: 75px; color: black;"); - title->setWordWrap(true); - vlayout->addWidget(title); - - QLabel *instructions = new QLabel(QString(R"( -
    -
  1. %1
  2. -
  3. %2
  4. -
  5. %3
  6. -
- )").arg(tr("Go to https://%1 on your phone").arg(useKonikServer() ? "stable.konik.ai" : "connect.comma.ai")) - .arg(tr("Click \"add new device\" and scan the QR code on the right")) - .arg(tr("Bookmark %1 to your home screen to use it like an app").arg(useKonikServer() ? "stable.konik.ai" : "connect.comma.ai")), this); - - instructions->setStyleSheet("font-size: 47px; font-weight: bold; color: black;"); - instructions->setWordWrap(true); - vlayout->addWidget(instructions); - - vlayout->addStretch(); - } - - // QR code - PairingQRWidget *qr = new PairingQRWidget(this); - hlayout->addWidget(qr, 1); -} - -int PairingPopup::exec() { - if (!util::system_time_valid()) { - ConfirmationDialog::alert(tr("Please connect to Wi-Fi to complete initial pairing"), parentWidget()); - return QDialog::Rejected; - } - return DialogBase::exec(); -} - - -PrimeUserWidget::PrimeUserWidget(QWidget *parent) : QFrame(parent) { - setObjectName("primeWidget"); - QVBoxLayout *mainLayout = new QVBoxLayout(this); - mainLayout->setContentsMargins(56, 40, 56, 40); - mainLayout->setSpacing(20); - - QLabel *subscribed = new QLabel(tr("✓ SUBSCRIBED")); - subscribed->setStyleSheet("font-size: 41px; font-weight: bold; color: #86FF4E;"); - mainLayout->addWidget(subscribed); - - QLabel *commaPrime = new QLabel(tr("comma prime")); - commaPrime->setStyleSheet("font-size: 75px; font-weight: bold;"); - mainLayout->addWidget(commaPrime); -} - - -PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QFrame(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(80, 90, 80, 60); - main_layout->setSpacing(0); - - QLabel *upgrade = new QLabel(tr("Upgrade Now")); - upgrade->setStyleSheet("font-size: 75px; font-weight: bold;"); - main_layout->addWidget(upgrade, 0, Qt::AlignTop); - main_layout->addSpacing(50); - - QLabel *description = new QLabel(tr("Become a comma prime member at connect.comma.ai")); - description->setStyleSheet("font-size: 56px; font-weight: light; color: white;"); - description->setWordWrap(true); - main_layout->addWidget(description, 0, Qt::AlignTop); - - main_layout->addStretch(); - - QLabel *features = new QLabel(tr("PRIME FEATURES:")); - features->setStyleSheet("font-size: 41px; font-weight: bold; color: #E5E5E5;"); - main_layout->addWidget(features, 0, Qt::AlignBottom); - main_layout->addSpacing(30); - - QVector bullets = {tr("Remote access"), tr("24/7 LTE connectivity"), tr("1 year of drive storage"), tr("Remote snapshots")}; - for (auto &b : bullets) { - const QString check = "✓ "; - QLabel *l = new QLabel(check + b); - l->setAlignment(Qt::AlignLeft); - l->setStyleSheet("font-size: 50px; margin-bottom: 15px;"); - main_layout->addWidget(l, 0, Qt::AlignBottom); - } - - setStyleSheet(R"( - PrimeAdWidget { - border-radius: 10px; - background-color: #333333; - } - )"); -} - - -SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { - mainLayout = new QStackedWidget; - - // Unpaired, registration prompt layout - - QFrame* finishRegistration = new QFrame; - finishRegistration->setObjectName("primeWidget"); - QVBoxLayout* finishRegistrationLayout = new QVBoxLayout(finishRegistration); - finishRegistrationLayout->setSpacing(38); - finishRegistrationLayout->setContentsMargins(64, 48, 64, 48); - - QLabel* registrationTitle = new QLabel(tr("Finish Setup")); - registrationTitle->setStyleSheet("font-size: 75px; font-weight: bold;"); - finishRegistrationLayout->addWidget(registrationTitle); - - QLabel* registrationDescription = new QLabel(useKonikServer() ? tr("Pair your device with Konik connect (stable.konik.ai).") : tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); - registrationDescription->setWordWrap(true); - registrationDescription->setStyleSheet("font-size: 50px; font-weight: light;"); - finishRegistrationLayout->addWidget(registrationDescription); - - finishRegistrationLayout->addStretch(); - - QPushButton* pair = new QPushButton(tr("Pair device")); - pair->setStyleSheet(R"( - QPushButton { - font-size: 55px; - font-weight: 500; - border-radius: 10px; - background-color: #465BEA; - padding: 64px; - } - QPushButton:pressed { - background-color: #3049F4; - } - )"); - finishRegistrationLayout->addWidget(pair); - - popup = new PairingPopup(this); - QObject::connect(pair, &QPushButton::clicked, popup, &PairingPopup::exec); - - mainLayout->addWidget(finishRegistration); - - // build stacked layout - QVBoxLayout *outer_layout = new QVBoxLayout(this); - outer_layout->setContentsMargins(0, 0, 0, 0); - outer_layout->addWidget(mainLayout); - - QWidget *content = new QWidget; - QVBoxLayout *content_layout = new QVBoxLayout(content); - content_layout->setContentsMargins(0, 0, 0, 0); - content_layout->setSpacing(30); - - QLabel *logo = new QLabel; - QPixmap logo_pix("../assets/images/StarPilotLogo.png"); - logo->setPixmap(logo_pix.scaled(750, 770, Qt::KeepAspectRatio, Qt::SmoothTransformation)); - logo->setAlignment(Qt::AlignCenter); - content_layout->addWidget(logo, 0, Qt::AlignCenter); - content_layout->addStretch(); - - mainLayout->addWidget(content); - - mainLayout->setCurrentIndex(1); - - setStyleSheet(R"( - #primeWidget { - border-radius: 10px; - background-color: #333333; - } - )"); - - // Retain size while hidden - QSizePolicy sp_retain = sizePolicy(); - sp_retain.setRetainSizeWhenHidden(true); - setSizePolicy(sp_retain); - - QObject::connect(uiState()->prime_state, &PrimeState::changed, [this](PrimeState::Type type) { - if (type == PrimeState::PRIME_TYPE_UNPAIRED) { - mainLayout->setCurrentIndex(0); // Display "Pair your device" widget - } else { - popup->reject(); - mainLayout->setCurrentIndex(1); // Display Wi-Fi prompt widget - } - }); -} diff --git a/selfdrive/ui/qt/widgets/prime.h b/selfdrive/ui/qt/widgets/prime.h deleted file mode 100644 index 266a90a92..000000000 --- a/selfdrive/ui/qt/widgets/prime.h +++ /dev/null @@ -1,70 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "selfdrive/ui/qt/widgets/input.h" - -// pairing QR code -class PairingQRWidget : public QWidget { - Q_OBJECT - -public: - explicit PairingQRWidget(QWidget* parent = 0); - void paintEvent(QPaintEvent*) override; - -private: - QPixmap img; - QTimer *timer; - void updateQrCode(const QString &text); - void showEvent(QShowEvent *event) override; - void hideEvent(QHideEvent *event) override; - -private slots: - void refresh(); -}; - - -// pairing popup widget -class PairingPopup : public DialogBase { - Q_OBJECT - -public: - explicit PairingPopup(QWidget* parent); - int exec() override; -}; - - -// widget for paired users with prime -class PrimeUserWidget : public QFrame { - Q_OBJECT - -public: - explicit PrimeUserWidget(QWidget* parent = 0); -}; - - -// widget for paired users without prime -class PrimeAdWidget : public QFrame { - Q_OBJECT -public: - explicit PrimeAdWidget(QWidget* parent = 0); -}; - - -// container widget -class SetupWidget : public QFrame { - Q_OBJECT - -public: - explicit SetupWidget(QWidget* parent = 0); - -signals: - void openSettings(int index = 0, const QString ¶m = ""); - -private: - PairingPopup *popup; - QStackedWidget *mainLayout; -}; diff --git a/selfdrive/ui/qt/widgets/scrollview.cc b/selfdrive/ui/qt/widgets/scrollview.cc deleted file mode 100644 index 978bf83a6..000000000 --- a/selfdrive/ui/qt/widgets/scrollview.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include "selfdrive/ui/qt/widgets/scrollview.h" - -#include -#include - -// TODO: disable horizontal scrolling and resize - -ScrollView::ScrollView(QWidget *w, QWidget *parent) : QScrollArea(parent) { - setWidget(w); - setWidgetResizable(true); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setStyleSheet("background-color: transparent; border:none"); - - QString style = R"( - QScrollBar:vertical { - border: none; - background: transparent; - width: 10px; - margin: 0; - } - QScrollBar::handle:vertical { - min-height: 0px; - border-radius: 5px; - background-color: white; - } - QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { - height: 0px; - } - QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { - background: none; - } - )"; - verticalScrollBar()->setStyleSheet(style); - horizontalScrollBar()->setStyleSheet(style); - - QScroller *scroller = QScroller::scroller(this->viewport()); - QScrollerProperties sp = scroller->scrollerProperties(); - - sp.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, QVariant::fromValue(QScrollerProperties::OvershootAlwaysOff)); - sp.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, QVariant::fromValue(QScrollerProperties::OvershootAlwaysOff)); - sp.setScrollMetric(QScrollerProperties::MousePressEventDelay, 0.01); - scroller->grabGesture(this->viewport(), QScroller::LeftMouseButtonGesture); - scroller->setScrollerProperties(sp); -} - -void ScrollView::hideEvent(QHideEvent *e) { - verticalScrollBar()->setValue(0); -} diff --git a/selfdrive/ui/qt/widgets/scrollview.h b/selfdrive/ui/qt/widgets/scrollview.h deleted file mode 100644 index 024331aa3..000000000 --- a/selfdrive/ui/qt/widgets/scrollview.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include - -class ScrollView : public QScrollArea { - Q_OBJECT - -public: - explicit ScrollView(QWidget *w = nullptr, QWidget *parent = nullptr); -protected: - void hideEvent(QHideEvent *e) override; -}; diff --git a/selfdrive/ui/qt/widgets/ssh_keys.cc b/selfdrive/ui/qt/widgets/ssh_keys.cc deleted file mode 100644 index 83213d596..000000000 --- a/selfdrive/ui/qt/widgets/ssh_keys.cc +++ /dev/null @@ -1,65 +0,0 @@ -#include "selfdrive/ui/qt/widgets/ssh_keys.h" - -#include "common/params.h" -#include "selfdrive/ui/qt/api.h" -#include "selfdrive/ui/qt/widgets/input.h" - -SshControl::SshControl() : - ButtonControl(tr("SSH Keys"), "", tr("Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username " - "other than your own. A comma employee will NEVER ask you to add their GitHub username.")) { - - QObject::connect(this, &ButtonControl::clicked, [=]() { - if (text() == tr("ADD")) { - QString username = InputDialog::getText(tr("Enter your GitHub username"), this); - if (username.length() > 0) { - setText(tr("LOADING")); - setEnabled(false); - getUserKeys(username); - } - } else { - params.remove("GithubUsername"); - params.remove("GithubSshKeys"); - - refresh(); - } - }); - - refresh(); -} - -void SshControl::refresh() { - QString param = QString::fromStdString(params.get("GithubSshKeys")); - if (param.length()) { - setValue(QString::fromStdString(params.get("GithubUsername"))); - setText(tr("REMOVE")); - } else { - setValue(""); - setText(tr("ADD")); - } - setEnabled(true); -} - -void SshControl::getUserKeys(const QString &username) { - HttpRequest *request = new HttpRequest(this, false); - QObject::connect(request, &HttpRequest::requestDone, [=](const QString &resp, bool success) { - if (success) { - if (!resp.isEmpty()) { - params.put("GithubUsername", username.toStdString()); - params.put("GithubSshKeys", resp.toStdString()); - } else { - ConfirmationDialog::alert(tr("Username '%1' has no keys on GitHub").arg(username), this); - } - } else { - if (request->timeout()) { - ConfirmationDialog::alert(tr("Request timed out"), this); - } else { - ConfirmationDialog::alert(tr("Username '%1' doesn't exist on GitHub").arg(username), this); - } - } - - refresh(); - request->deleteLater(); - }); - - request->sendRequest("https://github.com/" + username + ".keys"); -} diff --git a/selfdrive/ui/qt/widgets/ssh_keys.h b/selfdrive/ui/qt/widgets/ssh_keys.h deleted file mode 100644 index 920bd651e..000000000 --- a/selfdrive/ui/qt/widgets/ssh_keys.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include - -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/widgets/controls.h" - -// SSH enable toggle -class SshToggle : public ToggleControl { - Q_OBJECT - -public: - SshToggle() : ToggleControl(tr("Enable SSH"), "", "", Hardware::get_ssh_enabled()) { - QObject::connect(this, &SshToggle::toggleFlipped, [=](bool state) { - Hardware::set_ssh_enabled(state); - }); - } -}; - -// SSH key management widget -class SshControl : public ButtonControl { - Q_OBJECT - -public: - SshControl(); - -private: - Params params; - - void refresh(); - void getUserKeys(const QString &username); -}; diff --git a/selfdrive/ui/qt/widgets/toggle.cc b/selfdrive/ui/qt/widgets/toggle.cc deleted file mode 100644 index 1236d25dd..000000000 --- a/selfdrive/ui/qt/widgets/toggle.cc +++ /dev/null @@ -1,83 +0,0 @@ -#include "selfdrive/ui/qt/widgets/toggle.h" - -#include - -Toggle::Toggle(QWidget *parent) : QAbstractButton(parent), -_height(80), -_height_rect(60), -on(false), -_anim(new QPropertyAnimation(this, "offset_circle", this)) -{ - _radius = _height / 2; - _x_circle = _radius; - _y_circle = _radius; - _y_rect = (_height - _height_rect)/2; - circleColor = QColor(0xffffff); // placeholder - green = QColor(0xffffff); // placeholder - setEnabled(true); -} - -void Toggle::paintEvent(QPaintEvent *e) { - this->setFixedHeight(_height); - QPainter p(this); - p.setPen(Qt::NoPen); - p.setRenderHint(QPainter::Antialiasing, true); - - // Draw toggle background left - p.setBrush(green); - p.drawRoundedRect(QRect(0, _y_rect, _x_circle + _radius, _height_rect), _height_rect/2, _height_rect/2); - - // Draw toggle background right - p.setBrush(QColor(0x393939)); - p.drawRoundedRect(QRect(_x_circle - _radius, _y_rect, width() - (_x_circle - _radius), _height_rect), _height_rect/2, _height_rect/2); - - // Draw toggle circle - p.setBrush(circleColor); - p.drawEllipse(QRectF(_x_circle - _radius, _y_circle - _radius, 2 * _radius, 2 * _radius)); -} - -void Toggle::mouseReleaseEvent(QMouseEvent *e) { - if (!enabled) { - return; - } - const int left = _radius; - const int right = width() - _radius; - if ((_x_circle != left && _x_circle != right) || !this->rect().contains(e->localPos().toPoint())) { - // If mouse release isn't in rect or animation is running, don't parse touch events - return; - } - if (e->button() & Qt::LeftButton) { - togglePosition(); - emit stateChanged(on); - } -} - -void Toggle::togglePosition() { - on = !on; - const int left = _radius; - const int right = width() - _radius; - _anim->setStartValue(on ? left + immediateOffset : right - immediateOffset); - _anim->setEndValue(on ? right : left); - _anim->setDuration(animation_duration); - _anim->start(); - repaint(); -} - -void Toggle::enterEvent(QEvent *e) { - QAbstractButton::enterEvent(e); -} - -bool Toggle::getEnabled() { - return enabled; -} - -void Toggle::setEnabled(bool value) { - enabled = value; - if (value) { - circleColor.setRgb(0xfafafa); - green.setRgb(0x178644); - } else { - circleColor.setRgb(0x888888); - green.setRgb(0x227722); - } -} diff --git a/selfdrive/ui/qt/widgets/toggle.h b/selfdrive/ui/qt/widgets/toggle.h deleted file mode 100644 index e7263a008..000000000 --- a/selfdrive/ui/qt/widgets/toggle.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include -#include -#include - -class Toggle : public QAbstractButton { - Q_OBJECT - Q_PROPERTY(int offset_circle READ offset_circle WRITE set_offset_circle CONSTANT) - -public: - Toggle(QWidget* parent = nullptr); - void togglePosition(); - bool on; - int animation_duration = 150; - int immediateOffset = 0; - int offset_circle() const { - return _x_circle; - } - - void set_offset_circle(int o) { - _x_circle = o; - update(); - } - bool getEnabled(); - void setEnabled(bool value); - -protected: - void paintEvent(QPaintEvent*) override; - void mouseReleaseEvent(QMouseEvent*) override; - void enterEvent(QEvent*) override; - -private: - QColor circleColor; - QColor green; - bool enabled = true; - int _x_circle, _y_circle; - int _height, _radius; - int _height_rect, _y_rect; - QPropertyAnimation *_anim = nullptr; - -signals: - void stateChanged(bool new_state); -}; diff --git a/selfdrive/ui/qt/window.cc b/selfdrive/ui/qt/window.cc deleted file mode 100644 index ccc63d546..000000000 --- a/selfdrive/ui/qt/window.cc +++ /dev/null @@ -1,102 +0,0 @@ -#include "selfdrive/ui/qt/window.h" - -#include - -#include "system/hardware/hw.h" - -MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { - main_layout = new QStackedLayout(this); - main_layout->setMargin(0); - - homeWindow = new HomeWindow(this); - main_layout->addWidget(homeWindow); - QObject::connect(homeWindow, &HomeWindow::openSettings, this, &MainWindow::openSettings); - QObject::connect(homeWindow, &HomeWindow::closeSettings, this, &MainWindow::closeSettings); - - settingsWindow = new SettingsWindow(this); - main_layout->addWidget(settingsWindow); - QObject::connect(settingsWindow, &SettingsWindow::closeSettings, this, &MainWindow::closeSettings); - QObject::connect(settingsWindow, &SettingsWindow::reviewTrainingGuide, [=]() { - onboardingWindow->showTrainingGuide(); - main_layout->setCurrentWidget(onboardingWindow); - }); - QObject::connect(settingsWindow, &SettingsWindow::showDriverView, [=] { - homeWindow->showDriverView(true); - }); - - onboardingWindow = new OnboardingWindow(this); - main_layout->addWidget(onboardingWindow); - QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=]() { - main_layout->setCurrentWidget(homeWindow); - }); - if (!onboardingWindow->completed()) { - main_layout->setCurrentWidget(onboardingWindow); - } - - QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { - if (!offroad) { - closeSettings(); - } - }); - QObject::connect(device(), &Device::interactiveTimeout, [=]() { - if (main_layout->currentWidget() == settingsWindow) { - closeSettings(); - } - }); - - // load fonts - QFontDatabase::addApplicationFont("../assets/fonts/Inter-Black.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-Bold.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-ExtraBold.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-ExtraLight.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-Medium.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-Regular.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-SemiBold.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/Inter-Thin.ttf"); - QFontDatabase::addApplicationFont("../assets/fonts/JetBrainsMono-Medium.ttf"); - - // no outline to prevent the focus rectangle - setStyleSheet(R"( - * { - font-family: Inter; - outline: none; - } - )"); - setAttribute(Qt::WA_NoSystemBackground); -} - -void MainWindow::openSettings(int index, const QString ¶m) { - main_layout->setCurrentWidget(settingsWindow); - settingsWindow->setCurrentPanel(index, param); -} - -void MainWindow::closeSettings() { - main_layout->setCurrentWidget(homeWindow); - - if (uiState()->scene.started) { - homeWindow->showSidebar(params.getBool("SidebarOpen") || starpilotUIState()->starpilot_scene.starpilot_toggles.value("debug_mode").toBool()); - } -} - -bool MainWindow::eventFilter(QObject *obj, QEvent *event) { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - bool ignore = false; - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - case QEvent::MouseButtonPress: - case QEvent::MouseMove: { - // ignore events when device is awakened by resetInteractiveTimeout - ignore = !device()->isAwake() || starpilot_scene.driver_camera_timer >= UI_FREQ / 2; - device()->resetInteractiveTimeout(starpilot_toggles.value("screen_timeout").toInt(), starpilot_toggles.value("screen_timeout_onroad").toInt()); - break; - } - default: - break; - } - return ignore; -} diff --git a/selfdrive/ui/qt/window.h b/selfdrive/ui/qt/window.h deleted file mode 100644 index 88f4b2410..000000000 --- a/selfdrive/ui/qt/window.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include -#include - -#include "selfdrive/ui/qt/home.h" -#include "selfdrive/ui/qt/offroad/onboarding.h" -#include "selfdrive/ui/qt/offroad/settings.h" - -class MainWindow : public QWidget { - Q_OBJECT - -public: - explicit MainWindow(QWidget *parent = 0); - -private: - bool eventFilter(QObject *obj, QEvent *event) override; - void openSettings(int index = 0, const QString ¶m = ""); - void closeSettings(); - - QStackedLayout *main_layout; - HomeWindow *homeWindow; - SettingsWindow *settingsWindow; - OnboardingWindow *onboardingWindow; - - Params params; -}; diff --git a/selfdrive/ui/spinner b/selfdrive/ui/spinner deleted file mode 100755 index 379d322e2..000000000 --- a/selfdrive/ui/spinner +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -ROOT_DIR="$(cd "${DIR}/../.." && pwd)" - -device_type() { - if [ -f /sys/firmware/devicetree/base/model ]; then - tr -d '\000'
/dev/null | sed 's/.*comma //' - fi -} - -if [ -f /TICI ]; then - DT="$(device_type)" - if [ "${DT}" != "tici" ] && [ "${DT}" != "tizi" ]; then - PYTHON="${ROOT_DIR}/.venv/bin/python" - if [ ! -x "${PYTHON}" ]; then - PYTHON="python3" - fi - exec "${PYTHON}" "${ROOT_DIR}/system/ui/spinner.py" "$1" - fi - - if [ ! -f "${DIR}/_spinner" ]; then - cp "${DIR}/qt/spinner_larch64" "${DIR}/_spinner" - fi -fi - -exec "${DIR}/_spinner" "$1" diff --git a/selfdrive/ui/tests/test_stopped_timer_widget.py b/selfdrive/ui/tests/test_stopped_timer_widget.py index 5bcd6271b..794703848 100644 --- a/selfdrive/ui/tests/test_stopped_timer_widget.py +++ b/selfdrive/ui/tests/test_stopped_timer_widget.py @@ -83,14 +83,14 @@ def test_stopped_timer_visibility_waits_for_onroad_grace_period(monkeypatch): assert widget.is_visible -def test_stopped_timer_uses_qt_text_contract(monkeypatch): +def test_stopped_timer_uses_text_contract(monkeypatch): stopped_timer = _load_stopped_timer(monkeypatch) assert stopped_timer.StoppedTimerWidget._format_duration_text(61) == ("1 minute", "1 second") assert stopped_timer.StoppedTimerWidget._format_duration_text(121) == ("2 minutes", "1 second") -def test_stopped_timer_draws_qt_positions_and_opaque_seconds(monkeypatch): +def test_stopped_timer_draws_positions_and_opaque_seconds(monkeypatch): stopped_timer = _load_stopped_timer(monkeypatch) widget = stopped_timer.StoppedTimerWidget() widget._duration = 61 diff --git a/selfdrive/ui/text b/selfdrive/ui/text deleted file mode 100755 index ecfdad4ab..000000000 --- a/selfdrive/ui/text +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -DIR="$(cd "$(dirname "$0")" && pwd)" -ROOT_DIR="$(cd "${DIR}/../.." && pwd)" - -device_type() { - if [ -f /sys/firmware/devicetree/base/model ]; then - tr -d '\000' /dev/null | sed 's/.*comma //' - fi -} - -if [ -f /TICI ]; then - DT="$(device_type)" - if [ "${DT}" != "tici" ] && [ "${DT}" != "tizi" ]; then - PYTHON="${ROOT_DIR}/.venv/bin/python" - if [ ! -x "${PYTHON}" ]; then - PYTHON="python3" - fi - exec "${PYTHON}" "${ROOT_DIR}/system/ui/text.py" "$1" - fi - - if [ ! -f "${DIR}/_text" ]; then - cp "${DIR}/qt/text_larch64" "${DIR}/_text" - fi -fi - -exec "${DIR}/_text" "$1" diff --git a/selfdrive/ui/ui b/selfdrive/ui/ui deleted file mode 100755 index 4ef73fbd817d118ee246728644d3820b98579a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4477024 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%0AT_m&c#m=I2G8FR*|0@|E#9wX5S^=jTPv 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 z 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≫ZZ*uUHj=p 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 YZy z%#j@NHp+MAIb{2OoA!6JYdrnu%xm)w+dT4_4%1`0&GX&maNS=hhn-i2+m=Xu=-P71 zVHnEcj6Spm-j7CoE}H}J)HtILZP?NZp3#qb%kM`=;dyQmFiqf}Js*N^nr_7X*I1Oj zdmd>X>XlQztY6Nx(kMdtny!_ax*T2it7r6|N|a%w{&PY(W#|djr2-4zUQNMu&=LN) z`%n5}y8qgV=TE%$D|7#~9oWi@2d)$TMCw12%kk&amHPa|R<*~%eEx0n$8`VoiuNbQ zHC{BGpWI6N(^mKsssFUf@n?bK&pjc3-jCpq>Hh0J?N6IZ_%peZ{``rxiq5z`QvdnM zg^}B?8y$bXuWHvfKL3{Ihix+Jo9X^*fc9sQ%b!U7XP-*?v_be3ssGF_$EPliPi?B% z_sG}6CwE`tvReUrPi6Yg*}|tt{pYxHd^-NRzK-y%m_+n3tqndo z=PJ_u*ABFqY#(O1d^7c*p95RjvB3!8TcrN8eL23p=lF*2iF@GNKF+251O4ao+TZ`5 z{`2v_P!9D)IYjC|_goP9TAYD$F!i5@P@ma{xH2U_C@GVmRIjS7r4i#wM@Slxhw0Q~I zH|PFy%HO>I{0u&@{rIc>r^Rpl>gVq7IOTx+-_4^2YfP<9`h(z7!C=-fbI`TgixJbx?#W-9!&*IRmHRB6qqwNY4aQd-j! z?EZdA??lY^@2u+y?reZH6>*+mG5R2`Cny4zb^Vf|SgVQoWM{r3;H{qD7XMZH2x~ij z!JIJT0^pw(Upo|k5xz|uK)OZ9YY)<%9%bELRBdt7Vx&FsBJcd-n*6p{jH-(~>@vAg z{Kuk7#<2h4y4W)$^o>VeF2AF{7gR6&)o9!>&yIr31U46{lpp{ z)VB+RQ!K&sx8@(gKG#(@lg9I!2phsiUyecNlhu<`DlzlC`Y}-@)96#^0wH=iA!|HpW|+cXwymuhN0-*MWG<7H)2(p`Ot{a(nU2R56F z_pd&anDk`zG4?wlz5})kkk5Xk_b|#k1>r2%KWbXBnXnfj{yZG(i|rR2yC27v>AWvP zT)x4Nl}Ow1xf6IDusJ@w#5lJPS@`~s)R&vAmSVpu(vQX#;wG!-B&H-;Ex`Us~1tifm8A2QC@T@8nZ&Pb1b%DQ+djyvaNGxGTW8?NKnYOsaas$jbv zy1cMa*xto93Gt<RVoqg`0gn6E z!~OarFF%RXv95<{mXFNE)V$j8PX`LKPbPC zu^$cY3Si61O}y{1;ZDzptD*Y^#7`G#f8*nOWBC5BObAeXZaRUE)f2^ZMzVpF53&-nXdl%_m4(%LM zQV08m#}MBTy7(??RbcRMf!HS4xQ^YyWC26%EFT_=g=L+$eF1J7;_K?T+S;;Dx(mk- z0JqP~7%NVB3X_=}-srXlk(E0n-QPqCd885Z;c>)`PUB@SJ#i zs4I|vbdX?IgCf*dK}a z=Hn1&WV{3)&9BeJI`LHEnOT?CdEgoA7Y-eMur+wzQ`cjOW zCPL2yY~!)rgzZLbH(*Q0HV)fZY-6yE#&$in>#$vmZ4|a^uw9MqDr_UMU5V`qY$LD@ z$2JVxP;9K@L$Fl6>Vr&;-8-#5jwgK2atsdIvc{x~f#*>HeoRRD8e;5!N zm${hOv4q|Eprx zPjGYH+^hyFAGo6225LF1GnQc*$I+Hc?tC}5uz^}cZb<{RfYuwUvT1#>>M7c^ST&C} zJyt2&tXMUNHaAv1PFonOX496$sz+$O4b@CqUqkgUZCXQ>MVsDGWzuFfRMTm58>$Cr z3md9wv?UGIy|ms&YAUU-k-CdEt&y5So8Cy>PMg(8O{UFlq;91xY@{a9mNZf~(|Y67 zcv@eax{)?5PNmbP$EmTjS#fGKZEl>pj^ADzQ*bb+O)=MIBj}k zHIz21u^K{~+gM#nTi93)rY&i#E~51|Q3GjxP1J?7X-!lbZF&=xLYvh@^{35kqWaMm zHc@?POPZ+OwBDww7pOq^qY|W;IovX>*&ZjeI1(PlMQb!c;&t6H>$%~cKB60F&x^`5P&()!L;(X?r2t0>y^vz0}gb+$V72yE`z z>I7}!+3FZ=$=T{Ct+$0bOzUf*4$-EyPzPw!Tc~}sSuND>w7D(Rue60N)GxFpEmVNk z8?Sz*^~I}Qv}y5bCvAGXDx%GbS3l6^#;fmX3**%e+LCzn4XrmpeNF32P+!reC8#fG z(-YKI+N=ci8EtNY`h>PHL48bHlAt!zdK1+Lw7x|39&K8p+C-b4s5a1MC8~F6a}(9u zw1tW4E!vVqwT9N4q~4_UC8<@kX-VpJ+Vmt1u5o8D5* zrOj%oo}kTbsUD*(Y^fflEorG{(R$BO|EBewqaLD7J4el+O+QCv&}N;Z9;D4ZN8L|b zc#gV{w&Waj53RSAx|`P5O5I7D)=J$$o8C(Oi#Ds3x{WrsmAZwtu$7ufThdBRp!K#^ zH_`f9s~c$3TB~ui>8;fm+N{>RQ^u*6JGClGf@fT5lV5C9SWG8bO=ZMh&A) zZ=)`!&1$1Aqs?ujE}<=Kqb{Z`X`=?wdfTc2w7$0L0@}2;DwQ_9t@6`mwN>ZS=C)Pm z(H6EFrelZB~2Lf;P9kYEE0&UNxmHX|Ed7dON5_w7w21mNu<}s!yBV zLDi$p>Y(b-=5|oEXbU^28nh)HR1B@RqpC{l>!_k>(>kgs+VqafqRr~4PR)YN?Wj)B z7Isv}XiGY(qqN>m>M*UZlR8A3)=3?pP4A@k(Pnj0ztiS+Qoqs`c2d94mUL19T5o6d zGp(<)+C`hzS?#1v@2rYwvpTCEXmdNO?`aD=s~xl@oz*wA-Y)8ET3;9S6>VA<^#yHu z7qyi(tBd-KHn)rVgtoAY`k1z)i`q=tP6(WZ4(n`m>pstvHq6BAnG@O`QD zuIgUAFXc2fnkY2DN-w7K2XORy6hTzWUPoX4}e zsTXMryQvpwaSyu`c94TB>876Nac_6^ENxnMwU8F~htI&aad7F~)qEb$>aL!oE$pu5 z(w1~rPtbak)nl~j$?8$q7>DP>_i1=MEm=K8o0Y6)(B>wq4BEnE^&o9YvbvuZW9|EB zF^;~67USr3VET%19~b_9jqfQi-9@;Y3;!>T?<6qoMYx>{e}l%i5*VKdC%N!fX?zQTX(qx= zUHD5hzLCH*5aIeRykFz%2uw{8uHnKbYkXCK@rrPi3*ScLPn`(Ynd2gS3}M;6HP`sV z0&`G=54iC4H2!yi*(<`oi0~dAW_uf@c|VExog!R}u+()J_rq*=|0ggzMEF}5{uhn^ zufTjE!rNSU-fuJgPX*><5&p=9|3c&67nn^VywQdKK;z#Ln72fDtqcE_#=jvjuZ!?& zF8nJR|FXd3i*TL`zf|M@BQQ%vc!>-Dw8lRtFbhR^feZhr#y=%6Pl~W|;UCoa#|7q5 z5q`vlzeD367MK|#oaw^fr11|3%zYw!uM2;T#@{6{cZl%qF8pO0f2+Vu6ycj)_*9L* zQDDZ2@K_hVr^a6=FxQCi)h>KHjlV)*hKcY{7ruqYUn(#ci||D*e0`0-P+(F;IK_pp zs`32Vkv{5b-XB*KX<{MQjdT+5x&}m&)4`X1ZJ2B4|U<6*Z4~X=3)`P$c2AW<1ZALR1r>b;s34i z{RF0u2={j3@6-4m0@F=|ySnhVX?#b4X(z&MUHEYte~!Q;iEyF|f2GEsEig?*xQPpY zvBozPnEE1omJ5Hr#@7~@8X{cXh3}^ERRktVggq{ND~&&SEZoK(6X77jvi)zW@qY@; z0TJHs!q?IG-vs6t5#Hm%M``>|0<%+ui(UA`X?pxGFgrx}TNnNpjsLH}d?CWyT=*X} z{!@YZScE@v;lI%M_XTE?2yb-ZKhXGh1m-OfUhBfYrSWeF% z!Y|eM{|L-d5nkfLKdtf43CuzfUf{w%s_{<=%#$LlT=)ky{&9hMRD>UK;qTD+hXrPa z2xq$RH);F>0&|}T-|NC(qw#kM%pD?py93twO3FBF(m5l(U8t7?2df$1Z{y>UxL6TxAi}f2ADdb_qLJXgsrhFKTpbavEy5GPUy@QfqMqQtsQLUisWZlo z5#eegJP7<^f9Z%Cg8#JUR}r`<5%!318~P7^wBY|+^Gk!_{7;DRafD_6bDzc^5tu_F zd{BgASYGFsjySB3vAid0{(gb`U4(x_Smt-V#_tiBpGEj57k-$=^Z%(%dHx{6{}bWw zb(rgnj$%vG+^_X<9^=^e3kS#bKQm5df8Y&0hj>rhq7VJSZ(hVZM$SI|Vel39-`4wY zImhvDh0k#OO})R$IgT~en{m8A@4w<4$G;#p;ds8@U+x^A;t#%!<1gs_rOxq5{@|N9 z{=D9Q);W&vY8K%5GkX7N=QzHxnvdg8>ixOSaeV9c1ss1&??37s$N766$N#POA99XQ z_6MKA@eIBHAna>;UCT5FGu0oQ1I$#tf0uI{>((E^@!R$OWas#Fe=rNjC+Yp0o#XTT z!3S{sM!lcz9G`>lOXK)xy?>o^e40OaJC0wi_eVO%zw-wt;rMX9Kh!xs(;vJM$1m0U zgPr5E{lU>VK2Yyp=p0|<4_=MqDSE%Zb9}KsI2_0O>iyo%@mzoKQXKE0_q#jCSNMYi zalEtM@8}%g;t!_acw4>S+ByEYKiC(?@m)~+nOLH89Bb)%;P}~kzZq;XzKy_Zf!`PH zgt$gJF1C!*B)<)g*VFrT%8tk7C*gPvy&qF{yjgy89FNxfQO@xaf3OjbpTe3m=66Ed zqTT*rJsdx(_YXVAm-&M=aQuMY-{%}(?GHxd_^*2Z7w7mofAG|Qj%WX@_jftR*ZYG< zalAhX+|+4lf*BjUJz zIuqL*Z2!YH3hUKZV_S-FE!aD;wZirhwhO@N3ClI}Yp@+hcs913*b))vL7r#fINysH zh5c)=U5$(Ii_TCnu9 z1}y!|*7-T_J2`bf3h}ZmpVBxd{@C=>dam7zXe3>tvXvO;xyY4Qv z)Q`aOyEOl!9cQWUXj3iqEp3vew!_k=|H9Izi8?R(zo)-DNLyP>@!7{(Ku*`3mOlz!HZ4qe|kb|^dp+#CR(ITyUTBNlcmTA2R%d{>O z+NJ*I5ij+pot9^`dd10elcnY{?WLAdv@sXJ)LS?XW3sg}BpHpx=Az%tK? zuuRkA^4H0G9O7l(e8;J*eiTQkJ4D_inf6jkT|qm;Qp0J-S!yV4s-=d|CRyrISmr$# zmU$mQnyiyfo)_Y{%#-iQ+1Db*USH=P&t4}rq(rNsj)t9h-;Q}~vQ#qdQcHEConfgi zwBsz*i8j?z9cYs*)ee?g+Q3rFTAB6|uj(Vxjwff6rOu{Zif^FP&ahMy+HsbOqfNC` zL)s)uHGpN>XTdVPt zRFHO@rH;_1TIx^QBugEHW&ZnNnLpqEDm!-`{I|kMJIbR1 z1K(?>9cQT@Xj3iqJ#CVucEB=^Z(y0n1KLODTz-M$@!rt;nv9?3ivQS-Z&Kzz$1-Ia zmqe)@DZ2eh@~HK|j)B&9Xm{fJr`=?!wX{nuwVHN@rQV<&XQ`F6sg`<;Hpx=2!cyzY zu++kL=X^51Os{&^$uHHTa&4YREulrei)nXS>N(m?_+C5hQcEqMonfhL+Hsb8iZ&J3 zKW!4Oe^}-_2bTGE&}C2ymg8miDP`{(V0`z{dEs{)a?(886!yvUr&m=E-tC?5_f=6F zaLn(mqTZz~iB@mZ7DlVLXmg|08rrOA^(Jk4v|2@*7Oh^V^+l@!S})ow+7hpNiMG(I z@@aFuYB_C|SG`D^?o}_)rg_y;TAx?t(0aYODHk9+L&u{J;d z&|!>Oai4V4QoOH^{-D(B*>-Z82k+-bIW(vuQbX+2+5py$s9R?sOQ{vX*cpUeS4 zemld$HzE$|vWeAN+VUIrp2qgO;??oa_CUPDz5A03g1dkZl}khWJ)51l50m9mpmqG& zz#o+5!gKX^&(|MIBAl-jtaq;D`Fiy4ln=g-YnKn+sdvif6KI)G1OIwP{bAi16SbjV zb<`iHT-@amQ_sTt{-|4?jw&YF;`{Oa_|4n^>J#5nx}lQgWjucdeJ}i7eJP!c`p)}@ z_1*t>^<{Q8>Wlq{^^N$u`Zjhk>iczhsGayHuZQ-~Xl%bc-70-Oe4usx6YW>ENP0F_ zUeD4B^cd?u+IRQ$xhv;yUZ0uW!{-lezjJ-wU&-@l)aSIXqWySV=wq8&>GoqIzT4rn zA83aieIx#1ee?gWJ`cVzW6;;(AJ%uv-_@7W%cw8Q>yB|*aFQo42G>tQ%!Yo;r}xh*s+rNxipd!E>tZ~=iQ04? z^|Q|nkKOvHgF~#mgLSQ7(^&ko>3f7R9xRH>=+}6cCoec8I?t+=(T~^Mk~C`@$1=_} z__^eJBlFWGpE!qKFT|e*{-Gg*QFksz9l8j0X%NQP z12M+-+GFgt`yco+23tE%gV_x|)whhmcMvcJi{8Yw+(btG{#wtHQz6VBcxT&`2kKg^On;k9|3KvQTmQ}U*UI$wM^3-) z-%NjrOn+bG^pA87)%U+zK99)s|A?IakAE}$+hzK{M^67kL;5@L9`v`^zQMK~+t=9s zi_QMOV4rPuu&r55%+X`MkC_KOeg9bna(PPJ1`+U`;D{5*T8wF_zkLGIYQG z5iB_eYw})b)AILEo{V$u58dO1LHtIRVZ2a){G9s@v|U>(Jzn5g(9j_ewzqwaTle^C-gFD*Tw$e{ZUa0ePO%x_@7@Q`U~2PRjd)OM6=Cl znBNZf<($iix0>(GiMB>eeG$)6ll*JXEiFwhZslK_gL$Kq&mPaN9`jApKvmqIW;Slt z_|mqsW6-|Fd*b#Moy7VMq|f=GqqzT%!9OE;JORh6SNE^&?`bqC1#KeJ@uXPl-ItDM zlgoTEPF3qk?1tlr$3FuyqpbQd7XBC5!ymLf{lESO?InGnX8&Ak#B!f!+nzL!;{RM? zkX8VF@&x?*BQO6kVvD8tFKX&7J ze#U&i04|}nz}?Wth}+D3@sHv%KQ^Cd#J$UWr5`t#^IZj;b&p7ImKm4N^rn{K_NA@~ z|6f`9n?rqfm*M87=9tUxY2u;;E?~wz#(Xhe)c(#*ZEp5=2Ggr<^s2JBu;=f{5+dnxETvaXMaeTj~?fg^OM^V3XvPRi;D1fosG1MF9-{tJjvG!xw zC~r)So}#|8zQz3H?`c+e0ydKNy5&os>MOrO!ZOZf6 z0p*JIO-}i5O~t=MO}HfBHdM2E6nQuF3%0j{rMaHoYtXh8Wj%ZzuVt2dG0p|c-Fv5Z zeopSRJp6BX{}QylX#0A{zi-`s3}u-Ft(!YOK5X-EFWo_Yn<>_s9?ztvZMmt0q#g|h?8M=(PR+9YF`lATt^JBg)ALQjK zpRM=;n94-|xf7W3%4gwUD4#i%ET4wul+Wu<`CNZy`D|xBjZlaFPWfaz<%7Ir`DE~4 z!TMjW3;!Q&Umh1_wg3Oj49bAJpe!njSORu!5fn^w5ZAOc)LgPesT;PNdeh8=XhE}b zin44QvW20I?$y#ZF{^9c7HF|W;P>|XV_wgk=Q-zm z_Rsm8y$$~4oCJTyx062~o@1{+T*DyrXF+TJ-18^%XNu$xV43(6xEna94gQ3m1b>>a ze#OGRs?7FvTM+*Am;Cu_YyOP?llc=W`2$!ge}w<3>Lcz}3vYuzZ-M6a`kzm>Lyu$}yQJ_vu#mHfHh;7@pS8-Hyu z{)Fjmyk-04wr<}~m;3>&0DsU9R?)0sz&SwDX8*!rp1FD~@&Z#sW(?9j~Ls381J zKs?D9%8I`pmok%DyY+hRG3o(6RoYI?n}yi-Wm7%F zZR$CG4D~oe1U@U(dTw=iw<8vN(o|2fO+7!ep8k40SE}{+90H$vP4)D)spm`9Gg_}_ zc5^)y+V2_S{=))OJs~#ryvuqP==F?8Jq61`hYESk%@p#w##GM%g>hgS4&l5yv|*M&H!Q<=?$3#Gi#&z6ReIcQY3MXGZg#5bAvp;x34I4f8a(Bf_`? zVqp$!uMgf04DmniH12;uT|b|J`yVhD!g}vPeH?eKU5|SZk|yB{|8sGM{{MhO=LvZ7JY$}19E~5( zP3D=)Jnxw6uz2=s_HD*EGH@vvqT@0g<#_%wzq4P*weDhU8FJz~j>`!gz>|T9z0@?< z$BS=}XZNN0nDVKpk3K_|iA5RWnt=DBUZc;4{Z-TXJ{IrkpPGt7tAGB7*0?t*3geT} z;6n`f5evTb0e|{pe6kU%y}c>1dcl7IN;feDVf1DfOV$Mz1dImglI(;o@F5{8$Or zEtM5T*C(T#5AREX1N!9UFXQm*Bq523y^=;Xsn^cSlVjnNt7FF zZnT1ttE04rVysE3i7yx#zc3|(b-#>yi<7hlAL=UIqltPqq0XB4%8@?t&C^iaskx5g zP_2P*MlDRv$i*5u1DDiEuq{nn5SI{^8|T!P#ffjgHRh})_~2Rf@mg@=mQR~#eHXN;vV2RSH93eZ z`$}5(cMHh!l`aK2lqbtkrcni2Ch3;)3?@srLL3zKFXtITKQqtYh}ARsI!$HHtMjm z-M#p6$UQ(WyLx9;V)cITo5B|+4e^tflK%c zYjet>5Bm`Jtr_ClQdShRMd;+|x(=)v;@EO0eE7CMVp_COPuSpdoe7_HCVbW+E%?VN)@NlKccLz{ZLqwZT_oAiw*PdK{hMg( zf;8=-?!C1+JFjZ3i&sDw*9?C8q;;|BH)}in(1g#g545z?y-2r-&-o{h&(}8i_)Yk{ zXTs;5_TY2P$>Z~i4L-M-@OjFFPicGbx%=etxz7fl`6he{P57*A4?ZuPJU-Xj;4{*M z&&4KuX152Qk4_$+NjCVznDEIo;gjATe11E5dg`}2 z+QB?iJ2>A{|Gv2$%rn}-yq4`?hz%~Em~c68e@k2c4e5V;5}hgT4lIrFx*NZ9C+9kb zigaPDNV^vp>G^#`x-QR1XWP z=3~y6>m*qLDclOj8Hs)a-w}|*gVZT;%`Tp=Gj0Pepm^LjdkRjAj3nonLI|Jnu`o5xPDH_u{;^(OE6@{;e2qB=o*F^nNSXb4|kjE0g|r2Hefif82?< zr~vDkdvPrWi zh*mZ=2le@cp7nZt0`zRBgL)QQF7@lZ(IqDRifyG|guyZoqrbP2y0xQOx8|61>uL1E z?R0CPqc z;~AX`dI}li4x`uh7&3k$wv~)&XVM?3@V$U9W$lBk(<$qX&9Xj)vKBmRDeFIk9nP?o z_16OoS)*)U$XbPOC+}}jr!McvKTY1>yIfxBOTG1;)j^Y*X%kytxhQW9Vqz9w%g`w_mpr)()l(Sj(DWNF~~@-z%Sr)IQY4F8Po|Gwe)FkLf2|>Zk$~_^fYj0`&EmwKVj{pv^T|{ zwXmad)JK0-^RV{DpVfYSpWUom@fQJcDi+gA}4cf)E)d{`&B#5TE_WGS>{n? z>_A!aOzM`}e$6q;vHfBmqy1_j+J30;Yu7c)TDD(x zdCjt3N?8k@wUl)>Wj)1S)`O(1QT8gxT7_>X@4-^u_xySCe)1WuTKbZ~CVAf&MBc~x zH~Ry#yi33{wqLcAn&qbYgkO}h%%k%AHk2jbq`cMk>szB7+b`x}`*rMW<}Jush_)&@ zF)p(JHmjYM=5?TN@&w|7CF4B}%Uw<{=dl<|ZbDz8mto(3ARUkXQvugC!0s+YJjnGV zJA2;0VR6rr4JB9P*QcRhvC0{P^`bH5m59w~pYxG_67q7NUINxaJc8H{Yem=P?lIPi z<~gdrhpv5+hVw+wx5)49X{f^-qMhxODf}?=G7J0=G+l}{*r4-jgC^obnu5{O|0L*% zY6m@!sq|pZ-Hx6mLFnls>G?j*n+Q2%o&-I=p*?P|eD<*IZbLp-sPtf*-i{tm5PJT7 zk0GD5q25yHT!)jO=hc&-=f!r=GgPGqbGvr*bPht#Q<5I+B`E|w)re_mL+#PG+fRZX z#(!w zdPagCtO;7DeSke6^m`{kPuxk+6VVQOHW>7fj>YhC(r2r_eo+uw!X+)gIK2NTimN9* z=_f(Y&u9=g2GoCG~Dp9DS6wu7FtRC=&K z!cO1ZLFg%!^qi*C^C4oD_WFZcPJ*5r+Ck5WvlROoVo%R!3HJWrYDv#zot}qIf}ZnF zf*uk7wV`kC8}tOTpVA<-3Ws<*z1MK0~a-{gvEHdB})$)Obg%_d>i=*Ykl5 zo0WKHn38jn&fZe2MS9Of6XQ`cO)|c|`6TFB+zxtA?f=UtT^mpwg?1feHg((`*aZzAL~-$V~}E*3i12Rc`8 z=$w>KZ-btE?3Ig-Xzu^8j}`A~*$3jDxo|;KbWol1f+p-o6*d%$J#$tuLVgf>9Fm?7 zdI^tGU8H~O#i2gMN&+tS1FC)uwfO`oF-_Xz~^3v(5kqHSmz5`?A? z)*5~R`=+-e#;(Ua8U2Fn&-Dd8^x4Nu@_E6ar>^HC8&)XtSq0gsbj$}G8 zME{ijZ6o@nqr2l=Imna!Q^xdKt;3rPdboC%_OrsE=in62)`odwxu5k+HJ)pXv$v%O zKvx3bXlIOT*fdxhigo4d5+i$fx%NfQ;WU;UTfeF3lKO(PJPoCIznODTSnq137rPZ$ z%%hGItT12+7zI7NgsH;W12{DXj7NgNcrOTy1uBf+Tf=xCFcOC7bQA@FQ4s{jL={GE z&sKE21Q>OIp`EG2Sr`P)13}=NuEMEm4QD;zp2ysyF;klqT;S%6cczbSzkD2RL)aMu_O$w6Su2m<3b@Qm$~pd+KT9b5<)(w}z=0%JrF7@w;!whU`U z$4J0X{rMrxZ`kpxe-JpYscwgm9NPqrK5Ex-WU_7D1*fP8oE#ZJ6{rQd{Fn;fA z?=x1bFfv-}{eH+n`t$N2Fun)^<2n_Fg+KoiFbWjgn!egzCT|3RbD;{y!k@nhI5i5K z;X&YR3<76_4yOuwT$O0y&z}Sw)t@H>fwMXYoc<~t3xB=_aLoR^Ll9Wk1c4Q*!m{w^ z*8*0q!n=LN_A;6t1kSI(4?aNWorOQ20XRMdPIVAC!-K&2RE1;V&(8*&N(Igrm!uLHlnE^|kW7yf+RiapU@?w2~! zNu2RgUUQ4n+w_38_2+xFH{Mu{`*X0iU_G8kuqKLY=hW|;jqmsHyQ}s0=Z)`o;OQx1 zAEQtCy!G1FbMMpMcv^gmEib@RGrq;+TR6TwF1|&VFUPYU>&@6V;rjKcK8X7b{Az&T z{UTpf`L%dP;ap6S58s)WG%(LvBhO#)Jc9Bv55Mol_gjtcm+(9KJMz0)#|k6Q3_R;4 z91DCF8TlsRX@^g~k!LjPLO&+z_h+yVPp6N3hyo8Z@PPR6%$^M9!#-Q);dj9YBM=GfBuK3@!*t;u@7}F_M={eeW`P>KXtaham6g`(+w5-baSEO znlHw?3+;vP@e|@)*2J1Z+1;dHQ-EMP1qkqppHJZPvA2)`ha?qOR?-u7rMGuE$Au(5Nf7Z<}?!AnQU|_UHaC z>(b)9H=r)h14dn*er?wEu&fJZ2cWKvsEg~h)P2-ZNOK=`FZ?3$i@>iZe!M@dJAT|} z-4#D|pEcK2a2*ZTpz_Qx?uX{SY3{RD?-Ubzq|ujq6Ysf4`wRG0mi-)0mZd*u*=jsl z_G3J`NBcuOH}7#&v;3JzzlZdniWBO72=)Gdp_k+Is9)|qjzt^n>#6TO#yNn~dn3(# z;U%EyKKulakbl`_jq7uOlb&`~FADs3R4>9eu7S%o-qq}JdKcnFzI3P5qa! zqxcnV^_HOxOTd16d>8W#+<%r(js4kG1taP(UcVRdgV-m}bM#OL%BS9yfY_k2 ze_UC%R$bW{dm1n&JRM`1^xdN079DEzLv(oD8&QXOtO<=5YXRM+eGOGHSXY;% zRTIY^@H0Mf-icN{=XS1Vn-^F=sE%{)K$+(Cx$|1Av7LJd%7HekG0V+rIpk5tEYD{- z;AvIv8MPepsO3B;R|8(f8)pKX0Uj@XUzZ1Ek&p3WD_N|OvbbPaKo%3RA8+9`FI=z6 zBi=8}DEadS!_5cOr_Y%-j!*gAhq+zT;^Cm)uQIMgOK}Cr@|1MMcVB+5i$V=@<*$^vjSR-AQz@EhhnY9V(ked(j%$~-EKn}XbWi-aJ&Sgw{c@uH{Bi;5*L3tm(tj!13Ai{+9Ri(2zy7kssq zjjUC8aY_(g>b&diGqL3r^;l)b-LD|zvz!HdsMYsHH{ zAXnipmbd1`R2yD&RCw`t5MF$s;AZBBU5pW8Af(t_f$x zk44PIdjPW0m(}lz;~7$n>DUjFPxb})pZy^Dl(8TCL43z2`!D>@v!mpbeINdp=R(OR zW4K!uFizB}3;0C4bTghJ{)Zj2OhZ#slzhs1m~RR4u`k4LEPox+gnc{8Ih6NT81?3> z`Lng^OOa-u>P98MY-`a!m`)rP3S^f$49uw#81d}>TkdMoZn>B}>bHE$s9$J(JXS6qD!-jy0K{|lKQ?q4V3 ze$*l2e&nmey4@CWKl%%MG49B?pEPLQbK@3(hS6t?^lDWeoa3ccXN4Bz{IehSo*>^7 z-EQ{tJi5?}a1I^n<#*l}AkVtKnmU1eGB#d_H1o)~coXpCS|`B^;LASB+Y(pA#dRo4 zTxDGBL;f;Xd_8eyTwI2AseZtf{S?xB>0BKb33D=Gf(G~2Ufyk=#%IWLVEm}3Y#M$j zK3pfuM!5E~Bpl9i_mX z@-_E=*7ZjJ2k>f9rW)fi1?>MI9b3d$_!7(hND;~e`aj5{>O^1YL@maKt#oOrQjU4l za$Q*tcv_XaTrGz@YB>$%7NftzbLC054El2_<6in zZ4thA`Wk$b?SQmN`mtM$HqMEsLzV{)Kj!M~%W=pz;G5~!E&TK1+nW9PXX{$~b06R* zIJI;K)`OAHmm@##-8neLfwKxV?~v{u+ym&qeVP&Fn>ss73OZ)_-$MU_dx!Gha%3Ky zk_G?zRvGz8_~!bi1*y+x)c3+k)Hf|u z7W_8n@1*3v$|Ap+pG~*g%V)BI?;MHm`)$i-Uy%AdMt$RCeV?>l-xopZJI$!?tdpp3 zN09oWjr!tFqP`b{)E8pZ7apWOv-}=LeNx`X?`dgYP1*W=eaEkLW4Wr~L2kt3yl+$KBxW6O!A}xK|McSs^Cp2%*J-nMl^LFQRwC3%KC++Xxl*uSR3H6+d z`X*xj#<;sJ+vQyjJW|otrQvsOuk3~roHbFGr+N48!8vxZo`z_&q3QT#!fwkk-bcSN zDpcF=#&~2H#=(X;iZ{%^;)eQCw7qN-!Y~#%3TK=Y(?6ihhmj#AVm`p3r6-2qzMyQa zx(wrF0X27W9aGM)~cJRjx|67!O4R<}wK|Qx%J(O&-Zoqo_qu~WxJ&1p`

;jj=qg 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%0D8@D}QM+|10hCFZ17*C*NOc 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

|PULA@YrKdC2H{Y+6?ZwkH+pkn+#nUXc z;%T0w>?5rGN~OY9=sUsvN)wDsQ=Mm+W=s)(_MW9j7*E3XEL{T*S}S~IsfVv35P-$e6Unq6_N!t9`yRe>GWTj1&G)0ylN7e+0mE;{!G7tPEaYlveW5&>#VA5t! z(+^KKx6!umbEQ>ouzxv}YtLV60{F{?K5b55Pt!~vf0_N%?uAQ)zxcNC)?1qIX*!2` zgvHXh_zUf2@R$E(Pt(!x_hWmS2KaT*9Nga1G~VCSG=@5ef8j5CkZD5y&pXUp6PlQm z`60Z&k2$E?LHpenT%X?{+(>)kzGL6pPR6Po?1yu09%+QZyd*3=*N+{hoF&*p`Dc$7 zd%jC5zj1d#(k2A`mihS0UO#8g7j-IUTnV!gb#^`he_$s0xHbX|W;XkoZsd$h)k}4d z&eTyq)nzApm{dRcZ?bXf>%w6kWi4~Hf9};K^uI73-blkkNun;E&YqXXM_FOz6SP}D zBcF6}FOT`O>I13bUN$}H;V{AZOBfcTd8y_{_V|7zJQzHtB+Xu?a-Wyfcue?Srf%fF z$=}PApJp%9)mHv%_5+XEOB)*gv(w-)7g+flJm!jrlY5!Ym>Y zuV=qEST<0xFYj{S43nY%9Zf!oIXn3t!F@AKhBN~LX>zT5VFg78SeOjy`&jSgr}VJz z13p6;{pWG`O7P(O4&%W>%zma^OBMquD}l*SmJ`U^#h+R`#lI)d1SSKI-_2=W&;MHY z;7YOoaNi7*amPL62p==Zs~ILkew!_N+jdMLt@8T^?^|FpJm1Lk1SYf2iB)rN+EKRP z9qw&RX6qmPxSw2SLwzR?llg>xYhqkhlitWq<-Tm)yLcG$JM&)oFXz2*iMPl@`nJD# z%t_1k1CPPa5gs!inPd^as`<$OfX6i3)3oe%82Qf5Im+ZKYV=qgz-3REE#Ik1;(>?p;H~U;iJ3bS_&-x5Q{!IhP(oO z5RX|wtV;>|d+@=w=WO)+0gdIx2g_!Csm$8n^r_Zg?fC$Duw+^&QEWU$>&>DAk4d?|sYW#|7k6HTHa6D#qn(}kf)OVUi7p!j=(P8h6-&jVhOPwF~G|tmoGwb2run-fS$U;Er%CrX9Fdt%b$td;k}x@UfWZb&p+2g~hyp z?GMwRk537=OV=U4Ff8URi!O-8OoUE8h-7bLG3O&A8;d!Y`-IJU*|S-;?Og-kw(b3m zUq|I@Y?86PXPplgQ{`hZRpD67!#3Z6{xS@{!{l_2MHjR)10*Nf)aa`{H!rj3f_mNy zx>9&{u^4lH%CNl@!95ty_UOq2_v!o? z+xE7lT@zSKVG?U8SQC!547TJN#9G$j-`Ko82XDe!{Jxg*{FuY&YX)msTGibC+U?oF zDmRF=JW9DX*0MT)wd_6F)3rzdYbo%tmLuczKMQNgnc5s{`G$J@zrwY=lk zLGx@IYsvAkmOYi&A#A6xmc^2(@vUwh*up1y6AXI+^Viajd?#VPbBpv^xWqvGPZ!Gz zoEtMrb=d*V zGKsorZA5jdr;e%4i#eNh%?cl9X+_@)Eu;oLLp5dD_)29U zZxi!!0(si_%Af3X$nGKQUbw{l+=t;S8qb6H%I_?CBjbGP(wDT#Zx-)U;VZZD+{RaK z=HA9vrf_fLD|7w2%ZA3NyD)-sblc!7rKC5qQ@NK}_v$x?FkdzAe_3Hyt$6yihJ@h%sZ8Nb8BS5{MxeZg0rmp!E3L;ZTI z?r#0d)8i|vuVfF=mErL&704qI?=mZSKJQh+bCAE{UEX-i^;;AB^555*qKB_6TW~@W zUwKo{)8H$wtPRIkzB3HBK8}nUfWcuT-Cqv@^l^&Lrdr29Y?I=Dt9_Q`6-8mo)iaK)%xd zr&cw`ZE6O(xJ|QjY4Q(Ao=Y>4{}tE^;Wq!E?EY39&B%~Ant7(Jg5S2>58UQM#;C9u znui&WYc1SH>&q^t;o~+Vxevo_&SXpp)61(Y`33bdQ~f(6hGv{a7sPFLKCXVz61Ulc zU9oYS&$yROb8Y%Y&lcJ?{Q~&5?ZE+l9TPSkTj%OO_U_Yjz-^xPahs>Zahs!Tz5}?; z8}J<_r)-NZD5sUsh1rkJ7G2POJON!PJPWrODBLES?;>VI67$!}kXRJvgRvdR&b1Bu ziP_YlXZw5RZ`N(bck<>3*Qp(moryuYhI=rZ>geTz_Z72A*zazwrB>;q7#I^D&$1TE&X`-*8bMGHWv{!LbcyGaR4Gw&^xzv&bqpXv2=D z+;o`DJfAj**_im4)sN8kEX-#4ubX2ww^NV*mzYf{{QVeabE#hk&Dm|tX1tHt+)Eu~ zH-*^@MRyar{m9@Je$F^#F3e{AK4LaIh-Ec?ksG^=?khItUuTD7Hpg1+74&i5p`GnM z{4%yKO!sr_d;-4iU({cO*&57-@1Lq~3A1@~A26GLy`IEu7CsuzgOi4b2NQMi^z$y+ z?GPOKKgTC^CuooEB%gGc&1XJs7-n+-?Y}>mjlMr)=2P~(<8t^g*iC+#_?VY`er)U` zc@}SYe9XDzziA)hW0qR^?+c5|M6AMgc) z-PB+&6FgYh&1vwU_?U5)9L7`D2#dG8K;FV`oHkDJ+vItaNe7QZ>~xHohgWtX2$e@&O zD$Q?)&!%sLw05rRkmVGQZxo+& zTyh*!I(z*18{^Qh)12X^&S7nlYwEloZ6UcYhR0WL)p@K*89zxMGv$TJxUDH~KV@vn zd^}L*y_8vYaDL-0r|(_(f6P%$`C;|_lJu@l?niyqx5_4f{|4H(RY>2viZX1uT(J*w zS!4LxPr10f&0_y&fVY26ORX107H`=@o#GMPFVfteI=btHns1@6?j9MQEykv*Z_2+i za;wDu%O=i6I$J~9y2F#_kJPZQzFzt`z;WX;)E;hJ26>Us;7@43<@6c$%D=cVa0baE z;Cr>2-*55u$Q;3%r{t(SY~Ah*FVcCV+nu;i=v1r2U7b>Wj84r0Lr=WF-G9F{Iro{y zdpBO2XXDvdCq9cWp-mU?y+46244)Wk(FO5|cSVN`Q}KD2O-CBruB;LrzRW;; z{q+a)omlGZuF2AGmZz}w?bTMC5ozqZ?0q^LuQ7Ypp5``wa7bUC$6UeFGtcLr%f0Ex zvOlT%@t34=`!RZE`mwR`iN5UH_#f-b1Jm^7Z}2ZLTc95*dNjv<)k5Q{Eo6V{7Px}72xILD?Vja}YfM8`P?spz`cbfmHAo`f#wUuqAD zeEXnJr}@$XYN=_HP{kAL7Bxhf>vXtVL_r@#ofa*+_j$ z#nk6{i$C?ZXRUk9L!ahe->vP%ucuE(JH#q^UbBVsKXheGdl`MuI({ENO(SRZyuh>P z`MG7K7>kF%m+GN9MNHn@%MP0{+hJ~TDCrXOKHiHTlisVR7yH&n`N7MBl=%R^g{ExU zZ4>;==e}QJ{aN3~ZN+y>S~HjN&aPBhCCuLn65ne%jdLqc<$JJ^SgS{N_c)gC<0}8g zqazEZY%a(Xp4QaGSvme^`HdMl{GStvZ*IznkI!J;ns-ZcIhUloU&EV)dl%NrH_6PZ z8kCja_-0en3iqBftqeczyN=$wNf%R&V%s0jh%d@;uB&OgsJGVYww;i%KsHW!&m+$r zqmulo?_YYakA3j|;gh}j?k`N8nWwF$f6>Q=jmLMAF1^2WcMs8JQ?Kg9yL%X3+-r*T z>#X#z2GS!V_j|+Njqzo=&im$Yw&sQ-_}1_o!zdH{Ji2m z&QQjvdCYO<m!LX z9^TLzFzZc<0h7GT8NX0uyM~CG%I*}2Z zbWXNi{^No2C#EU?oiycNuJXy-lz&=S`JDe`mw#uV{Gv4FKbfZd(^NiroAM70E1!Lk zcKKHZ%Fj(x{@gU>AFA@n+mzortbF1F?efnEl%JWV{K;v`Z>{pl+m!#gVv|y}KUlY2 z{(wOFTNZ`)zjM-*|2ce@lD8@UHO*mill`x|=4@KW>UebQM*1mOOk)<`4vh2d!1`|^ zFY>L)*j3D7h7m8RGY^{Xb@IOA%)LtNnRHKkZEIff_oVV{C47dRP1fJyGk7-POYm9a zW0(2ZrY9KFZM|7&$t?$6GJ10(eOtCybIz!Ib$E2oyyThIHe@UIkXJo*9CY&0iM?gg z?KfvgkWs(N~%lIeAfirxf|B|I~dOX>j|`6Hc>!Guq<&@HBicNW=G$0lp6s-tm_VM-q#Pcc>du};eGweG(0;2p0@{V#HY-? zjE%7Sx~r#o@Qgkip0zIaV>~yo{=0fO-zY^NHl*SCgfu*VNc-6OxlTM=cIBB6o~QhW z?{VUr*yFtX3}O261%>b1{%i;Tc}K1W&)3?P($-`;G2{CQ+wTt#u0Kh=+WrRL)3P6b z;GO)lUVa++prRF>e8x z>E7u@uAev!zi8Nj`HkP=U)908>le0nRxZb1T>LY1yFEVQ4BtoO{nCjJSOVWr&-Z*p z!$S*SQU0L($Bv$l7?+QT4XYbq`H18<;dp#R&aac)+LC8Un}YaC^g-=m^QrdukUi2y z#s{A0`HOGSPsKyiI?q4e2|l-DRGWm4EPrnGQN(5*W&F9*<2w&m{qd96MPesVfBDI( zyRe-~?DLLH4-=fRHj+1k?=sKeeES*y;>WpcGuR6}gLu^$ta*rMgBi}HJ-}M#4JzoK zz*>0ko)E!kq;ep<~xgGb0_mLLwHgEE;T;77;DEIkG>@oWh-X0I~_Ca&rzLd?N zZicrl+#B8o5_@LkYV&rA;m!WOm(Q2Ry~OvueuTHOAa8t|&X(Ki0B$0^0wv1fUXkHYV)S~fUOVx#2Y#;JL9&i&WNT=;WF~y<^- zXMd~uoZGH^1Fs%jQMROnGlpu(r?+_GnbE-vtISIEr4(iU(v+##GQZ3kzpQ4qD@A!f zOl@A?7mUIA?A=lfmK%R{VP|hn3~#DmCb6;?X$?c)T<6)Qhw)iM@Y4}TTRv+5KmGWR z8Y7z9a*Yx0_&~l#O!vmgLio`bn$OjJ=gX!7jOr!%3yi;cT#x6caeX*fjpakRD(>Q^ zTs0;i%~fOaQCyYZ5nR2o$dmPA;#QQ`VLU&S-`?r3#C5j)j!_wmMZ^bXMyoWR7R{2j znS&PJ;KefQ9R2J_^z3EGpFHN%s1#?g>S{9smwvdzNyU0 zK4mLMc63&rN!}{EVpsFBpX$dq@4xxYhbmuXiwBi|b;ph_4?0gqzJY!=FC{zE^Rn3I z#cSWLRj;t#sJ49uztrTncls)~U7eHi8+*ZT8S`cN!F#8#shs)n?jE|Ty^`tw8vmC5 zpuP~H9}M(y=hd`l9p{>>EcCkbEXr1lLd0)pd!F{K+Yi=O_WI-Q9_GI(WAF5r?v|X!&my~o;UoC0IK!jJ zFLTnwh7zaWrqV<5wW0-!>_dHF!`Y|M!C;(W*mwyUu76&qA-Fk+w1X*1Soyf!d@bBLh3? ztv4^a7F&F*?2&)|7jmuRozi!QR(X^ZM&0!N>8tYt>2D%^1L^C)7^9IB+;hyDnj(4a zik#S211LWN_QIUGJNC8yM8={U+BQVjF?TM47seKSleKoK)&RQ;>#TZ1|Be8Zxky!oN-k28UWSROi$hU|(Od522B|hU<7jPfQ_s`_( zj^C|^#OlabV`L5Ku40~lR>z}aXTzuJaTec9=w6-~s~hX(pS@xANltayNp)iwH!twU z&Gp(}E8OKbLt;(SGxM5u@tfW%uj%_%d3Dcph<`PqZNp&l8+3ktL;H1+*tUsI<5$z2 z#&$&+vHHK^YL zkFLu^2JpDl!QPYC{Fe2dYUJ4Kl!P4X&b`NzBXr#}TaibrSp5@DW7J>It$&<+mU?n@ z^L?&mzL$FWZjT;$bRyrBra!aH0CQy|$@;1G%otZ@iRtug?J2I`Zz(zq|J7 z>zlrAlQ;Of$cw`F>I+-PzFOKlUbhyy56Npw>V7xK)N5w4UX|w{uencN&l-?duZ%Xa z`fXOf`%?M&^(t%w9z?z9f5E=jnY?GaeY#z;UZk!6p7dGyjnSxIpIzklt(RZvl1{N1 zRhcVi{3FuH9I~-4-_X)_XOC+pb_ zCT;Th6?#5VX<4K4=d9!P>;jWE`FyON7bz`1LWa}Xr2n~|ADiDO+hx|(H1{3F^Qp|q zor}vxSK}`cD^}&=(NFes&z{nL*P3I&Ca|3|X``G5zB~Ua`CyZb@A((jm-OECO{#`6-!l=c31 zO71<<@?S|~kL3gZz!*FvHQh{`jx;u1Z_$OUci&*sk;bO$AUb54iqFe!I?~v5KRg76 zwzeQob*eal{>|7cTwA`5)`TR7#nFn<+ljX*Da5De9$612W~k~{#1lE)%0^%Ax0U3s z_HboC_op$nuW6TJyIo%XX^VC{$9})je@|N&`crvtw~_eT3J+hgUm#4*1MGSSM*8-sjy%{skt7vr=;d`b`Gme{LTFeJ8>{@(4KNIdE| zE3>Md_!;b_s>_YUzI^9Yw|}b6oB2uhhtfV@a8-Y^Z8HF zh1l5PHeJBRzAw5E8#~aZ3+VnD=Y}TM@A!H+(TRO| z#A%^=SWTZ(oSNcyDo*j%I_D_<&7U{!cwpc3^L}9`0Xy4G`iY%wpVZH4-_BO&JTSbO zo!t$liEe0bTy@T#mb&&|`+d*jT8xih@jjKEoyY$3Fj>EQxYY*(vc5uX6f&NzvgrbS z=|a(k*x5hZbOAei7IdzCrA=4S{}XMxrf0BCmocwNYg@;vO-a*>Hr*H7Iv_>cJ;t+2 z=GPiirRQc`ReLUkKi}Ra+jGxx&D!&~etQ+@Ebtc(YGFHXv)i-e_!jMXV@P}UP1Bwi z+42pv=YQ$PVeNUgO&4g-t)dHQ&y#JsKznY2&Wx95C)=}n(3<|K#>-`Ox#`>V3*@17 zwnrE@_oYprl@15=@fg}v?KdD*`wh%%)_&c8r2VwslhD^E^IEiDn~?T<^2~63tREb% zkF(OW-zPR*p#7$#X}@=Ex^zEnqto5a#``CVkDcWxh z&%kA3+HcmP!qxCSo~vRfFXcMlr-`Mxw)fu&FIRr%`aA!=1|Q}e@)Az2_caqE zv5|fmr|SwoxB2hBM+Qn`uDAHlH8;MXoi``mN%~4_PW&$YM04UwYfijg&pym=^wK8h z#B23@ozf=fzOU%nb0%%_`3ri!RB4lQ-)Hq~zDb*W{-mClD{XS_`?#LnVA3X^FV^#k zN}HVfKCEXKn6$~~_v?9)(k9n@V|sRMU_RW|DW1dg ze?G!H#Ut19d^0%r_T#a?#CnA7XPZ69vcaUY?McqU@L2e17F{qFz6*52GM(WL`*fPx zI*oTCpOQAKPhNijzHIHV82)Nw*AB#s5}Vfi?%P$T}vH7bOnFsg1-|-sg?EQ`-6cVcd!CxT`%Aro9K!-ernc;@P95 z58DUT$!;%V%I$W3oH~GqR!8qXF}7-HzvH`uiQaX@+|ep0Uf%EKGr>HyR;>LQ@lQ^P z_y7M``||iGiuC>NnH-Y@G(F?-^^f_~bl3Y< zz4g}nzV+5yNAr#|-0@S#7(Qf--%IL$y>%|p+z)aO_(s3=5tMVO#AkW@hRQg`wJzO+ zZ^4$I{zy;l)`zi%(DAfZ&^iPA#{eVB1uoh+_=H&~H}6g##;`rP&>xTHEy#XNn|%=L zDcM?POEcz^>iXJ2;PAZ{@BaiE)Ng7|!}BM)HY|YiBz5k;jAnnh`vv_AJ!k;53eI0YxP5MjDGlgenj8w=SR;%z2MDOt&{iU4q;Cw`?v6oQf7EI5&7$c!g{F&a zG>LfVlVgm&sN4E}Y}?ea(1Ww#znq0VUoM0C%6)6F2d3W1b2xSA=l!rD)T_Bjg-)W6 zE}cW0o$8+@-&uW2KZftG!FyBR6g}IFF-_XuK#n$iV~)ADX3^BXV633!lNxhB{V?br z)&#_QbW?Av%i(-=3D>Bzwc$$`Zy(g%*if8(YBF@>od4ZFaS&qp4fW6yclP?Fkn>c? z_nOLnZN4EwPqtD|$}whe-#ztYGRBU&$}4b2+B{SKGH4d%UV(ClI+VM&|N3j3$}NfO zRPGrl_g~;+8P13LKo8FQ%@1;oLmw^HI0mB(?knXPYK|G}o<7~j_*5CzO!mV@+xGz< z1YJuZi-T?+9o`4L^qKo6zIi{^%m8og2NwH3Qn2m-yDRpR)oUhQsDt`D8f$wi(cYa8 z7Wv4BG>)C{*%=>GW9qk|z5vRw)(q$2+2oUXM&%|vlh540ISw?h1CO~TQipfVD2w*+ z9l(e-e?BU_Cem>I0~6~2`wi&12)I79-y`?@_+ZZ(*cVvqS%P`E6Cc*2Ou>ggM);t% zKW8J>@|v)g7lQ|fU>j8)Y@g}Og96m0@?bcgRUVvz=Ow>J25qvk2KB2l*vBgOm&%|` zwjW2igCK*y1&#OGX#5fOMU?wXX|%O{uC3h9P;Talxc|)I8`qg=3(vH1zYX`;@{HCW z08e{lm*FPZSk~Y(zfo*hpE2)%S%MgAQU0 z;&|2Jj)Q-h>^n3?3mu%%1wKVr_!P&$r|9NuuY|7;TgSOy-7VNhaEoQ@CIFuE#|r>| zK5X!K*x+;FbH*8uJ#6kfy{Njq#&e^$0CGHx;|cuB)w!P2&9Nj;5BnQy@jnIYU);wM zhO08+g75__zoZTSb-=v<_zyA13&WP2Va5*N$3|e&{reF+-Z5Q)J8Z$3Yxs<-x52Of z7I2Lyb7Z9gTW5}WLF^rgl$q&o25bRrgRFaN?wR<$5!d0|y%o6L{*M6n63V=7vjW>{ z!DcD2S^l>HJAan~_oOb%>=lOF3>d_1S99+a_c_tFj_Ie(ejD=`Yix1je_fuoO^01x zw$D7<80Jy_=%e`l49ctnjn?_CRl{-rROOWLnfIKs$a>%M<4qrF4*sW4HzNE$-9I$^Kf`}=_Q}HS$xLctNZsVgB1#hWlN` zdgW(l7|kg6TGP>$slG`Ho}H)P0 zV!#AY&MKr|<#7)}s<^Y{Oz`iXlyMZitHvTc!W{$>R2E8%!$vTV4A9zIv=v(Y)vs!ztdRr~gyf@hb9GT?>#di>FSy%lRG;e06z zJZEqD8C#GaMB6;C#Tgx6;QS%xg&EkJ$ad~Vzcb#k5A&4$dtGe@{>Jlh`Zlpwk}?3D zZM_zE^MFq)-IuSo-_7$1c>!P3x|`=L@Qiae#`kuDhOc%-?h=WE+$MO-C(b_w_u@eI zD2L}z#-jAyy$Vn4eV4~Rk8-!f?JAya9X}m-b!ZFQsLt)&un__Dmlc=kpw8zx%hXkB z`G8SnvE7I+!xt%db{YO2c;rV2YcgWo0)K7*4UoyzT3oy_4gHh>-ZCCZIL06cbMMz; z-A7%ejNZnvE{gt)j8XSi)Xh3i6Mh!_w_@Gkc!0XAv@b^pT{u9xl)C9(t94I_QFpHx zbw4NTrq7;*`m5oG2hrAbm3`Y@*xR>l!<>GnuB{*CGwqgcRD5$7d$3*Rc!GBC!*4F< z>u9%np5#H$&wjSfb}Yj)bYQh-c)YP;QomD^paUN4Q}v;qhVA&Fejn=P+@7rn0Hc__{{a@Ye3@x^!aYoI|8t6h-n2Ayp8+8n~M?C^`vXV)9&ytXMBGx-aS#I z&340|6nz97>g3y?g=eJ17!JJ~hIro-3Ah6e<6-dH`KKb*RKPh}v#ZxK#>XE6j|d+` zynZ)Q#xQ6jc0O1r_9zEunC-XX5`RGX(PVdBo?;KB?6O_-0WP2nqMav*IX!u2#x+Kx zJlK~iG2gl_{wN=4HP$DD%wjB|y?7F1h_I^;cJ3jie!HDJk@e?kMh@a}>iEI)CmxqJ zjC=m?miRi}5hfXYa9SU?3EI?8U3h!w`UsrAG~?s z0md1l&vO}Tw9bhP)>Fkfjmf!)LDA1qe6=sDe%>9hr%8I$J77zw(~spDo6*N2MgV@F zaD#dGCS}e#M|&0ii+srJvB+ot-i>!xD)0N_y|o?@fW696o@xIx@XY?a#lpe=x$^%U zq=WA~Tr*8R&qjKO{Li`)fqS)l4$}hJr;L|)w8=HF9DQ*gU@bZ=n-IX= zlw1#F8_%_+XUk`M%Co`IN**}n9a0QBPm)WJJft$uu-b)gKtV?XnKs!aLbI=6ic z-fe)a>sB6Us+YLW(eCGI#z>Ls#^bEJST|OPd~Mq+KbZ0FXMxZ1Y1eyUeiCr^^8Xny z+3qyC-kIuuO2RO28Ow2J`Im~cw|}unGyQjqG{avh(sX}?NYnfak&@;+#B-{DIm*gL z?1?|DQ~v7pP5sYeeX~lgZ?4Ymp5VB?IS1q2H0V-p)1af)H?Kn;`_x+BTn~ST{!6s= z%|8rKY%<_fUEdA=DB74_q~O{8iBEy2u5V5Ne@e{t%_>jxh@;jw2Vg%f`_)?CoC1HS z4*CWeUhCmL=J?3^<|WAcIqRFW=RS;=lmo}IU=xqCWB_$1qc6jH3jQU?zU`~@E&JEL zzBw9grG2&5H>(WW`lg%TBZ@;@F&=Tq1jHc|ah~X>*EScyUUS@&Yig@=a}v#YnA;r3 zIS<oeLs~2g8$j9D-I-ZMwk8rVDtIl?7ExCxp5{G5+{W_Evtn?O?9qAZW zfqgVPyLo-g`&7Q?eI!fTJFwnp+SVMLd-Q_eUn7=#TfVEBZ4ZzAlaFryb4vS9jM4s@ z80|k9?H@-!SFR}rKtK7p3GqbE*;m4j&HxPLFudN$wL~$N9mZK+_#6`;XTS?_4UxDh zF=&|^gO;wSXU+CIeG6S_Eh{l@W1Lz`**b(Vw{^l;$j{l3BY8KM+gu-<1D}=fO`sEZ zGKh7v67<9WfWvz#)*$}3x4mQC5BN{{X3SpLWYBs3b%(=ukXv`RvHfH5p7maVGT48F zXJ27YLAbA2--pQOxXp4Ed%bPyVDrw0^O665v4^iz+3ewsiH`R0B*;NDdzgYR74`@&!;he^n{&ZFztM}aldYU})Y0`5VeeyI5vbHn*ZZZq?9-P+ot?<_FS zBy)`B+3i`VrxojmH|yHkieo6>ss0~vhPxd5=9X+S_bWbxF{}>zLaqWV?;)_?UqD*; z8>6{eaxmvsmE@^1=MS6YG_` z5X%??8`qFQKM?yfGPIECgQT`_Zcf~0zz`qxRl^5adjRv*QxR7P9PU`hJ&tvUJ0?Gp z;0=XP#u#_6mH|T_sVzFxv9=lfD2HFN7ju=8Lmk6E6nr=f?c`eUnP_J*)`Gd8`1SC9 z;#hpZz6snP;llZS&7ZC7EgI;16!mg{zGIIKp`V7u4HE z&|mlon324bpc(YDJ&cD3a2IG0b+gW?Zcod&%}dbtX5CHhwvq6e{9d*XvYD-?wv^)= zA;RClSe=PB@?6&#cP9F&rgjy4Ao`9?;K5Rq&9((yy&Y+0+sfT-BesZgwLKeM%WL<# zm)9Q0x`5BRO5nG$uH#XbRab|rcgxP-KPu|l2sp~b4YIC$cV^VOO7u3go${CF$3BQ^ zj-8ANab1IP6Q<-d^|DOTG|lxeXnMGoH1O`MSh7a_qr4rSr9%#n);sQlya!`YQ=mi;gq!xDt&n{c@Xl>cGWo>1UrM~Hu zQ;+`%cUH@yp|!Qsk94e^23|0hI0U>XKhiP$f6$NppgRY0L7#8U0O%vywb12h(Ij8L z#Tdl?`w+TT1DWk`rGvK*b?V1V$=e23bl#G_InO^)8(8yjE$a$^kL0Iy|C^6d@odU4KTOC zC1vJ&%-Jaq6&UaCy4AGv?E9bU|4j6MDs0Y2xHE1T+SG==?~T6CLcjMx|L;SY+)uN_ zoq_)Eh5kps>%GzckIMe9tzGwgP3-~5z{P0eVf5J-uD-A@kBR;dpdFO$r!gn9`hNrL zj~90BMZk8rGSIgVi@v3e;@DFMSnBAOpX}R*!aAVZ+N1k3y8L%+_H3ifmhlYWMvviX z|H2d2hx4@&`S6vv$D|B>Db{?Tt9>DR^8r5sdA&0WL;0EB#vSh$g@UlVr{#GY|A91j zAnw%3(~ZzF+}-8*Br6~DfI$^meX`CUv}_#bs^B5*$N{YDQw|RD&LG6}`JQ7^QWEd( z$(+f3Ni0Xl{P`d7pNPvk%a0_EAgmX%r*{R9^E9!3i1AI_wbKAO%fa}yyPvz7vcDhs zYD~HWcw6KikpN)em(AV?9Kxu+?5&``IS(-btT8Sr5^IcAS|Hij2-#Q#dIH(tOEF}B z7w5cU&2F$8d(sbaJqmO;Bd-FH1Zwiqo_yh15aX1C~4U^$Sv3ZJ(!zvTuCaMcB&7&$&G`bgZq;z&<7YB z2Vaf$iu()EW~a71pwcAUVy#UKlr*iw_#|XaPZF{=ZmKpyJQteJ`O~!#`{5%^gM8%% zJc6$~!NVuuzp!q|i{Gj4Sq^m<%5@PB>JFEglVq?w+A8i3iPkSuVwBf#qEk2+!qv!1MiBC*pXP4V$F)aWl#aRBFZ)*fQS#ZY;(eEeZXF zcYJ1ihWYHT%doGS`XbI_;2n8;$`Z5zx^)0|oj1c4lQ)(Qlt~@PM_YJzjPCOeO2NM4 zL2+7-b8pppF2ufL!i>?AXPyInU>dA>B5Od!y;<%%?%2+AQU$-)OkBtZ@sc4k$$Ij# zmQ-)!x!ZD=ou_M!EwI_=#bf;$^(Vz^jayuZ^WZ#KIm+bN7nFKNA2VL^btUR$Jl*P} zC%^}`Biy&R|7y$r4zXs`)>rE1e#jwUR$~keLgp#6SW|1<|Eca{omRUWPNgm*=PM8OZje1eRBaA9T zf3W0nqbZMDE|B^TTm2kl?*RI~8Ec$la1T^VPi->JFZkzS@8FJANe1_kQobf&j{)Hh zV$RT~b*K+vvJgyQzu&2l?Rr3#-8+;?hsjU~_b= zMbZx_2LBr|R#RsKkblZPe<&k#&iA)(54t?ddR=qPdZ+T?|4t^&Rvk664$^C{qs~?b z%fB=ccecqo`YLtgDQ&RVai^@q<50(9rH(@=f04V_c|s3&Q8#-H?uLBoEXE<&7O|gn za9ICo|5e#m`n6E)SHP(K`U%T)^;wqLBWoGYy|D~6|9#}M@9w$>>7K+9j2rX$N%)U~ zHazE|5AtDC0{CBqu^^B~dd+)F9)Q1%7 z0P*3;0uFNOacje_L4Txwcl-81SaTibu->`^<#J!bI{2%!Nt_E=I_AaL)_~YL>-di> zUtMoyn{>!D*VpHf-O@n$s8i-$BFmKc>%(=r%yM5ICUsEvKZJ7k7r9JYZj^Xi z&HUFbyhSp-EnJt|tdqPIdawJdMV<1!tcz{*TR4lb-;wQqxpO=A zi~1y9u&c>8iJx+k>=Rdab{T1 zA8$}T zn-;|z%SC>?VTk;A<3W)hXWTFHceBHQNcB41MGqyz~{R}VsRLc&%2|G0Fa7U(i*5Ge&9$eQktO@e3U5>Rsj8A{y z+#No@fPv4?ITQT{u15y&f9{_SN9sbpHuvmsUB_8_HxvX%1$=Hs%0#C@g0x3oX#*8eru98Sy zVtohgIzz1s`D$I?WBw@kfwJeLuAo&{QRjNM}L&*UcBcW2OMV>BcE|>&dtq!@fe@b4@CT^33Eb=@3&%1p-*@g%E*`H6w8$F zborlsR15xlWU68FYqjFqC?-u`EicbK^E>7nKI68GD#GC$SN`wJf04BYJ! z_e|{D!PvDD?*kv{q0!*|V*}3&UG7e4JLK-`UxN6Em^1&3eknu09Adw?&x_hGFZNRU z1#nis_+THWpw581kAEZj=VG>d)*jN0#c==bLB&Um-0cz{vy(uwz;Gu{m<9$-|wMB=^W zj8~%K0Y=3O-3`1qobe{Acz{vyT8OvV8ShLL4=^g;=fsPmMqQ+QAN5F$_AU49WyXMv|&r}w(YN7eCv z%JvJM0*-w|p00-MUW)nxh|N_%$KQqz?RC4uw)YR)2U;L7e%M;Q1NU!l|j5HIyFnhv+0zFcu{m}nu=$W zxr28}oeCZ!#*pLL|IjI+XWhFAzdM)jFcz75_RD1A8>~y1dKO(K3M74|o<(G02xQ{I zO3H+|N3rKv%0ym7Cf>?#uL(jw_>OX+BQEwj-bLeIw#o+^|JH*K(fHRx#k29xZ}G3Z zoA6(DV4l$?bvDD&+4bGT*-wt`?;<}_)!DF4X8PYi9^1pQJ$;%OpSNnQ=mYpQO~~Vz z-X`?2>o3yFrRak;p_k`J)yt1F)Uo&cuwMQPa&?KjEBc_9e;V}iznGVKiz9t-E%?o6 zOE0hP^qlFR-sw5re|C=cf%{}xpqS~H|Smgz4>-cdIE@7;|G$OCQo zDC8@?-c~JO<@NRtL!Qmo+lt+4LYBDR&-)7$Uk~;l=h9K`@pw;PZxr^FFMzK%rLt>V zS!X{l=D7Ml%u9ryR~cQ_PM7>M^*thMCqdR&pXKMBM_DV4$l7}YA!~THWbLg^&(NPv z&%OMcJ3aUIZ|L-#>VK)zbGrXUJV*2Mx~qL|^YeU_kg+I!o=e5E`FSgd7sbzOO;`K` z+n97e@uKL^e^or24lN{J6dn3l#k1+qY~n@Hp?|4(HXSM@UX(HEWfjk+Ll*)MbH}Q~ zm_sHVcV;L!342H|{&eIWQ?NAe0UvE7?}yrpajLu$Ydv^Ae3FKJa@m6?UWjvsD9^eV zY6N78@Wdw$%OIY&I9cHFyD4W$9BiV%Hw(=Br1F7B8a%I!4Nb=PR>q~eLK^lwJO%xx zEj<=Bob&dw{XW?W5XQ#w@ z*({IoY{Pz3_2Pa)r`XN}Nm5#MrYKd4Zv>&@jvisx$DtG^~xU#hqi>H*2%6 zLkwq$T%)hY+^Mc!+s6G#59~TD_EKBV#~{Yd|FjAFr)r^#kT0I0Hc#*y&*d`uTX_RqMjth=$Yo?&dDC%UoSL`DWpualR=JF> zYThQ7k!0oVbQuY1p37~xth@nkqhqJaPq%Rh&w{s*g*G)0a?on!t#TWC@PA#NzAd#M z)|Jp7jG3zOfe&Fz=M2!cEgYad$F=N@*UkywSEH_F4@r|gEAL+h4DVm&J>92c{Gbnl zSYeg+$XWcZ!|L3-(hSNS*Iale?gaQL%r9i#VccB;INq6QPNs8F>LJ1%*9^7I`q-=80Y*r$8UWv zP%m)d-1wBXmu8Ok)h%io%`tK<%3Fgw06i6Fhw5CFqk{{3iSM0!x(It+QO1|(3*LFE zRRA9Kv|?OCpEr)v_+7G|h6mqV2qq>Q+MWkTYvmQA6S0@5VY9YPduZ!pU-0=9}d_hjJ)OEAic( zp0Hm{Mf5BBaGx>v*Z2**qg*crKe-RMlUz4+mTT_ch$YuIAYYa1!H#mBD&)Fb47naJ z+vFtIU%{t|Cf8>ucy_t|2zb%t`eX&qF4u1YPxxw(Kl*t=$QOOJQQ#Nljq;b(MeI#9 zWv;M~kU1e|#kwhH&}*)L?8Hx%vmM}99bl@tw-b5nBOhYfW*?b%Nf17teT45=^+%mt zi@|ujTHBf?=78I{ZVH;%FTxh3r5|N)JhIy! zn)r^@u%WO?FM30h7ix~{6`%Et*cZa7cH(CCLlk@Vu8L=~XES2-dy|4^@Ape%^!xJ) zp1t4C1K#9?q&-daOL4eg#QljvcQ)Z2`(-_BU$|dB&M+$AJIu8A%lOQr`ehaDU%20b zX1>}lwVVei-+Fo0~bc@k1Wh$PnU-TILa+!i>@0Yy`qwC{% z1<&3uUja|(<5y>*o#x!l(#ea^4^BFnqz^MV&r7P)d_pfvp_i}X`#VA}*`H~h^zsMr zy$&$XU>sl_mJDoyEjD#CA_Ik#0nE)ta@@omjC(bY&BWXc?|v`e1;$|SrhNB1>m9xq zl_lThTkl3{p>+8!&w4jh3w4+8`pb8WgQxHv=6}7#JDwZK!uMJ=|Mg{hHQ%T5{TQC_ zGUtmkl)ytAzq%xfh=2 zX zZ&bbb0Ba=S{M9la_Q|qmZzEsTnM zp`eR2acv}s_0ix$TjQ>EqX8qPS^DaJ$Lmr>8Xs=cdts%momRJ zlE27C&lxQHS%sc2P(S9)!8M@gS$taiqSh zReDb7Z|3Jk@~^bflf|E-?lInTSAWiKoYB>_k1`xwwtj9(?_SqOS6LC;u0PnEUadZ|UvdE^i7 zKD6pvGQ^~3bELipRC?Z)`Sp?fdu;R+vFuwEdM1FDN%$=QJ-2|K1)%3*NsnB^9d6Mx zh5W%?Xcj#$pJ38c8L97Dm7bG-XXcki@~7MA>CdufDfCPQEv5L)0X?%o&m7P*L()@q zf{5$%u;`gd{wVb1oM_fp9I5YYm7X%0pBKqL!$!|RjP1c03O%z(3w|>}&kWEr6ZG67 z>5=;ez9SCxeF6EC5aCY%-;WjcCsN-4m7bha%=}%+Vfo3j(X)ePPgUqy2wE!fD+N7M zK~E{@SuE*kI9aS2^8Nxr&oc5yq31JM-{wetM-Z0|_h%P;Hia~cXZ%o;p3+GE`!;$W zVA&HCdY%9+_4rK!Jrh9BB+&CWNsnBAuCVBNn*34dc?{n>Wc!OF^}V3d(<<}xBKgnQ z=((0x{m7WAA4dS0~T2lq_E-?+k}=Oyw7dvz`Te2nia3i*lD_h*%! zOYpru=I_G!JQ;_&*GA9TEPD*%HXB@F8x-6OdWu2M7|>G;dft%q$hF}Di=Ma0ABCQB zd|!_BZI0A;gG$e5GQU2Of3=OC0W5nY=y^|}XFKQ_1$st;o>8FZBT0{315dZ;`IP*@ zK3t1GC*XT8q^B}c-?=J1t7U#^B)`Z;&k^|d!IMDG7YaSQK+jOna}wwo3VObl^vHGh zJ;b5Dw~#*yJ(hhgj?{O&O3%rsoAl;I^84H9`GjQ;1U=s?^y~#aLqN|!&@%+|9FX+L zwf=W3dJd64ha6iA0A5U0*xPL>{_ZL`pHt6Y4=yAI-#)F=0 z(31yx65Sl%amV5rVm;Vr(Ual^f5P;v&biZAslk~36{Xpi|NAh>r==n3t z&ICQ(+!1+B1wDO0PbTQ;19~zgJ#t@=>~dILC-)*k6go_X3;Z*{88ws#y#kyr#MpI!zw*r%KW@Y z{sT68&Slw&pywooo}r*81@t6>o)pkCQqm*W{!h2)8AbkdiSTEw8OIK~BlX>+(sMF= z6Cpo|Vfne%M$hpmJ21wi<(vAcKKel46oa0zZus-rJ|Q=9k3t`dj`PSDg^n{Z#tXTL z)WiK7VY#_o=GRB^$JywJBOMbgI<7S7m;^d5CLR4vI^=!_p1&9RJ%#+}8sW#u7%POl zMCv(FrQ<4@UmD3j-bTkx#{H&RbX;N5Q3^U{kdA&P9dcjAM;0A3$q$8&F0jc$P9pVm zQR%o`=I2H7<7{*^q3l+CtAu`OV3s@dP5tF2EptH2Eu^KdNsHXav6gf%aEI!!R>2s` zuIxl(5n^7g_`fo(y{3FoSL1u8uCB&+;<<~_BA&Y#yTx;g@wIqPF}@Pd$;K}6jCFJI zoMe0 zJ~?hG^*u;DjGIn)K@|@$DqaQg;1f9EeWK#gZ&2!+Lp=BmPIzytcz{vy{zN?ZL{51B zRPg|#;$2KU_)SiDt5rO}sCefP4?dw2-YOLjFe=_C;=ylp!mC#C0Hfmlj(G5io$&5a z@c^UZWfKp6vlHHY6%Q~fUJv47PT+)ht%?U270*q)VrRU|RXo6`c>8Vz-dJb63sgM7 zsCZu!?>uKbuZjm474P4~o8XN1dle5bD&AYfo8*jltcnL174H?|UF?jPq2d8X#e0@` zQ=IWUDjr}|yp_b8>Wp_VMbUS_sCdhXSL%%St%?U274L51&2Yy1kBSEv74H_}&2+}w zs^S4g#k+=hvz+lZsd#`<@um=Ojx*j`6%Q~f-ucA4#ToA@6%Q~f-WcL7aK?K?#RH6r zcM9`#=Akq1B{B7NW5jvcqJ+xU{t)&eBeFk zj5krm1B{B-LcHb9cxS43fKl;2Cti&+-Ut;BFe=`A#9QHvm#^XhM#bAmyeFLTvQ#|4 zsCa9LSMQA1Ma2V*iuYII{mmKgNV1~ufKl;ki1)NJ-VZ7sU{t)N#Cz5mZ>Nd}7!_{; z@zyxweW2n2M#a0HcrQBRy{_T`M#Y;-yqBEu)~k4cQStsL>T~u#{VE>U3l;yRn0Qz> zbQ(7wQ}Jx;<->uu|6(ol0=}1g2={<}fqM(v^1ArS*Wer}<`-$0NAb=?PcFU#GZX8P z*sl{Df)s1HNrm{2wObFE;w;d z*($6>6k%PHd(@7FU;94xvNd8a-1;JIo7P1e)_{9mj)KQJp9TLq;B$ILfkQmrf_s^8 zy`sP&E^Wa*54fhhC~#Me2*WiHZcr3B#3`-v{sOr2DN*1Mue0E)0arIC3LN5$7Tmpr zTO0)r@huCkob^7g4Z9rY5|-oszU?ctVHLc;5Boxs(BDa(?O96_d4FGOpH$r6R|Y<3 z>wR0wYt8%n)?$w$_h20l8_WFzh-GXwV<|YB%eAHP8R3{pI@aBHLQc&4PJ3hDLNBqO z>ZN?_{n+3v|7}T%T>y+K$HpzVM;Y~Te_eQgQ#|%ZgO=bFZ;1Pwc9%lFg1V1;D?Hd+ zm#+c7aFpSBQtYQ#9o&^*i2ZbuF7wXZZ2xh9|1V$;30@qltz#l>-5k5E)7VzPd@B3&xu4O_x+v{DJ4QPzW3;nx zly*MAc20=e&L2F5?npc9W4Ci4+X)z)vq|Iqm*(A*eOm&Ro$sFHy_3{~K3Kb^+*3!) zyC)(4i?qpyPl9dAET1?-@(JEW4H4jwi7UCVvo`!>>X;J zKhVb@9y#9p`)~qi1lh z6YOaY?sVG+xpToTdUxqYQTMY#yI|YCbSD@W_HGwvbTTuw(51NFVJPhVQ0u-{lyN`W zO?#hzl)djQzDb1hJ>tIBh|ctG$qC=r+DqKmYU#`cSpTKYupaBa)+X#XrtRlm(f$~B z0z^Eo zIg*WgL4FQzcprhu8)texB0cbxt{3!-7rasF$@`7z*@d+YK;IEw{`s)0n z=;^pQy4?I4{%o-5aa;Dbw~%#9b{-@>@Eea4{4wd-tMu2WG3cp_(O*qbWO;=}PuTwB z{$lKjx9FKkdip>o(f_lNo`X}l=P&}J!5{tt?@jyF7kduV{ZpW) z7!#_*UG#6C8Jcy6c~(4tJIY~ySF8RGo~u016^F#x0_^R66|!ONBlW=F5%8}RhCFfD z=PhA9x9i+XS`{pg5BommxeeY8nZ4Wi7l(TMZ#Lt4S@3YmFPv5Gd zui*(w-zpE~2aDxiRkoSmBZ&A`XR&<1xUKU4sO*VF`G!;Zh5aJsyJMICJ8^y>-e`fX z4bJd}cEGN3&Z0lwF?p6tORMAlreR59FW`yjW1eFX?=DXg>%W8Wj(%R?4K3912F_W+ zuF}ucFvp>N;v5S1Zu&XSA4aOj>uubF$$6D^AMFx(hUDx-clCicaHo4B=0iB2VdXc- zeD?L}5@rd`J&V1afTNFL-KQH2-=&-B|2<%>d#hP4Wz35AzctsSEfumtTISTACCZ@8 zZjogSQ1ICf)vtaD_`!Pana7=;;8E^fy}~~Hv5-Y8Zzc2Y!@aYZ?^*jc`Xavr=Uh78 z(gdG!$S2G{1)soQ@>B2$`6{2vBp(hZxT~9Af{r9~&R-()TV;N*2s}c+IL%>O0Auln zWvOkui@X6nPI#ZIcz{vy<^fNuE}!@|PydVYG{0~8MCvQr*0>Yr-HKe;migj)RK5HcgC}k9|3aH_9v68VVUs4y`Gs2NrKl6%-!ll) zl#08~-4VLg^Ip$Nx_NggVR+svTi#KnmUos?ULEfCjaJ?Yhw_3mz398_!5x+EMxhJa zvHt!Re(&kx?q8?+2BE$K30jYi7vg4@AEQkkiThfEo5lQZFwfM#g7rGsxz)jXtO;Ws zcq7l8Rpo_cX({(rBj(YJ{mo9YG8=RTAg9g1e;)o1&uE$Dnd|5k@W*qj2ZYPJ8RZ3B z1NsL_-LHJ}2FgX7{P4K~NG3mg|H>mKZfV4Jtx)G$%|Qaj02HK4z)5A6RH z+P!56=F;GUdG~NcPpCK4mHMxFH%UacRXf!dujn#hRCzYo7W5-|eC;>wH79~D%)xL6 z?jUj2wh=xiX`_Aa0Bs!|IDZGZI|R9;y{5gdS**1khAj$4vB@8!{sUbb^Wq9xNIstub@wf+g94#*TfYN@#sQok$?HB&T zS4x})zRIKEhvlnS=g{&+e5RY>`Aqr{l^Em8Fdm>i9=YB9?&jSd&4o z)mK(O!5=VGQbADND3>R=h2j@wO*V4cof{*jJ}{@fUe9=KpFx3OSDK zBUp#_iGH-j+XjM`;Ml11V)%r;ta))&ur%UxI`wB0Xbu48G_#|b7|@l&uGz>cbZSv#~XVx+Qr$q<@lBhX!=2Gz}>6e%O|b? zO|&_b?GjfPai2z6f~(+ku0w&RPQJ%K;}kn*j5J@o$!N z;oIdu@cuX29B~&U?)T4w529mEfOb~#PB`8h$@?RDcO=&bdA>FPy^eNwy^ls%^9Jq$k?eih7pFJ20K-=h-)_ z4acAjJYyEC4Oc{I!vwUU74$C|;BDN8GRNV&4omTECfbzYx;M0e-y21{;nU9^1YdX> z?qwz1&!z2a#JGNnwh>Wi%a^nrK%a8$<-qG_h5Dl3MrioPgRB2hcL=;XoBfgQ?+Lrk zGjycA9Pvl$P$PV5>d+h+hhqCo{psz03U*e+qEde<7S-Fof_|HfMTJb=sp_OV==bNb z7mfGD$hpPmtP47{7jp*c?q1F>;G>LKtYQ5iGH0{u+{QXF z_Zo_Cp9FWs37O`YvlBngbHBuRYpo-Ejj?Mf_nn}8NBu`x;W>*0pY}a`KET`zTg&sN!Ili4upRR3)z$E?Y11&? zRIQ|6y#@PyxpxzNY0do}r=2Lpx3UM~8+6&A1vb*s^Q;6d>Rk{E)i&7L-ivLIVl!u} zcsBcx3_L-nkTAt+h}gNF*?m>s(3biL7Rn^+1xVx_L43@P8=EoOj`2`X*Jhqn`A_i0)%OumiFX%)=TcY~rAe zIR@7$l0Mda>bjtahi!HnU(b(zw)#=>8ZZ~bM`2x_KPmn!>iG)w&~BLZoFeK;$J(Pu z(;Aa-m&ezz(ZPDu(ROwyfOd)f$4WeGC+I2{{pmK&Kplm$O^D-Ec?O*on)CXZ_+BBt zC5;#qdAgVPiNLnKA?szkSeKyf9gI)B+X3~8wpB*jX2$w>4m=X;o6dRxlSBV2#yDT? zGVPRooWBP&teIqfdpienV5@&Q_OD24ubBhCir?Aho#ktAw}|y^?ljotHMo1F409{S zx#~E74#&At{qtpg&9Kn|PTmnx0soq1H(ZZ+Q*pnT-$fa;=Z@_j{08f3%To2Ew=RTy zGFCtuReRY!>tM|~>?yzypYFGf~&fu3eVRK_2gM-!VWlz<=Yw0DQ0Kwf4!=fWHynA5_QR zAo$LEdG_e;>Q?an9k-UY6~DLedlx_6F~_;Z9gxZ5I4!N?^26ernzZf5zKMI>VTTTW zi9PY~Lq8jDes{paxe+*=2jqhmzB>-(ac*`p%K6SJ2l?*;k9AxH_${)|*O7h+m|gho z#IG5@0Djx>J_q<#9URZacL@cZ2}Z}3!!`WQB)Q|7*-;I>d z-^en^n+I*QEW`6I#-GJ=icuw= zQ;Y}1bFy)tcuqF%70*e=67ig5+#{Yn#$DpsV=NNSiAK42PBiWm&k4ru;yJ;%O+3dN z^Tl(#F;6_l8FR&RoN<$Qb{jW}XSZ>Kcy<}riD#E_t$5arGV!b%SBq!OxC$xdX*$wY z#8UW;1Czh${(>&;;eH+lc@5wkix<2iPYEO56(<^_@Q%7h`L}Qf+i`Ig=M=yNDie*9 zkWyZ(G7h01Rop&y-1y8D|Wc?n*L_ zoQKq%Y#e5abEpTI;=F1b)6!&PKhw%&qm^lWvhgF+&B?|OOm`(4|6}S-F}`JrbI{)~ z#d+x<)6x{aS%_&BJ>8=#xKTL5R{xhaHhyMxF;x5L=OiQ~MJD65> zF+Mbn@*_-=C-<2|Okx)|>;b$2!1Vw%_0c#~;ySK|$)rCp8Jm{xW*HZ!g7 zYHVb>xvQ~3JmdQ$OrcLNA?5zLY(2dtnE6Cjny!ruYT8KN$+vEiwvF?(eY7R%p~RiL>v5A z34ehCbDr}5TpRo-34gW%Q>^?ivcaDu;m=TDMk)VKv%%*{_z?;W_JxG|`u8^YObLIY z0y9MUk9Cbs@{=Ork5^#wl>Y;4@EsU8C~y50m_Ew?EF1h@37?_Bq$>Y=+Tg#I@W&`H zDa!w38~mpdK0$$TEB{?K`1d6Iks}cv9#Z}v#D7)4HcR;Z3d~;R|BuT5J@P+wcpdOK zMtmpV@&7l<|K0en*5i}#UnwvLTTe@yFSE!Vb?IPOoIQp z&3Z2OhT`%3j(mR0dVe1F5ZrLE<_-D$n)M$158?er`Md#X5c`Zxo9XfYh`fKuy!Bz6 zH2=4Fzg9j!AAaB4|6ja+Mn3=DdXGIR0laUJ&rezJM|wk_;QcE3j5&_krcvI|2YCOO ze6F?LV=vOXc>l0`uD0I8-`s-tRr2`(q?8x>YF(uL?~1gi{4e}n@Kp6RbCl;goPq6& zXZBGRQ^YJ!lDLPYzVO{(t332kcN=~e<(cJpL^-Mceqo$c@m(juXXGFIPJ|xTpMz)K zr`aDV`~1>yTN8|Z=X8eMqdc>&@6=~^AAbdS!!i(`4a?8iaCxczTajOkXSLtw;@ue% zW^@>~m;VO5Kh=6h%)`3>x=hwF+#zq8%sW};{oa=H+gRj-mCrO?zB@_6GR>6lPQ?F* z@&8fzOkZLPd^@)N8MK{kO##dd6JO~`pa6i&^z|6+)Itk19Gi}{H$lKuRCH$2iW!_Gt z|B?UsZG?wVCViZe>6&pH;7f`$V?I;N|K=fO9dnTqk9^~N-75bEyx-vJEy`z^Ni)U(wq%uNoX&KSW{hGw9pBq#TBI2xnGVp5;Ydl}P^3>-Wo>pD zW0kT_AnYp57|e8$X5=%St{KNOEz*o*nGVp50Z3U^4pPdLrH_5_9I+3X{?&-5P_AwU z4EG=2Bw_iTHGzY2#dWXIi8gjZ6n<#*0YFvvo+>7a5W_{GOfY1K8mcHGH=YJU>CCaRzKOrYUAVacC=c zC$x*XrY_&p-mb9Od?7rqIB7wX*|=E3z#9a=;U=$Nv}WW!YFiE=#SgJ<#*f+Jc#7Z3T!~cVJG|gxF*=`jd9= zGr;Y|IPJyS@w&>sZ9BQvD)(X6@6xt?xtZmq`hV<-ZyuxmEoj?H{PtoEIcQsFDwFF{ zBf*Obz%*l>NsWV9`6nSixY+C4Tk67n(e6%bRTj+gfNAcAw&$V#Jm+%y0j7M>#?e90 z9H_i&vC!+s?iN!v~pBomBcC4c->p+}+AKJJQ_tQJk8V8s<)WJA8 z{FWaE;U2#wF0HX)@$J5fW3d0y{g=^8S9M-*v)Zulu&bK)bgu&+D|$M&;akA4{PIPM zMkC(7wV_lqcwg$uV%n9+J;q78!&780A^(a)eRkaQ3yl z&)FI8Un(A8RJ>B)kxx$by{zC7M#a03cvx3+!h1%=+hH@c;S^>&~9r6t4Im0nK%Ii9B79fM-ju}Rk9Y4;WcU9uflp&h8B1#3ZSJKl;>NB0q@{clzXPU+^>Uo4d?^d-K`}%&GRqy=!-A&u)cu( zxZLv)gnYjUdz*1#;h+t!jG2YdckGGTD)vvEYVJjC0FJe;{WaqCoL4n*FU{IxjY9Bf z71ztKzb@H>`*%^M3*QAG4*Nb=PhNHq_A-F_DF+vq(Y`p#LDM1CzI2v@OTjB`K`z>0Z_4@^V*7Ild*^>jcZI57_ zWS>zVUVyIcnAgo%hrW9e{}0@QeS#l)3$k@>cC+i@TJ|CPfb05J-_1wg)yaO?HzRsK zT&eKGu8#-Mf6@5(2L+EXD*tx_PsqQ#7mW88%!mA2d|VIN?+w|{lCn?xrB#~p|1XS5 zl>c$5k3#+*sqF=S#V#o*tD zgVAlkB{BH-oPuZP-?2;Mw_i5cLV&m3P=3{|ou|3HCMoT>X8Id((b~{$6P3-)ph?SD^6kg{!06zHEgL zcK)pgAIKXg->-*)XXl^a;-9>CZwJoKQhzyq%(v;TW%KTj!83KduLK;w_f`^Pyr;dR zo%JX@TT7d_FE-Dg+W!c=moMy3Wpw!LwHtJUh>>03Lna1(?h4g^yAeWlzi+ zSw=H_AOR=$#0WnI_`9y6-#r$-@7eHy&w?*}CVcKeJ|-fiLg5i(nH@E-TEG>*~XGh-c^Q6lcePsI*mG*gOYm*nC-g!97{sQJ>({OhQ>G}k)NuC{9W$=jyRb(jb>(f$# zvv@fFV{2cZmOAj#Y+v6_?OP$+$9l~6^=a9N_ObsEJ0HPzaxSU1^LE74nNPo!a}*8V zbI7>E+xU0*RDr~JAKMu~+s8o`cwVXw&wKEnsmEK=|4rBQ{;y$NU2u`vwu^AS*=k#T zjJ9dm$IrHLU5NEZ`mc|2R=;!mO0D*xE~|aCx1?Rmy{5mXcVR)?qu$%rqs#@D9Zk=| z-Q?M|BJcTIaP`sr8XAMXU()NB~>Gm7b z^PWWy>T;y#IFp`ZNzVbq7_xcVqo8TkovHxr&YQOPY4Wp0Q5v zk;D-ke~3pJ Pl@G$yr{&d6zU`wcPy0j&4NP0ZdmSn(IZoxR0t@mnSe_>x;Sl{-C z?PV`T-}-d2CyPM~@mZJ2pI#z{OntND=&<{-EVi$~Rn)c!`|XQxN4j-q6Ys?0T~`|R zPKJC(>4!ZL zJ6#Y%j?ov6V-V&Xj$_b4#7l&ZUu4M)>^a7Kz~lSn=J%f30mJwjzvUGef^WRS&pw3z zW=u^txPO;(l6=I}7NkaEY75<2h^YZi#ME?S8e$NB!17y*W=ugh8r=ODQ(IjE-oHD!nTPMSVsAIUDO!>V*_Clrj)jb+UV|~v8ZUMzeAx^CG}_o)F8Sg#e$_?c%^Hh0 z%6Q?mcq6~{^ukZ@=7wLuo6?`jo88zG8jUvtq<;_|zZCvF{TuUVro|t1{Id8XzeRJy zPw?mXU%;O}Ka)QzWANt_=%6}&s`69%8}ld6;*T0ey*myWRiyuCEK{n2nYOjQ5*F>C(Q**{!v@dtH<{hitl(>BX*i9Gxh{JG#4 z@Td4^^5;$L8IERus9XFs4~fKfavtiKyrkMZ7g)Q`jBiv_<6IzM{(^JY)|gm^F?Tn7 zp`Zt6tNx}J8=+D4FEfm09ycy%*2=s|MuX`VLTl2aFpiQ0EO`xxX zHjV%toX<8dej>{nJ2`IdhdZn{b8@v6YTKTH`eMFyahhip#fiq1#soKZbD^`W*B_rnn<#2#-2Hn5lI- zKX}bV)Rl^N1KpAHgDC6HL%0JW6?yodhw>Pgxfyiq&O7J&)(I03f4Km0nDY^j8IQOO z*R0P){46fAW(`_C$2e!jpj6olAm(xBLVL{;PL#%zbBY6GSZN7 z#EcDXmGJCC#-c>*2z_M5n=-Ig8-TodkVik2u_~S?;aol0WNft(-zG0Tm|2GXMJ0&$%*`^_`7(5GLCSu;I>)Vz zm;=6Ph;wyd-S{%}L0LDP>uf&NKmao28L#;m8{fpeH+h;-bREv2LN3ZMHxD5GUXHt? zgpG(d_bCwOPspRa3qn8oqwlFd-21l==~Mr}`7_{c!J4&a8onKabkJYB;Qljh_5giJ zZ8>am9&E(8Q?cI*a1BMcXG+@AXF*#D<~jd<`7q+ho!iL07OZoermZ^;aCMkh3Yk;O zKwtj_d6c!jNUi*%+JO8ttipFxa=%BsFNALmw@pn%e|R7# zN!aV98%s{OZ({ORuMhhH=3{)S^4velNXPgz2<>jD)V8G}&bXmI`_ywz(F@MOc(ume zzs>j28NN;6RS~{fTV8~3`hZ6A>BvZoTR69B?E}6Vbd%pTsN)jgvMiRF!PsRy_6huH z)9C?s`RTXx)NZ{Q=NCJk)(ZBP>Yzp2Cdvga$HOkCaXh?JjE9WnqL0OR7{Yj%t!1<{ z!_Hf=4z@c49KPq6cNTdJzFRaE;`!egI|A;e)47j|@O7wfC4Ry`jnhu4K-{ttJViZ? z**&z`8e$|LVUDYDpT?78jB!}|Z=G-s_{lvx<6r~F!uFlz1D}QM3xXf)7xIF($9gvD zFvsF-(gnE3pz8g*BnX1lWG~4*3pt?()46J4YB*@As9!Z^xM7gm;08$8km3fAux+R&w7J_K1u_ zT&XPozKP?W@!iz%g;o$8sx<~dpKs886R-Jyf4?am^0RxWdwmcxw=WO-`9O1Bsb)Oi z2z^GmJG*&()ZNPpmoA|fTb*-3t2t~ zvOE^!xZ9YAF^4iWvSjPf>q02@ArItadSkMrlkkH>yA=qI251m6nsx{W&f z3HH0qT?AT+@r-v|%e?=Cj!rUO!B`l^63RH*ylo|5cji&XQ~ejjL&jmJon*ECM@7Z~ zqxSP?^z%CR)He8b4(IXH{nZkec1gg=wa4aOY*V`b)hoEpe5K=_x4V^k38U8ApE?4Y z;zaK)Djr}|yzao`-K*rgss~3nZV20$DfHkVp1HQ|RQ^=8eA`~UHcMZqyWMzyA$-(4 zy?}Zu?EE#GPTz-b7GPgsRiLtRH1EM{aA&tIfp46NIPFM`%{b@f?}agfdwl{JpQ(rM zV{fDxFL(s^QPtEQ!2Y(8*x$1jGD5wm0Nk5^ft?>g{3VMt1NUF-@u83NF@Eb9$5vvW z8{6ZF*Z!E@RXe2&eUbyaF$C?Qj8Z0^To1be{_N~l=%ZYYA7PI7%vbsKd<_0%#^BFt z@(1$b#MdMh4=`%Ktpc97GgsQFKcjw((YPzDyU{UJFGxoF-h@r`!6uUDyU)`amx70B z;Cn0hz58jmPqY!dnrUleYLqtKN|^vJvb8iJ6F1{|3w<(a8?V0-ZK0iZu#G$RM0Cb( z8)u;{(d-OuWMsWPeOYhZcW_Cr^ZgT7pd8#sx2+&gd#>&)^Da+|7WMv#HIf$fKDyU& zu9|k!S{tYAt9?vcT!8k5ZL#D7=2nw?S~l1L=L7|Z@>De%=d~b%47^pFb5cb{v#dKjU||0pw3VO_9?^v5w?c(^#_lZat`qC45I-u zo})LxKZV`GoI}&fPtV!dG+JvaAI&=>cViqMb4~uKq)Yh1C2?X*qaQqaxaoITI`kxX z&DhGj^iM!r4(5N^O8cv1`_KJ9 zw*Mc$vi;@1QTtaZ?H?=K9}?$7j+XyarTu@9?N9zcw*R(Y*?#YD)c)y8`x9mR8>6&; zJI+vt^b&DZE6bUKV2~Y>56!VD?I-x$GA2vJg%MZ3r*tuXFTRV z^6X8e+ZX|Uh?q!4H{(={aXz=cZ8*k{B=}vPKYH6*@~{RBf9nA3xPW> z?Z^1wLkzZIQolCLMhdttEi9-7?HMf*2pOmuj;&V!RJ9j`H{3*z1<+AB^_j>e3pu zrUCt%5F;CaxqcD9L%$WVE0kA=Gira_-wt2&^0rmo?(~rs19UJ>!F<)%J%F-EAN_dN z7XXcyMS+SOH@LY$ot$Fo-nGfIb#w(A&hCB0^w*2xvM{3k|e0iBUzS-%b zZ?FwzCP`n6dlr{~ALQ8*tWP|Owp+f`Ptm@?M*B-P+FxWocsd;EuN_aGy7JfA)9c!Q z8+-b|zKA^?iZVH#d?jL6N86JQoI$qqX>^-8p6rKA3Y!jJunDpT|8n>=aX-KApM|!u z@94|iczNe|BYh1!e5nF|l?`5vX9_sZEZfvhrTtA!I{GV`k%fD_oBcb z>)DKbM2-K$c}nyX@i^ZmJnn4r7s3zYcb)%uIoFX>ao3sdx8kE-(2_%+^;MjWV_84w z)u5OD;#S7@EVv7YBgdOlFTajN6-j*jcosRkP51!@%u2qCmyTBiX?a<20MsbJg)PhE$h^J**|6iAB2Bwim3}0Uw*iv zbAOxhCXesHc^Yh}j5WDkh7}Xa0IxF<^AAo!T*$2(j0-ei-dcuvE6WcKjhC^!IA6z9 zy@0l;iR+<&9e{qkZCxA?xk&A#vW5WmNKPG2%sNV_*bgNqF7_I}$AxIRtV; znV}68Yh36POJ-h0d+oNz3%KXOp8))2%f3B>=W5Issu6>_1$J)B|EKNC{r>1*b=^8ool~c(PVH4lQx(VJSf7Jk z;+Z$|5tKo;8CV+)HO)p_P-z4xtCc=${%bPQ*8uy9wq~XOs`lm&NcSXQ_M-nz8#KaW z{2GsVJf6i%O5qN`+{P}X^#jPcua^;;cm04NPMwWtL1%unskP9Vn)gLK3$@NT=W+*h z7Hxe0^-mFNqUh|pu+Eaye8P14F~>g~v ziZXHvc|pgOutUn0hQ}v*tqyr@&-K%Wpp756qZMsP5^Tr?upyY=FY%a3sB@g#FU44_ z6l2|DjK}ITG0&ESHZOyB$zp8Qq{n9XUYUt?V9b4ee%NYDj_H$Qz1NmUj?LzCY{vfj z3U7e@lyua;BOIr5t{eUe#8-;3YzDqN&jpuaUES?F+nrIEBbMo5K3;>n8IC>*8ICt4*hcWXEc_komB-=NSM$p`0e;!xcvFJEqHfsf8y5ba9Nfe2 zE!6jRn%^lW!0+U6yeYv?1iv2P@5#XrkHc^8AgjK|p8!8~-c#Gpb%LK)@LP2pexGW7 zKcT;Hy!!ql&-!V8&kKIvhrcHW%Z|fuz2>+51o&+W$D0x?7X021e@_n1Jr2KRn%|le z;I}#)Z%Xhw!S8S3@5#Yw$Kh9^`8|6A{GJKNi}z0jzbC`rlY@E3;WtC`yYB?}-5ZWK zC3w2vcW3x}aI&2rk?=6{BXP}!487o72)s6!NlY6>!sA(^!*>yT2i4 zG4OVJ7)X?(2cW=#L$m;l=!z5A$hu z-xcdANb46EtM2!C`%sTdknXuVazmTZM=edrUNB*qB3v7f&#xWxdCt6ciEA(z&;PrIS+TELq~iQ5bxek_WLkrhPfdR#=W($+0>W4 z9$cmGNnZhd{f0e0`+VJk&qMEzB2Siq-vaP`ANe%jo4DZp`|n+p)uHu*$B{?lJ#Du> znqzEVw#oRl8ta3P9zB1@EKl17kH%uH6?f=A)^Pumvx+gs>Ck4ue|&9%^E^G)e$c`A zb)F|}?L3dMZe9mt-Q40HjdP3B8t29up}B30&@7L~+yr@+dD`sBN8a{Ex>Y`az8h%N zc*zs5?t9~YM#`6ivmn&fE$|P8T)c0c@5=BUvymt(Goj0a-YyHWVvE+Lf&MYft@MFj z_xL*X@q>QWefKV!i8E4NJc(P!z#W2e=SN(!%o&J>Ivtv4l{pW_Ms8*9GEwG8!*fB* zOXeZ-?t0`E^Km}%Z2|P#yF=oFCU5+na-?A_bT$_Lv7XeeW1-h+(Cc!@`UBE)Cgj0= zlzse=H6C=7cQE9f5BZ09{9B#!evI?n1lkC2x%ly@xh@h9vf7>9hk z0eSdC$JWTd*1-)r|2821HXuJXAph1Q|JEb_)+2A$Bme%Y^KYJ~^&XDp>^d|J^ix5D zbeYq1{`ql6cs}Y!*4;+`(gf`11^*FPb1y>uuyt$Tf0bSfZECRUGi}D5puGd%Sq}=J zqb<-S?ZmK{HDEm%K4f^t9^%=zQo|VPv~OwPw^8sb2S1$2R{REn-^mVs zF*C1ioQ`&+=zqzR_Vmcj9_Z>=d)iczxqa6HL(OT|_A^5B|AYOdu-jW;W0$q{ul3K& z4bA(=AGrPZ_yEs>`#o{y-l;}tCi0>%!3Y&`f8Vzq%pBO&T(p-5s@s`0hdrTBdK#t* zYv0kVh27mhDIqWn;h&%^)HHc4+$|l={S%B(2G+;>BWy3RK5yubYc%#VgpV^qjJq$w z?|A^&IB&=x&$TJ$CVbzIGjb=}*hFt=?sAQdNivI7c(-78gx|Xv*mhov?~o+*zVLqB zshDD8lf0qZcWG>Xl8!q$*aqQqydJYARr7uBbTfnLft}#}CrajS-q2k=Jyv?3L)*fh=e+a#r@MtrZy^oBmi*}b8?&JWd3%?@=bPH456OMDUeE*H_rtu9pzW=rX^E||b*v=P^ZM5HjD?+*Qqy6_}W9F4E+-#{>AiT z-pmeP2*3TGXBZ!C=I<6PZRYPDe6X26Iat)ppBlWknZI-Ju4ev};O+3&X6E9(=OovC z^8c*2Y#DVxI@#7-cNxYCX}RI{B_I0RqHW+mBn~tZH-)%v?zoi_2O5bRLtLsmZn?yP zM&gDOm*kFHEODTbxYLPi=Z^c6#DPZQ(uhlR$K54yppm!^#KpPeu9rB_NSu#2pF8eK zi35$q?Y|VbCinLnFOoRWNZfAX4!h&BB@Q$a_c?I++?U-x+4P{E$D%GP8vvVkdr#~$ zW!U6oZF`b~M{!nXPOfG1R9I=UI-5uPaR6b;Uc%;mc8$hvOg3vV*SQ~ks{bJT^9L-O z2kc5?NH?=s*_JNB-8L3B@88R{-TLJuWnX9$zd`sXn=PBC_|{l_KgahP*gEu~7tV$4 zS?Wt{EYx-<&$2rUVINj%yR*`1cPcQy$Mb7NzHwoj!#Y!sI%C_MUv}%U0NYZ~F+SRx zUC3kdt3jW46KoUrgBDfetd_Pl4`5xLe%cuBt-ZgQKQ(wyGk@pcoz47Rg10sEcMaau z%%2jx9{y-`s9MXcY=ol@UCFW%r4Fr;I7c12h`1QFXuQR>jM66dHxXA>8t z4lR&4M;$tuxF~h#K8bVGp-#j_sY5qQoTCo;fm3C&bBd}%15hT9sY6%V?R#?YG=w*+ zL(imy>(D6(JEjf|NYU+k=io^Q|0Gg}elfOL@uuQ?4eHKL)PtR;o*#O;B(X7s{^l0_ zcIk=Kg|9L9#rC(TBzj#qUF)HObpdpCU7&q^7ChPR7NafRn7b0)6OcW$)1Uq8)XVy+y=DDSJOkoTKbLL|l}z z_qD`1%HAB}qLjUD66Yv;Gl5fOuXQJ7E1%-{K=)a-{a$F?-rKBIeMju?N4Q<~(rJU& z`gB-o@J|S<*L~KM>Dqn|>7>fuJdQWeS8YU@dfL~z@xLioqfxH-4r`Hbd{i4-rqig( z73l18H6L~B8Svwqr_)icUc~%HkqqwdFXI#dHBW1?-Xv& z<3)K;4*NDXQ{N61_Ym=`>n)CQ=?^SsuX8 zE)N+j51Enj@Zv#~2l(ysP|?hv8hpN)KPC7q{L#w8Z{J0?4-1$-QS8IF66Yun_YoJx zKJ1h@M|rrph4QdP;vD5+I&c{KEz6*Yh!)C2D8#T;X2y z_crEYUpf3dGdS%O?5|spy)M~fbgV&~;q!mc|Ke)TPy>5$Hlu8FE+QLq5Jh<&b&iqP z@t5G7T-&0Fud6!KJ;=OX@xu|ED=M0}Mt$S_T6gu{eEd0{#hh2IMgQ^Di!Iz=H0}^^ z&k~2YR_Jf+t1Z^wmg{ev`+P!wdtQIz-87HrZ_n7@u-D@ueuEsAeebH|;JN$V!##`n z{V_$`O?_uuSgXH3tiJO-)9%5V!A9r{{k@pq`{L{izo!|YPxSY>_+EqaqBZ@ku-abO zzm6~~ttr8|NUQa~OYkoIuN{p20no!8{IBj-PYT|~|G@M6&G?To^up=rk7t~jY8pkz z%e>g|xqvCKvElFst#F?6vd;}nK)9;kf9Y%%V;|!Y^hXm=heN}S(8uV{F8&B-ib}3- zLZ(9z` zWpu&ZVOWkWT`f5ZB7E9OIa+tq`iq3eIpnBj+VJm+XUKuM4y6x0 zXS3FpqZjod_^xZW3*^Bf)Si-doNaH)?9#$5-#b&#VkWax+AZuoaYj{aI7 zdTxm49aX*zrao|%*3K9INtPUSZNuedtCZsg9bO#?uXe~Wk8ytizF$C&;gDeje&4|V z4dlpEa%{8b&2G2l7)5<}&2sF~L%H3Sad8hzj>-t10QiK%-_YSDk?;yjj_{e=s~GnV z@ZAA9#zBS&_O;tJZHC1sGs5RODaXe;+!qPI${|M= z6*u_ez2=%(kl|+h-i7~N$T3^Xfq6&Fg-vX0%Q1)gh>7UqPYx-ha3md->+W}zUv{!T*xpFzYXwjfE*=S4n3FnBWbHKH~KL3A>AudSO6KG!0$EqUxOTrv>bXq^nF{7GU_8XqK|7&vE(R- z@M*eSl+)EZJTDS{5aFn|;c~i)alZt8 zj(w+Ea%4vMd?n==(8~(O7N|O94}D@{8qrf0&=X<`q1;Zf3oFxjrwR6 z(MNu7ix1u-we`MU%JGH{$GfF=_$q|MRwIpl&@U*Ocr)W(3cgDr$9l-H0l#JNFM}M_ zS|5wizM!05Ys>L2^&#Zw-q(_&GQ#IsDaW-syd)BCI`nZN<6Z>5iy+5V$nYV4W$>3l zjvZPbdM+&2mg7_EBQBzkTTZj&D2VWxBjxyu4$q5(-|Ud1FXLVSz6&777m(o_{GNdS z3CK~W<9!oZsShCs%8%*?WJdU0D&_c6hx;Po7dqtNdB^$^@GXHHdmzKl_&p5& z!;oXImP60+{f@r2s<#KJ4}U}-nB!A&;LTe*|NBchemuhp$J@AecwdJcyuYA+ZceD? zus5`CE_gRVj(Lz{9{&4$Z1=YrdM@!xTaGv%^daQve5S>xGQy{Wl;c4iUJ?n9cgXQJ zZiM9L0>g0CMz&90lOr4|2?a95e90zs?su7kj5I$6)FsA)=4^L6#hN zQ`ye{m!ur62V3EId)W@JM7YZH+lQDL=$B7p+*2XPaL6$gyhlKeX^>+Y{^w~qwhU5p z&6908Mo}L^j&p`ud@3V+=1VzBb$Cf6yx5_Sa~by}$T1FbOaku-kYftun1cV4v>bXK z@N8R-Dbz<|L?3Srx8x{@@R=dy@SkIa=S9M&IppZZxW_?`sgPqFcu#{I6ClR~{4daQ z=s8E8cUARv2K6E2SdFty97kkE_*@|6Xw>1pNcg!9IYKxySDyztW=TIN5Bl@^f>m6@)+xedvk>i()a-St9-uAY`yE)|elyMJ-9CIPZ zaPXc7IYvN^5%^!C<qezFBM8ZQ@bCmUV4dd<) zITk>U{^0!t@a32%o#99G&s56ZKUR3BT1L$LWka336>Gf9I5!f!xzftdYhiF z?P<&LDfQ7VqK`t{O+-Eg5k6D2968uakddz2{k%x{1cw}nj5`r>d;vKU!TTG?(GGI7 z!~Z&8C|&JIu;zvhTaMk-hmfO2%aIx3Gf?Vda(hcoUnKl=ha3$!A6V~$9D5*#54?Yd z9C45%4*&P+e9?2zUz3*h;~@3XUg^Wb`H*dTd{P$|&i^DS$1NQ!IjSS!i3m5S>+Ywh z`H*)JcSGj1K+R#uF)1z3&;&VrG3<9NG%#Pl@zXzS{&6wTgT-IX$NZ(E6@O(U{=HZa z3D?&zb$Cf6d=J8<-B_XcUyb|OV!*#gprKt1`WrE;6|k zB>o+ee|m}~UtT19tAqc;ivLxCnr`HOQlKFX{4-Vhx7qW>_uKq?G5v!7X`QV2Gb8b@ zviNUPH`Kk)Cb_^&kdob=T;|G`Xu zN2cG3|Fq5)|GHM;{9h#bm+SEANcaK=|51wn)IiN}^6wUC7y}%HkHFLyv@&b*TH%bd`rgNf zdDbGUEL&;arsuAF5!@e$D*>(mIP1H@-3A=WFU~hxbAD}A8m|cKAAxzvaWSEW2}t84 zrnhSVvi@RJ;mjb)c?@Np5)JkUe>?MRSwzm?fm z`CFN-l|R-@Q2toculzA)E9H+dW0c=#dX*o25#{%qzf%{uoArp&iN`#o{2sGW`3>^` z+#2X?AKcmxgC#DPZQ_KgQ_k2~%{i35$qeNWua?zj;W2O5d{jJUn-xU(b< zG!pkdaR=RTnGy#YiF<>%!|u2gi35$q{f)RLcU+vrfkxuWi9;X5-WM$EU+8O5|JV-^ z=a`=)4t)_f+#ZPojl?}j9QsynxUVFR{V&1qPU6r9bHjZoaiEd7LgLV;bi-|uIQBaQ zzblAC-_s4ZO5#8xapQ?YU)l}#qQtSkE%=>B9QxdDxH5?Yjl`Wv9L5lCxcL$X8j0&k z9L5@MxVaJs8i`9L4r3=b+>H_k8i{K~9L88~xM>mx8i{Kh2OP$XZn#S%4m1+?192Ez zy5aI94m1+?C2<%lyWs{(9B3r&1L82IcEk0OIM7JkM&k0^aa|-1G!plB;zqgS5+x2a z688dei35$q-9y|Iciaw%1C7MpK-^S! z+}jcd8i~7_xM}XV*CY-!5_d6i1@5?j#DPZQa*3Paj$0~mppm!%#LaTYJtlFWk+@Td zyV)H#PvSr$ah-{q?T))u;y@#D3B=8D#}!B%Xe92)Sm5Tm<1Upr&`8{Wh@0n*8zpg| zk+>S-O5AZnB@Q$a_YrXqyW{#w9B3r&E#elq<4%$|&`8{?#697TYbSA_k+>@27P;d* z5(gTITS8o!J8tin!cKrj;vOY#sXOjFi35$q-A~*ycig8E2O5dHg}6$0+u zM&kZJ++KIwD-s79i5pAYL3doG#DPZQ&H*mk{oPLqob&$fGsy2H_wnDu0!JFjFCDmp zxUc6myb07e)gNf``uFV3j1O$Az&Q`h&#cA%x6UQ!hvG8~GXZ-c8*uMo{B)cR#NIY_ zS8ZQU;Ck$DEXCQk`j>EDe&6iS82CG3Uqg4y?fG-?9s3RId*Kc-{BOvN3D{>x(|GY3!?ASNU>-0R>%}(RQqbimyV5Pp#X71@ zXL29ofGBiWU$p7CKhiiO3LVzFY`XhExAC+nbXX^}>1Knjd{7iRtmD~q-2a|F=2$xD zab+&nw`{s;pv%7dSh`&7E6BzCzD;*2=!)(=mQLjh_Eg(+<3P7@o-x3<0{1x4zT@1( zE}T=U!&#tjk+0w3+%ET(o^{w*d@Ru76WkH80~HIG;Dv1RZf7vw`|o&UB#8{2ZPzu0ltL#YlwO@}MpAV1vZ12RSW7?-riZy$r(zZ_4zh1}#mY2(GRoz4mdUfj ztXHZ&Wup8xj^ukL(DSkN>1F7+1~fNLJXCgQ!li*}zN9@FxX0oib-!oV;2iKcbT}up zw<#yYuuV9N`0sYcnhWtJr%cn`NYfR#zl}8MZH>t}uWzEL!{zU}Ncnqn0@|@j`V0ZbI+jJhkGq(SIb$?ToQvz?IV5ajCmOVgTSwhYe4AZcT54_fYV*Pkp7*XCJOfKXeh&j{a2z_UgOUSW^Y2DMeMh;zxgE6IB;Ln0NKYa-`h0Vzqd)1#~(D-gKwmH5_!%#bOd#f?K$fa z-)f!T-vTm?Wcs#vSyXD61fTXCC82h!kKcyhCJ$U4q6*nJ_^@jRwQ z*YVDfNtQVSdFiih8Ys(sf26^-Z?%N=Wd}6NydL%5c`;~tCbb=Cc?LThZ(f98w`l88ZdTUma`P?9jZy0{Pif$N zA+Uc4f2tGi6vq7$xA)9mw;1(q`l;FL7}u37`~Hu+7UGVp-o?q?lJQo1Deibl^Wc6| z*m;~=>LcG%+ZTSX9pR{7=)2=SpRVe?b`QoIjI$f+WCM6Ip8nvOkGJC)-$s;w>b1gO zKJf>%H8q*pp=W4EK%3+lcZ_TUPe3-l=_qAlop+Pz0M2@aWdbi-Cgztd)7zA(TXtwR z;aivP8;O9FYz6A)J>JDI3PH z?Ej)K*@xqY?fAyG*X;Zr1Al#9a~cC<-gk)|g|lwjp5>t)VXwT62{hRYB0gw8;sN<-!$OAM#qis_>F0uMTYRm>6_qp*X9?+aeLCZWklLu&avi-yv zE~Ue_E(o>KI^1|)lcmG&&Tp2!t6g~ea|W9J7&S&*xC=G|dz#GMh>QDrcz-YR7-Q8w z93vh={GS{~8-_mBIK<^_m)LfE_oePnJI1ObTzJP9pAqR(rG@)cE9>iIJ|5e*{tR-| zfaYnWzZmZ-Q=VQ?J%<1p;~TA6Wv z?{NFcvDtpC0kaL&W3z=BIMZg2%l4xk_=(}|tnf{k>&f^ssag1U3{MpJ&zj@EVt8B_ z|4YV@$k`vp{|Ult(3UZOE78YWj{e?XvVV_ycfz`zk^T?wSCDP+#Pd-GqMVg~N#Y!5 z<@tWrjF;SSPe>eSBrc0M^tIh^#S#Y^iR%iSF|ugl zLfBc3Q=H}fRE#ZI=FfZ%`?wJPx95+PeTDbJ)xJf2_H!uu&zy6}<~~uqZ+8H`twOz> zje9tFH`prl%?rgn9IVq7uur^`hJ6s{oitn@ww@MUN> z*dMM(U-*iorn=xM%CFm; z!9)CGTPd;oqO zwLZ3Ve5%>_V41he9>$^iilE~dAx`PT8Xs`H%(SsQ*6i|F<4UCA+md$XW2h@Ei=}wG znr}SEo3VGxv5d5J*XX?8guHi-(GKS#%_5DxkVdA7X`Jmymz|!k(GFSTonzA@)ABLs zLMX?OWl&3Lp$;zB>0$mZMw;yWwfi$;bl&zhjD@{74K(e!==d+yJlR6*k#E+YaQ4Z* z!ybtm&{RUEXnN}0f}UQ1p7!F+2AuISo4zpC)j~(syLxT$mR`HSbm)q*)*zf?xf|=E zyw@Kde@2h`B=@0!Pqg}7y#Jzev%c$6>IpQLLr;p=Rn7aAyJ0gK zuf=PaOFpz5e~HQmpP8fMNBgwWfB6NW*~2af_aXP9P8-k5#vsCbjON`jRuq4>YHMUrToT*^iI0j|wK*Pln#OPk$m^?9;zk`8${wDSvx&yz;j<$0~n2 zbF}ieGe;_aTl0M7Z)@f%e;YGf`P-Q1DSvD89OZ9q4paU_bBOXMnuC--!5pCc3Fg_# zA8($i{PE@)%I`N%Q+~hMNBQH-Eai_gPgVX_=E=(6%IvB9v1YpR$C^EqAMJwx&b zAOEen2bS9|!GC=1kfpkn`8MOMYh_l`#rc{|ba4)61Kqqh^G&)1aprouC2{6Dx|MO} zYjmsQ%r$iD;>=ZaaZc+Mx;W4EGTl7C`B%CHe)A=|C4MtNx6*H}pj+)XU!+^-H!JDl z9AE|A%y@GdU7SyRo^CqFa|>me9pH=3=@y?>vugUZQy)-GW4OF5Qwu^KQD8 ziRK)-)rsaEbn6n$*>rJE{#Lp;Pk%Gryw>K8bPHOWv*?zzHfPeUY;DeD%}oH1CT4?>Oks z(Da)H%?9!R9}fDSn*Mb`^P2eos)N3hrvJO3d0G7bn}a?<(+3633i1Dc9Q40qu8;M7 zxu97l{{PuQ|C^>?B52CQ|EC@F-)s6O1Qz-t=aM1r*(-#PueDQyp zgZ@cPKUL8DLHwWMp#PJmpCo857XK$W=jy0sO@qMuN4}@EfF~7ybAN&+yXX>ys zY>cm4a67*D(SFQ@X_>kPx8nQB+TSz$JvI0?zV`_GI|nzx-&OlNhrcHU*W)|xinQXx ze4l+^Fs=iE9w>Fx){g42AAny1DA2XB(b)8R1g?r$IMJ@~QQjf3^8MV3>*@A1%tE-7=Z|nH&o!Di%SUL$p|Xo?Kk~Pt%%WWeceMUa9WWo6|Cb^TS#~ag z|1=%$oKF~wunpc$;lB4s(1p`d;We+Y(}I1Q}K=O=x{8Nsp-yLbyTev zw+3AzehK(-tc>}vWP4nF0PDoWU-7vWXAHuq55}*;s*UYw2-^rb+9Y`w^WB^Y@bg~Z z3+eiN<~X`_UULlHYOgtpZl%|}Kz;X^Q{mR&j)ICsum`YhhxyL=T+Usm8D0030PI!~Eb}?lt(VYdzK< zdKY)@)*1Uo{MgHv=1JXCbF^vl0mRSoeq(sQNa~(+e7E*y;H@f*xfl=kj68vPHDbx9 zNbMC#-Lvs9!ZC+i>@_<2@ve`5AorAy*!day+e`yxPQMoGNSPki4E-BgM8#q;U z#`aXqqw{^N`d&t$Gv?Eoe{!vC0%W)K$MkLx=`EU$HDwZ<{;| zAmw`sbcR11-?m(=X}ZO?0CYv?T6EYO|4T0Jk$0mj23>x3m@oF^cXFkhL%LXFAa%cd zl(9Vn`xP_5JL75EC(Lu=JNKky3_QyBL5b+)rVH@_2CJu zovHc&es+DxhCSNIH6@%M@t{8Q{(?KPUcz<08r*$-8P-Y;SOgY;{RAbO<12%WrJ?Up^d3h)uOrPT zT7I~{>qN@Wz!voLq^+N8j@8e>;nC~Z|EB!BX6pyMq<&Dpa37a-Z{F*mX{mnQ_Fw2{ z#tG`@CyZgD)vvL(e*UQSv$-j3gI;b)KbxAO*RPFs|D$<(e6y_|@Cxf^L(}AR-l?YV zOS|nj`swpu=qK$2_48s2`l0RMuNG}W7S09nJWu($rpa5@TKl>0{Fk*B>A^SBY{Xt4 zwgqelMswdi+7R@Qut&FOBJCe-qi&ai)7aNR+I!!Z4BL2RW4dSKx$_@;Y+_*i-)^Jr zt;bu0@$HRuhEa5GeP1KgfcQtu%o@Tz2-`Qi-Ks!;x4iP+0A%}hI{HGep+nQ&#v8Dh zk7pm+YIo9_wL8y2&I4%k>~@Up+o!M>cH4KjtUB0Dy_bm)XP*6Zw2~}cD#q7myU?n znf@}QALlU!*!h>{F>d9W2FF@lM`!y^{TwbS?aDcY!w&tiJz_X@X7?E$z_*rk_%*`+ zFUml=Oe^xzPAkg*<#(p_N|&_Sw1bdVXF4thJ@R4U*t3%V>wE}xMEP8CZ=lfEDPe@i z__f|w+LgMb9%cC(3?7ni(W_09&&IdEqpaSp_H*DIY&X2yivEeUpTmp&96q(5qXuu~ zvOmE(7Q%W{1Nsy7zW88o^ta!`ekSElHPqfG)@K#g#tNIs{TxZ$&*2L!3-9MJ%x*id zp96a}823iR$vp!dhw;wGF*oj;Facw~i!cVf5M#md7!!`eo`JCej1x`1b;`YXGA-rE zlP1_xj%z*mS$p*&{m4zIx0(2UCurDb;h1i=rf2@$g8$AqYfz?tz<0`32zLg4*Z0Ew z4S7T66`xo#PsexmNy(dW+5BmXa#JmuKY&Kb1RY+8J`CfWgm1R}YpRaj-jLZIhR?elXA)-BbTB4w?qCeA z@_Dw8K{@JuRf^dOW5>SSQ&)G=kgDfOKPsG3@!N*FZbP!Zd-u1|p8DSm&x}83P0wx& z-1x*tGyA>%Tf?wzzs)?f`?m~ypa0&2AI&^_-ERwE7w3*Q#3QYKq~|5XPdVn`8~Kty(>)()q1=zGu;i1n+!aNZkq%k@=#b?a z_?5l~rkHq}HxvZ#%fNSjHzO28-uT-TP3#LRR^L1`~x}P^tRnq0I1uKkz zk^ywoM*-$FjEy~e7|@52eN7MkFT$B6j7fjVJrnmnZ_5rbe{=9w%wo{m@-N4?wfLna zdlyqrew0nyJ`RI?<-R{O+PWM>`IT-hU7ij9qL11Q-NL;`741#`(Qo`&j~auNANPsU z?|)qTr*~BT`X{tMCrSCYn0EN2p;cEIgF|u1Z^ZX3WIvQ-tlRm(`Jtgn7pOCKJMewB zx4rop+|G6FOwMt1#oPwlQ8~BKd8j^PcZP9melq5ES{b(%p$>l%V+>@u;`~!B_iBr? zZF8{(z&2waemD%4Tm`+R!`9|N|K*q?#v3uF#;wfg964ikBXAYaQ8CI%mN=VS2%AFu zrCVWN!Lt^4o>yS}!|}Zvc-Zw9=b90Bigo^vyz1~KuO(x%^IQ|bt2PhwK~Z=Ovv~nO z7rdCB0pO+1?9DdbENqn>+Tt-**TQ~y^trn+d1Xs7vP+lvXU=Rage@LnB<-O+%t*J+ z<=ue)977XRUyVBxGL29r%FDNvl+k)u{rr_Y3uXk;Ho}y;1Ji?<5v9 z5_>7Vn_FE`ZcG*4~@iHInvfY5Zs#kg0DVW3agFi;jC%g(=?eOU3?axS~D%-$+ zgMI3D+3rFfB`hCSnchYo1y-3>JjD6q=gFggbRG}cJb-@(Jerm1NmiNmV;+R%)7IDj zs%+ZGd+%Ufwz1ziTwY+4wxCaoF+|640$U3j zndjdEOC7o4&XqXONZd}~RN2Pbr5pAPi3N?szDu6S`!G(F?Q|Q5vP~M6?WbUqpMlNh zyz3g+?56(4I)D3&9-U#k<8ek7@A(#@^%IIOFXZ5J*Z@lSGK|dPjhAW^$%ckQzy2GZoLfK;9dM|#3==T@K z8EeLXkCEQHM+L?*M*Ew3)Fa<(S{F^+1Uq>(`c|9^<9s;cTA6WW#Ln+U8Roli(QNM* z@7Z?VV|GV5B~SL%$+ya9tm#X>Xp`%Gcux%cIER)?es$cxuld~-;rA)|p*@bqZ-dPb zcmw>H&iF`fg!cZ=`4R!1|lE_1$3W4PomkW2)NYeAN(~ zJrcG)rG@(NG-Qls>-!;JSJBpEy**sUM16QzV6FG_Ji#2K&x`gron;fcal_p$aiEc9 zx+8F}{sdd!%N={Y#DYd*edLM!5A#IX-|~ZH>#wwNKcGH<=HixY{ql}h|D~j3*w#Dy zFZF}8jX%)b#<$de8He&>+j#b0n18m7zXf?zU&%bwHa;eebLwjC<6M@rZqduxDM*`T z;|=qV*k^6q_-6f=5>-@{&C2Pca z{|(+$tXHI}^$M0fuJt9c?+ZJbjkQ7Ad-g-IUa>O0&N|Pd`lQI;XE7JRbzA1&8m#Gr z(bPgqC8BKogS{K9&n_G`+cnW^TkVciu8QrNY5su z=NtBWP#=$%p6ievtRt)R?2MA0b6QBxCj)hQ^cyuEogSuz=dBK753t<^H#*Y8{vXqm zm9%(C=cLGe3~9d9Jt4F$Tu);Dcu@ae0_{Q6r~KpO5A}E^(!@7pnMcV{%57W=X(~sW zFt%ODH&b3uFb1JdxiF(J&E)vjwrg>)L*>J8w*=0URN#Bb0MzLyZN`u9iaPCRGak~s z6pz!a_ZuajpI|FC3O+Mi;PX)nd}c{L+j^?^FC?EG;8P^{OlX16+7|d+0zUqWswQGA zy>K@AVeF&DBc-mMOc+z+?Vc_qWyGsdvJK*=SA|192Ve=8@Q(?)$uMoCTg(U^QLD&|A9l*9>&&y+STlk@18@7F z&aAA*`D~nnT$r1Gl9~3Hv35i{&bQs`4H#Q;Ltn$j+SnOrs~^YR0m@(0!Cb+7xmCxt zvHfx5+G@uI>}13>&yFjt4Rm@!@0_ucE;o@;AeUH3}xAl|IH3;57PQ@Pa40WJvVt* z%ZHk#CeLHutix!VUjaSW5#JSY`~}~*XHDU&4YNSdzlbpQyL#E-u>u()fXPc!|dxhyN=C{!!56>2TYntbcN1(T_Ms(=q&hgzw}2H1rSW;(rZf zyBqFYoN2+_cJkC#2&**A+Zk4ky>0?~GrsL5whsIM7!JK%5BE-BPX^tcSP$f!`*jS< z^O!vZHXq+Cz8>=`h9gZ=;gW9(=$3lP*JEDBuxgLVy{)!BF0rw79`hoGBTeHqmTL*? zDN`o)yWv~8&%6BsMUxVo3VpG!#NX%xk-Op4w;1DAw!KA$F>ty%FX;&)|5LfPksgy1 zI5X!^s*R0CUoGfQcF;HFdA1*&>%-bXOyDT=$T6IOa=X!Q46N|;e5NP3Z^HSoIe7ul znkx}kVGQm$@?-wkqvrf>EyDPEbeu7;KGQIhF@NnxA8;S$cB@L#u+ED9U#9hzc`VAf zngc(n2j;k^sdd&G(ABpyLYNmhw>}YTtLSTTZM7CI?mgX>n;&CxEin^)(NhwnW}0Ihi@;$q%2eFNV%7OV9@(f{EATK`Dbk+YAl|DOf@FDF2c{8#yV(my@PtY78qOM8rg#h9OG{rUpoN9S&U z{xOb+3`^hfEIvASQx)p`ppBU4GF}*A{xHmn!^$sTU_Zu0D$lB|I?Hyd9C=nO@@zla z7gcYOZ=1nmVEgRQUhu>HZl<+vYph$1_1p@q<2EHC&*teoLwIEY)}f&LQk`eb@<*=a zGJm+f+s0bM4R8$?^|-#5$TP$j+=@I)WVtcS35YYlRZhTzaRl>D%E|oeX6GMh|Df}) zqt3r*<<&siYh#WruMZ;K1E5pd43<%qZj{eONOv*P&2pNn$sXZ_UQR$7BuD?X*&x~&JOfBEhjL-lelN5C%#W_Pxh0&J^tXyU9t}u zp0S6xe*%4xq13OPm&ye{1MAl|KdfaB+@$#p1izCV{9i+){8!^4}DwP_8@HBK<3oFay^f<<-b!LIZ-BjyZTxGet?&m9_3{M9G{pz@&g&G&u14P+;aofI z90QxaDm%0o`>gGAE*uX`uJ#P&ebD#fKihLPFR=P#vjX!1{dnKUDkD_HzBR{7Kb~wF zZ;c9Z|BpQe{Ui1xgu}B=vBF_n?eMD+Ztxz@eP^gQk-H+!a@=i0xt1fIO3=Pgz1OxC5NqEb$^FR1n17iETKoP;=2<=R67xw5v+MNzFvx=!p#RvN)>$O# zf%iwcrRmFRsr%--xC3co{#D?<$D1%Gk)7wkm@sl5-%t2f3ckGCt{&ymz`Rn;+1A}4 z@doyv6=y{52B|j!4}+HDSaqizWMtgVyTR{8xheY~7EJF}?L*}J{`mIK2?}U^1Hi>cd&VX!*mPY`F$e2k%2@dmAz*1?u;ZcM^Daw|KAZXJ(*W{)TX+^Pib+%<)3! zD&19hpP1>cjKtkb^3FQL3NML-r#X0kp?FWk9aQAq5xjd?yoVsa!Fz|zyNT%*ywlIL z;x359?U%f(ba-AQ+;H$l{~GDOBmi3k-W>uBe5)95D62fLLY{;FDw{vvQ|^TGbm6p5 zKHK7-8Hv9hYxLpp2X(kF5?+IFS@xe({4WmF;Qi>m6WRwF_;z$R&A;{8>JI%yHh;Wt z-Kkjc-`3yaU*`+w`xeQ+^#CipIugFo!T(;xe?kD`U+`}iXy9Akcw=0p|Cau$+|9Q6 zb;NM;GA0MchMEs^)JX{V0D)Hvef%zu-S$ zn9hH1IR8gW{@3d8>PUFDgZ~lCgEeH13)B>le`26v2Kdj?{Ikwg`sez$s{1!H{jDPD zzj(OL|495{YXFSKWJ*6@Srb(y<8=+X59#{ zxf%Vyz4%|gg=d;tng5~dZDszb{ITW_%8$F}lt0G&Uio9pZ)W zanDN}Xe4eBaZ}uJPe>eSBrc1%sqVO9i35$qbtP_^J8rhbfkxt56IbAlyH4UjBXPf< z0o)9C+!Toejl}&z+$?w87>NUo#O)&PW_R3hi35$qeN5bJciia`2O5cchqyWJxHO3a zjl``bZmv77gT#SG;)2A@bI1844m1+?9C0P?xcwVNeE^NbJx<)i?zr6&2O5bhB5r{@ z?sJI)jl|tX+!OA&tr7Nj zZkao7k;H*U;!Y#3(jE7Z#DPZQdJwn59XChfKqGPOiF?T%H&fz3BXM5hUUtV#l{nBy z+`iK}j=tJ;9DSj{ImhkaE1diIdqgu_^D*aVz`dGzPv9H8ONM#95MJY$+=%%;?hoT$ zJKnKsq!djY3A?Axo?$*kwV`NRD!7O4NTjba5cBh!a`6@s!m4|6Uk~5IN(+ARwXrzb z7{9ZS%{j(@1+sm4jbSeK;qH+BJbUH#UQ==~4sq=3k8x`p&h*TR3(SFxfjVRRYK{d5 z8=-?3C;Cfr8jX^T=Nv>lS;d}4H7`^=GL&9ibdGu(s1^1VB8{YJfc)zIOJH6@97(v( z^B~6j#QBqexN+TEJn^H~A?aE+Jq z0+f;aoe%zy7s|&R3(J5#&$45KWrr#-&&#OSUx$|l7x8*Yp#WPX1#szB)+LKBIa5i zLY?+wp2eTzHCZN98NoaY_bXEujL(_pyOH0ST$?2g_64dqFNw^t++xRxabmML^IDFx zE#m~uKM^O-UhRY~ScfZiHBFvWoinr^dTi=ztjmFpt+{$1=I3LqJ9D8Uu7^@T<^QtQ zRH%FYj+w7c!`!HtpC2;`dc&EM`d%@SJ981&=C?6l-3?**KLc^DnsiUI`&-X`$9aG2 z72*3^UxE%WciZCqt(W2a_&&_5a!xKT;fT6(DWj{EpX7Np`neZr8uqU{fgk(V$#fsU zebCAuYqnSZ7_+VN$C#~^-)AN$zt8k5zt?P~{9ZFg`8}pr`8}qg{D%4a+gAVj2wd*p zweL6K-isZWcjj6@<)t01$@7~3j*r|Ms=gI?%}?+R0pBQ3FSIk6>Pb1Ud-D!t}= zaCxta9q(c6v*UgQ8@tAdt@fI45L@RpU#E+47btkdX|a5Y8w6zivIxz{U}ZUqM%tW{#Q8Yhim%h1L7%GW9}+YVi2t}Rw3+@BHT`{p<{t6?ZU=o6>Ne%PL(tqN{@*J8 z-=hC>?0W#eUo`f5LBsEV)P9z;y?)$tk1~^uGD4SnIaimL;o4=nYyh2IuQ|5=PWll~ zt?-loSJIEU_gm5CG5%BSvWPa(UPHQGhh^xnleEjdMylK*zV{Fx+ZeXzjE85R8766P z&U!J^)Cn&4o+QI1E$vg-Rv@ldg=|dAX4o~h?<)=OVz!kD?~+&7;Kjw(9ZH+g&a=)P zo%@f#UaXgKt=WV1L%ZGIh(1g`)`_?#$ula;-?aKL9(?JKzp{j0sWE2#6kqsS9y{IIVCyw+l0fPIGz?!eiW zi#bT%$>W0zd_%Ve?Ih+`2UO)5+kf>Li@A2aES4_bd(6O_zwy|I(jhy9yZ(M1>?vJx z0N=Nu@5*<2(Vv)H4qPqzpx$`&VbR8ZtJY{zgF*BU4ubzal%p-^m$EOHj&)G#fa&Lc z-RW8f+{eXuHzweRJvi&pK5oK)+AW?@SjDy+|3lDm)zo=`wV5LVcAQ*W-6G-~uj9-? zoOXOG9PusF@qLH*Ud8*Hc3e*Rh6?#eXUDh55#ItG-*(D}y!7ZditeDNFH503t} zJ`-r*4j5Ypt!&!IBz<07v^9xIQrcR2Ja_6l+Th^+^wP7l6el~t+J zi4Gl%)jC)R9jG!ACC|UraXIt+JV$(kbbR+BKFZ6rxl2kgSEv5-eXF!SH$JHPH+`r} z>QL#ke1yreZ0qtftkH2V6zf0(_Jh=8yp;gmCSu&i`g&TI>~+gL$+K>F<&h=+SLQG2 zJ@bafndnECq8!FE%o{%od;TU97mu|u+?DVv{?WGE|LHcB_;7wd4(Ip%*as1heGmyqUn0`k8n&_x_5kVo z>n7vu4Bo-y-EVWeUX$k}IJUo&`+BP}Km5V@p)SyWRkgayvQJn1=UzmaSKE7I{TAm4 zoOfNZte%IlGWR)fKWctAWAg3TPr|dx$n)gF%OZEKb;g}*am>!h5a2Jh&?UKPfn z@K^)3@pd~wdvyh{<=BfEro)=48{NgAL)nhdVU5v^ZY1ckTUoM%Fg}Wp%^B)%$R3J& zGH#9Ol6_AV>f;gI9aiN#sgXLUK$=;Hw?P;2Sc~rcQyc7|zslOv$njOC5$e4?yOH}0 zF~87Qk8xN7##idz7+~`^V^0d=p`A$b;@lP9w?`ZFYc1-hU*8+k2tDvl!U}w2+usOU z`q9ssd=dE8AigxCi}H_!ztq<`VXn`g5Y`FyuehZ(5oxW_dXG;*I&nviozBC)r4ij@ zJOo#J{S~M)Y|p!(uV8%NwE76@3Clk7tO9+AcaJue6=D8_WuU$n z_uE_*wxdPgHchUtv(5@$vfgT!YU_9|{Hn$-=xeC`l0NiL62*Q==iWQS%W@V#Kf3|E zj~UZrznN`Q7GXc+0}}LmQy%pe}y~Y-Uik3rWE&xV>~Z?Lv3eP9_C=if?hP ztawhsx28NF_MgUse*)x4gbi$sJ50Rh9lF1`=5^I>uFOEY$#ac%yGa`skNl}m#ok4n zKZaf0b`bSxUoP&!L|xm7Il}|EX9jKVO7>wmpJMHwvGz+GI@9XI>_dLm=i$AdB-}BW zMBU--dc>u0TXf&2Aj0=Y;6|f;-Va{&lYqng*XqrNd4PKW`-QRFGR`!tep6lq`xUT- zz^=xft~fWjj&B7XV18kaQ}f)Gk*{%?5!{Esl>)bqJZA%kdC~*i%REBh7HXU?g4+aK z1KR2;U~#Std*qCDn7>+yd&YyE@QrtBG>kGr{uW4yYoN~! z4|smf$Nhx)=sUtTtxJnHZY_ZgVmW%|ea_QlhZ3;I@)>W+fesFE3m2?Q6@r7M7PTxxUbPE4m*2m;{86@FdLYbEIjq4>I`D4U>I;58r8m zoTE6$hB*D5jddQR-P68#pQip0?k)rU9j|*Ae~da7?S6+F5zc*%XyYc6Mz)o$P#>b* zMKMj{Ml{DYqW;&y7P$4JE|ECUNPa&M*Uuf7Cvl*WxG#z8<&GODaiEd74~R>1$Mupp z&`8`y;!uX%($_`e9DVt}6NkKV!zD@_Xe7TEh(o<_!yR2G@((l;_cU>+i*C4|B@Q$a zS4te}z8kJq;y@#D_Yeo$ zU#hKuoe#G$E^P((Z!~Kw7Flft?f?iLK)O>AUuU)#6OL^!GBR=BJLa^QzsP@c+2-i& zMQijw?DpbwZ?bAHdPiw5epvp@|Ej%Mk1ZZ9&B{%Gw*!&=>5OmMHqwFnQl7od^# z_?}Zy|3|swc1Rp(B<=>{(1y6#jkhJv(au~=9NG{!+-njC8p-cs;`+Jc0ul!riOVIf zmpg8$#DPZQ1`rpeoq0^+9PP}h#6@Xm=1H8Ro#{+moV%R2N*rjUoC(B5X=e%~&e6^s zIR&_O?))y5IM7Ib{~<0)J2Oh+9PLaEaj;Wv`94(QKqL8m1YAWFIr|D6X(a9~;Py?p z2=*CvW6FhSqsF6+!hMR>kv58FQZse? z408|NO2ce`i**2VH(c3%b<%I8$@c4Y@R04-ZzwNmY`=VLzv2R+Jhor)XulHBekEd# z+ru%-O3rbI$1HE)u5Iv>W0o&rCwZ?1#w#l^N3f1<*+Iyt#w}=zIBwBx8194fa-7ht z4f`kXqwO}VKkPg3sy)G&2ljoX8n-O=9y9j%2XLiq!@x_8ci5gl$ErQC#yl3*@LAZ* zh}4S804f6rG zw2eh{eTKOl*sv`H?$7YkmOe+fz%ZAWO%n9U4*I4%FYIwF^wtWtI1aYhkNG1H((eh9w}G?i8wVHz zR}C;$bDhC0UuTH?vDP9Y=i&_H563V2CX7b>qrhh*^5+7K*}UdYryNS%k1*Ksg|}nQ zu&QlN%MX= zav|d8+~rQ_{{Zc;>v~M5U>_aVbi_qEd+qQ+M|}6{_%K{}}(s_0F3h|B0-3ZnI@}S?`>g z8CmcA$DtE12kUj5vK(-~lq?5rwGJj9ryNw-@;S-@_e;t64q*0nP|d*@8!mGpzS8xD2Jwx8K}&#LNoYn>xir>g?-ljdj4!JbI`0U7^+=%3+{XPwgo@>`DQs?)**ZDkmIn8Ivo3rRJh%@pf0xv zU7ihj%Tf2*6WIK<^8h4y$|bEjrxi^CqyF#`e46vTa=o zJ7~8TZvBNMwE5Hv@5V^(dHnuDoS^qR=#S2QGq4|PF8d~U)qNYR9|rcVu)pAMwziQH zoc0c#sKVt>ZszdyR<(U~_k-hllXi?Ocp z2+AneHQq-Zoryj|@9nvv0Olv-!Dj^4P%2>uSXW00K2?$r=Gzj{?$q&(HSkFTpTdeq z)STGu<%^dT78W*Uf!Ad08!1)1{ImA3uZ4ECqQEc%m~&;mJJ(b8Vh*}cr3JPDYbxxM zI_Jm=5f9f?(owFX^=rGx`r_yh{~dLWa_pOs3w?9HSap?Mwoz`(Rwxt9`|dLD(O+ot z#iBpg7VD7hupZeS{jCn@cXdR+E(vqQ)>#FXqp=u|9|4|Y%4JW)H2VK_erVqPu>t#j zh?!W=Dontbc$ddKf;MLf)(Z1`dd+9xVw{d~Xi{(u#@e_~Wav|mC*U2i)eDF% zPIV?B4gsukl%Z-X2{R0en(w#w<3At1 zDZS`-^Hgl@Z>7(n-mZ#CUqbqj@##*Zf9U**lIkfH=Wxy7+B(!6NIR`4NjLlJzBS!U zwcdxB$=3TYllH{_;btG}eYhF0-ba`|>wScI6xbCdBh60Tw~jOqTkjcWhxMLe9qkl7zH|36=FR^OblmI@cHG>TD}`$S*RWtmjG>&lTVba`k!M2v(IpfS%U=;A+?3qc5%s`Uc)SIM`7a$U4Fr z=aoi7(5z&w$Qhd35B43X{U+Fl`7?J_W+D|o4{bosr_|b?hHUCY&Wy5U(w^fF+zUCHq*hV@d z7=VYF?bvLcf}uX4HP>f~hw~{z7hg+lzUK0M8}%Rgz*Dvl?6N%teBs<+l`;Mrsv|FY zd3;rmK6Oo&m{(Qrw@3oMb&DkKgeGPpb(fIW@TlDoU?QR== z16JFZ;LtZN0euf7pzk=Bz9*9{`I_}L^zG<{zOkZjn1{Y$Hhuja`cf0ncXa~#I9Pgpyc$e+~X+!avc2 zf1-{5*9q_+n*jeN7ymK+%vQC3#+ZrP*L>kW$AkYI8~?Kj@COs%|DlWjNI$FmZ+#8^ z>B4`p2mi%3{uK%E|Lwyb{eNc<`g-cObeFzM2U_w`?C_^$tf76Sj;Oy|4}7gp+=Gqadx^L>Y$|t5 zTfx|EyW=aE>%pTm-m&1}Oh*qKJIJbsF>&xz=8U#*3C~AA=^am50z9oQo_`Lq%A@tI zs&8+3D(80N`Aq^mCndo1D;LkJX%?Q(HAaoav%VY8PZHo6ngGx9E}nY^TYURNJUqL* z@jRLU&zBp!+i7h5JmTUxZ-}L*UXO<-C$p=5mL$N_k^s+bE}j#Hnp@~kpNfZPZa1E9 zCBXA$0zBVz@#L{jJ$P2c!?V5{&&&jPo=bq|Z15P`cWclvvl2XuvbySLcmh1PCcu;C;yE(htfs%35)aSZZakeY_TEmfN`U7O_JqZ^ z_eNNFa^vAy-;HNa0zA_a;Q2Fn%2-PhsxR)idGIv$dF#`tJ>)Jx@8w}vPuH4u?>=wu z7>(zWo_)a0k0zhfp|PYL50&0yUHd-9(&#tKUvSgtP7BAy!n69^jt>foS*t}1GPqtj zI=N9}tZ@#$zwtd}7|qc1Ug+g%9a;UD%l**8`CfDn^Xwa^SvWVKb8WoriOcxnANWw- z6;9GTfRExK=Hpc^;R&S|ca>{ok8$hOG8F%;WhcM=<>9s8;(Z>M{B-&*|JygYj^nzLOEDE!aAk8{ z#-;z4a4GKZA}+=G&E^s<%CGev7jTIdy=!gpOfJ!)cdZ#bmrFjuvz>41UuR~}&(1S; zJOxcf&i5nuY$x+9y3g>W{Q+rC=UqNX!Bjn-OufiAd5ZH*H0$60-*?v^5>DkTBWMz@ zEE*j@NnMIDC&+j4OyAx5(B0>JtMF%=51q_@2)o1P_jKPHHdpArK5Q=2eQwyi0v=S9 zgw4xz&k38C=wl*Cto1+B zY_$H5HlMNnk2asO{*N{{SpP?x_1v{T!aBWg9cBJ`r2H(S%>UMXYlis;>pjE#z4boQ zeBXK>Y3{P#N0>XT_YvlAt@q*PZ>;y>=C7^yVdh)b`!MrY)_c17OY1$|+-AMgr&;&@ z=BWL?Rq{oRb}oib4G^GTF?8^DhvLQrjr=cwJ^s&i1#jEvHXSG zg7^#j)1C*=t_RY-2hq;c@D~nd9ynlLj$Ro$bQ=C$qv`TpB^?<n+Z5S+ukBma9AOQ~GUkla+wRy^LTyOXu{y)T*1wN~PeR8B(&6f3Q9a;o{kmR!Ru zHXbO)ht>22el5M9g6^*mT+y{Y$7|!ycWAWdd#>o=OY(#BW#)hyRDX`IzP@i!v*t4n z-_U9OdnKi++5I0yFUp_qrrA%L2J$x!7`Ec3-C=VAe%<8$Rn4LP$ty>tp>*7aPSU)J>fbx=`12@e%CYknP2em%bhz~Kjrj8$YV7A} z%zsKItFZ@s@JV{l_Q_fE*#)2CV^KT}djS>18}}UR;fd0D@oxhEsKLg>F9ma(Jr}zh z9`AwQZ^EzM;&cYaftd|`YAX%E6s%VG@F=wD`MZ=s_YPtM)-wMhTB9kf|G14kn|;Q@ zz3{n}x=@>Azm@{w&p=lzZPadWi)l}DWUKhVA$ceT-)L|h^&9)@$dBB1FrV6-@AI9O zoNP3ouKBAj9HTrqMt0%wfx}9d07uY+BM+Ef97~dn#WR@;Qk|=Ab=hSBs%B;DleE6b!bnUu~oa*HnfxGV7)xx<@Z-d9m>#PkAvBon0&Z0+*^yC$-;847? z{%cQyWYXmKG18Lz7|oMLP*>oe$o&UNM%t3VF$*g@j?Pgz{zbdg{bXcgGW`EFGF{b& zJ+MznF(sdusg1_SXW7@t=bg`c#(gpJnGWwCPc|ls9>oc$-X$BCfXC7wmu6V!e4QBw zFX;+aJ2Ko`+qg0T?k}*ZsNYlT`ms)Geb`j}J$0g8ch4Zt-nttYr|$kp{YT-i`j$lX zH$86s6?I%r{dMK!zu6^b0YlrllWJt#(o%|NJx5+hKSc8B?6k9`Z9aS6NU0 zHJ_MzJ#RynDwAk`%YyoA&mVaJ*Rfs2;Y>ReYA!~Zs=pqf4Gmibs{N&QX9 ztn^1Vb)@=@)$<#WUyUWJm;-(Z`>l?3CQaCn6?1*fdLF0w0qmuU1-|AGbr1o^o$Ngp zSxVb;>dddbNUAb=#ENaA-YSs8CD-_xvqd8@f61fim(q#Zp`FZMPz=1})cM!zZls0! zzm*XoExPADV`GLzcPldfIW}%3xYPzBOW7*}9q97ZYo8Q*>RNrPw=e!9W&8>DMZ~c$ z!|=4bjSOiz&BMK>^bzZ z=IJj+CJ$Utj%_^)8~Z|R?F+EE&u0w%4b}z(t+m2q;mHX}N7m+Z&*QS)!0_!T^B~??MK$0zH*Uqy2b>H2sDD>i^$6((}Bh=)jC4orjIaBg7PZ<%|q? zd30N7#{}Y04iK**8ZPF!Qu{crvVA+(o#|f{Dl57zYU#_(Q|fBgPEPJezmiwf+*mWB zUF8WG8wbCB^z_Epd2a}ee6?X7c1NyXHdxaG)N{4YL;f_?lpT5LSKzJkz)SbQ8xOp6 z;0=4V0a$f=Y3*NM^z%xDY27BP03cSI<8}e!cuE*ac-l<({{-rN8z?Q^E`Ug(zhl>QdHW8%T9ao|n$ z!W+mMdElk`nxnwdK5K$E*`@DO(U;y7iU)6@18a7IaZN@w1Lb=8mPk1gF@RA|-{)AZkQa4z-W{58+C zvBAO_xh7bcngDNmQ}1|97w`8A%~r~~DGuJNJ$Rq@;$09dB)+@X^8PUa-W$Pd@%V&M zW-)lz#ld@y2k%2(yw?W{r7wHq^J@w4UgVbdozu-~@Ky`2_9AiXcAH`5flFfs@pd}@ zE1xLph*DpXC+LTegLwVWx&%07{|nZ7(ae4j@$x_9%}*MyY~;DTx^$G;N}oO_4zCW= z9|;HYTQJSbs~dua_axxeVlUnpnM`r<-fGv;#5j2W?7@4y7w;{>!fO)Xot*&hKi&5C z*yfxs`enP6_N%V`lS3G8P_D_KG%f{Z@{Ua{UmB*M{DC_HS za9-mn>yNx;T^cO>gt)fe+TWiN;Jw+!`_E%69@h(RO#3SXm)rj4^S^Sv)Be`?-u_-s zfb&vtieFnrb1&`hN8bD~?XS$G`3>X|opDnfUXAkb>S`~q?h6(^nSfWO7jI1aD*&(6 zC!8|T!h3NXyq)s>I_>@(FW%+B!ut~7y)gmaem35XMup$PJ1Gv{zk2ZIdGS6NEYy0f z-elvV1b9EjF0}fDQ$|~7tYpN&yTyZ7^BG<3@8MwKj0AX3Pk{G57w^i^*4Z9M=u2bU z-v$rffAZXgcTKSHgamj;Ccyimi}%CP))`KJiG%lE58ijZcpnQE4oHCaa6|8Hf0c_j zFVn1KZgg`Tyw`g0ZuH`PB3Sq-W5eF+_sxDO_?N0}n+x8dmzw&9P z?LXan+uxi3=Vjnj`%pY(Z*700H-AjqpHBWFY-ywA7_*YLe{&pO9pmBEx4gU}4*IDC zyn5J+H>T~6wRyGCcqh}+&zHo(`)}sD-L`+O7w^--!uu28y(t0S{x06UEK4Q}TDpBzU$dD0_pfpA-si#lTQA;M zf`tPU;63t8?|4_c<((9^>UT>Vyb%xHAA9lsELixNV#g^pK*G<`~tV0 zz$D$|m0?-=LE+!^ea(XW?(L>fw~0^>F!rSPw-BX#2xZyB;j~Wi}tYd@ueF z`8_59j?G>i=Y17N-hasB0SRzC1CCJsy7Igfo4--`8->3He2p~u@LT=Ys}(Q!Hcj;f z7jM=4N4jtEl3RSuO9uOIYs0_UP;*85Z3RJd>PX+>ln8;h5LyQ$`)_N;2(;+bhhg$to+;lyBJ3E%gTHtSwv@sitp z%|6~WH>__<_^)q$crQw(T(|o+%^>egXw!IVs?WE0VM(xX9`iL#;4kV^v?&W7RxI^x zn#;GnmQFB+3h#{mMI8$+Mz;5`SKlm~=DiDxI%Xsn70&1%uxKWI!PMi7#S6{}7HY0r zFlY4PKeVb$`k(bZ{?7;&zU7vu({Gmt7z@w9ex^>ceoR^J_BHPT#*B0u{(`fDh2rfJ z(&*n3-j^)Lcdl~e8;dI*^li$wU|!lj^+e`T!MhM%E<8V2Sd9#*-sHcv>W^<)_g0in zc{?fZ-M&pT!Lv{_0C#%l(K$uO@eg^ZSnk^-9DCS%uqeN1)8Co5m=5fG(q>gBEuLQ< zEL;!Xtkux`w$ZWVF<)~&_!{Av@@4sw78k&COXe;P7VhTXaB%B?R%g=Ua3S^buy0e8 zvMyO;mq)U-gtW>pxe8AaEuqB~YiwFdNgFOE-($W_dB6@KTM^QSClqapt|+;!;tAg- z_HtevfUf8|<{*k$Pd#(mJv-~&_@WD=BiqqzGN`Al=Qe|Pn>CV9PMj-7ADQn6yvjM z=x^{tH|I^OPVF;rhc&ehvGZuZ%QpI1?S*@gJLjV{zt4KfsX^mZ<(1zwQ+*<|X`ddw zKaEXL*%w`o4I5#dSSz-5yngz?Qy%*u#@_uN_*=l2WsI<5m+nHhTkX%6yf_EiZ{OP2 z%=#hq{510SqOZBs(k&OYv%h?yV(V0=;j@c2g~H*?il=>>wvZ?5uH?lL?ngy$-JM6hD~_q1IzOE{*Z!UdsbAIk@KWRDqgI`# zH|d-utIo+IpRoE@*;n!vwve8^fI700>^jd%wd;I)k2)Vl+{Eyvt5xUZiC#dRBQL7+ zNJ)~ZI5NeMX+FyO?n~cS0l!;n-kQ9?pJdM8ZFEHT5(CCrO+~D4b#ZFWMsk-$`W9rR z?b+##k>ihPq)m0G9Fi4l{ty^#(9YWaeHFxK?Y@9>bb#~CpiOJEro@uZ0PrNAXNXSH zME+rP%!fA7*#e%U&`lg>p`NphbW3hNp}&fbEwScUTBdHE(sn;{4)7y7s<=5`+p~P| zj?Yy-_;G3EPc63dk0Sq6^5>F&MNxChK(7x!(0EkeXX3-BEG@JJ&3mdY-cy)v6?%|^vumnVQwaq zxtXk2)jsPsaL%?vSDom}r92lDH5<3he@*SH;uZ82GCogwfi@IEzNLF2Kl5!$M~?Ft zryoS#D5n));_8?V_}s``RDMUmRGo)?o2R(?M*C`q&CQdIl~t3y`b2!HSeoR@Y{BGx zteef9ZtbmI5B`v|xAqs<$?CJTf0^=l_mKE5ct2o2YJJz*+7M$H>A)yD$I_#eS#_|3 zbe7%wK5<*<8jC)sZHPXv%-d^oEjzs6#%GxWq&yYBfG@1)t%9!0fhBsD{KD64>nK~+ z=J4IpQT4`R^?z2sLcd<1ep7bK++g8W^2?r(9iaOXz6n-d|DxMMQ;Z>z8p6 zDEK8u8%3Ln z14WyRyzI=PfU!wsEaF{hHMTG|=VVS5Pd@U$*!bw9`jt*>H`L=#$c#A!b$%b$LP&^G~)*c`MCvL<~jF$2bhtJ}h z&QpoUx04g_Z98pVF&FgLidnGEh$w@9TKg}(7$&dktU`XG6Ij>E_kGYJyWyskY1Vq} zS|XzPTuzLU1tY0BQZTJ>KJrN1 zTR|S@3PhH21|9WLLcEE_&DxJzyjOgP_76G(SoA;RD_DmS8l?D-_KB5O6*p^s$Ksds zJz}(~$VKXD1x`EN()FTS{B8ZjcJ#E6tMb{;Njj3%9PM0-CVLo1CROu$EELUMYhi4+j4klrLn$`*w?~- zJbh&E5o=MyKdo(;%B8gpQ@AE^oyj$ktB`9v*XdkZ*D!%gYa7OKDZc1bF2$+ja20Ur zjG8i3ZP98iJPtJlTS;U_l zE!BBV{>Fp!Z3iw0vd4z@jWt#&yao_x^=kHc-!?;gV06E#_6@leOa>FR#9gtT#+f6^=Z$7yvocx7ZWIwZty*w0)8T|+L3*TMa^FrW8j;CMu zWu7K_t>@cD4~`sf+;-rCY1E_kS}9?FI`3IIcK#~(SVVr+|1W6co472wfbJL3XRe$O zuVg;)FI!GtB8}w4y<+#z3Dr$26by9N_$6l;%}bUCI+i@l^pgE2((quQQ@FMt zIokCgU#g_i3k33mFqsKar-MFedi{ z?pa06UK)NifH+L{c#O=&KBT`R26u5PvJ<)3>Z8U-9_tAsX%H~rvD<%^QDa56z0~7Xq_6VuX|HfPaud79kXxVL?@y$$2F#JUlQ|1ce25-8I$;a` zp2(X;g=L=|9UqwpueiJEHX#r9@ZXhv-F04x&Ts0#*3}tKJbv!>(s=dm zxdX8gr0d^1!J3b|F%HfQ4^G7=<3q4;KA8X~!Cu{SL@_uEz*&2JQS%3Wqa3?)aU0{Y zW`A`A@;AzObG$Yn<_{>|fqhZ?)Jl`u7BS zZlvT8J25mX(^MRKN^ucueC&Mer*)h1HU>t&+EhBayjFAUu|E>|Ij9_;ky@nqNhSQMjDHKL2$eP zju(64_=^X}e|vBYP3y+-zJtRzpeK&&z>z%Cm^GC$Y!IGw%0!y1Y}Qrum(L5o4*M(I zq_V@OWpgvll+SG45c<5Tyo_@#^NnSXtyvIhpU{W1Gd*R0)kD|I9=hiA>!#~R4qe5p zkMNfL9Pq7qm$L5cS=J36m~|eQFC}-we9VDa&l(IbOxen7o(5)9PnZvSV6O1M#AxlR zqkA2gssk@f`TXSjY~j1=O8+gM<%~9EbH}T%8$9^F?ZLMy(2Z}tgRh!C(~D2?BHN_W z`QJ+4Cwch{oz)L~7H;Y&wkt6SvIr$6KZQd>>IT;wI#K+ z*86?Wt9_}x?WRrcp?#{|t&tw%y(LBWAx+C=t0C7z*dMUck?BGY{Siy1hgdRg(?6u? zROi2J0>Rh<{W|ljL%xC@XV7roSE;?<^yI^b*Ph9B23H~1B(BrBG^S8_$Mf7{i~+rO z;PZ2BN71ZtN!J*J_a9M)uKzWLxp0Km{tjsx4Lz3q35?SypT3RYn-{+HUn+fnSANnS z+H2dU{Yh*0$Du`s@W1LDG4B~-ZeLtm(6cYrdNlfl_d=~%W~lS8p-2JxiM~04eep_v z+ecL!v$kW{&4F2~pJ4qb^r+u;`=d1(NzGQDbQXPfW>WJYXl=>u?wf+rzr3q#tr{=! ze28&QEF9@|pOx3w)vp~yW~}~*JgvF*o@#D?^aT8J;Xa#c!yQRIw2h{0DOWFMqU~L~}q#2Bn8VY=~lDUVB-|Z|zX6qc8b@K>@^4PMQ zRd6EZ)A&baRljs4{Y(^FCv;o3d32poNFUr0T3poLrg7xw?3+lr+VBSr$H#i;8N)hX zQsW+#OZ@%K-?dlkmF??mu6(s+1N%)wqctDIGj-7PzI@Glz_*R{k>Z`~s#mkEIN}od zXEfG=A1$O&f8M5k65pJ7^aQYU4{>hgjkGn5z2ezT73(}U3~9V}Q%65w0DB*6aYV!W z)K_nNeOz zUQS`|N^JtUdogm+>iv7UFW_F5)V_a4Qgr_VtP>MY8=o-Jp6zSQdcfar#hMe1eAnkt zEPmr_kguTjIA4AqcIEQp{P{ThnnUdCdVq0!2piK{uSkCpMVDlgM!Gory^@Z1pXipO zFyBQhC1g&js{C5jzw`<^U^mwuF6o0#$rUoH_NDgpnbqdC&SyxI;<@$jZ<1r_7TQZ2 zdiDVFQcGEu_GQhTKeR&sWH%46`ja6|?WC`D{I&82h)%b^d&)zj;Hb|Nouct9(KydA z`yu0Pxn=0v?monOhFJymX0&9P!{B$t`$xzBZJ@D=^1fHel}&vb(bA3*t8Pb|Qz)OC zUh`S&Sd*y!!2R~T^cwU(LjCHy{B~A?@NKz)ko0QuWz&aDeFIN)bIUI zTipvUyV7qk%-cyH+Xgq&<_>^caxOUSj0G)tPMZv4pZ=5o^4saV>~-C{{C2sVOM}ko z!UNs14=fn`yVwLv(GySG#<{?`mmUD54N%2F8HNe zH0HdSI$yo}%6x;pKG%H7+#|C$SbgsYW*lC_J$>FV-v z$eR957rp$iXAg$C$*ia6Y*3{a+&>~8`u7Iq)m^f@bufE*Jmwzs5#efEVkNEuswycf5R$dh#iaw{JX+e6?pWmSI2O$@yc6fx84*Rhx8eRHb6`uij|e7lZsSswrB(Hj4b=s2VE5NGst9@d#8A@-t4ZtUFP>(MqJ zM82y0L(Ly>k3YXs_DEi5*^1;ZtIF{~KTf~+M9A2_GdjfX`$HS<-C0}Pv_CTSjs1Dd zPZ}fehg*FV^N_TUcSB#Ul`mX&NteA!I}8Pjv(z51K~AC{887O8a69U~k~%PhXjT!fm!~_|LJy`~Y~WoUio*$u4%}HV5A6EQpqAWjdV(~aeQWIa=!uD_tc#vIrYnSSutf%IA{zE z-%~fhvaz3}_xrH&{JI+3hZ2ORb?6_#*&;mzKFN9A{Zkh0p#P3n?!)Tqp}{TpC-BQH z_dE2n`nOwffmw-8mu`M#=#j4S+(^68zbh$AEPTnr9?O>KhW~rjhx}l`jn&On@WI9X zJ@}+Fhp`FNzP3Qa!7I+r7o7(f_u6I4D){|LMp_kRZSW7BsqqN1k*4y>))SBNlA}8t z0$J8R+|tQEr%hROLYr47H^L`P*WxLPQx=(8c&tY#9WQavxjo3Jgz={QFV|SUoX!7LAO3t8n0gb zC;fxqtN}N1QJn`an2wGpYdk~@Q0L)uSX1n`*3!GWXYxn3&MK!4y*f*L{~_h@>MYGM zTKWlkcdLxxnMOYOC*1EV`7T?-)sKQR8(NgMkhIcYI#21#Yy0BcPU_ZQrJOzLu`RBm zEpB&o!>`c|Z^!5cYb-%K-0bLwc)DS`M>l*R8sg}Nd#FdRZZOc7?Z{SLjjbOJU3+%E zH5Nx!q$5so+Y0~HzK`{^6`#{qhJ#D_T{~vq5ZVgw;z5JjAkPoOCl`kcUu|WCD}xUF zehJ#j%iwX_%GM;x2d~dK*+@HCb(2fn9dd49r$qfDX3AbsyKw0c&bp+t>~T8nL^e$W z=SpcGd$p1MYSYjVJ7)OQ@&VA69s2%e@h^TG`JRWq#~k`(vlRZ^m)6&z@f~Q~ayvSH zwvpDhbY#<3Vp&{!Wphcgt&b8I{NQ0=&vc6J;2UArZ=oeid)^=7v$^yZ7PTY}_kK<`UOYo58gKG4zBN5pBr zPs10t?Y4jOT-u9sE?AA-e!cB$=09xvW4i9h*f$-2m}`HC2Tj;#-nJZa+blf!gn!C6 zi+rwLxCZ?Cb{^ki?T@zHzKe85WtZ)-4L^r7FICpRr!VX}u?BhEX1B*8)hF+weYETpVb5 zuB`f}+?if^p=|E>QT+TX^a{=|kyYt)?65_L&Xj-DV~^H!%S1zrOngM0)#e}*$J;Vd zi%hKHeKqfjUH8h1^$+=3jr@p)H952M(ffc zkJdPL*K?F5RyOJ=ukyIE(Z)HbdrJfD(L0RW8i3*2F7>4I%Em0oMyV}(S4lQ_{(>>& zujP*=tqHE)2h z8JWhQg3NF@C-Yv7PdA4%{k$8I9P6IVUH*~UpLz42Vf_<~fYwbho>+DobF1j1it}=; zwN*yHTnlF9J2{z_{X#n7)%ZA%tGc|XGwSdyJsbI;jt)ZSZq)_fmu?+u@w5z^U3O<4 zzG7czacA*8^#ii8(XsP7v$4~aul_#c8z0jj8pRb>``sfQ)&*yn1*avcYRcc$XHrkO z@G?3?wjA*{oR`{pxI6yFZhyf=9mF@==Tv(1GB#D{$!U$mFYY7mV~*E%)7Qc|q-iB} z=#GoNz^C&7?}xC%6u+;w?)BryKKT?GQC&+1O7{PT%&Q%U&MmTOc>X=|`smJSjZ*_d z_c2zPv)Ml;Gjz0KR~!9aJ;d6J zzHh^?=Os7cq%D($%ZOAC5Ds6oZh&!2zU+kGDGCs&m4oA7Ackc6}7+ ze|8XC;bC9ebbM&hF^qLJXVh4lpITp%&p3EyzAtrVDBYNqR~>44J@>4}-5c=Bkk1xOSV5@FbuPyic8ZDeLed?WR^QGPP+;==W>>IMt_&3keKb+?SPbMKZv2Y|83j`;( z8_re0arI>E7%vIB)Mf;4XdfHLPmzrexvHo)!8r$<+x_V?WhcpQ)woXM-%w!qOuYwq zmc6uo;M7IZlN#sMTV=O(XbE~p{1uL0(~c~fq0>9wn-W9wsiGMloXQ+a^BiEQpfhYXq_%9ilPFY=jYRg`?PL&?@+G}S4+tsb&hgY{A zrEH4R>>7_z?lpm)@vSQFZK4nS|4sRoU+}u@M(8Vjqi>1 zb^Vdao#)y#F&=@L*MIaMz`13T-jb97;Wu`h-_Ig>Ji8HdF%K6tCqh) zJQ}f@?4$VJf_}#Ms@sb?|LSLrAij`nUrFcOv~?NF_OfT`sYY4~{u=bzfR-$ybH-=> zS#4wc<`>`#UpBm|yk+3#DaA@loSfmSnvzGm4)CtJQX6_yHVO41ztn@0u^QwsMrKz! zc8jZj@A0&yO4*^MhWTBO?1!*d^sNQTXGCe(QuN3{|DH@ z%0CyF(J|-bGk=)2_vCZ)^SRF`HfAm4QVi?#>Qw9r;&q(-dy)Mr)=TIdF!}F{K?^d& z{p|j340YnR)g%5d*S;S##y2oOxeR@2#RC$@vK{@Ey`?robjsh9F^IVU2lnr=t!DVB zf9m1w5mn{O;iu|hIdw3DI!N`@!NQS&S$j|Jn=jsr=eHygj|rUEeogDMG*?lgI;Fl8 z$6d=BkJ@9up0>|9Q>*sl&*JV?-O)M z9Wog!d!IRDcGaEa=I@f1Tw7kYB3IH=AIcY&RJuq$OZhJ4!|d{1rk>U1yEI(CWni5Z z`xUFdcgpqwp7<(UZ-dL49}!)A_sZ>!$fjr#{Z$U_A4~2@_Y(B9rj{-W_pyDZ*kdQL zhU4UH>A~bNhwq$Z~qf7%$#c6MMN^ z{Xcc-(w0wM>faEzE-#}kIkM3(_N+!IS=p++5wFg%_B_yB4dVf8UxjNZkKpX#o65P= zscZR@dhNDdGnFRo3E67 zt{vp{J$U8h2@k)naQJn$%dg(#N~KUW(ha zd`sxBtk%QUzRD*!-&F7KLT^6rinlzTOSbT_T)AAbTeG=b-_$nJYTc7))fy*#7Yxmx zD!xJK-B=0r0prl$TK6RSwFb?F^DR&MWcPciVU8ia<}?H=)^3(x@{<-~IX1BWJa@I9 z06g!upLM?QAoea!!)H5~IgTOtNr&R+NasB0V2?T4C&{w>U9lGX4Vwg*_ zCVh^Kw**MPFA^lKWGRz!$p3#^bBL0jyjXKROox+)Y%q#tX z{{7%Q+W!!vqlLc2cqzxMrvH?`t7>WSrbGOz-O71Y*x(13l8(5AD83jw9v~-^wE&$K zyh{g|KH$}o4<6dEw%f331nXfJ7W?`MmY=wxF~B<618b}U>&^jI%)!lqg`dKL?|l1? zVEw{@#TmdhUBF@whbVL0U38skbW)y`#v21ISaSud)S>H7HeH&3tXkv3;;bx-F2C7w zF0d}}z?x~n+Gu>5W0mm&!6LrX;@8kzi(fMY>#^cZEteP_uLq847pyK?t{}F9xu9j# zQ>e<%J_)1RHO_9}tl#MU#f_n$(I~wVJC^v?YX2(5@71TopRc%*|1G16I`MFHM(;0e zZ0PHc3um_Ai~&wYd^j@&XDo0s1?Ozw1mnUf7M#<8QxG3cq2QbeoRb9ST;TML3+H6P zITtu*#D_CRaApGMEWw!$oKRdiqXp*@;LPX=2OqE%hm!96Z@HqVvtg;F^ZNcFo-Y)2qWbV5hYbUluRlkyW02r19okt$dU-UcQgL`AFl%d`7TgCVrAmxYw+eH zjW=Jh@(qul?=f#a(s=WYQ@$bb^F83rM;dRw9b%0C{={>eSDkil za|=4LlD<%OT2;RzYwL0uWAM$yUa$2JpQ-;N@i`sGxaw!0+|l^Wz^Hv;?A!6^-BoXn zG!LSeUM|SBFWlvHgaH5Cu@(!D+acRJwtRiSTj+~{9`Ne zo#J1t&bXBFM8U7PrflFI(HK9MaS`8E73wEcXQXBMMlKw=< zzNtGl!W-7RVQ%HFcD0$i*2-J3Sbx}MhpqRSZd^%Ajwh~lJ?qQk8gw zH|qU37Z$MZ<-69w%XXC=r~k4=EnK;*A#TJI)*zaTWr1z12BI%FAzIWm0@O;QgpT%=j=>tBMw?H^{2Zj|`{xR|f$U6}q z&FZtNnq`NFs*_B{ChR|%YPRJD8yj}}W_><8(3tg^aq3odl>z@+=>xJS<=TE5WXAQ| zv@^Ee{_%qkhtht$zv1q@$3t4H;7dhb%x5!`fzBfXAUy^jcl7HaJV$>l8+92zG1fSXIl#A zqh>J26fl~j>ctNS zlx_N5(^HqzpN_9j8MUsjvA9_Nd6!RDJA5kbrs)M}(wMF*P3>2C`4nlY?}lIGi{;nl zG5o3kpUbcN9e!=Wj*R737=8&>vDV zMtwQDJ<-|X^ zVX#KqN4r$}DTR-@@R$C%gS;KXjL?ez1m2qo;0^S^3jr@VSk=6_Z_%PE&R`9tC9m-J zU$Q7WZytM*Fb7JUP+n+mW-`~K@XSDe`UXwTR9cNsQ<(EgLhcM>Zf17=0&AW1QvQi& zMqx!}ePGI>--569343pfs#lno3ozcs2Gm-CEs_(@+JF;eMH|2MMb{5F65@S~-Mwn^El{lsO#CtqP@W;nkhGkX&Mk^+m0 zJE4O#!b=Q+);R2V1HEGD2l$f1bws=!RGBFoLAI8@1<=<)e5$k5&dI-wDCLlE&D9ASFQ)PC`qbR^ zulo8UX=a23z@tu>V-MuT3`7 z(SYKKgV?Hlpt~<^KZ&+ae8zRf&F(%!DHj$umoQc<@$UVBy{&U9$NqSEhUT@)wk*q7 z!u)k|IB2FE8#IS+VV~xaniu-|r50pU-jQ6; zsWMN3PT`HPM~J_=v^c6TlA( zKP)`~4_cD^ixl6Yy4@WJEYkiy*dfn9hwL1<;9O+;9AsQ;kfw2_yxlG>`QN7a%dhr* zq3;womyPTho3sqwQky~CWu_f>nFk*gYpc4}_ceT(*cHW!-u@ z>(*|U+8?QQ64{z+F}DjmtY$~{5$5zjNFr(^QU7QaY&1KoM2 zlh=wVB2O#dE#2$vpRykqF5IKi9i&;LxpUHuYkA*3#k9|s_yw~19Ti=m1 zOZ#3@?{ku~1GA>yYb>tO^N)kGrd~u_({p9=tf`k7i_2&;YrbHQi!Xcbaq&K|>YaT^ zcJl1*L$az*_ns5)@Lm0EHt=da`;f>+Tk|n6_xFUk*#mQv2j&6xfv9%&f%vHdvzm6| zg=x_DY9EUqIsawj%TJ~LTx}!Z)h8@FqJ-r(h@N;bX5)<Q(%XEf z_)+?zE&p5K13tnXdvDZuY#`&Y-seGQvqt~Mxml*KmAE*{zngu_RDZH-E79q1(tcWb z)<4BNGB$lr>-+2G89Oe39^K{hRUc5}j0duvSeA$SGIrZTUqt>>R8QO|0#AAB`F<{V z>hNXg`TP7oI+l1m&KEJRJI2fg-c0(*&&kukctm@n-Bf}eKhtOqYd-bruvtu+64Km+ zf2@pit!aPO9@-U}pL{LJf^mieBg(j-Wh^l8hefY2nyobB2Usu^Z+a6x(OUd4niq{O zwCGrAG@NL`$ai4m9m9XtSKL(MGg*VsyjlB@yp(If2wQac%q?&U`k|68tLyh|N?&KNlK%X2#p zz@K#FXBc(W!2G9W|5Vc+a?nAH3)J>?-3afNl=wfR+;i$UBg3`9YS6#(kA|P1uK1q9 zSbD90$ch5`oi_H5U=P_Q<=+!XX__&TGb7l8w`u*F$Nu(H_JgjgeQZHwL3;sb2S@R7 zr0`$1dZb1l&?k6QDKo!|4X`W=4q z)+^%sY7X+hYYa;o?^x@$>!Kn~yZ! zd{-+U>pJq}1L5p*ub$ZC%|{wN}L^5!FrH(#0Zjg6nL-kXm!-h5{$AAL_e zIv?@oBaJuT3CcGre!hFX`AFl_*g{ePz{IMB7UiMi2 z{DtlFk^33=AE)zAdsFYjUQ}CZeFS~^;Zgi<%;6CiBHqRNYo@^i>BCsR!|n82(vQ-a z!`p5B*gDUi16#}3oW6j4`g}WXMRzVC_SuI&CGzwm8MR5ZGY!hya=(9(n}0X?E+<`Y z{ZX#B9%B60uVGu^S8Z0=btPYxK5D9O_(GkPk)LLk<7>X5r>{9+`I__7l4rt;vDUrDF`1X+lnv(!ezlpQ^1%`>*rAMSd<)y80gducFV2fTxN+?Hb*e`pm0!FY%dkb@%(s3hTdNUS<6^%>T0fBcI$Q1DA3i z0$lm9y8Kb|4D*)XAMUwdIN$z2zt&~bm$E({8F$~+{;mX;_&m_lu(*`;3u0!;@4 z{sPyxrL&#p(U&fx{|x(zHoebz2s($s{l*w|Q#NblLV2v4CVy77f3aZce=T`@X+@jz zh|fKPv=)DNBjr?_UE790qs9s?HTW&}KqqOgr=A7J*I1OF z%D!FsLDow^;}Z58jetY;%5><^J-T*XMo#tejKE!Y?GoL;XKvog%lJU~Qs@&>d?_pT z1&TUm{vo@adCZRFKFmWo`k@XuE$~6(1RuQ7xLkXJy|u#D6ZPP0A+P9?UYJK&dyAiW z&B?Pxd}N&N?ISNDpO+8S;)6eIwr!*Az3}0L{{)L*$4JNk^M=?zG7XyJkfgBuak|BzWATZ z#)bcnJZaJXuavorHP~L+C~^4G+Rv7axt=yWf;PNaF{Pm#tIcUXN%hOz?8Ys8&mQl@ zS(j>_#9p6p7VXlvQC-Zhuq&bR&aK`vj~i4%=&GnL3@{r`e5if8%1XfsEa z$8R%h(B-|^GoLtltTq#4&(tbkYJ7XN)tiqr-nMqT^3nd{*}uEI`C{7Wb>#EP(Ci! z;qzFZHj;}uLCNoC=0c?_Wgm6P{Hm|UEVLu%RoIBi6W#OGKHy&m|L5)e;{O3(V|Cwj z4}VHw-zgt59#1Y$^yZ6c2X880FY=t_%@-rjuad82PxsvL z2tVsvc$W?JK6R{rugk~7J$6iUwtPrV+T90iyXz%=!**0(ZOxx@&%&Q1`#|wQA=wDn z5xLmhp;S+7K$2}!$e#El)v+hgnMRBqaSZgf3qCfk9%Z){-KZdkA3FR4DCs3 zoq58%pymR9-FL;z7UoZi^C~j^E9YjO7)VXcCN4o|RZY?um+_K8Y=ZVN&F0=u>$OiE zJ}Tr(N!1uwwWW-s-+K1RvF~$X$k24dy_REIhA>j)Ir9agVYh_vc}IL`8lZ1J@Ck#BV?>J zM|PI#^3DW&Z$vM;d`~vgSBSUSKIZ%2?M`HlbNd!&JXw{YvEOO5b;;y0$d?tTCmuVv zLx{1qe{Z#^30pEldsg z_B~7Nt?Fpk=gh;9CgR%1#OOsmb5)M<*%!nJRUuFH_Z79fdQkD)4ga=df%nxqHUxW5Y+?TS6DRgo;|BRPyF`s-c z^U3z!>~0)~+T1I<4qLGu8fRz22i<2ocm02X|LMF-hxk0-^{tqz$o)p0Z6K{=%H6L( z&u;vz8xyAUvxGzc){@>GSF6q+QT`g@XSko{q&osnmHs5>-Q7F4z))m=sx9bJd|PjEZLS~S5!z(E=Cm2t zcg>>(boMUuIp`(icw?w|uwtu;VI5{3T;gwR%MCP!HDBSJ6Enb`D`!7*`}{51hWRr7 zjTYWDr~hxB6=S9Msp#TX#!{~ASI`!=JMHTPj~ptExBdJQTEO|Kdk)NJ=t^X%2hQ(% zaJKTS7+>McNq}=;0-O!t)OjC_mlx~o`UZa}rGfKb-u4^i3%E~}&wz7amOWiu_!ec* zIh)&u7%vsG7CZaBOj9zjY-#tu=wRpHpiEQoPAa$Zd$m7c z9xwf^=iPoYmuELmRQx3GVChf(k4FZD7aqJMT&-Ml=@*2vm6+dnb^6o$ZGE;yJ^{rA zv&O}pKfDnB#+y4QCd4|+Q1hHQ)Om?9iE<^caO0!=^i9akc$@w{W?y7MbcOJJyL?a? zMAs(TZo`4Mb|xFI?JQ%?cltwH_rKL??+xN+YfHvpT|D6Hmv7%y7R^^tl5I4Ib#RbE)Oit zVJCv8_NDQb_MCL{ZzI3XfqI@k_c<=rV1&eS`i< z9;KHgV|sVv?!@DAukSKom}l)gEWKc*lg?85E}cgDCi&rekrUDVW|KYVJB_lO3q4)> zs>ZitFMD0J<@%Zb4bayF@niPEkI8{Ps3^=Fi{IKq{A${DJ>#^CX>amFZuXaL z`WO0SJ>#~r*2l^ttDdCR5|K&Hm7)709ICKS1X79^%|j z`8OLLeYCvx4?n%Z&p0ppyu3{97gqdEwgo42RYSSu!U#kH34J*|)L7Dw)@G z^VNCu@pdPlk8esN{<~wq&l#U|-m$gen+H0EyU*I&+NDkR*z@>?%qePIqP0udRI+m= zLtdEYLCcLxne!!05%!g6b?Nf<6YCR{=ggS$RCO{xq8LEz?p02{R_1zDo>tn;BiLBG zq|e~}feT6+4_f8g)-d{uj^W;St89!BdPpL${3>DI=dYka?W$m+CqK0XOyTvFOuCtKP!8>g>uyqn=YQ!QHFZTbieE@-etG^ z7kX?N=kZeB0@+%O-%@`?+xEivtzZN)+pYXH>=hwCK(fku>MH#vgnk1x_8OSztH*axJ7O2uJ^jfF`~87^Bybf zRq*pO^q!mFmH7&E=sv!yP0#19{z0&>0hVCC2Tr&An^kwDQQWSTj{nn0CmAe<7hSNa zhx2(CoXLVyYV6plaX&aNB)?bxYkty=FYYlf8StCS4CW5$Z|e#eM?;tKUqy`<8%2dW zi}hCSi;%x)Yir#SNA$riUV!aP9J}l@*=+IR{iN4ELk29H4w&`4 zFUA&06z``ze^VaWZcd)7Ws5mD^xuv5`=gZ(8_h{~IqB$thKA|?TOTXx*o3d^R@dF=*sN&(iKM6elbdvlS!hR2Ctlno)fQn)w8lxK=l z9+h8oxpt^G&&HVYoI)NqyRq3~3DTHvh##>4M+VAL#qvX$Q5W zso?U)D=JoT>1VX_YpACY)RXpB=8Ph>`APUuRDV(C*6^LLWWH!+_B*!kT=cl}MK99s zoo7Ut_Tr)>G_OS}E`KJ|I%92b^+ zjhyRuYJ|2GMjze_EUUcC-M%S#pJ&U>A=*%H`u$c1zs5eX`aKPK?ahb2z>_c5haMoG z_?pc8?gxw?3;GiaLJa=&A8UPwe~9dNy%(_FV+Lz4@|h#n+K=gdmZfSg7+>m&o5&y9 zk-vg=v`A&Dch*i_c;v8Ck3*aKQ>XfO2wtlW4^n2?1k&%4=P$r*>3aAepXLwgH??jo zpLJsT{&#$B*mwncz8$@Q{cerL4}D_8YX#mqVu9p)SoZX)j65G_bU^QJa9A-=z|r|` z?wQwlJU8Z^wMgR;$=V+9UPoW7vPgdxQ%CYqZUC?RmR4Qy-Rrl+ep=f~{`KUS-F*tY zRJt1|qhL(pzu;MUV|R*&szAo1fCZ1hK8m*ZZY>g}Rtp9p;@%@#2LwHZ) za`#k{Z_ka9cgK_NT|6D;@bo%(s&@ATw06-_ga7;)dpx<3`t7@M;Hbg9;` zvM;dO2KAuWnmLEVu+aA|te=yAl>_S~o~?EWEvEv@rEx(ISn1Hk zdUncxj|J=cu5oGu`L&PqA?De>xTKUZX>p@_mb>^Qerp^fe%Hb89GBm%XPAyZvy0Ej zHFF%@b)fwA{ss1Wq%W^cW}KA5*f$kE_p{dIjv&t$fgmwV0oD&NHg@~~8Q6@M>?!K_ zsWpxp-ZatCRgw`Ox=CjjDvseb*)2S4pMv*!4rOai>y@m*S(h==XQaeyYe}BA7Q2UC z-KQOEhqKp+V0K`8c=rW;gFT+cYb>x0eZ_z2p*-}a#ss3J4?NeuQSj7-QOW#@_EY@$ zOZ2cq^Ru*P!C#H7>ZbGJ(ORbr;X!s>JOjYf+ghieg3qPl4ce3X#MpILePihUQo6{Y z`}Z0j@%%6P2bUhvy_@y=n>}>j<3v*uE06P7-W?b{z*>R)9jX622MresCqgj10Z zm#1$-XK#BPE+MbR?{**GbFab?$cM3ov#C{=&OSLGS+dEvo3#Oww^&*h0#9XAT|OuN zY_P|Xf0pbpR*5I0S9xeq8gGB1{n&e8z6uj-4T#$GNmJ#)_r&7topq4O`H2 zz2QkG|7MN-k3H6^W7!L@LYvF$S+Tg$V=nH#E^fsiO^!0p!2P1MmX(19#{YD_-W ztOUoegoC=4k3qWq_sE3CwguQ?Edz{Cqx0}n-+4|)Hg=h7-+oDdC%d4PekPub?5=j? z_0#{4wR4Y;vbg^Lv%6e237|+4E?ROyAqn7JG%B(oUJz6&qIjv2NUMQpTNDwbN+4bW zcw0qLYHI?mCabno!4fS6ME&BW7PM7sFDBq+0d2i-$s(BF`!oAI*(XnS*ZzLL?;rbm z_IYN`oHJ+6oH=u5=FBOkF2Zw%@YKfTW^kIiyaQ}1dA&|;j&4uYPhJLAeL}jRyCa*t zkCJS0WpKwfR+?;Gb2nR7;%>G?eB=1NY$m=j z`apiWpQBeD{T8KfR9zJ+&b`p;TQ#Gsc<)rJIC!CTq3pP-p`qfMZoWfi$ZyM?8GP@n zIMR*7M>lOlPF6}MQCL#-_K=?gpS;@+kZ2(9eP6|824t$#*99;NMs)Q=ML+ zOyoME^b%n7`~%|$cB%30T?k*zdJ2Q8ugejp&{SPBTBDZmoPbb+PwVY=K_YZ-r@_ zevu&ZQ_uhLstnL-Y75*K3K9cl8ej00hcHS1s-$q`Q-|>y|v^T+d zS9wRN4Uy5iXjA9AVAY@XeF5La2kjB)SbHP=4L2RNoc|?%hJ%~;Kijf=6z$%LhLu)$ zGIdhfGblUHtjGKjTiS;$P24qXmd_Z^Ucx7<{{{F8(Tm0=SNq78mp-1_i}*|IXR}DN zIA8Z3Wof=v#n=@rIL*wXRM!(o*BnUkXeW`U!oOj36+Yt{KlWIVy^{8vYWKu4<_#}3 zYTo6{r`o3ak*maf%9K+PYMO$5r1?~b`h_&Kl$UzrKVqUh^c)k=mw??KDqv zWW5=>)HVUTZPY%==BtL!m2o~hb5i7o{u!UUrkk&JS%0IAs_cDD8))w!ZEtvueI?$# zIX|ugT50bG;ZqfRn;OYu_BQR9_fCb`+r+vuwCdN`V{99Cc1-K+OBY&S%D$=89zn|T zq0=;Wy4TPqf1YGb%`Qvj#pS`@vIHmcdzwV%8f@qtEJP;fBBru0 zW8niA-!dIJReR6D7st6Fb0$LPA*gG79|7rwoP`J?r;ZQIBJPIvJ4=>>oY(MErs)2y zWi1t)e3lvPIS6*IY0l3HE|Kh1$Y0L0khU{%` z+XDJ?omr>Nj;KxOb0)^ZC3box>GFGhqWKebRom>HqW-wa^v555kXVb4)8|@WrX3u+ zX#@O>Vta^I;W)!C-^ce#c&D+$*{|lT4gdACuIt3!`uB6mX9zprE1yR?^2Dw6<@XAOMQJV{r_s#N6^j9V|rRM(UB!O|HO?% zw^;CX1#xMn{Veo=MgLVB?n9rdokNzjM(aa$wC`;8D9k~(tB)uKfw_0Zms=hD-NS>% zWJza+9_)|4sHF`nSlgSz;>CbkE4*)^we{2*;x%c06BrbUX!GI*&G!zR9B; z>6_{3ni=p;eQyW;sN!4aJ$Q0X@Qne$XQDGH3w<*nqBDXTF9j#L+)3UbxW|(}pE*^3 zU*;RyQ?2$0_Dtw22VVM0^%+4KbIdwqf5wghkt>mxMby;_^j}hh4p8~M(TlI&Ht#|F zc@g0lPWi>~U;sEO;KP2tk8|Om&d@l>)`|Ti;+_2VV<<~!4_(&J9Q4Dr9wo-bc^TU?hnK=Z@o zy@~H?o0Z_*48AJ#`fK3Np&lFHwdxdg>GL&)zx{36b363;cI4qfzw~oreA|DmbjT}4 zhe*bX;N`#_=t#<+Mg2Y`?r9Bp|4RGsMgN$-L3?ZlpY)M4hA2MjZuZWW(I&0vTJ2j> zc~9_PKI3k7nc0Eht_sSlplprxPI;-uqql&UjiRz1G&(#x@?|ux1AX>5^$hiTnKa4z zVv~pc*vu#L{+7^*2j{&&JX;@q%ugS4?N6eQWz)yLL6+nDDy_(J`q{j9#>U3t7p$Y* zrh59?26tbhpQ*1M0S%&2eXTovt%`Pg7}=D}Xxx(AAZtsC=x2-I?Nqz3Eu;O0uVxI)RCl++ z&-nT*dB&H$r$uPVYQ9%1$S-ayKGs}QAxeTgDT!tH~CI=MqyiEU}P5jnhuZl`3H9N(PyAnzLj0l z1LUv1_0|W83ASW_FYArd!4V4_5lJ>ajHE2iI(&J6awV$;@T{X>L65UPyB2;)pKE+r zfIma~v(-*czvgWHB(L2ROZ-Gs(+H5>+Hi0(# zoc&g6ubqA3ZIx)Fg-tk@hd$D{KgP=5Re{cT=x9O4 z8*P1bl1)b$-)56n`bhFyPW`2if{f!vA5ri3jXvV+3p{a;;V)xHv1k8Fo!eC#wWioZ zKgd;QpIzq`^onDXJWDyVj1G(Mt!tZFPM;o2-twu4jXIcW>LytGk;8zh0fc7{1nmuKY~8^+^qb;d)N!pi}~7L ztfo()m;FHDPgk886Fn=-<7=jxJAKUD;}dvuJ9E!^@{GlAZ{S}!J0={O18%j;r>}ic zydW#=;K_K?l>LSFvVIyp$CNGlRj$s|90g4(`+Ci5$um4&_Nw5= zvbRJ7>C3)EWs@hHvK7B*&v4o8#KvPUo@^@VU}wB=_V$F3w*l~9GO2X&J|7vWDC`;T z!Cri|+nn{Z7xlHzCOzA0yCENkG##jweDq~sYk>VM_WXwVjP{e)($`ex z--xSK^$BOU(PbG0%-4O^msx#7u@ikumdi(?@-%injz3BHL{o;RjLmi#LEsNw)Yww=J^M8H9T$=BV(7g+NCj6fViGNsYZT&5Et`GROKBH%?Z|hS$Ti{a@ z&-VE}n%d`g=huxNd&#thvSDbrjJ2Q))`G2WJr04-vHC-}GX;J(P~Ns$6C0H_>lax) z-?y}t{^{t83h3Kx>x<%_x%^S&aqEGXumcRPr-y|b!1ZtW)V#Q$d0Tk`*Q050^+|*4 zNe9=jio%uPdM6n!_+rO=HTAkJ4X&@}rLNcA4z8uehKFmD;A(~U+cwc3r*ZclJe-yW z*ZXO3%>>u_!>wkgU7D~rqCL-Ua>paw47|?g%1-bRkML#QB^wRk#uplX1Q}5rLHAtr zMH}Y=gS&g^%FPiJ#;2uZMLmW9WC3G1ybaZ&b!Hoy*Aijxu_C%J_xKIJt8f-M*uY z1GmKcc3igmMeY`VXrG7Sk96l!J(24N%)7PqexAE0UdVW$@n<6Y`@5O($Nw(z&-q#W z+W-2^vTykv3dn6k?CN_JJ0#&$i%;tngKt{-wcjp}A2rHf$K3(JK_&F$6oM zh;!A4)Qnc$g4U|TGzPWvJvzZ^Hf!$GN8{XW^qI!M)U|n~%zx24+Bb;LqBNM({UY&0 zF}N1J8=5O$-i%j6rBjKSe zw>(IEt}5blJ%s@$v$`MSFH{YPEfe7a^lj`i7&^C-Uyq;p1&NPNl=gc9Qe#$lJ8J zc=3;qu!pYZi~;oZ#y*H%bXHTP6 zil1an`801d|Dh+;lQWXYWC>-6=bWE0_W9S?=ZOeQ!GR$O+?E2h|#Y_Ebs+v}aN41zIO49&Pp2ed>+1d2KcDTWkC48A~LeEy4qD z{>&O)OL;s_rSRO$dpq&pEY2DUf5VXYe!}hK`RD}Bv#w`v8~^)iOd`D&J}6&rY}ct;w0+XkH_E)I3LL2=>gknktB| z)yg-mW&faA_A+x0E54sUL_5iLS2^+d5cwA(Pka-vzVFF@qLDk+8kqNJ?o$<~Zx!<% z&a9ppTXTcvBUZ~613ae3Z5#g361AU!?=DHp)H!WJ2w>Em0zp2L0 z{oxj|4LmU%&ztMAO+9-VK1PS8T01_&4TnAGw$6#d0~E3OqT#t1_X5U52C!^Cerzz$a z6!*33Qlk}+}|6bZ1x>E-~5a_uklT?Rtv0RT<2N2yXx6bHIMc#H}a8JB6{5Cn`V)w z{v*2G-+#<^X8bVrN>6-6UE}Pv zp>w_t1S13R`R?YqmmlLpbMV-B43S6fwc6hA<7)Lyl=ev`E|n=%_$ zl867o^EAGqRC@!@os-Z7&VD;*Kh!pCy(lqlg6!|Dr@XT@cCv;Q-NZRM-iOlPG~Q@D zJ_P@izO7+Qs)rWQ=$6$@^0Tqu$~l9zp7-A$k6j1sN0ig*qi!ED# z-j32nb&TiE{f^$TV_h2jmw-RjUEjZT!6}b>>=*}}c>XN)P9>+0yW!bq>V`i>@Z$G~ z;o%0_`G-mBo#m?c2v@z!sP{&@-ka0Zd%g?5x4j3XsrO75oVVVYcD-k%sduFt-c#@W z*b0oR_ZQ^H$JIfqH~mw#PmD39=ossi3+bOGk3IJGC68p>Nw2W;pF_T7;sa+tgN)a4 znaPf<8%?}YbWH>8Gx$Z{QuYRolFVq#dEQP_Kibc)gmkT$sGpDHeIN5FjW0Fm+D+(m z*{UZ)TQdFdBI&>HW{naJ?fwC~=KHO=E!a(u&?ZrPFG~gQn{B^gD{BLTY~D0bzSfJ% zC|i3`R>PNfC}%$9XkF}m%BZr-sLynl!Tun-j8^Vg)wt}Gv63>FlVukLLZz=!Rz5fV#Bx9P7O2(YCXX;z+Z?2RcKR{JqtYUH2L#1C!C`b;_w}|3+qfHfX^pQ_19Xm;{%azU-p_QbEUO) z@y56h#Jp3-hoL!MXK-$^wk{-H`-FP&6FrVk#mT?em0xqU*{<@$gG|yhfK!=*b>M!+ zcX$27r~jev>)e#d1MYd0C3^K9w4b6w@1n`%qYnRMtn~6HL_6-HJootesos(2hXR^c zWJl!BacrDq`>(W4Bl~DK&kYCLb+2CObnN*&{35N$Xml9wpTyrQ^*)?;YkF;$ZpP6K=$U%#vC2YU_zT{1ENhbZbP|1*F{inLybH)%b*k0; z7QO(bxL*sK4Imh2p+Nh`hO!;=$uVKw>MbA{xzk(-eP7?P!vhGNnxPFnQ z?Tn=<_K;`V{cR)sQy%x2vQlu!d{L75(}9~(kNpn;mvWC7JUPy^2lrLbpPlvywuo=s zEA~;Sl)XQai2Mx7L3#) zbJ%|Dap@PCBioB-E9)BCKWffH^Iib&M}G0#pqw{y)0%9B$@e) z*c?UdInUs?SYr;c{ucG&NxD1V)8DYq5FFP+kMXa7w+x-S5;}HIEQbg7zDwrB;*Dg= zXZIK7SHBVb6yQ~dFI)9wJz3noioDn>i z{ooyCy7u1Jsm$6$nLndU>rl?~Qcf%1g(m=yyKz^_QM9q}wUTzcc*nCI84~<8HeW=` z6uxP$ufDkwAI(DU0;}wcACxwjfnEr5Z|V-{*##X_k>vtn@7HlRLZNTTpdtKMxjHLW z32owSHuu`)aIc-g4IeH7x8V)>MBhY*5AbCK{H){bg3@!4pX^_AZy&VPQHM2`SQoAy zaz=3xXP?&$8KXG+hL>-^H_;pA+1T&(W}FD zkgUlbW}k7)DR27_E47JAcK5Ld zedrB8dZXa>6-O7`zOs+*_EY^EsQ)&8+iR`xo!_>{dC2!6;xo^U(qlZ`a`&sjHIp86 z_)Xfe@Y~`2_Gyxth4@1AB2S24DaOKc($u@f?t3f1UB8|FVe5ozz^T|NdnU*?+Vw8b z5_m9*pX@f{dx5qvWenlH!1e9O_3?8gNAOKBM)x9X7tr^L?e}5!^C~jyB@VPNZl25pW`NYO<)@n0$v(M7GLv7CXc>E{R zABM267ynTeWAxYP0<&(Qbt2Xt-UbJAj{A#8j|ex`PHoHo-GwR@>0r`4dc+GaWzVvROfiUc-*B6 zB$Ir9Q)7;My{}yM$$wwp)Bnr*KK%bv-->P>^Puzdd^;4e`8{fr@ieJ>>^lrSX_;@q1a;v&JFbb~m&o&eGgOOawQ+ zci7LB4bB^1Jtu~IQl4{6@K!r;t~M5&*<4pGMR zjo?9+4l8*1oY?8EIym%S>!JTX%Gw|p^8bbM+~i$9GUT+50IQ$)F~+2o4r!T z&krvY2Y`5`k-NcF0q=BfLT3;&Sx1iauvQn7Uw49KG3NH7K2G`W`@t4BEa`GT82a15 zI(LLE!RECVpkocbAad`Iyu)}nd(zmZ-S+ybc)I@v|I!8aU7P#({~Tk(^OL$Y^>giu z_>%AH?+fTxRY~?m?6A}0Hh;g!TzIARAL*EYeMi}^sIT|@!PkFs^DiNP+1c@ZW=ujm z&W&tw(NJe-=zMNub0-?IBbOQ)bZ#UrcNPDP^?%QU@4tyh_^e&-M(Xa3M>qk!SqUwU z{ZfxyZbr@|W52TDv^K9iZu`YKXL4Fg*K;OLd%NQ$vi5hsMoD|HU@_7p0;9 z`))cs^zXn{NJalxH=Kw5zXK=wU;Ah0dc4*e>+jZ2;=kr#;=kI#X@ekbV1;^yr}xQg zI}+M;4^tt}1%s3GGS5Ye^0;}q7FrezN)Ff84M!d~T*R(}Bj*p>ZSa3f|L)as`oH3t zivIu1OxWaJ`s>or-|B|*(0_|ff0f+^PCcq<14owhbk|31AYast=>2}IkIq6K+`8fw z8=v%5GF`FGPLJ!W?8y1ph7}8$U;l$=5B8iMY+wCRJN_f~1v&J{e)yj^6Z$IMd8txp zAM(F`UTPijJ~g+GpT83ij`>$Swwdv(!HW=aKBdzOSWnMj?5Qi{3@Q5=Zt@%7?*p7? zmmL^uw8z(c`M_*_rE%zHhcD0n zdw{d;rVbT7m{W=-JCE9{OCIX3{;hGxiIu8$jLTE!^NgH@VI7pSfSGasyLkEy} zWoYA0O$)lkrwr=P`JJY!9^E?jDiy&y;uv)7RXUP)2e)Rpv!H~B8S5190Rkt5Ny!~RS8dz5kIe_Q_I{yN)NS8L|B#+E)6+fMp1 zIP#qM*yKYW(stTMQ!&;Tz8Akn#X?^=q`vi%FT7aqll{KmA*K!u%6L=#YseL|0XPEScve>M9nKRh?`Tt3t zBIX3}cuVm{?L9X0pJsbM|NWYie0uuX_I`ftgNVzbv!8!1^B~PnPlgWp=gc`-+cy^_ zuW+~EpBzJ*Xnv)4$IqSWSuwU-_~$QvW9p^z)T-w(OAi>H=sb^jHQa7%?H`jYJV`wy ztNOK?GlqoXB@Cf17vzm-cu)enD27`cWNy=G71IDG_gj zbCi7-A6-^l%#-`tF0AIKm>cIV$cjXV`J0@%x5{h=CcY*UpW7FscdG8B@0D9&#fO=G zC%i{D)lx6PEin3l{e?WIuehYx_?XDM4H^}PWBNW}CCG(Ijhpzqa}ocMCvHKyEE_Dto%dr#MX zpbG9!Y3aXVbj8B^PA^L06F=E5XCvh}aV4Cxwoq0-?wq^vZT5}SN`JAJ>yVmBXV`O` zr94{|pM$h#sJDDgm9(ka@ecH)b?A)2l`qBh-U9P}-QY^b9HrlC-mfQ4dc6P7HSfeS zGkCHiH}SrE;yBt~K8mxOkcE!DB;xl`;Op=q1n@l>{`ZUYcgv4C&(Wvpz&yo+JCwN| zXF6&FX1ydo$UKBTSg_O=p3MJe+I?O3up)P659{IXJ*=Fm;JfZ>Ze+f!y|>!K`X_Xm z4_{!x%UPy=k0vW`h+STaJ+V>B(i)S>Yo@%$z?EzB7IdFk%-GZv_(5CV9o=V^{4P{F z-e(;)!|yLun`v*X{2O}C=bLPVBJu>g`!1^L;V+G5mCYqirkRUH$FNrtpG3>y8%9T$ z;G+%v^7N)aUYq7D+Mm0A{uxc{dB;bw*6bCjH9qag!_X4FDAcU>&07$^f0A{kn3WM) zCmO9#!QhGqtaW)gz67lUeKSi6pp`wmGX^K2m2ZYt@&pI=xTvboUs~lKTROeR*izOM zO6piIRlj)rjNmEx&{w0FO;3*qYYpLY?ZF_XsA!aaZGcW6dei1z$$0(;St~dD>&R0_ z8Hw};RN4DPlOCMNZ1NpNqI?uxft$#5ID-m4DtmsY32dubZH zUou8i4Tc|u34ZK>AM3Aj@#Bb*;f>6fbCb}t&P7uXn|| zpS;1^kk5ToiuupoZ{7TPx=*0;UTa;!U+Qnu-2i9NPbzq?V=p1LR%s^k^*ZuZaWD4O zp`qq+z1mJLW&Eo^&SoHk>;+v_y}%c~9{w}7t-5<-xA52OUH|NuZcTpze-pp!GRcQ- ztiEtWxP*APGZ=FpXMN5QKQ`m6(Aw+zhUQlLLa`YSbBFK+R%{0Sq8eGaZme(a8#WEopivDQP~V$+|nniri>Gf6zun$V0(tXTEczPaLO)M`7Kahf$=U-bfb zPy4S5!b9nq=kQTTcQj(dnm&U(UX9(NGbdGtjV;~Gd2BB1-BNLUXx)NKCYbwcD=EXr zy%IH-WUZ?j@#v)Jf1bQSZM=EGy_3dG;0_73J@0$jFPsCck7{!T5v&aeKvCA2||RY6El$-(qz9e~V9i^p@W^4ZS|3bNRg} zzn*&juau9D)wnC$$f18XV{Hv>^uJNQGv2t%{|Dt)E)KCL7~d?maO>e#hu_I<5B2zQ zLVtVXD?ZNHl}hioU7vvS>iw|bQmnb`bi;YpnreYdwYK#S7o76AeHu3jj=j0b#;3R3 zaO82rT??H0jrykIjz|VyL$^)OHU0dg>FCUJd9UJZjO@3I$ZyUx%~Oon?_=j*&~dIQ zO23p{U8l8;P1qs)oW7~MYF^&_&9Y7Wa`>-3Fj|+%Q<+PE5#0^w|MpFm*+20$du$cg*WjHNU+XW!J{QhP=1^K^ zzF4xacmC^rCVEHXM;*FPYjrA~_`yLioF6Ze~QDp}ECRbd_K0KV%|_NBLK{Kxk+{2%uHJQ-t4i+$Flj0}HA+@uorI8NXvzupAw zoZ&gxTzZmsC-EpUbPff(XFh$a1iNQAHqQv`9i6L_?Xy^R5VlGN`~1(ve$o9}%$=EQ%NS_QRUgB4S|xj{ z7#mTzh0iHN@Pae>H(GNX-<#w?@#FAUc8b3}PIG?FdI+ZvKcy2lj&Xo>w8VQ{p5zbd z&fcjW%w>DBe@yW!eE2~WgDOpJG#?dXzZ!Pj)YRipiyIykw(c{|B^eg<17s>B5jqjwbV$QGs zW#Ikw-=LTOqQ$Se@KiY;l1DNs8Zx>^-|oOWlRYZJd;c|qef-?CjS?M{@5Ze?ODBTc z$+z|0c%DjZM)k!#+v$tI2=BA_f&~8#0B`2TUp!J{uzz!()I3pE8eTdXR19mZCT;QA@O}Wx7a$f zf%ksU*uWkE!Fu=fZw6L<^68ey_M^rcY7tDAFALl-wuuWQqSmB#^*SyT=sapI= zw5{esngcoC9<$|lA?@E$F8JS)oWiG{@m>AW`9TN$vs=@?;qo`xeKbHk2xwQCpOIg4 zaQu9$DpqhVxKH=C;ALmW=6~BgekRkG@FV{Yd5o5G*0RhF(D=o{Mq%=Zs0qiwdlr*o&o<=MBq-1wU1WB@Nat}|_1(7q*Dd{*pT)?;OlsD97e^?SpGOZ5{!g8wX!pTT|K z)Gr>tCk@VPO#iULM}l+r#B=Bmnro=962r&ttHusOx9Cit#W{gu_&Sunr|%VohlYEj ze=AlT63)`I@Q`qZdG8bMY2N#UyPNmk;edJX9rl^`Ug37`tE?#O6+WovimdQA<~=JM zGw+$Y(h-u>2r6T-3=&A3NBezQ6;RtojFk76%)&Z(m=W({W_cChFf#eW}rCAAhKTR0X7VAteCPKGyTi5#TSZSA+=Ps{bQ#;?I6DW_eS~hhvEKJYHH_u^zZa5%4(rK#lJ7;_xO6Z zSoKG9W{LCZ*s+b9Sd*Jz#bh%D`SyHZpmZa50Qt5Or`*_LUm=I5!S{K~hJ~ZkSR)N= z7+p`k#=xL9Y}C<>wFBFl0++RE-)$5ajROt9Yo2rRZ?U_EoY&XcI=e-C>`N>s;xFn-oUhjZ?|f^u3Xgkmp1 zOEO*Za#cc~E1!G(xDq?a@al`B!>z0tErM6Y+Jk)Mu(0^W{*&1HcLtpz9u!>|YHK3T zxQl#k;^zSBvUXT$lb08}f0LXSdu?9qO~Q*~T)g;*_Ve=MkPcqtmR!pJ_#Ie*@S`2P z7+}WC@7cUa#)pMz_;5IUxQR1n?ZcR((_YabWoEDHO7t&lqOqVazILj%)SBvMf3O5U zU31&(Wu@?MmG#9SGcJ_sY=dOWZb!*S3v+2(HcPZ$Kxg0eJ_FhtXvbu)`x4`#%L$LVqNky5BH(0ELlpK*i zcpUvAIIw5fNBoWG_5gFCn#0b6rpCaewRyg7GyRM~Sz6ES&U!BYn*tZM6|)wLuVj?? zqWApoh1P|*i!p0M;b5gT;X|${3>~!cs|QzbA7(|NbubdRcBTV|e)+>(Ej6;D5e*VW?C-(9e*K8sD_RQ(2R)927d3Uqm^Btb^KfeI5CC z0y~_i{3<)h+si*-)Gqu*i+~>^Uki59PQGVCV+HWK4}8%r+|g51Y04?K%TQjyhrkuo zzJ$RxuEEy9ilL!{iz#oa@(>p)$o-zhIh=W3;OBhPG;^n6#Zc?uG-RR?J_P%+&Ru@- z9A_Q9v37Es*3t7PZa`ODytaux6LRUR_47*^KL#;=3|cGsi0hub$jk4rCt_p%;OKVd z@~oo|z<;VWb>WFt$Jf(?mo*Y=co=t!7H|h<{^0)PX@A|C2@fU*IWykEz9TC%IGoY_ zeBx9Os4m|4$e@hwy_=Pmk)dz>`L=9OMn>=EZpgaMpgJ&zG9CxF-A?R|;I1rBd3oel z8F`d-mE=V792ihih91}{8xq-Uof=<%@%j>;xYoba^o{QyLoAGd@!y=Qxz%<*It`u6 z+^Q8ln@s+f0qgiMl*cXq$0Gl!`pqI2oVVW;0vD&hzoGvHhyE*)(?8pxf7XeH{sLrd zpy=Ner~lbB^k3_u!%M%FhW^W3a9;YqLNB(zYR!Baxp3OfhrY|tvPKy`|KJ$zx~`d| z_yuY+=^~Z>~wmo0s0Dz=?;7`!Y^@8?YN1;jMJI zJ^n|w)2A}ft;MA$ha2e=I;%7Nx_c&J=fi+{QxVSYT+7)V&GGM>X)+dBs)!S$Clk!mOt2S@96tG ztc%oe@3dsB4x02lguA7$#D|iq&y7zb!`m5S3>`-vYwVOmJapUz9et9}q4gQdrsEo$ zjy}+FS{gcv($KNdp`-B_W1D|&?6-k!vb_{bL^g)Ty4Q#$C7Wddc1AuwVvP;9_-Sv3 z>>XmPXF5E*6xzM~(|WsjMqH7SH~H__T)orKz5hq4b-;rT-EHVt{3|*ytacRLrzD}< z2hH_K=pNvryCezS7kAJ-pyZeQmp?`I_>lFMRPFv|8oGZ3-Nu$(5SY1;vAu}9+hto6 zd~d|yF#+oa-w_3aiPdz&XWuIrEIX%`JhFE)Xa_x&-^ptY46U;|@>7oNAJU`DUk1^~ ziqMVwnKNi!)$qL{Q@-+JtKRUZ@8xs9v_0-)n=YeY7<;wySTom>zAR=BspcHfi_n)L zt5o{31^a2o1oYlS%jisv-$u_-md3NcJ>^^4SbJGpki7}fO}_9EHXR2}i_@Xlr_TKD z7I3yOr!#m=I^~upa7D+^r`cEPp5L_sFFfnPQ686#8|cfNlsA9c;M2AO<2c{hEw@!0SJcw1=8oFn(kw|15L zSBx)GazC)75AqYUf9 zy86lLgB^2kjk)L8yi}Vw^Y0s=J0IOAJ6-d0Ju}dK2k`T0tajR|hIZ1tI+-2&@edO^ z#XI-DjXK4cJ4I{DnltE=c?+zW#^!&K{^tv=Gkl+QT)2U@UrBu(eIuW+S5H==YcwbG z>d73JzUh-hUP?RUC8tE|S&olk6Ln0bZ&tbLF5JG}pBR(r)6p9< z+oUTrCaa$w7?#oDJ7~50^T%4hO5#UJ=R3%U|BYHNKkCfb!~LuiiPaZVJ9hH*(BI8` zE8d?YHv@zG++X}Lwmp4Q`bYfzZ+ty}fJXIS$Nyqc*0yUohuw!WI>?2Q7ts{(6SL2^ zwPCw&>w5ZPDt`VT2|qR0&>7x6v{~b(OV>7L5wnl-#NQD1eq%Xh^Zq&Qgq+-O6`f>s z#6ZbOZLZNR_2g-o=HI#jTVJ|Sv>e12q2~m(Z|x;XeGjL&=^>AM?zI(qRPH8cE=ak5 zc`LT;1^6*85I^55pGg^U28Ac%gaan+imaOEz4+#n<*~@~yxOTkryorF&-GiU`%8eRAf2cL9J6nkt3IE%qq6bNSK;aeKl zZ_)C@!CM4Q;VvRZn!!6PjyJl}#)-Y}#d(^+IiTbKKD1c;!RW64)519JO}xj!tY|A6`Rd(T$!(}s2{P||LkindM+?GC|%%*Q>^=+3Mfy0 zod#&veQn}}^xTVE&{5FP6{deAyAwV3q=tN_T&5!)Tq(I~LvvTq?WZLl>OaE|?=Y+B%s%vDFPn9=C3u0bGY1_By_c z9KMYYCHh>MeO|}5HQvF$h^=Aa%hj0KV&8W^9QjNqZ@-0(bn^Bj>Ed%&SGNkr&6mUCy{E+gd*E{PQ=AZbDY_eZ+@m zjCOq8ng_+tizWASXJRMF#~nW}=8xOD)yN<7NX{6p)81hthm7-%o?K+?&?#-L*l)@7 zWN+%H@mhNF0&E+_E)w6n$``-L3#3i$@r7NoA>j(A+zTL(+W?M>8dAe7|E>ixMgn)a1DVeN$t-^TyVcB&y9>BJr(RJ zq@{v8jx;0dE0FbDY*{}QSs#V0k3!Z@b;){W_muiMk8+a9db4yyQW@+YIjj>*Le`%K zM)W3=_3oWu60-g{Fsgr77~&69xM@qs`UAkElD%CvjFENt?v~lx1(%|a{L>BR=_9j& zOEn(+*#+mdJF0-|koDWU+5ube<95h8K0o7gkgTJJy>@`stJB#5&p<~yJK)!(i_cwU zFema$($sEU({dxrNQ>*#%y89mTh7KKXJ;d4XCr6hU2--)wVd5SImzTK4<1F6wtxS~ zoK7$aIXes((c4vKawFB9U=niH9T?TWD@;!0s!lKoIcxh<>UO`-hDl}z>;x{AE-81x zdF_CI09Vi4u9CCV1*^Nt%bCcF{9w|T(t8cq(knIAqLWm&uI-l-83w*|a*;=RD%b&} ziO*fj&5iUWZ3pw&suh{x=`Z-3cWesHopU*IaS3v93373{FE)K~_qjWc!H0&O7)&t_ zX`h;0E*^y!(WLFwKk`*4n1o#14UFjR+Qzw&k2}F6W}mK#|@+K!d%r!340&-=jNJZDB(Z1xOf;dNwTSSWV$HOR*`zO*uN3uPqJ71{71 znzXI@N3QP#laPs?z=+na?VB5^=me9HiT!V;mWhix!6anjb6`@*#Mw4XGMV@gxKuK6 ziVMyw6I+4nkcnVdUq`9@0~0C^i(p@o3vCi(Sx)dwa5hfy??eJ znYaa+xCNQW>@jx-_Z{9m8=07$UMBWjm0Tw7gAb`>BH9TiArlLMNhK41?*x;OiJO2? z-Mh*W_Z4-5NytPMFsWo>qYaZxCN2jql}tS6g7eD6dBAnZ#IbRiaNE|a@r7$oR#8^; z?Mn7oSpzBu`+V2_(h62~vZedT7EWVJKL8CCiud8NrB4FJv8CU_&z6e*+BEbZ0sZN0 z=~=+0v!$;iU2W7=FXcpjM4H;XYg%sPD$?RMPA_~Nfw-?@F=N@C$mN}kWsBW5PLGtf z^m&w%OmBViMrs)y(+MUaqkjV?m5d(W2__+o;8OL816RiRm#j}b1YCz~U)oi+5905yU=QJU$@Uc1f6~eJ-=V=P z+qVJZ$aeoUvi+uuesACW5%i~%?RCJWlkGL6r;_d8kd{iepCm0lPeis)wPkxbvi&f! z{V=k<+$GzKQ_J>4l#@)hkD*@CqMd*Czyn6=K!PncZJD` z{J0ZLLbijzq>}AQ8zz}-?|(hDY+vMt^T_sRz@?Jyvs`e>faS6C-Ub`FbUb44ooUpc*%xIrsu8zE|tu#cENe|@%e&d9+=es=Z5q6uf_m} z>}_GrxuxK-uCn(e>)Z(+MP|ZBabZ^ue;=Ie9x5Q_YWv1nU350T536)*a;>fXFGsNC1+zh z!6fADAHbxNvy(c(B;@SRz@(D1A{!=|oNWXymAnjc!Fk8A=YZ>wm(5+}<#6OBoeTsh zd+*fL{?Ko(NG$`qNlPUIpOY3J=a7LHY#I0f8F&{Nco!M?z$F8VQ_H~LDJPi>+(f;j zNp(Q~$XlIY5;9N)Oez`J*a;>f16Kf(N(NSUf=S501;C_g%O`CZGtPPXeh9dZwruO# zmW}K&iC$!{Q~Cn&zP}RxWKN>*JANo1c2T-^zXLkb_5E8(SG~LT@0`eN(!|HEX}OV~ zkhVi-Iyr+p{ewU=d%EY&*-5*9Lc4!LyYH0mq37Hk#M(^fhq{t-lC}H3&8ge{`<-AC z?YZKt|!JFj=v%^m~yPxN;%2or5YYZQ|O78JHaI6 zLuwiLKIJ5nft~-8S_aBH!6anhpTMM&fl-}c5;Cv_m{c-Q+zBQj1Dk+J)s{!tFv-S> zHNb7qxqGWLT*f}3R_({r9&y%Aoqf7>tnJF*q42-pD$~D=Lq@2WB45y06xYe}!*%HMXnbsqAJiotf{LeG`FjUt}v)J-1yJZ?|Oi zoCjXvxL$Op@Nc~BhWE??s~x%@InnHoUY3OJ+0gB!_hYT6Gd?G?-=BBm^NisWZFbjkj0_vRD((E2)BZ^-smZNY&5oqwKn*{fyY&q@{vekOuA+ z(&Dxp^Tu1^w%pAxl*ML0kB)wxI5ID|Y`M&ybE8T1VE;%J^X8;5xsfY6 z!6f?Ho>$pVofIZJazQ7U?2i3vQD9X6WIDR66HKCi{yhzz6Fb2q@Vo^~D%lxk!z7dS z4Ztbx!}B~-jSKx<@XF)%TdWfN$srS?*QsNay}rH>=Y8348FbT2z6Sbg!HBW3{qVmP zy`D_gzq!=aH_7A1w^a3H?vM=bb2l7$+;DdaZhmsO58ZI&al_34jyM+K9Ye~Ac`=sQ z7iHI{ir4X<(_X($aWaa(y!D+RzY<^WlEZx&Z(Lr$K4A7^xy!wpa@jY%b>0x`cNLF( zJGm^7pe@8c>c(&5u}{|8v^9L&Zu0zx*e7p1$9=XwE1PrRCbozEn;0MT-?jE$=y=Qz z|JGlvbj1l_FPBALAG9d_Tl=Yg|19|q*zfy!J_`<02JNlA^<{b1WPR5+0x)E2Z>~uP z_UGU{jB=fLBLUL1AKSsBG2j962u?71znAx3Hr;w(%zJO=9sQ*9IojLZ3;RK3IkaeO z39`@4#BJznP3}f|9qHQd_Mx5c6Z@%he@MMP;Qf93oAOL>rT>8RalD_+PjsuD%K15T zP9|Mr!A|Hq)&718Pv^gITtS-hyu$aF>^z(7Cw4!Bze`{46T(82g+4k8sjyk7C#NSC2Yi+VvE{aF#;;ckfvW zorgPCw!}(b_=5`aV~?40a>RWo;k)9KyZNF1BH3~HA^dgFtvsStGI2ZaD(_X52M=oW zPW^5(&p`NRdNTezfIc)ZhNtl}cfCamW$Z%dDJ_1^XTUD{)MN*T`|OX;l|Rpp`Pc39 z_WsU)JrB-%u_=~i#oDI&iMeFoqZr`c(+q3%s9ydhiq$Dw$AP(txMF)u+^U?&O!|2% zY0@=Lx{oogahhT>=0x_ewz`b`ZH1xc_lbSlIy8RA?#Zuk9zFQ}peT2S6fYQX_`vgv zmuN3_p0EF|8hER7UXnGH8RPzzAba`Sh?%AIdiMHeWQ2$rkyBm3xIi4Iun+yW7hEc% zjr_tH`nKmNwT0jsh>?{S=)Y?ZXLFN{lS8H?##iNak4t}eS@BHz8y??SNNihw?ylB- z?UPlu;^t7#65U@J%Tm0!a$;5~rtT|^PJF2NeK6gKW7VCs9`Lv)vDLU2CZIT|wBZnI ztL}aNBW6G+pYuF39k#pWaiN-eSj54XtEnYMo*Nn!1VV5Yv$ebuVj5ahyMP6=t1A**nM67(A(cHcGI(> zS9<<{FBv@@`sb+h{P{8T6hT)y{c~I=ditcN2YhMiDNaw%c<34T9rW~e(?h(`wDJSK zwDgQjPtQ>3srn9jc5qj0$Cy!=k)9s#rKRV%^z`_lr|vuGdBsf+X8_Xj2YhMiIVn9o z|6-oi_#N~#xar}{SXz3(mzJK=^z^&{J)6ISo?AQ7^BvSv4z?YVuvh?)a06mJWn6AH{oXVcTG7Lr zeCphr*51XFYqvb_3tcQ3zt`t@zsLF*gb^;%8Z z)Ie5s^}%+udj1Iw`|uPlsO!j`II-D@`Arxw7htFb=!2xYvdko zjayR#8PyYrzGpSIIr7%>P$wekU8a65q1^KWW?hBk_0Z z{=mIc&S9=_Hgg6$?rnKI?ya}Zi(GX^*48+3)(hEi+wL7Q3m;}QV6*=oo4r0^vpY6< z6Z4F=-+Z%7K9(GQ@~P;)oWuCZ$D;Y}A^a4duQxy8(fNCg`I7S>KevxS^BZSgsyU*W z@6cA{S*p3omz+OQ{oi{j5o6bVe{etUlW=%zA>WMcCu%M#KdSB)U2{=_zYj9!^YS;t z=I=!K>%Jd&J#}>EGwJRJK5ovZgV++Hd*B@7G;Qbu30Xb5GUL zd%v&RAZx?_-+jcL1^Y}f)PqK$u{(#SE=ULo2t2pHDyMFg=N!%gr zrPsNSSp0G1)VYuNAU={t^q1>P2|85T7)^LYq#WrHD@eSCLryfuY zm#gqI=j@UX>ORV;DC`;j8*}(*E%z&Iw@L-qsQY-I**JPnKj^Dnc)H3|Il6~J<&-{3 zIYVyi68CpEaw7l5Zt@7G!+#8}S>S5vhY#Q-tJJ~&6TTH*Ok8H}M67z1*jL;)^6!oE z{q!?;MZaPCG3zxw@IerVshsESj1PO(#g@%@HB?%qm^+oD!qXMg=GUXbiebwAd&}jI z5PoaK*)j1<@hHsx4ZdAHwkJNMe!6?QWFF&ks{7DZPjdNg;F;TZb3St3f&Vodf8UeS z;$OwstaiA1Y_J3W6>0D0>&wt8yrR!puiI?L=J}orPI=t2^}OJyTQayq+;HS^!!-hD zmDWreO#i{p88Q67|6~(yaI5OW9kDB@(@OX+ovA+dGJWb}`a!{4sr$iK7pCq9OTZ~T z#J+(0gTLMHfR%FpU`(@@9WO4$@q!nLrun)*W5IE{H#|)qv1u%$>D-y@ekU(5I*UF zaoVlF_!pRfhLYgVQJ@*}cw97k#@-_DDT6-uqa5 z4M*>4w?f)?w9&Eg^gCVYlG%l>cl80;N3xZi@@^qr{ZQ*zrcC~qxYCE&|A)Gs4*U?l zX)Qu<`Sw#Z{)jST&PB5Uvb|G`qmBlg0ZX~9faQ;{m*>~_*h%Pq4G7Rsyz9zf5cC6 zUxQyFmAvYH$JOWZ=e{(W#gtXSN6(1~r+ohoKHYh5)zq9G z8p(ZKvLh@jCj3^-g40FYHI!4MSnn0x!df@@qg@ZaZLwwzHT#7Wzo3P&KyB1IggfE! zCkYRG5YSQmB8mg%;2R8msr1`>-%sco<#Fq`p8}VPAFsLKy!^NtI5++GCZT_khyG@V zeq&R{>DL&l_W3uqM=JWCbkX6ZKa__4M_q7U`j3y(f4{^3s}l6Da`=ClhyFzl{kDB6 z{+HYI|1k~yH@oQY(tl_g`lq|#y!87;KQdS#TV?ebaa#pBacq?t*xDhTZ!9_^yZ{=9 zdg^kCT^GsG)ucOeba$G1oaLg&TaSMMmr9OKcENe;u?4urFNI1~m(ARB7kuRuQz966hurhdI$bb9OeM4I}wPfYYLZ~Yzt zPIW6&JcP+z+sX3OhX6MJ>GiEN>h(Nx!}C@xCS`Q1AmIX zmW?CbDji?-V*I;w*lYMBw6?mBu}EvH=FZr1;@hyNNO=d?V~%(1lD|Uf@>l5Tj9F^C z(;3T!_XXtL*~j2sw^#labmQ{n>`g#69^t9{zahWUzHyCJiSa7X^z{(#_uWK)A^xSt zr1%=RFR~WjgKQ_2bv0Z{w3^n*wCFgo$OsT{o;D$sQ1`|JJz8sptrp2Ze4ak>A;py)+hv~K>3$wy-1GFs(9nWh++^nI*~U+B zhxyhof{$+L?ulnZllZ~?b(<3W5KNvG&p+4BzYn?Ss81lUm3idBgYz=*LuRs9A&Wa( z{iZ&R+nKB9_YB`mpRJegA((CMs$MDo4)G@INpD?gg@3QT40nxgif%{lS90GNev4NA zJ9GN4p|6Ga%VEE&O zm!`r0%QW~;27jeJXKzHGPRGYVU-}|=&(UG*w=c$TJUYCK`pu^8_Y(6{cH|g*9+UBT z)X{%4@r_)}|24JWYh%yiN#aEVe9~Auhc;=fy|S$ZIPUPl4$MY3=0q+4r@lwgGl~zP zINTYxCOF2I?P|z=M{%tfuHR?ARezcqlwDefG>D;Z}GyN<5Q1k}f$MZ}R(_ z8lj_Qr4{}JnNTb|wcmZvq-QWxG5Ck@%YTj7^4Ihaz1o$uzMt;5P}9rlUz zJh&uiEEe{>sJ#hl^JDxG)T<&iSbm#-k zmrQ@AKF3iPjUjq>o|+fwUGpUA4E=ZZ6{?+{rhNIh^mE_Q-6%lhvehiJuyIEw8HWmSm<2&MthN0c`?2>h#+vapkQiS@`_m>* zcI4m4pBWp;Uky%;i97h#UMuFYrIb{lkstC-jO}rphE!(C`%PAUh}7`1Obj-fIgT z2Yke1dp^t_H^=sL`#Bx^Q+#+38=;k_Xg?I%Q~4<7x^d&jaO=dw!2J+@cXuBjorKrt zxp@63yxyDQU&T!&{FR?Rp%QrXGj6;Jx*D3i#a< z&!Uf{(ecDgo)R>-ZeFA^O7sb7g4!8f@GIz)nSB5mMn0wjP$F;Vw6T5H6c3<0T^sPNl zGLEdYZ5Hy$Rxfr&aDq0OYr$LmRnov`KI%KdY+4qBGtXF zFP-P^mvKM7WA9!e{)0<2xNV?w!P!DTb=E1);$7=cM&}genL7jJ50XDeu=UW>03Ab+ z38QcL_C7Fm^jYbex-k#EU3Aq8Up1cl=2yX;aa~ijb@|&>$Nu)K;Jt5rRTusAE5Aqo zh;L=^=q;^>@L&G4JmgF=kW7Enx$5balLFNfnwHR(sqE)DE_knf-xqkzeVO-e(Y*Jj zxbE4ad9R~ym^*GUZRuKbxe*0`g?K5U%t zCE@+c@X6u*TzDU}UVghSCu;P%qk|lt&h6l7cI0)@m4c@yxalH~TQ9x|UE=AeG&~*R zg7@G%Pcj_>%qYnKdkEW@E-$jF0E`Dy; zp?jJ-d^N$}eRCBRGeZ)Ge`=Ert)&T+QB(Nq3h>7Egur|MW_f0GZ|=&B*yFaI!W z>h`<$slGp+dADnRweRV>pH|xnOU1)x+zqh#7-#4)S-e9l4pY&pi_4oQvlb<^p|6kVNnR^-gXdia_ z-YMO&k(eWHk`3oCk-abe^`lOj$KeBB6)Zh7)?RCsX2{3u>lxM>@s4uKtQnukx82-( zZftM9Ne|~QVeW`6;LPc|QI_V&gOE{E-Ye&@hr$=D>fwvYe_jJGfdOrTW6}?uE?JryN2H=c;pwt&O_Dn1HdgDLeOF8(>mm9qTO;-Ncjo<2o9}9K*~NV{2GJfznD05PXIPOKa2q%aAiu|3 z)Jc3(+l-+Ns?h7fvDS%35B;#%%;8?K>nPrDL_ZbWUTpZUaaec)tfwD<-xcgV6dzXb zeKl(`sm7Mp@u_vlEz(`ITe30j9T%Lp&8`E^(ELc8=106VukA|npFK3+m4@ckF5F(- zeSR96pK!r>X&&Ry+^fX!S@w%$se{iWO1kiQg@@+L)6jgE3%8f%{4_Mrb-{UQKFp!H zsw7;A+@0a2`H`+P-{hfrWEz?;cj5NZ{Ppis%f@*wI4{i~17~F8{gSZmk?QNE`PkuI z_&m--vz3PCkuKa`nqN&rbDj&%OY>TX=3fmrvhk60s9QE(?n?9F9-7}7n7R*IF5F(4 zA5BB^SLY`Bu9xN|ahmV9&O9Sr$zB5a=Q`0G9MOf(|7N^)>y0PU(EN@Ix0mMY($M^h z3(iaPRSuuOKO*dd=EYu`S9hg(qlf0XX=r}Jh1*N>m^3s$;)3(ie4ImbaAdfFK4`{Q zw`_z)cH#3<56$PLp?R(gx0mL_($HM(g7ebc&7rw|q`9BhoOg87ytymQ*LrBqOGEQ{ zF5F(4KgP}wJ;}zDGhA?9n%@J?=#7uyGkPQ7m5tMn?!xC&Jv4tcAax(ibK&;VyfzKZ zeO+)~nj;R)j~pFdfNZ=g8^O)zH@ni@+e7m!9-2dkSd%x~dzHQ#7w`Y9unqVMr?O) z-K)Xhf&1mIxZiPbFO1{vmjw3*X>dQ62KRYx+*bE4^c!1gL`Bg_bPZ!jEAncA98SC9moCGB)A_-gZrj5xch)xHe(TcrgbloY|sVL5!kG< z#bs~)^_SMtJ=mDCUG=>X-@NSC`QX$XOa9}>uv4+Cw^*yYhg&J5$d=o$%VXbtd|z6|n^x0ZzAxj&Dus=EIF@pJD@;3NzJnHZEL;E)8hRT;#h+$4xWw3djq+ExO*-!_Q0MX{|T zHv}~p2QHvEmISQk-m0YvE$L(ceHTjykdD6lt_jq4gJ@fnA(z2?pRaw+NltDCY~P>X z|yP-)?RDvwbtH;yh8ZZvAZ+P+Cn)p%8B_1yvi5$ee~`|;&`2X6nFG- ziNB9PUiUsi^zp4rd+pdSlf3!Z6x?$qNvY3eB+@7!m`ujgL<>AvGRvPJ9ICf4WW?t5>I zuX3_SK9@~SSj(hp!E? z_9lJ;%`_Jdg+i=>gYhH8DSk{@t;4+-$_vm|YqL!}*IG^M<(15dI@V@ddwzvJg^Ob3 zxN^+&-FoGiHNN6J5Agpj)^+OVIoi-%<6F-iYv5}6Ew#3ztuXMK`SnXXS~Vb2{yElt z{`|9p%oEA;o^<5xmv!2F$ufU1_0<0|`WNmZ_8LnJId!>=>@%zadw3o{gaU_H8M<_KzEI%f7J#Z#i+-pxE)R4Q8LuDeU(dLVRE- zJUWaRAKwWk4kw;$pC2$e1U2%jDu)0+Qgih(a{U9loE!q@8_<_LtX%&)`^+Iw9l!tl z4#A4t@_a|Pb59(5gH3E;)3y;8rUmeM5F2Q}D=>NAIQ&q+)H*-4Z9Duu0bkUiu_-aN zY5Y;V6CF+kj*X$~+v=;Y-~3zlI!#Tn&a1*E5Ki8O7SgQ^+Z3nEjNbyUG^{5^!2R>^ zg5-J~_lh5kWDfFO(5U427ezy^lbKWX#K3!+3$IM~%>~8Jefcso;g|YQ&-I@3*Q1Qz zcYHDR>KIEh-o|y{&Do!E7WdM%W!c6*v%>oGna0NZvgQJ@PStN_EQ$}LFvmpOI-V7y zJ9K?iezIPC+jslmQyD*eS-^)K+|ge#{ne3EU}%DDR8B!F{y>9Q`Z>ex?>74D4UZMR z{#3@_U*c8QrK+N%LixG zYEGpMiZt4T(rPpL|5`9}ev@CHRiN)del6tnjCF!w_^L&2V#b= zZysTMEVb}UL+FdZdsMr%kktBIA8UF2U-mLW3OPV+1sApgtc$)bR_O%{-j0c}?xACYCyBGMr z)ki-=y?(w>V0?fV`}%3Ur00GH^wQ4_ee`n#J7@7>Vtw#lCUW|A@_{tZzB`I<{ubUe zdO6?WvdPV`?@1eF5BlB6Kf+Vuw~dU~qgy}tQTdn53uIbm+)m|8Txe5~j!Ynb#GZwH z&)nBD$qI{eWmMLl;FQ<%JoYb-XU^*kxW(9nYUdf-nNR6w6c<*~*3>}y!hGABZ84u@ zpR}>2mR)oSe5`g^mu^tZqF8IR)&1B9)%o4UbC4~P2Wr=gUt~%L`DFvP>UMVxKGcsh z%J^kp+}MW1T7Y32vdP#*ZT+HEgZbVv`b~4k>+751vtIgWo95@wu6;!5L-=!Y#vJ=+ zAoGv8m8tP7uCST$OWvdv78e%Y6J90!1Q>(lRTa3Cp1qASn!Ag*vPVBt@<@BXwdXsB zc4V*jB;Oa&zjV3mY4vdgx#Gz)*&Xf3`6guXYmD`F!3jOrfnWI>vQM-d+dy`;XV3i) z{fp*@_@(ik>#4}sYS)(d3o=^oI14JlK8B4)k%59KZ?0mnil?N-FD4g+b=Iu~8BaWQ zea7QYy?Ik*TN-=6M_E?+Q}9#qe61g|;uk1qBw$V21kSG^&r12k-uSZft>|Z1S4QaT zKSI{9fO~$?UTn`V<8!a)x$OJEKqsDMCw(jXA?T%ce>V&n3U12itCc!|v`C|8`&`R2 z$uhw*p@5N+~Lx`XChF zBN?7b+JN^~=sQK~UpW>7#DBmh7@h;?{{Aa`{C%CD_mX7Xhk~0nG*{l)!2eL^82oLN z`P-n3e~z@6v45#!?EZQe`Rg%0f4$w*)7Vdg?-u{vkxR-~lT6wHzu3qpBa>Wtq%~zS z-VST+(+A#0_JFsaGLJpHeZCL84d?=U*D*im!&|fuyd5p|&-<=ztm*@A@B8Z|;q5*b zZ@5jdQ4s9Jr`Rdb-Hw>^g>U)NcO&>5eXP$Jd z%L`xXV@z-OVN2qL8~Pa25B>F$#`HPr-S%-ff$g)om34Djf8ZmxQM@kMCb$fIx<~Ge z7ku!tH{bj`_iUGby5f8y{iyv0o##NivhB5>LV8KKG0$a3@$;SwpL%X|Aac)p-n`9< zW}`>wQb}b_jP-%UDI`Cj*f@dX1nE&BfnJdbMF0T-Rl)x$GZP# zxYs+m%71m6d#|w-gEMa&vUAU&kFUG$zv?SD$yZLa8cR8EY&W{)KE+l3vW~HUgAtVT zw|@rj<p88**xPMjV5pjJ}1D7<{XXER}wkeBa~-{6C0As_mmH*vpDk5bJjp> zLJRUtx+OVJ>Rj5aOu_yn4`_S3H32`#3i(MU&=E9K%1)sBoBiw#Fk$F4f= zzXUG$ul+>3q75LQT|gP&~$NqXzdg$5V`nc^qb1G%IC&e zG(E|?xg|awLmA=0%fUSQJ?ZqG>s{@ym$d)-ed_5v360<5{V?=;n{hPz_M-fr`(&Jp zhK6r|`$xd-%@vLPa(J-gzS`P#uJ1m%Kh3qD(Y{yS-|uDvM@C%oT>RA6d7U||OD@#f zB$Tsb1Z(lBmsyL(jkacg-qBXbmGhMr zZULr!tS|CHZIitBg71CyTL;Kp_sYpOe}{6Ber=Py=l=6n2XdxTGwrHR^JC}@HNo3WToWD{L$f+dpMJ- zb)gk2=iD0hLnr>g`vQ+YORYucaE@17Xk`4i``ahz`q9v%YWPpKHDIwzeO#$4K%H0iLjdaU*BRHiU9F?^BNT zSk7@BYwa4dB)oF(e8HFzU#6I5FY${@i#z3w%J}>K3w`_LRMWBc*#*a(bb9F>WbGI@am7(Ho=G6UH?UkTQ8qy$uazoMrnUg345sm(Qm$- z$noEMa$51w(}kZ>&X0ES)QtT1c+21mJ3;3=9Q{fV`_{K_h&p8{)`5e_(!<2%$~M$I zGzuC5yI_dDk5$tuzM#&5D z53(+C4mzWidAe_abbxiB^_7~ZGQnBhor^p4!WPcVlgzjRd_}CbiQYTT#L77cj#@)b z+iD|De>3Q#m_EwrgL*y2AFt_y&;I_B^trR=rEN|r^j6%hxMS~&nODH`1b%DHr_Z~5 z(o?)Pn{jW)msH60onYGjl%X?@N`GqKT5?S9o8VV`b41_2VeU${ox+$af^CyDe}2H+ zx|X@K0KBVBbmsmhaPtuN%7r+LZmUDzRWWwI{BEYqAY_H~ToYwgUhmU@=~uylJFt@z zapovz2_C3LR(@a&pR}oj{W!F_pK}Q3@Vp+no=$x|d+CvI+anLpY5N}i?BurrJpYE@ zui?*^!M)1oLHh^utz9o7t2keAm-yjI$}UW^4m`s3H>RHITZ!-S+d$nbtLC&l%J1@G zYu7{kcGA`c%Ke?+Kix7fbNwgJ*SX_t3*li*!v%1Negd8E^BDuz~)M=P}V0e-JvI;ZV++L6wF zA6WHY^XtjIkA76(47^zBs}<%j}uq*^A5*E_ zPp%k!2Yla5oo{lriYrF9j?%tZ_e{y^uJC=8GF{eX)LWqXwEs09%*p5T&0+2IKKK|D zw8rayJ@k^^vZ0IeQ0BPj9nKkOE!u*d(wUB{%zlfE_@AJS+W!OXE62pv`Be2O=4>0; za2HUPxL;gxr*g_@K5M++V=Yk0UZagcD^ZhfC7SVp`p*;W#CvAEiF)ee5_b&ZPk0P` zyZl)#JlpX~_%qK6pRnP{25bdeV_>aUz_@H{`&+F;ojpo6`y}oBiqUb#X$`q|bYRHM zqpiY<(TaCifqA1X@NN~%9i7H~LBJj$UvlyuGVQmt*}tlGZu*4n$oFCS`Z9a?o(wtr z&2I@sWy=%?mOoX&IIzP^o*RC2z>Ew#=C0Gb)o*d@zu9;F{nXc<$X4Rd!i{&H9DSZw zflS-(+7G)f@!1_ovFe*%6dkN+4S79g+|>Id_>;W#!!2L8#;3NH)0Sf5bKwJcuA8s> zCE%&Y1{D4OuKgdBRk>ui*Y^SU6c_IMji0dRed?=x^@S(D9eXzQku%IYonPYEPvTGc zNyOvgX~B2za&k-<*WFyTj&Po{?}vW9`#RaUDu)g5Ao4~sMDr^QE;aY+G!HpXz|5nT zl&E}J0p_9Rhx%mfW?p*ts_*RI4#tjPzjo~5uC}5RtO)07+VR%9n)2cw6jv8g@Jyv%()3CLeZ&#oQ1{b)i`_{>dMD6;6vG^_3&U% z^ga(d2uCf{yH#?3KK@?rzs7&jr6<~--Usb|`d#`%&i7O=+gC4H7kp3kfU~E1w!a=_ z{Jc_6J>hFVGF-CwostU|eb>d|kMK1%eCzS@vhlCny1j!2+0bA>MgcT1^P<$jvHZcm zD7nzV@0BT0BP-5JiOwm$a8Z6Qxc!irV_&#^`{GXAj`HDlcptd^6?NoWlfF!z7dQ5S z+t+;cl5zWmK5+Yef4wB!Uhd*{we%x6z7ZUiJ+OQw`24UdPdoTb+geqg`Mb1HZ~py} zVKtXn8H#1sl#~rf3k)4*U!0m@Up%7=&eh(7A6l~tbZ!p04Qa%a3*XF-&N;wYr@i3( zv6JBZ9v{wsMy%1}=N~KX*b6^@-G_r@oTv4H^Lf5{$v8h2@137#`|Bm)`~&I<*OS1x zU~fgvEymB*TaIC|uPv4F&yBZfOSa1q)}hWmdSt0T{W&#OudZw8OZu| z=t55xdvZ2_U6Y@e8uiO!$zJ_>JMTJ-tz;*icb%Bx%%{1?`&HPj71%&c_>On5o|(&k z=@I#DX2Og59|a!&xz~Xwj;)dXcKF%=d4@rg3u~hjWM@j>VDFe5rV#B1tPR7)VBa64 zZDWHG`#%8xNT<|7L+{!9JevzFCI*hKk<3euIqv{&?6pSL%#A-lSIbsAd~GrMaGS}) zT>pX-=T94iPmTC_+90d(8|VnF-GuAU@LzO%vWIfYM^>5hxoXU>1JBPn1Hq5qkMOT3 z?>E3$J((=OM=P{aT?-p&or~K5&ov%D?|lScpSWvl!{j)A5BI%nuCp<$+>;oI1_((`%Hu+nWuJRz9pDrW_l z^ZAz3VjoX<{BT(kKm44wunRZn+fM_Nc;aqwbypXBb>$D)>t6rDSu#(~cKdHZ#)~H_ z&n#XrHDE8)z38zFnkCa)--6UPA+z`{KtUj*Ryh`$lftJT@Bb5XaPS*wx{0;=?^)yB z&UXNQOFygmZa@{+4tlcQD{#LN`6(Bse4eR{zL!?wj#2Z?;|I}RdiFN(ej96&x$N`z z+Vk7BqulnkFea7p!?+O`EASWKAK0k##q|vZKab3@0{bm|R>|w8kMMEn{2uYOzr8v$ z=B)Ti#=L}FJ>mRz*0q}$Z@q84@;R5edMZTKy-HYdMlek*oye*w6M*P`Sv?Rxxp`^H0z>9HjI zH~IK&l?$u*P52kTebt3gxbfih)e7zpv(A)nRcGfK{}^jS^!8NRcS`HSh}iJQLJX5>4zaKP#+<88*Ahn^@02jYFw0Q`%=sW;aJub=l@8XOtEn?8Z(K!mne(f6z1elB?M=BA(b$NP9+WyJf! z(aSE5!n9TD!%eE4@g{yg#D3(&68^O1Go+l=@S zj~96E$wJ9_@qu3sUh;gx%u&A{^!U^-7o`LJIC{e1i1i=i@?_$KPaqTDyU39dewp~j zckl%>)=|)B6+HMPIMcZ2xVSsOd^q@6GJpLvb_jjy*$*oJO=P_MX~JV2vNTL?o#t>p z^IQJW8h9&$pGIX0Q^PCqi-`9+{ET_7UXxB!?%r!ItaHJe>ZncGInj^X*VG#w>3mmW zDCW5FgKl99HzNKN$ zrL%7&V9phhe?~DP`F}K)AIpYd@28z8O|)<8JX@ra{uGyA0PZB`4|5)T#a7}=JW~#4 z+MVpFB6jbcvG)P|VAeOA1~_McR82K!faG!h$97~uAhl+s&M&C=Un?Qm@t>5JzfQK| z{n%%>?-7l(Zzs3tXWU!lqkhR(W+-#786S;&pGEfZHAh(k%otl-sJQkZa@O(f@B9`& z`SyqZ;ZkhQ-1w<(UMhVggeQyK-pgpSEEH}$M!#N8esOf1p&pfqy*key^BA0XmxuoOa^)T} z|I%rbkRy9sSn{>Mc;|rVz0c7u&z>>4Orvzh_|E(aD;h?ARqPRt1b24P>D*Ud^H_P= zHJk8jG&~(VF?V-aN^roopgq&!l~M7(LYJeA&+zbp;>6}9Q)8{}w+ntr{Q_YBE3`(Y zG@3GnrHR~uR>E$!Vqc+O`JVpP%9-lGv%XaRKnG{uw+p@^zN5?;z$%{mJ>RT??-tnD z3-6G#yzm3X5;8c8#ajIl@0s_;hggSvYVELDSZ}#_ZUJwmoNKp8j;a0@aB}df%bBk; zn73uj-^-ZC)6tWclH2Ee)0Nj!*ZSK9RClB(lC-(84xR-ga z^|b2AUu)`v>lw?mo*or{hjPjT^PcB`XZ08Gp3NtBvcL1KfGO0G47%uUWDhvI89%4w z`e$iFIB?`&lHA+IzBKs~_Z39jGXj%ynAZy)dZaw|(2KXWu9tt`itj768kZw0vf$T4 z>|NSN?73k*xvWjdJIYAj-LizeYvh8G=hSWQ+C+3>3+*)EClEY8!4tY@rX8 z@$pT-qSV zRu>)Q*M@)D|HVE!=19wY$G#Fiijd)X?foZdUdopED(xJCZzVfK(_e$vL*Ti=g=;VT zSpRmo@b~wIS1G6P5%{KIaCWVDPBKdS5z>)evgz`$<)&KJ{$_A#15W|=T`*wnz;AP4 zCeLmIpJu$oH}ZgMd&eBlj6dPhVJ_vw2ftj8%%pAEk7?MCW{jTv1STUtf#)XRQ90>C zV^>mMaI6hl`z`uNhGQY^Yuuj$7Bj|fuw=z=?*dC!JO(W0?7o4FiFMg<#=4dq2#cK3 z3HT#7y*0qd5vd2!^|8NB`%7@0>i9U?K)6kRqqy3Ke8jqRk<8{Ss{P6w}cv^fu`8@XK z)wp}}&U5Qku{Td;{tJHbpJnK$<(Xbt;TgK9kL$pn;L|+)n7LSq3~4}yyjGffp>mvr zgG_K*!+g}K+}Z1$u;=U@ss9gNkq8Az|43{Q)9g^#5lJ919* ze-FHg&Qhx^)Z>ZARy_RxM6``9D=mhdY9?qYsZ_M$5^~O=JkY9mYU$Wv-%Imq>(>q<0b*TE??eCZQAYDp-vwy{N(RL8xIus{065}&aWUDjU2BCtVr8XM#zYjV2Z2BAH{x9>AP8-#sk`@YM0 z>(#CeLK)d0SKOoh^Ea>;u)7VCrFaqTG|YGO_LeTPYH_-&AC;fXon*&s`}_sgjt zntG!h8-%v%sqfh!n^`ONmgoJaiJkIBW&C`9E4FQt4YD)Y1}VhO#s=AGJ2uG9-fWOZ zfzP!;R@i4u>(d5#0y>?{26>b+z1bk*8UHxKjKi}@D&V;m7uUj1DzXrpWTMtV((A&z zY=9s(R=KM?gv&i+t?0RBoG%5AI^-Vq`S#;Z{^|oB9?2;*c=YTV>OBFi4kGVse0ELM z@56~F%Z z84o|L#;zFv9W_7wwEPt`se>NJ(B1t>g|!9f&fEa@68dKa6V-1+Q<`Q(7BEz#{4%w^TzM|t%Z{>bJoPp5%bogHiQ-D58&rWIQ^5GL;e zp8g-VPCa#0PI0IFvr7`c0T;dL^qp>o^FqjdtL<}dARnkw;%QJ z=F{!#RvcSX&##W(r)Zn}?Jj!oEbcpXqP6SJ$gwqNyJd>pYqG4DuC%cSI`o<=^DW{{ zL7od|5oje@p>?{}==!fYF^~3@XQ_MJy=v{Qd-3S?yjQuinLCm@)7yQzztoC8eu<+m zKSw#~%UeU}%lYIN>t6DNeuckW@{=?Nlm}7=yb;b@CSPl#=<}!N{@;IJ*@kc5p|6FU zgBKobZEUZWzcd9uODg`Be)wJb+!G3;+W6iSKzmAzj-A7G7d4V_i= zW{Nd*FY93Yp1`OJ?+IkITY+2CmRLiJQmU?xlYjJ4s9(|XP->CgR8V^~<$>!bE*Lc| z$6_sgNAA^jmUX^Gp4xfvi+$XR$`3i>-8)ydhDH`$v~6Oo*3qTd$9!AKte5tMPK}%O z1vwqZu>p>;-u?{r)A?;K&D}iwo+Yc|>}PlnzMjdm&vU;Y`@!K)o!>MfE<1KF`#b&` z$|(A2|KRHNrE@kn^Sp&;`hHCR6xLz*6D99B%b@7`bo|)WH?--0bI`7peyrj;ThBvt zHa|1K8hRu+ymoakyLMA>RPEZ3z3{u}tIf1~3|W8^4w*u1{A!|Y& zusZn`DMgO~YlLSNTZ7TX!vc->(M|>My?_lMpI^Sd+tM&FI+pAFQ%{MW&UM-BQ=*p6 zAQ%)W&wofhGT~0Kwyh?YB9AiG_<_+bb!QKXj^Rv>@6-Nv#$e{9<|aSR8aMdVcV+Tk zWF0>iJCwEjz1ovW+fL5DGyZPnH*}W2wYT!y`qTah=s6O)j)K0YLg&+%f1`<4^o!<1 ztmtv@`7ZJ2HKznvcUqH!4_SpN1Fgou6l@!H_v zg^%4Eh($`Or$kEbo3eITzqUxpvMKP}OFsq{wWG6t9-kMAS`RdNdCO{y zEPZ53)6&38Wor{_-o=)vAor&W4WDr7|GGwB*E$sY9-gZ98>yUGc!< z_VDg7MT)EmW*j}hTgSVb&Mc3O3#9L82wk^%;fc~!fxv+M%cZ}VpQmt6ifp}g+?U}y zB;RE}GGlh-ktvGNO`|Q9s~8)M zE}3d2Dyr|FQc->1lyl*kioL<;*<7D`B%FBq5i4;Ny&2}&e%5GV%J0)vwjBKY#c}w& znY(4=$7xRsdBC%eFpqQCKhn%zlaGO^JveIrdSspI9O0MXSu^_K2vKLF=pGMn4T?i@w~y7aFW{XfT~Ish-9~5Ux)e?4>Q0 z%LAuVp+O!r$b$x2KjiHVMt5+1Vr4k-z)gO(JIZaCU<^~aPX*dtqU^>#qY^wEXsH^u0eOSm)iQ~k7>KP^noeOrT6o@kKZzW zOQ*DsbNXs7t)8OTUOhffufMt+ht>?-aT6{Zk>;95Ey+vaa_}W z>s`D%C310Iigil!wtg-zbZyhhc6nilVuO6UnX%|xGb2BECp><0UU^J=`lL@id{!_w zo~yoYvprt*WDDusBjh&caIn^!pu85<*@7+p%{^E5SpTm-241(m*7+Uv`*p1^9be3Q z(d#dqS7hXe3-3H1ymdpZ2`W36XTPPK*KZzht4<3)JB*wHM(maj7_~n9#tr4MceJ+M z-R{^cj8ErWKE-~@-!m4ylfClz$L%?J()B}5@2cxx9~K=mGE)8n*5&5?>t}R(zm)ec zd+)zc*!}&eNcr=;$7i&{dS+~NKlX@et9eMbvcX}I@~6GF8Zx@QpO+CSU*)~;q5e|d z*Lv?C%Ia2sT_)cp@!o$ur~CV?Ncmmf`!9^>_I@kxZ}Z-VM|FF@hi`=}^xl8^v~KT9 zaw6sPz4v*!-QEX>N6NqGz2BJE?fudbk@Bm(_hnH$uQ_u@Ogb|UKMuJ`JFGw;s{N}q_m{<%e>R*L6A0|E7l4~ID-j%FH7=yxNQseC z@tusP&Tg9|*;}(NIJxp%#?0PL_G`}8x_JsXtE69jzY&}0tqR@;%C>*l5@`N#y|t`d za<*nVIVgjW*}(R7)4H=jj3)+(6T%D30R!TGHh zU_S~T`mPr=B8$k|=_bz@O9I5twg2HcwWD~h_kFUgIRKgxTL2YT8sY9D{c zE*R*1N7;H&zD3Td0M-(6d)l#S4zpJOnf48*Srg@Zln?gyZ-g6f{C2o-%i_^j2UFSG zdps~SgpJvHw>4C@q}F2gJ)u$4EW7r|vGz68op2N9bjl{hfjb@>zmYts@!CUPb|Nse z=pJim;dhpgv}xmV>K9^%4!|~*En0{jD%-RWTU2&wVIX}#!8vvpd-T1;x8J(yrk{M+ z0(@_B=0JS$?hhXv{?`u+@A<{k(pdx0?FGk!h2tvFkte3@E;!ptRL1c)OmXx=9rnM$ zVcDm<;_&QGMVFq*`GqbH<@b}WIam3luZSnD=nim0%+~NE{9aVKH88mn{Mf11(8_N( z=VNr?k0Iwe{PBfz4Sxhr=X)ERPh;Ur@$xzS-v%{s*`MkT*BO!W;Xc}m#_iRq%C<+kOYW^F96!joH1b@K6bu95WrT;iawGnUt?M{WKr z@}n+vs{4K0z^+TMyXvdIxVZ(I)rG#)W?T5GhvJtY7bFk8`Yyh{E@NDAo-@YR&vVv1 z1(EVujIo(=s^i5^DmZWT0_Joha`q?}-D;rU;H>(Cc3BZq`DF!ASZ ztRB&J4QtHD&$BkYQ(_$uPaY=EB!tedqfEnvR(&1kZH#O)-~Sz4+SUM$lzS4PAHACzK>i}f@~WGrEEow-jbWe2(&{N;)(Bpo z%H?UGY%XP+k)5$|cg8Bu48`y{Bs31eu6;Bbn{t68*c*ng~FJw(K zS$al3r89xEfijh&t;7QKfPs%bbk?KR^mXdb)eZlR{A`)Yyau0hk;{>#_#5S~gcdc7 zr+ub{-f-4bJ5_cPWx=^u_9~S<%Pl*pv+Ns`oloBt!5}^!C;xE>d{WoHZBj+BtgV8x z;Pm`8t*xfB)=IZFR=Tn_EiY7vJ-eb3S)6xT$q6Ix1J;R(lJIfsH0wkq@>RJt3&26) zY1sK(Eo3%4wjzJ$`Oz_4OAemT`5d`Lr(nNV(qDa$xm<^i56B@ntB+y0tJ;j=yNdva<6vPgl5pq!sg-2NwRLl@A0~>+F17cVZp*{48=txfH^e=HEf)T7AFbwyDI5(OI)?axhwW*2;IZv#}?Xf2QjZ zV@GAix02&`2mQ+*beO%bt?(B(pPY5K6;p1K=BVb!p|h++9qk=Ht2CzXaqs(-m5`lv zc$DO>6F*X0H`3NI+BiJUO0@5_CLe4km$ur9ZU(24Bk!TR{qp12!`%MPoNRUJ@A$H`78)K8yEs0A{E*x* zG6Fm|55Bam6*_m79oe0-qX^k?zGTOJy~vJipX^9AvO{AK+?}!`=M%_|?0Ak~lf^TOE$HC{{V-M!S(2&e`po zDWkjxPd07TJ-q1ItsA%}FStm$OuuI4bg|9%5+_E=pJYxG*ElbqIr<_0(Ls&y>!KFm zT)Q%`2q)3dYSx{SkzuQC(mBvhc4FnnYwacI;XKU~=Y_-@S}Od~2SAySUDyfG-<#b;mD0 zUraf{+wskF7Z>^Hlq|Qt))-zashPG2K$*54C*>P zAO8FuV@>w&8(Yw}CfZHK#_zs8#TsAnvSaHm#iuQM@H2cbs5xX!YysBvvYPVu0(G|v z&r`9l3b3yhAmc0J@G^GSj6rXXw6_qu#op?$wNkAKt7%K)hGvVTOFdhv1i!~v+E)&o zXKU>~-cHPdHGEa^8YZu?!ZtwkT&Cw9a4Dr7f;mk8%U5(mb9?CN__8TmZcC7g0z8Lgo_|IFggm&cUD znJ2u_)>7t(eWBBqd>mdrh5Q?fe}AXya^p|ISWX@0ZmskIKzSQkM58c0)@h!&I z-H6XEvL_gQf&0jqVDvk>_QSRUzmI{t*cfv4v?gV3w+H@XpW&`1{BJ*o&)xxE`9f9x zhulm5ZsNN5<#1xjD^}vSZrjSgQ`?WYZ8!DMHg=I|TjNpt>yz4F>$d+a*NSh`{>zqG zV@v;4;8#ShZG2q+@hvZ=A8(Bv)icIXxfI>x+CvZN8Drv`t{u-F(6e-vbL6?^vG~Q? zTeRfa?t6_sX3z2oe#iNFyrOIJ{1dNO6@e)8%dEp%;bRNGnC6$_Yn8yKGpBBPz9g1L zzIq|&BDRvdpmlWGyLaxce7Q6>ATVG@;h@^ug@ZX0&HR6`_9l3Q^91*=2i6K`sCCOe z{7l-vwct$bEBQ>JTQl#MQ#LJNB`Qb5SNWWYfsH9SQUQHsOVlzyE1=PN)Nf6S<89zs z^4#hFbYhL;zz#pTam!JQn|HOY; zT*;g1wm-THeM+74(~jUzIDBo0byNy*G$+4IbkhDlt(WhGPGQ@cFb$n!BNJPZiJOA< z)0K~}d~5sL&wXg$v*p9>XYAqZgR-a7PF%lg;)$}_)~QdfY%cec8I~^_-Jb2V<7CnTHlwBrUvSqAt2Qy5J^nZX){*wx5qrG4gkZoE^R6&=TF1Dm& zufGHgDqqBZhU(g@$<-U?#W-^*)P{oZf>xIxThn(3K0Z_37?sHHe3j_k(7gu6b=8c#pZ4mRAyM2--VrbeK)- z*G7M(pIsW0&awwRSgX8#e0}_1UYllpyi)q93Hg?m7mkVVG~Z&uG`-&;AMkeI5v^sv zC@zIfz4~@^n-z|fk7jIj%p=LW4*kYEBm2(u$-d`9u}Wm2beMlnsKp*0YvB0kMprI) z^W(%_KZ+@TsN4CP=vSMua<*oXV9m;OcxXf*YezwQ>8jzWyiZ{-a41lln>uR$K4gXF zxE&b99yse(`$X~XF~|<>m03P)?NgcTb&<`tmGRFxoih)~s}#-f^<-+@oL05^DXrf} za;9ck``x>1QmswlkM7ys47_C_r%kn|c5U{ms7 zSuvYF%8r+=B9F?HTRwPrZQdYzhsxGab}@D~^2^a3&j(^Pya%tl76`9Zb2z^iodRBU zo{Vytbe>G-8I}KK@@UH1@7Y~|4XFJKbMmYM0dk)jXj5`uJ`6qE;(NxPU-K;Adv??0 zw!iRfHN5Z9#^Jvo$2hc;+;N}$f;KJqakA?=`N$4r@0dEUX8%6$pnTQe^9`u&AD6C5 z`yl+5e0*ccAM@~xt<}Mg!_Qm(lm(ve2hYOi2rIjGDz@8NYB&a7oG5xhH%F+2L%k%w;>92*|~<@jjG$HP6H|2gsa^xX~2AOBp&I0#^{m99Da<^-;#T+*ba2K zV2g6qd>_m6Gw*lo>STGNvlx_{p}a%IxRlEzc`%YXb@y9s`aV}R>yqU8{x*HS#u>0N z@LX|!xa~pp?XF?I>-N9M?O*up*U|rv@z(|5@2>nd7k(Sjh2KW($PEPcFLn9t!cf)@ z`&jrb@z^$ei@71@wDr%GcD3g9aL$NG+n)`uNyqGe(&4p{*6`XnA#3tdctWx`+~47| zyWoYXp{)INJah5|#bd+c&oU;D$373tWg(Zxg4u@0(wXOqd8)nKOzT3`7k`bX+>Nv; z`QY)Fr)!UXMY(WY`D-EYd2_Hmq2aWs3PHb~*=ucyVD^EiHGUb2O z5T}vvU36_9oYJ=Tk(9QIrT0&17@XQx#@=H4P2>!AhdsA{v|{N4SBM=F-q zOsQD9+~oOuO#DFYR?G`Um)xj#wY+<9%6Md2#h8@n`MT~&iCWA@^%Wqltk`mySsP@; ze^C)wUBSAMJ~w=xpItmH@%wL2Pc*O>`mny6%U=5Bj8p5fFX+8xHU1Tz9DZb)*$X}V zk5=q5;MLv{?S)ocV{fTv3ueT`1>lnG%ac_0?CX z@4o(S>@&_!rLTimaYDdY$)oAa3-_D7At$b>xVZ7}auq$^hc6`q&s4k-e)}}nR%A#6 zc9!V$96YQ!a3-+Tvj+6%f7(s%`jQxx%Gv{`;Zx7Ounf8SYw0xfJwB6-rNko_^M48Y zX`_+3nemm1QPSTE+EraI$8*J+M2`QyM*0@J#`~$yR{Hb9A=%{b`+L5=Pw%1c+uXhv zCH1|CzP&tLuRq5gckS?P%meywNOR(N-&Y)jwNv5UE6bO2cBF0D$e6VKg2yC<-J!s-0AlgisrO@t2l-Kw*{}un) z6dK*O#l(}cJK{<8JZm6cos;6klXPtpon$j%kGue9{m=-u;}?!m##MhUm<)aJyW^Wn!H)-F#K^9>+s=$!wP)q@@3qBzLQ=% z2>-p$juHuP&%4r^X^Hlt$@vh}ekvd}wWyXh7#(S^v z-hG?1e`clIZ%;fjfI8yqMJhYiihfPkQskOw3Cz{h)!f&weVhCxDcCuw*g5^oo)^jJ z?WvB8&I~_UKKr&8NZ)t&I|0L|kgbx>4a8am(|^m}mF(hw@SaFH=hUxmBJR-=Vt&B~ zSMmPP7sD}?{Uvrx?ldQc(yI47%V&-%c3nuh)?CpESquN}BQ~oTc7|j*KO)1KTpe7JqhpIA>FylOgQarcI7bNqaY+X#nVOi68hEF6K0un!j=KFGN` z@ey&d6US0xC+0h{uz5Xl8ef9slljlM#_$`0Tof+0r=wGmJJM(S$n9A`ZcmJyp5^59 zNUx>cGvn!^6J@JroS0FYew5sv`t+wc5B%Ha?C=ct?C|yXy;V~a|FClE>mL>bT0gWn zOI&AxTLsJ@&I5mT6|$Z)-Rsu#T}JW(OPDWX$$9!KIa3pvTRI23^>5ZIl}Gh5LCMh;>tJNdA=MX!@bc?N9=H_|~G+X!f-v9|E+uT7P==eknM4XY`Bk1e|;LHu4W#I92C1 z;8eScH|m;<%e`tJ*u3`tK>OB^|L76sh!5t6fmwYYlTA+jE$~Vid%kDr42Y_&7w6x% z_2RnfXQ$Lxe|w5G`1ZVdZEboSD#z|h;dG_%j@)Je(b(tNPmnL7pKI49FV z{8*Jlhub|mGmdhXA1mGYC?2_mF&g|m?BLnM?ME&jf0_1L$Ay{O_yCXTOeIG?oClwM znxFPS%5Ray&&YJfD0~%hU*J9yeP`0=8NPesXXb21<&b#tUgh54xpJvGV&%X+g}V6R z&9@3U12)q;k67bRz4e&+&Vh1u)xYRfNgEyVf2F@1X1R$h|LM?w>41c>D9EG5dqNcN@QH*790n^?ZW_AFBSd&eD3p zA0uog&ZHQju~n+9U9X`_o3SCKZ!cy(U`MR5(=KH{7CsFQ`6aJv(;4htAH@<6?NE^iWR=6jpIgthaYoL*MMln9w zWAX`Oqs>;#&<4+G@SI|Me*q6Ci|r|2$BXTi82p_)wznD@c(J_+PMvtE59gl!b7-9S z)vg7oX&tiX^s27$_2hVR;XutnCuUp5|B3n9<6-aL!`TMn zm*3&*6K^-rhlgX`+r&Y--cL)qpPqDImUMr4()|@3_YH$TYx?xs*Ljz9OR>{k8aIsL zK1j~2cYnU#`|eBhKG^xbTE!Eh|s%GlpT{8s$p&B+>Hd3|F`ysYxdW1>BZsl+#Y`>H~GR}5XJ zd6YT3IChZlvt@q?nZ-Gne*O0a&RG5ye4;&*ThVv=eq!FE;kLhn*QtEBRQhi5=R>h? z+@SB3mBkY1JMY_>M(>q6ewG`Tc=4~U=j|_xI(Cs~lm2m4BF7KEy(}C{Ll0W1*ni|G z%GVQEFt;tw%5}fD@ESf0a(R^xeta*VzZAZPwB^^eiN*Z1iz9y}PF{5rn9fxR)cz*;1|m5;5gb0W@0_V2+jqyN~_ zvoAmgRThL}Gnv;j3d6C5#6?)Y9k@IYUU_*SEk12T_~?5%Ye!CHZ~C;f@SOp4o624u zu*w$_uhH|FscT2h3|f;4!H3o*`d*a!)c4rt(uesb)ix{ovqi^p$m45NnM(Yc=-$Z< z+c@_ygYR69wPMnTYI|YJG}G=3+FgL3a0czBQP1XmMWks;d&o*OS4XB4Q+6+O$|wG# z{12}mzit#x{P<{pz>1lAW3k2X3#qQw%{x9}eZg7}%xa^3y%pO_J8DB~<{$OahQI&b z>X%SI-b;N;xFVOL48P>Nk0o-nuD0mY8>fH0MgH8zvUJubfyw4PIO%u!V)Z@co8TGf z!kWX$A@brqJD*a#Czo_>#X>vdK%MO;pU18<{sZKASn*qs4H3S3`P%u8KW+kh9f{E` z+V0p&MY44q-%FO+GkqPoz~~Zlj+M&Q$d1PrNMj$EXlxC!W+lg^#lv;tVf?=0t@q(6 z_QDt*4wDn2XT|8a%ICtdKp@;WhF`|*$8x&x^{mo9`FgI)*9)^s9NvS!3*o=z@Spfv zuxXtkp3bBHIYXTJGba-sXAE;|!m+pM)8LG4T_PvIJH7uC@BIDr$Y0bEj}J@g!;=?kTl}lGm2Yj+zV}X7KmT3o z@gHS7`QvBE>41@$9sDpSt(VC)ckl1y%I zHF^SlFo?M{mARxd?=nM{H-Hduin%&(waRR zoUFdFII-&EcWPFV%Nmyd@sDRk6`McA_dt%LkMlVZ*^|)>NX~ zGnkJ<1NiRyvGu~1wXs)O7y+g`q%yaWNU%9D&v_JK4 zbL%|J_s&)4%0W&Y3mm9UPgO>jhve|$d!G>7>(?ME|u&nv`-8$bB?pDjLiK#Hbw*A+j)(1kF@`- zHN>7XbYAlkWDfls-Sy&S;4Xt)ncSju%HKghMh9=Yw2K@p9Bxfo0Dgbw%D_5!LozTT z7{En7`{yJB6=OcczBQwZO9RncmLAKIt#JkNHF$~x_m(UdKao^}pDTo)Eby~5HTtC5 zr~E+1Su)fqU(9zI0+fB;#X+6$4(+NkymtDTb{^5%ZJ0GFvedc11RvuAsso%&sso%Y z&^c{d>11@yWPL-bf_vd&9%IV~7xuK!o>Mi+1v zoN1q{+DBhZUQ9dENgl3|`;F!s_95s2Eo48a&lj1m*rAy!r~4aJ4_=c_oTvZj0?8cd z(M;O#Xf1fY?9zDSC!}$dzFP1(cE~GudAl1Mzcb&JSImEv@yn|W=2X~)1)VfGna;J3 zAImX3Z#gvm1MA30KWG|Ejh;?D=bb~BoxH0{)w_OC^5vX&P0qVFdDoPpxzbO$=9y^? z#f{LaQM9t)i7vEi2sCC;CP1Ic2@P0IdjZ;#&)oDGcIM!#v}}Xkp548C;b7y+x?yKWb8kLoWby>$zIlfHJKufwX`bbx zXT4t!`h2rsm5nTWcMo$}Fl)}920fGQUO$dBrcB1*wXLgPpU+}#lt2J=scL^vUc=|MvkuLPubya^{*9e-oV*>DM-C?J(pkHs9LO*n7HWJ9gLF zk=R|x5>)m&sj0atjd z!}e6n#yZ`amC2PH4QyAl_m;R}wy|B$XWdF3R#DTL)-1(%)P_yl@R?gyF~&?&_AFC2 zv&eGo3BTXYZ%=q>K~{g~Xj^gyTFgzlc)Jlkz=3*%Bb zzubHSyJqfDpS<ABv) zT%R3F8GpTpRqySd>;1349%cOXmZ;uaJ=goAzaC}$^%kk#fAw7N7yf#b@zA7B=zaC}$^(L#{^F7yF>90o_f4y<4x31@U z%l!2y zrvHO9m$n9@{U7975{#zmx-}3DnfpLAVD7PfmOE<{PX?XxOd{vjJCChd#P93;zQ!-t z)rtP~j%3jvjcm<`d+VC!N0Rhg*xL0Q&Mxbzeg^Mk@BTcgjo)z4iyD2o z(|W&8eTn}ir<=Y^SDr-=`Z9tI*_Xa-dZ_F8ilL8Sl${(w=B#UPpD-62aqF}AJh;j} zdvz_oHWz<>_^)x`|ED#jv@d8|m;{yyz1>-G0@ zcdecbuh-veNp0l%+USdaf49Q5_f{A8P5-J>yV3vpUg+OIn|;xL^P`=(OCC>$eKDb= zn{8o*1JPM?1JO%>&lhvgNvu&t8X>F`tG#ed#9 zvP|DI!)KuN%MRL??{MR`+|BY4$am8U9L?>nuK?HthiIX7M?11iYcH=2wX1g2_GY)O z*FIre+W*j7Uh(fv>$E*QKTk3Ct8~s+Yn2btnUgQR4*-*a1^BmCI%}>!KJ;&_uNbSw z`3A5hudn>_G~mrA%6s!p{MgMOnqSauKHZPb>`9(J@kHPADOsLs{p9)M??9e*^M~R$ z>dhZ|jo%+ixf=9IrB9|>1G~%6p7>jK!xnsh^2-cjFPD5Fx5!V1PpwWqBK%`yZ5p4N z)?c2l$lFhG*Lufa-{BV<+PA;H7}>9~3ujI5;-`x7O-%Wzv|iU*N4%fRBbs}PgUxee z2m#`a$vzg3uf@|TpJZ-qzO-X*TnNvcN8j?z)zOb|LcX!_UF1{F^D}s3KO6tId`Kpi z0p69ZIq4fif6DvkWb>i+j`hwz zPj%*GG0&3cN=e=~;A(}&e{NMgur;Xx&{*LJH+AjX*|4DiOoc`5UoH@Ohxi493 zCMRppP6--)Uy=mNVdSdl`AO@a@78ZM zYnx8{@O2+7J+!yM;Ah0N?)FSwAbMI7Ojn{mlHlpH{vfx$;zxe`to6Zkvi9s{sRlns zZ|F*^B4GI>>IA$kpEt?yCdGKGQi9no_&kno$kta#?%b_bIwN26Hh{(?94yt$azoJ zybAA~&GUzTrMSw#{R@F<2fAtoy6QTO5!omIu5!5z{6D>{3;f{8=(W$PEHMRazR89B zy!?q+b?$|#-!RtNrC5((kgr%d6>8hNAA{Yby01~*tJ|d>aM!@^6R2n4ogg?Ic!|qR zS`NJ0Qvr+{7PdIL*TeD6ypQo-dF`g|8J%NQ-8XqR+Nry9;n1%1QQdvKm(SnS4U~52 zHx0N?aqF7glQb7U;8ATC@?N>~26qXkZIeI3y9Kb#8liT7={e&Co29IWCuAK0{ zH}P?orr{pmmjJt0|H7pA{_me~mYm{2E`RV%V(KX$-~SDizREA9d|py{wYSdKKl{Bp z*8bl3w))-=>EZnz-+Q}<_p-OW@v(orOZ)!$?dsnP1(U~D;=^_Dn|ROgCV2b@y09;L z%=7j4SM~&Zw9wVBkMmi3p^tZ3wCT}R@~@ly-ICf(A1j}_Cw;t`9EX2bA3xcXK1MF| zW`8#tKa`sfL%DAH_|x6>u{TZ+Cw_eV556LUkMK$SJ6qDa;bUGe_^`(Y@T>HmA2giz z9xS>_##bOC1IpJyo`2xV_&Ui*AJmN=ACoKE6MsHY)Hgkn?M1)8t-dI*I!t^``C1nG z><~1{g%+HhW4@nu4$pGYy%sdfg;rr*d0z#soH$oT{Go05W`$#(Z|8lDZ@s8JtLV`2 zx!}BowuCFy6Ru>h2ycTawe4cS}b~FZy-jIN<1Fd)(9anzV}X8ojv4(M>Zv-c0Sx zVbne_&4FghY7XSNYh~eAK3q>G{_XotuB7zkzoPGlP~P88)+^4sO87LfWANCg{$Gav z2ge>9;#q%tXV9J>zkSJj(agwu+SGn8f14hybnUgh^=^J8^-JKJdA+pZpKs4%dm8yi zoj&JVOGdZ(Hl~;P_LIVYZNB;aF>e$GR(D&UVMF$&4`%t-XO!!v4|>Q?^Tz4n)Q^wr zJbYxHBwjH$yBj|KLM*-~`SY!l;G>539xS>htw)^o<2^n2dpTS3cVFzfCRvUy{#WY1 z;nu$kUFKgOU0c&>L!7KVdzs@eekBQ(8-eAMjK{0L&aMB2Bv{7#U`cLIYsVLfq4{Ai z=%Ku4-`L~{c{v1ji?csYaX96jd9k(32Rg^D{uIwx<@3q=@!`c6YLj5-?}Nc#9)G#B zUX5PbeZAYn`Ptw=Wwf{7F21azjCX#~r8SBVTG3Lj{xLt`i+TMk{at#J{tDgx&T{*^ z1>dm0-(P_%FF&&5?8j>7+@@xH%G$sGzUr2;e;S!|o$$o-7Vi61Yo8!zo*{!*b1t{W zOuS`{onp=6JcfmrBje2(2gIhvA!|fCdxAqV;&>aC<87Z2o?P(p)QMiXe6Jke1JK?_ zogJcgI@4D}vr?`?c@ zdNz)^EkB!co@t3W(?)Wn$34N6&vkQ2Qy-8V@3gP|^hbxA?=#!vhuA6o+LjY@X}R8| zf3Pe4mj~G=%kK@^)A^p;xQcH*p6#DRe~;f!*54Z^=`ZH?_k!Es2lx^F{ay+Ed*ruU ziW3352cMT^M_=4~%*42#_xkRI*B?~h@Oq8uyVIZaOJww`?AzAdOqK^7Lx&2qV{l9F+-U-KG#vTQZWcrG(w)(e1!{TqLp+kY1xqkqNq)c;KSkI?_6ZvT;_{+H8# z4gD9=Z-oBOa&d5rivy4EeszB$=W{+<^h%GG(hgbX|{?bm;-v{?Q{q5%}Id@(X&7+LBM|{&?7hI>Lnfd&|b$!q0UFr|~ z{>JpzN#Bg5@pYTez4W*1B>io2`+L>xFJa>Fo&8?N__PMVj+woM?@Vbecm->gAm`5L ze-r;D_gp*Q*#mXXv_99M^^TqI?14JZ*{h^IP~+S^Q1UgYP2!A zZM|pzdbjtor@i+NCB66Ck8h&)v8Pv9wB_~h=a(()H*(?~r**R*KTFsPJoHfj9|e#_kT>p*COzt*fj>(RHu1$-`kI-?hSu6gH0OxXBJ8?PrIx0$v<@4Q;e|AaY_%i0?CB4@>p5?1YIj`Q| zRqvwS>;2tdk8)nUX4RY6d%b3VJ<56Y-cr5ud$0GFzaHhhdatWqNm}#3T?DyMfvnPGw+3yRJ+Q{*>VPY`wNHOwo489s8|L{GK zSF#~Zc_lCPomUcJjFpzot8nBTbZ}(Z>gkC)z@P4oeBxfbzu1?{B$)m3<@?wiM!rzC zPx&(U%x>~!BJ}P_zLcFLA1Qgh`Tb*Nec;>Am_5v$py+R z()Vhx;V0BU`!x7LI>5s2_w$xFKH)!4yu_JB(m`QpF^2!*XSJEXy*P0eICFK9;}<<+ zdY?MU^^2}pc%{2{*7ZFtP;3MlSvJui0X zxxu2WH{KrgMOF8Fn60d(dZOoVS*!Ntf9{K(o3OL$Tzb}l^K0Dv!dCukT!yB=>d;iV z`?>M$X8(Amvqu&B$OqGfuD#?HdN}Q4eyuR`Yes3Gd0V~CuRn(q_2^FEcIFrNg7+Do zd422Zr^lbLf6V-%Y#;R4X%`oDn_oBdLJ!U-__ygXOZIPH^9wlr^XordTKuc?OL?)$ z@-3ZwA%p*V&MRh*yWLCPT(9_lVtS(3kALok|0#Xo{|*oTl@GI=&KJgEne*CBY8~E3J|A-j0&QOp(dm<@6U~zR4zoO3`b#o8IzyA83K6@ak zjrqPd{N;`QOe*^YUs*Fhq(4v6-@>FeF7vhF@2|sFd$=SKn1bxreqi7J7|&LyK;CS3 z^Xls|9D8dEJUaIh@q6dK;K^0kDHnCx82)-I{q-oLdI8QoRBUz}^|Y?M4qHg{^VXG< z8R!2M-o^fYli(fH2fR1>>m|Y49&zA3$A$NlBz*5*+Q}n=-?v_r9**0>_jqStq=$1G ze}McEJ>k6656i@^IR7)S%ssznoKNuAql_Qtzt$L7>mJ8O^!t$h?DMUP-;&`sw!I6# z#^Q%x{*0dB&+x%fl?4Bbz){r;{HgwWN$`K0dh&(*(!ie)f7$i?e4?sXsk%V|~Dy>00*96uzGpoCC1tH72a;~tt3gWfyDhYT5Sr6_E$L9C_R(H+R zbb2O>`}?CmGu>UU>eZ`P@2XeTXQgj+=qc)ztZu^suYi|$FYGhi^Ld4hzf^ty#j1bVbe{7clF`+rAz8=vW?a~G{Y;gALVlqApzJ^&Df_f-`9l7|pIG|> zaai5jc!fADY-Ow>4%lyfW&-DDC_Xk7eI)(V`h|Q&{cK0bCZ&GLC)Qtv`b$v%a@1df z`WK*n?&tnS)Su+P#_FS#CHEIK?f#-X%E~i{vi9z_+Pl+g@2^&S+pPAk6MYMB_geH1eqnI`WCd(+?w^#g`KkR+ zr*dz~lzyj!KDElvEhIm`7*)SkyX!7%!p}>v_Tt3PpTnLw8-Gsa=Q_w?&1Ld4<-$5E zzA+N=)Qi|P#!Bp;oNVpYy|CZuRU$tQag81*U#!Hd=woMzeU{1o^ZTC$U!*whp;Y;g zI^so}&vAM|h*v37M7{y+5-DF)cQ6Ut5&F6H&_ME9YmE^4Q?3!Nwc^n&SDSkH4an%Cm^5R- zTdu%c`G`yJOE5AE@Qe61^{h|4PcYtm0Oj_@8?VrR?;3Bc;qSgUqf)GQg>pUSOf~hn zw2z6)=eAgIxk6jw&++-NnRxQMwmQm`I--qFo*bXdsPezsoz?Wbu)m;hPV=QNVvNz| z%k23fUUL|qpT+p3jR+*iS~j90lhyMq-fC;=)>6j*FqddIF$aV3e(sI`z4hLU_k4Fb z$7*3)V*br>&A=Xxo-3kW2qaxZDZKu!9eOCra9*W5cl_O zW09$hg&fbV&5Y+pTODncI--r|cGz)Zz72{x-*&mP%x_+(=MRpKFrLq%&S>LV1)0r$ z$;&q1%<(+8Fpxa7Y5ZkTgmVps$gzVA6#1E>6238{P0=D}u5kJ5^pRZ7IG1$JUPydd&CgwNFN;<3a&06o@#TX~YTAknH zBhYUH)*hqL&u(w3@q=q&7et63>=N+<;3<7B_6_;2p!M0u51Q!jPlg81cGNua#zo^8 z$Iy)n`3w7eE9QrKeq;8pO@03MeAAxh`Hg*`4~U!ef#0(9Qk3!DCDtdFpWXVa@EI8| zswxPind5E7i*QexBu5$Vaprjctf6ew@%AP*8ShU)1E=}oxhT5*6m7gmT|_#E{Ie8m z{gr(b;|)C3@%~ci&a)qHX&=E}GxY~z1u_mRZ8c4cG2XaZFQ-k%oJ;rSP|lak=UR#J zCOum-SeAvc$#ggYF-RzA{gCk&-8i{8*7EyLffeJlPeX!6xV@ z(!>iM=Qo_?_nSqmqf9qASLiQA%9l0uXOce;`dF2p>iE-_mOSTr4_P(^*`=`}jmf*Kg{IC>$d=zVJrTr$ml_ zR||OtJXLw-10Vkq{iVpWUBbUv>>$rFUB-NjchRkwTM=@|=Cv|?o=W&MEJxdcIb_or zW4S3Z+;kNVYSK1!AKiL2EK5`J519YKvj(IJAk$YIdU%W5EFZ@rj53MD}LhOY zV-R=GL%e!G{Uur+E`#S1F@{}_GlDLrtVh1n_4sXtc9$W)Lhc!7PV6YOITr6?U|Wlv zTkzHu!~y%8itwMf=r}6|V_%)sVCGbavr+IpiEj|=MPI6?zis8&T7CI9>Ya*u^H7hq zcdrKL7S%}H7~@j+%}Km{=!1$o+hiZv?%yEm&jXz3!?mG4$bIkJizn!sW}b~K=?Z#^ zeec}6E?_s4?x8*NJAo(nuCpIv@A{2aU#z|B2k@SI*G1honsv*)>)iLw+$~8D$~59E z?0Jh;FM>uYzw*7v*RtN1JG^IJs-*QYhxe0}_m4QdU#Pr)$l?8J<^61j_gj?rciP@Z zSbwMves2N&+6VYsF<$ny2hza-egJ7=-;Ykd7W)%X-u|8G5JPP{?`lVU}Ocec6 z?e?ZMv6mBJ|2XNFbDHrl?e?-7|2+dcu*rG`=5VC-j4##w<|wxa^G}TdYdxCgEUNO7 zwy@AIuRHC9Ni^mo&$eib%h-P<^vqTGhTG~GoXzY$h*;)?xgstWW6VYw)n;9Rc%I6? zXVae7YVTc#_HMG;yTNL2u5Hi7_y^2(ZT4BPe_{3#*Ho&>pnf6Zs&hs|4*mf%Zz!-Xf*FEVNgG_A;zK zBL7m*R{ET2=%eIQNn@3tcf)=Y_R@@~{$I5_ziEE|b!gLxpHFv)?*Fw)Y8pS6_6uon z=jCU@_@jPaIDasHH0AO$L7q|hMXo2@Y^&olrH&}}s_B2fbk^|}GjF%Yh(I33IVhiT zPkWW|YDs&$Jeg_Izgk0CIZi5nSn-x>cV$)+d2$?nn-l$unpwZF%M&%;GPNgo+S&g$ z?N#8Z+N)>GeK%*7|E!KzP@b%F*z1rPYwW%P_)LpzKmI*Iu~$(Jv={d3JMiI(ZjTK2 zjtYlz67CJcO^yurh6;yr5^fFQqS)1IR5-=1UP-tpcJ)dXPO+;WCtMV}`f(Lbv8(3+ zPTJL5Qls0|x6VTwu&ZyuuPU!ApaUPj?bNEra6O9a5nN@s7UC+!rH(J>^CLFf_~`w% z`GEQSU^DhL_B({(uwSWz^SKB%bsf(i#9Dp{ZA#eG)Hwxs#xdeN%<4TnFb=wwdG)ll zge^TaKWbim7U~V!ZH9H;5$v|#$-H{lZ8E1`*l%adZ(>RNjka$v_a3$c=Rffg_8aga zUKao-RX*^2SK3F``)&^J3zYY?A5?f%zTXHxM96p46;-}$Zo0qXE93<_$(ND;!}%lQ zaQ;YzC0{B)+iR`-3+Cgq-@+#buBMDJ^YOnnb*Y(;kMX6=g7uBiJ`0C4Dph)@{1}us zK8OA4MRCTuF_1UEjWYk;io8KN;!OW|&3%|Ft0Tj$QQ=SyaAI%PO2Yj*GTcfP4&@}= zt+R^d=iwzrjVlOw}zRpC%h!mT6Rt&!o@scmtKFr^2C}gj)(Yskc8)5qf(?q&0~d28YYDE!xEA4h9M@yG9>w(tu1NBh`oF?<*8b7CHhl&C zzp9z@`k%Dbv0tepialQ~*3iMji!oRs^fm7J++$nsRrT$B_!-c* zD>RgiqHl4&e$)L{F$Pm@v}%sId#XeH zc~e`Xl6xjrw>9pWjo--$#y>^@zpgIhGyFm~N95^^oHyX<8vLp}eFpxmO}|HNztn1f ztkr&v)&BZs+JC`npYxaP?}gv3;xRF^;E8+>a5U0s)ja=f?HNhw+ zPWxhvrzB1h)@J4sr-hm^Ti_ImHEgir8gfpaEj|M*eBvy8W?1;#-3&hCEqt!F@Oehi zD1_JXIp(}?cD@ci>-`d@{~bF#a3k_kC^N-;#XaZi1U!?p;IBGg4fqivo`9<@0s%`4Q)<>3;)Hb-tc!?maqd|GNo)-W58VDYX9G-bncv=eq1` zXC&d*n_l3U$Mo+OrtKi|pHN2K&-UoO$dl+;5HTO=OAFQu`=8}xKGN7v!@nA z9h#$*51HVHQrrG`&TFBUJvg5Qd8L*gZ=TtLHJM3KzFVD-`sl|`pKq?cj5>?`@j-cl zc7^^&+p@3x<$K|;Tki+h-mCIv&V81=LD{JCrm{~Hd2pOzL)DO#0@SaBao41=nU= zs=OhsD{Q*1uQe~on}R>-|2Cs9kuM$AcD7PS6nlDwm|xzrJ8y*ZN$A<~!oZ`*p$X0} z-1B(}o=MyV{yaMwXIG9yp5EKA1;qS9*{JiYF0aY_DuB)7q~Bia_RHtjx^B(PFW{-p zuTikG{+Il#;QYdOiR4;t(4OAZ(m0p%3g5Zzj9>5Xo%aQFvUpb5(+^qQQ_7Q?zhfxr(+cR9c5Iwm4sXE4ELi7hcYVM))uj=1*u#1Fz*cSObB2)hkY$6{nL#~UHeE3Z> z-zQjW`#yn6589MMA8sEO&_8#`X(?%AT)po<;0d?UYZzrojBx>eqv;FKQ;bg=+xQ?p zlA4EcIotMoTkW^8+HciN`#+Nh!5=^3m;BLJ#A8Bvk>wbxR2zRN@c`N#emCi{t7%RO z_xfs{HbzV06yr7y3mpgb*I27WFxi)O^#w8y5tr9l0GUv z!SMk;cAJ^`F~sM)y8j>#%57{19?XZ?YT+Z!fmL!wE_=WoQ*tso5{KYxv1@~(`N?St;x zdGo1NJ8->=>#w-BG#fu-+3BN3Ah)^Y!Lx~PtjO^* z_6zzdHw(C$GSG~l^%i@#{(s_UL4RXvQ(35$xD34zax01)In$_@GlnPR7RmwVpDBNS zx*KyKiX8b#g+nd$Lpcezhj3Bk$Q~6AKZn7%kh6V3U8# zIRG2@Yy5JpN$R;C=zm*V|JC+|e*pS(9Au2cjrM7af0M75m!ka=w4ZCWAIS#)E83+E zzD=~Bq zk5zQ7$)9gyf2a

Ycc;k)UWFM>z^jx%5~o5oqCjmmGV)mvwR@;s5}|6|JHe4bn0 zb!cEwTuDta)|VG2dIBj29^6wBldzQgV|T~W90Tm zsO_=b|JdFhwC8Oz)N%d$0;{df$V+7zHNLc+aEZ=vT~s)fQQ_7TF3uUQoeGCCDx8mS zG0t!?DjdqFa4!(y%M9XE$v`_hoIgnU&=h)IL6z; z&&{c|-h1($?`GVEIu3`|@mVugdcm{uW-x!e;7tz*a{h>(~-r$INExm};vd zK)LXz@H&c`spAG)9rdi^kKuKUZKjS9wmLpz9sck-E^nre{)$~snu*KuJpb#%AY zu?}?ha|eD4Iva2EcT2jlQQW5+HR3+aSTF9=jCJC^lkujw?_|6o?o*9Fi2GFI zb#dR(_?@`#X!yi^it(zrPcdE*_sPZ@@!Q%sGX(y?!g%8pfA?YUT0wkpf8Goj4C@GCfu)`;XYI0P)3EDLAZs^a645vlu_X(6K=9I z+(s1+We6wF)}BDPTbj&pB|978mr1SSYk2psz6=Q40G74a;om+ZSwT=rvAzLGtuK2f3VeYP^lxD{Z|Pa5&lWF zRvXnn!S@ZCo?mkw=;LJnVZAr1{r9h_;r*k3pxDRN!uET~Ix9vwTTUyAH#Xl68S-u9 z^SRQj@fC4Ol#}^kg-aU4&Lx{J;?>FiH=uucK36>Evl^>fbw?nzi!xsSEq>26gWsW3 zrW~;2*V%?&p@rXK3%|XWoA}Ly98&R|iE%!9UC7rm`78W9P}tK!ng)Fy(ABMBPj04p z{^)ezJ?AS=pi0`iVe#J-|5gQWmaBkGy$S2pKP+xsRf+#N>(bBt;3)#{6#vb{do}Wj z1m5(GLT8tHK-+f}oauk7=R-u}*JF2C{Q6qd_3>Tq(pF8@zaGFkjuXG`V4aAo#ULL` zrLDx{^E;dJtBgkm{mBbQ1oTBs&(Cv`K{G5`3VU#gDTCzsa|u&Hx2~~98R+Pp<}AaC zRCtsTGR$TAErDXdZ_y2|$8dkc0Wlt-*hwkk7LNY-S>W$c+qdEW54I2duZe|Bcg?);k|4yA$ z^t;r5)|iwNexYtW#y-X9#v`Inp?JYLN-T-I^qpg+mz?Za?Av<_tGTg+mz??i0fO)fujr z3WqW(+`EMPlQUeV3WqW(9PNMaTh4GDR5+AT;b{MR{myW)DjdqFa4!+=x6W|K1By&Q z85QnH!aeT{SFggMj0#suxM!T^4op-o1+*K+Z%BXPP5$-Z)IIMb$ zH7{Ympo|Ll55o0#hU=rkp^OUm9^rDG;kv1CD5Ju?O}O)%;X0~tD5JvtfpF>0aBdY2 zWmLFI!gX|pJK3Pn1!YvYrwNzn4EJvp4rNrhM+q0_4EL1^hcYVMeSo76yL%ww6uG7k zdpmRu?OVByw$R#lqUvw@Uaf3pvgkDjvmqa&0$MrwNQNci!zYrGX6 zUkuJhOZA27Q`aW~u=9j}dO_6niE8)eq$c*w!&nb-vTs&2d(K%Wc$p@}~X{AhP;wQ=TmEpWau*RvKq z7Spg6b&@W&7jrtI z_^)<;R?jPXn=vnopTWlyQnz9-fCP)^q8-54Gx zs=N_cqPEGi&R|I~0h;>Hcw`Gc~Cr&Cog7Pd-7|_4| z@8Tuhtg#aI24Z@uo_qT?jK>zuNVUd8>b4O|{PTZpKQ>DHFInxM$TRsNN64m-yj+ZN zvhhFXmEX<&<6Eudk6;df7Ww;&`;RNO1>$ci4IUy63pL|YfkP;+5NFZA-oBWBR{O+7 zZJ#pR$w%L+v|nm#{}!~*JcPF_8q`CksByHB3a^qMRQ>=M2`Frq5TxA{q>?^Xv6(!zZ4((FU03A3!mv0K09srJZj-nrr_h&&2f4l zNT(29^FXWF3ayBrc|NO^FN3ppp_|2bBuJ~$DFN=qt9G}rbZaH-uox{+jPEJX2CDC4 zByRj|+!}-L1H}0P1GPZIBsbOr6JWn4;u`_F(SY``M-#Zj<{o#s{H(7Wx?7CNl}*P) zL%z`?q&INonfqSIusOXrRw@4cxRUYva24Vjifc&`=6)~aQoxH1|l z3$@*~t~CEfjBTZBlA~@Ir0@jGsJiKs$?#vXhFS|en4_GHy03;!wF7peyM?D_QLNUN zcohn~ItKA-0A5{z*ZsK`UcCnyr6_j@Hc1GtPX3iq@ah-^uRjnk_{Az-xxkCKWC9oF zi3vSaGAxi4i=5s+cQ>j)3(hqczF*ZAbI7C(anA5xg1H-sK1Yv+=8T;_%Yg^;&+>bh zj9=ZhWc)hFTQLr?gN@2gxDV@ZNB@mc`ujzccJ3AJkRJrTxrG>uA0eaaUD~b_v=2vZ z8GNE(Xkh(0jtuLqI8zC?RHQ1)xk!>!?baLSf%c!uew!T7F40A&V$hi6q& zG~>Ja5dqR`|1Ldv{qdW8max5c_??X}Oo&vhFe@jJsDfqsJ=J$wvO^iA4AbyQE)g4-ejMrS$(E_c=gu6s{5b|1+QHZYixFxj86}1 zFV+8-DD4f2(%$E2&kG$)9^jm(oZFougod7 zo#dBuYBl?SGDYaa4%Uxv^38_rCu#H}#?PYBt{i-?s|k(DLiL+8GIfHie+lbHnUS*o zx5MlIRIPt=i>CEYiC+IK){ip1IR>Du7q}N-d`R1OF-MM$9St4p2^_zE6u!kX5_ZLK z*cCCtuE>TRk&f%apgqwEW2+^1#g&Zfd|Z6r9#=P9t#Gx$m4zz}7rtkc%x@f=i;MP1 zMWMF)vCH{A-;REMci6O1I{Mow?;pnd4!D=ks24F_R@qcPzh@JJEA%YIpMde@bJ{+9 zr`kUY*?;h53Fw%i*gtmrhBkzD4#pL;+13-7)5lZOH`Y_*m~uOe>v<@+J0wQ}O=gkSF{`0WIKs;$P@25CkbP=A~&#wf{ui9)l+ zGTLMDu*2N2!xHeF5ZyTLip~Anb|J&=!s@#GlN1{P!bbqfRfUHAvIS@yw3tit%|ElO(YvpG)UU2Y-r zc4DEUo`Ky{I<2IJV@aD`=qBsklXxe`_G<7#q_M3z9GUmVV{9Y&6~9y9?0&^i!nvGz z=_M5oWmI18FLvK^XME7js6#T+=YusB;D~&ZzicQ(%uoqE(UF z=lJkG2T;G=2b2A~%IeQ;w*Hv&C)RhWrxrMQM;v6WGM7NJlVbj~fUgjjdkpjH1pJ!g zm{+WK;^{_H_js-SM2f#jU4JFoqHjYRnS44CJSc3A3-ImT8kYGZbxrKziDS(EZR%<(|>3K9a0sOmYaa*IAeU48}>xk_KVVMU7f@}4;P-3@B2

@We#zP95%-tBZDL1=86y$FwgdDN(QeqJ-q&-rD>%5^z`|fm{&&qu5``coGf2^1G{jZK; zKfh`}P;>+SvP=6>A?nXD>$G1~-vfN!!`iQF(2f{6MSJepduSgJ{SoJV^9{N=(^~;3hwARoqde_ety{dU zEw0xY-Q9|Hz`r;GA^KG>u0n|X{^BWwXg9o+fDrAVmu4W`gm521)Q7tax@B8a(LQ=w zch5K-a6kT}TYd`ZuiZi2s>c#=KW6G4Y=Pr?!J&JoH_GAd?RD#yp`CfKw{Fwge!!jj zTKD))CBT|e2J3dNM>@IikM7_zeSrJ`TmXR7W@RyOdP>UC#_A-dmrQR>!#J9ejlih zxd-)?Vz9pTV;cc1qxG>XZU@LdgAn=Y#asqYx7T-xMSnAHy}rv{T+d@g`mWC){wdiM za@P)I@XI&#agNEzSAXfdKa2YCh@kJj6Xk;SgueHme*)M4HhrHAl;_vP>Jy$qJ+wim z@0&3Tpwm10zJH^AkZaT@jw(ZYZH>NPJEZH^8ue+bP>-cPtsn9Q%9U0h>$CdXfbTL} zKkPY_o7F@0mTcr};b(pRpj;fcNna3+c+P#JFUULv@c424@U&~u-%iwz$VNNq$D#U? zXk@W4TJQPCZWBSc$Kh-~3*4J;=&x^!e(t9?>aV{^gZ_AL{j6J19z1eHKRXls zv$ebROMgRuDP^+$-a#n$d$rZCU5Rq~_3rw0>z_eC{g{4(2JNvk9{q-IQ4g$D>$j{% z`C76~zvU&g*E=`qpLiJMP)?=(xsm8U@V)iVFF^aXUoZU&2}rMx-=p8%6YZ$OM*Y60 zaGtXg_4^Yzw5MY9Zy!Rt{Y|s}sCF(WS}fKd+l=#Qx>Nt&b*Q(#tk9qM7WHT9L;8quT3{T~{y6fN{=%SBz-zBHa0_wVzh6fo|4^}k+lF#^{tSaq_66#z zT!U(3ca#?g8SMRs!T7-6z&-M|p+zRzLpMBcXuY%$xI0D}+8vpPen7qFe}JLxt-Ca7V3%s#sA6+FuJ?;g5#V9g)7zjxdZ_iFW*}BMjqq z-kTUVbdyn{((xvW+VE+&&)GyJ@^H1 z7e*VNT7`VpYl30>6DUV|rBleQKWKRFP4sWtoS=|v|1pL9D-Of+Gmu`tJ8L))w+Wy_ zmEk}(LdONeYx_`t*gh~EnuqJw@08*2(3JqO=MBd;BYv;LaC|h_WXZ-x&SEW`G;+Gg5gq^%rB@ zA35l!%`kSmjO*Dy&KUnG()r(GjeW`xPyhbLgcihpUTf^X678HX@{K7w6VX5UnL_@p zJBfuMF2CwnD%)Bz)khW;m2^^6FxT%{{-cC+nvS{Z56G0yK3 z4e*FyTyTFG%9ncM;w>nLzHMo|_gnPK)4&q~y1KN%nS2ko(C ztBjlWBEP=aWPI$$$59VXFm9XD1d#Wa@#(%TfO~JN@!82}ho4m%U+C2pxI32`cm0Wc z{?YZu-QCb${k*Sn_ojSY@Ak&szahO8ylUM0I@%HW9^>BAIk-;w#sj}29V{7XJai|v zw{at-^8K_Kxw3KTs~*m1;bfj_a{ys_{ZG?zeUlgMS}3{@Q*$aQoI9e>;luLOs~{ zM?Tu6Mw{_s*#&_2HX1K|i+-qalZnq=3o!e#N&ObekFT^Q^^fR3x9wxn3`ziQ(%mLa z3CgbnubPa1p`W*|&J^7P_jlscrk0t9fPeWFQ>z@LpW|9nt37LgOB`To^CjxNJLZ|% zRik{%tv7W#jr?@S00u^{H!3JvHZn&t78c^E>LBk7t<@ zNIXh+4~6`RL{r~2DCb_OH>GHm z_m~RKt^k<(qG|Z5p=e+2FqL{=N4{HPDx3c+@Xytn%3s8J7NwY~(h$Dh-Bfh~;o%h1 zDE+$tAAN3`^a0Y@oI|GCHXhv9cTA2lv;)SvOj9$EFRVEx=M?0h$(u~B*2sTr946Nw zY+qVqn$ZI7l*Fe^w^yS*+xZ*Q{MeU~o?BDM8wQ#du0Z~MKE-r*Ta;6eYbfM$o}-Z0 z{9{^r;tuq4=bM(@g!bQ`mrVDJL%FzZw`t{a)bH_IOsivl0@yarbZ^Noz~yI~*4PnG zY_)04OUU1K3r%Y;p#FSnm+8?_6M=tfs_DrB9KZ1!)02CUPrRp1&&+Ir^C~s%_%;)` zTY8vYzHk8eVUtb!#^HXwR%Y7Y+X(RBR?}-=bwxfsZF=MFXOXX_n2v2mJAC@nrsMr9 zK~QWoefl-ZyEdONxWQoh?5CZ`r_)TI=WPZ4mmQ|h3y%Rm$cT+E%kP{S3w$?g)TxWHc1r*VdG>- z#J^PIPo|K8KglvQEz0eaTrRKK=BzbWHP+g^kx(WHF+#PFf@2_vhvMf9AqP<QX+PXQuih$$K{g9XZH#ymr(vy_#XE9_pc!#RZ@ zi?P&Bw>fLnLFq z{+Dbcw#5-;Fud3gE-Au%{LX@K7>>nC$C4!U7c%J+Y>d^23tK^=e;vkI>g!!I%wD^< z&hExZn`bz@b>>;FCbt>a*=DXNET+3U&2DcrJ8*|TglGFcdivzO>dWvQQGo8@V)p_XnjS)LSsGa=hnGp)Hs z(L!5pmmuI?#tP9woY2nSG%BaGq{Nz2*<9=4LT6mZp-7SgDOsiogXumE!$IWYziJ^J ze`o7UXoNhGPRTfv?$}U~iv|kS{(hr#?Dh3c^)|P;*zUEv?X}Gfpp{_8=7dZJNZcaL z-kMw3?D*r5>5_45Lvd7u-5BK!!_no4EI7cA%xHDmCgGlzyKD_tV2#LV2hp+S3pvts zMYNSZI%^Jb8;Y1rxEhfbh48M%>ck~8BL_E!rCkV?3d(`Gemq)+r=p@Tw>d<46j1;w zp8%wUkVV;U6to&8|c}6-Pu&_Q%B?Aks2f>>-qyaWwSzG;y6! zNQ=S%l?(kYoo)luVOJ0q{?QF8bK9reonAA_fhl$-aGM(IajYH`t+?DSr`cw1U;={3 zR;L}suglroOnTv-{yTb%@iV2l>?(++4bg~{_5y4JKRSICs(^Ykvk00O$|*QTqMG9% z9{NL^ABB1{s*jOc@B%8v4~;p_K~TTqA44H#Ag&z%{lj)JpGY;)7$Zmtsa4b8i3}c0B?*%|-F$-(yC<@RJY%79hZ(eF zXoW=9h_c7`z282--w1EHpb_lg#Q!>=9)I)7$RcNqtI6EZ`a{D&TJ-`~1GU*())AvL5@DNrfO ziVSK==lHi^5S0h{A+87Mr&hvwg?{t`QvsP|LxYoVtQOBgEvgSFgJWRAbmLbgSA?u^rK6VP5&R9ceXT;ov#DBFmWOCPT=owa{ILqgyDJato41b0Z-;stOoM$ZRSq3-j_Kf~*l`T8nf!9oLe1N1YUo<%-%3RVmgF~pscS){`ZfxaSu6=Z z4G{m5B2!EW<}ow^VV~}(v6~$pbEC_FUQI2E`+eKY@yS#@#Sb8#Q+yhTJX&UR+Uw~k z%SC0IOzl(>D@mp5R#cn#Un@0?Q$^b`nK>LXM>cqFS^m*=v$*XfL}Kpk}^^2qh zOQ%LsH7ccH0iic(Tz#4u7b;bAjji4>iCNU)hj`<^9Abvwc94541BhoJ8+Zm?-h4Xz zB0t5lm>HQ4jpxXwF`$`gOm`5s9?dAP+vac*pK3}IGEeyFkfLW?Xcnq-utsj^sNjz7xi^P41&2)2jXyac)rHnkVH?F^2g%q`DP8EWB2LmGWj2S~%rJyS zHWNoce5G{U!xH2iUp&e}1A>FYYK9cTgD?VJ5GT4K)9`Z*{p>{dqz2s*GxP!vLK{p% zN5u|__>Aw_MEt7*ddoD#Ksv-(GA%&^*CSj`$24E0#M}%0u}Ssz#A)QOi8e>?@Va8p ze|a`!1`YVn7Irp)e@T=*?VFG9JSCgrA1aIWXHlZfqQTTO>J^m)_16e)#L+-j%D*b3 z!>>w>tD(Urt%~>|k^Y%13st8z^)^QXYs;Q*bUPaCM48#$;nywN7pC*cQi;Wy6$%Qy z|6s`{ihTzwgQ!z8OfCS#Ly~kqQ>Mw8GQbb^iIQ}BjwE@(l6n|Qzp17HpV@5R9G{jsB_@C zVz6N&!x34?_rgJD(j&wq|7ln?UEpdO<{auf@sfOna{H8~dK<3Ptca7B88ouV+eL>z z%pkg6oed;EC?$qYj%4UWP+`Fgk`uf#gi<1CTwmK1x-MxV8x&owr6a|*STE*EpDB}1 zOqsBqPDg)&g--_4#m}aJe;@B=QH~}<8A7?31=e!K5DX3Z1RQ<_M$j{S--gDr{6kGE zmsrQ$RB!hrm?zt9USt*gM5J52qru^|v0#>KvJ}4xJDUzvu=S_Q=u-y4R#uA&dp(h+ zHgkP*c2*}O5r$^4%ooaJqD`Xh^Pga?t9u01rDz+U!C57xf90rTu&~>7sJlxEJPtAkbyONNGU%@bUC`HOR zptB}ch3^EOtpnk*RGH4+?59O^AFgk5AjvWfz!W&jd=%LYt|sdL5_Rrynp4p8CEG-f z+}(~Tbu9Bj{4y24Y-%K54aQGo?-M0@C(g9|kY4h+oKq5*8%92o$J{oz9Ul+}RU6(0 z(98Ehl9_Z+5lK$m5Gjt|)ELpgXidl-7qBM@$4PMtOHq-zvap!?NLp%-S0H2=+=$|E50TTLw19(NWwE0^eD_A8y#;bmMO<3kEOX)i$P4$LJKik)sci_rEyeLTFT1`i%KiQwd@q+fH6@qjGk>&N?xvL z6QPOk_9gK|GsmnNHNhx{6DePuS63Rv?11BFFAM0l#u2s?I!SI_PC+4(Lvd-Y)y!hE zZLBjJ?ZgUpdTsT^u3CF`lh^BVQmj3&eFuuUH4RdV(KMWMM5q1fgjkvePnMp|i2cD?9ljQzlZGWi6rPgmf|b){n&Aq^-=Uvyluc zyW5j)j_=~}=&6ys82=g^fP$o#J(KoaQcGi&~< zD98dxvZHf}9VIE+&-Hd28pQEVbB%8mdU<+xjj*6GVN@0o^NHl2L_>w_3=j!2F_B74 zjrbS4TMP`4_>>e&;_Y4Tm`>(-|#zpI9E^ zKUeezVWq?RVw;mhRB$!KQ%gi5rp5XAn50a_An&w9*aM+-kfANHR2Sx3d`B4}ZAomJ zWK}TFM>6x1e2P3>(sP%xs-^z@W?SHom}Ll{(}+^(Q>reIV?F?iB! z)<;kyMK9dIVAeC!2nkga)QO;08qK(q2gZHGSK!b3klUp!gEH6;mD_e^YB}cmQ&Tf( zu-z=CNYRi0&5Z5fPXJ10&x-bL3Jq)wpu&r^PxVEQ!dk(;qy0h96A6@gZ@zI1V$39D z`&c z)m4;)3%ZFDWy_$i@O#GVy=>Duhj zDT&1_XvA@#ABz;w%@LDLSkC(}G5VL|3si*}4Vhy=(!z$M6a2w1 z_FpNKOy=Gn`jSLU@;B_W4(Z*CwC_Q)upj;l9z#F;rU}1q#J{@(GKO|A7tK7`hQ3EF zJMx<1KoR0jG#7fAfN;9})IuJhltBawr4}*dZ1&jQXsL_A8MnR0PFyK$YW6fWHoB1T zkbD~ak0bKQD3MS~IY?>}iC{WvP(g|kErG^6z2-Wvx6zZ{ub;13KM`4Yl7yeoTqhdB zr$dN?!Ca2;8iFt)*~UyU>S19yOLWV+$}|p>%vP!oh!+^FPkc~fjw&~Z;RS1_$m z<8l#8mZ}Dn`^e;WzrU4e&S`SHN%AU_2Dllx?2Rrb`I8K5x@cI2N`z=?QVgI}nIS6X z|22&uLLFi)CK+mh;H@koOXON?ekV9Wc& z1iB$2<7Lo02ATAdMes>bIM!=Uj|b{&cF2}T_SD}_GTE3eApI23Imxfh45_qDlO4=> zoVG?!oy+U-vkqHUxelG|a5_A75oet%rYE8vp{b@UtQjfuBh>KI2C#Q*6}xYN8}GC0 zd^Dnsw8MW>2c^`Hl_f~025B$fsYaT33>r)mOn?PzdNwbXHIhX?rwP)nFJI!N&uC`X zXs9<&M?&^s0RD9p_)Z9mB%lQ+P`w1DyOJ5P`}COw$|=NPQvXI z&&ACRwpsX$d z%rQu&D<|He6X|*gTW7z6lup+tE5KbJ~>h^erWb7rB^s9LtK4@)A?x0PlaiTpU3 z+>=7?=)+I}MX%+!JTwD3(QNe{yxL`HX_K3%rEDi@?mi^6E!}(RH}a^%-9VqMX>v2m ziF`f7;jH!4IqdZj#Dd~-v#tu+d~$$I2%PEqG;x{amnxIRY`t)Y)$+|}ijx_QdGvd- zv2w+kPESx$#gLj=Okck;=@7E02IkdP;#f0erzG;NW=3@;-Q@lo$+N`F4I3KbIn*p5%6^L5;hja!J8Q_}EURD4 zARreNq#H%}6|wCoaVD4>iHTQ3ZYLte(o_RNt729N6>WanMrImy$bDvWBhoQF}S<|~1 zU4?c+OB!JBD7#f*DYBNcY#Xr=xjn-UL<8H%?=iDh6=9p{1roj`XBZu2Yp$v)%e7Qm z!?x%lbfA3^%$6V!f+db$8deCTM6Ld0)@Do`lR!p zRFMKuw==;OXLY-gYKmM_;(TJP0uA>vN{+c~H@k+POH%WxOra`DIw=xMCP-P9q1fg3 z1lp5}Bve+krYAAvB(t+0Tf0ij2&*}#w4}1Uw8&goTx`uP#Jw#V6CUwE*>Q+`gJnmp zRNDuUfaG4tk4tKNTaWxf9iH%gUK3V~$I`CvqV?{?1|X z4-ylPEYeYrgtNwNBOY0JeBGPJ2j&wQpFAezM2BEC|G4&^$HJqYPm4;(VszqlHzuu9 z#3(Zf=@j`Tbt<)!lc=pPk9q{(52RU2GR-Gxq*CfZ`?N@QKrTaSw#zlG!RDSuF4Xys z3&<5Tv!}*ww>y3J{!n7pJEqx549?a_lQ#4ufh(ITo?U~sg zM~xs4dTW%?N0uY~*4oKUYnnUe%UcPZ)&xJR4-O~G7g=pzEED$w$42*~vCieRhacQjR13`i%el$~=4$F6vx6~qVVarT)ne%i z_BWpuVxhswzz|}$kYr;Y;oz8UH8sTZ2|wDaxB!fe+_nZ$tN4?FhEie=$%bUbCBiow zhI8;`@(qxQx-5B4kKcC6MlKn^=1PB0mt`rn?QfoCw~^~TVo1Q_b-Bg7KSLSG;IP!n z?ppQ=I^gmoq~W^DLds4 zpDHf@wwcs)|B(7+qveEBz!s1b-e7N-MB*F%0Hfd5i7?nU^uk#iVzJQMd|gqQsX!7x zrZSQlW6rZ$Dyzz^73mSs#EEpn&Wj`mPNqQQ`nAF3wbPr;tlC5vggvOCn=WoO4J?2! zOO}xfO-_|apt8yB>^o^zUoS#4Y9z-Le-dvP^f3W@M3Zo(jEAbmDQ+7|o)XuLNUIip z6D1U~J&B^LNIq4eLncSkvn93E$(8IbG>J4iz;ZC2eqgz|qAI&0r@Szm)d&cSM}=5g z3N56p6LWqxc{plh>7=Ph0{(|O1w2$7`VcW<2MA(%99eLg>03v{M@S2!yoK!fDEho7 zv;ipvVigmPgF8{18ywCiq>QiwleLny(THurbQKNkj4_=iXQaraSrqZ7UC!FD(~&ii zjf^$$gtTZUCN-sq2Nq`0Y0F_`;`@@Nz{|dBC;y7ZIm9m|Hi<`v#Wt&#r?=TQ#TC+V z2N8j6_2u|G1%E9jar+-=roBXgI0Ukfk;dTbBw%agopcU;Ab1>CctlDF#j&uhjx-uI zBn1(r96?lvqWn=Cg?8sx7MAPPB|YOrtg|=s-mbafY&G>6Je3 zC8U{v=7#hjH#yuB>GEXMX$>JyaI)_eptb>yFh3R{Oa$h%IqC_sgqp~`8U~`0WG?SK_wQ*k>7!i604d7HHi)`$`|gsjO_V4 z#XBnU#Po1^7xF-GurKRdUHNTexesCyt*8D0o=2e=El46M_Wn`Eu^TWffgn-5$4Nsg z?periHit7YXa*C*%pmj(gZ$G9J!qfOY11I_blH~ynIck+Tnb2I>tF8Ae`hsGJzAJCwOOpxDQjtdx!V^KgGtx<+!cPjDM7Rws z+bp}dhKwz}=($ZHWwH{@Wu&|qtIyy&P(lUGd7HN~jpL?^=_CFV_5Wy_ zEn=pEj}wyo_CnHsBs--oaY(1m?A(i1G^3{p>=3QY_mMKxByy(Ub~iP8o7*;;9~2~c zgZWNNZ%}{n59)6sbQ7dGXjrqtlKe<5ql3@4Wj8|n z!91fc5n7f%tVgpUw6tE7tfpR=RthirOJsA{p?JFQ8YzfZRR!N|`b^Q?PZ3Fv)dmu4 zjD`u2CWr(##DBKN!bj2pYoHpHC!s2BN*5s_U@!iK!UN1FsTzK zn+-d<&XyhQNJS2$Fjg}7k~E5-F9~XiPN1*)X~g=gG;%=xO4kraRS8Y>ez_B-P_Nt$ z)A6SsM<-FyeH9KA3xxK1qB&rvS2gS;+nU|1_FGyBERu}BJ8Nz3+BhWODWu3iBcok% zF?SM)quCl8>mBym1oNaOO3_5@_)ei|f}4#IVAQXRi`2Qe6xgjE<6pG0e zj8Jk!^^_v8%lT{*q|3h5|DlZewLTC0 zp#MdB5pAVRnx{vyHYKx1UE!MSCFkprnqGZ`BV21O5^5HW-j0$itxCEMo=C*KLg?r_ zjuw*rDQ}tLRl-c4`xu5?Nrk&ejFBOdY`%EV5dOIO|4GU#Ny?3*?Dh04LM|D*ngbZ) z|6IZOKSNu||AU6x|4(Tv*pU0*r!6pcT?*zfwT{)N?_6s3)jJL^B%3Lati%T5dF>`K zGFU*Dvzp#?B0(c^-d^C3cO;A3!{j}S5c=}f2K%>P%BlAeeonwO$aL{=+*b!?fRHJk z?MsZ3O39;I{G3fUSf1-!lFja_%&?oM;9mI7_FXpIhI+gA^sQ?=VmiL>k|HbYOUq!9 zjBT@r5JRoqYjf1I3vII1$PH5+CM!V8$#3*Uxa8>{YloaVm&;=}`_v(!G4aZHP`}p% z9Vq(>`}l98z$j$-zK|z7zm1mN1{~$+o976^>APAS5Pp*gD2G)Fu?My46|NO!Uz&9v zW*lvNn5e1ZLRJVj8g_{`u#$Bi6?ueqx(IEh1LK?~kJr^;mKzZPOBEXs;tqGUFL)zN zxxR}Mc{Da1gtD{v!jdo{$$$y~#$4$htyls;hUNHGW!n4RHj&DXE};s_fe1yCB`UsB z0iUX*`%V(4EdqNLj4z`;^gd4b$X#+Kh1=y%(U%t^ z3{(D45VMCt%713`=r6tstaMWnrBJ5MS)ui`fOmW3u_4J*i5%q37bMA-x;8e{r${3n z56SLrbh~QA3Ldltxt!>Bc%}s}!PS(kNU@|1-Vw8)mgfIJuWwH7$ zkT!qz7Q6$}+V!eHRYmGPO+j_%^qOao`U}#znxEH#S4U5EzgW^hs^~$9o!(js5vkp9 zDWXa4DY;CFt;s$X(eX3+kVWl*0Wu%2)hJ7ONnuHTy1B?T!(8pE_lB-baAl5aCWB-+ zWT~b;SrLRI!LMyY--N*QhtJ5A>yVZNWAl0>rkRp+nt&Q|0i$UfVC6J>o+2Fy<}rhW z;-NX&^ph+Dr+Yw--<9%fc%L8;hsp9Kam>xgb{LRHL?=0;wS0uf&3M2fhdI@LKkUn zIb~I$IB8|DPC`3$&pXKK=qs(|<)!5zkE;dpDmHm3Gu~QR5auy*+rliXEhglbmga^$ zrwS@$#EZp?f@aZDK8yS?vrx10kTN0?3JUW>$EBxdo+Jsgm;BixYhLK$saTq-)Nv8J zDiX4M(LyI$zdBA4f=b%tlF~3k>@0N0A<_#D(iWHI*bs!O(vqO@vv#K~)vjP~uV3vRrYpRL-bsYe8X7QJ7hU@yL{Z2Q1*x|H^w4 z0&_=#UE!;FZ-W2bNi?O(;M2zPqPEdOxcWQtoA4!4?nP)AO-iq~1XQ_UuM;%~#FNAH zALB1`Oe&$717$@{fi-7Dgod3$s(DCP_GG@Nua-tNyK5E!nVwo;tjeHNSx}u@I;y0o z)RG&a)i2_fhHjj!PBuu_Wu;6ydBRbOtR6uoy_G>jk+kGUINPR(-Vp5OyZ9@b(7u|! z)exG25;^09g#~j2U-b?aQSmKmW&jy7>{4iNO0FyL6&-dr+IT((Apw@k-Cuky zuyoC56!mp!M1rzAt9dQGB~o5xMjkmGB;yGAnX3G?zu{}H$oVuhq9g72bm?* zv4aiY^$XvIN`9oFlDr?&YtC+NJ2xSs5;;Av<)x7wt1rPiOdL?sTT)df-)E~BD#`><*W&=)=n1+3e4EmTAKZnpnyx)L)w4SF8mEkgwhnTK_e5wBXVxS5tj0 z6=w7fp1ih;!)tcBW<=7SUyFIM%}e<3QoMP|PiR#-!pR7e8)*qi|77>=)5NHeg>pm* zO)c}4^}f1yBZWqwrNynS^c4%ERjG)G4ixpwU9ypPRFZXXa@M+>_C)`SlWdbbuKFfg ze<{RR5zA-WBdvC{_?j|iY0HJ1rmCcQY0IK^GJ8ta)Mp|^R5UTcrdVL5*Q%iRQ-;A& z9k$43XiYq+dI6DC@?%M+Du}DgEDIukr0CL6rV`k_d>45$uZ-T=yToas33j(1!UHQC{`)jMt=fkTE!Jc|iSK^fw$*CF!PemL!75Hw7ap+Qs0^w+J) zmI>70VxGapmpih{1Y~px=6X_#n$DiS<}O0V-9rs82z;+I?vZr*Co1!RoAY6?rclWm zS`J_k#YoP1(nWdA;{AbZ-F=2ELhF0i49;tc%V#1qxAvs8bE_aDkhkPgXGUA$sgvL3 zEeNS*EMBRmapR$+WNz3Pa6Vo7eB@Ct6hIS9k|>Xz5z&ZQzQbG4G>KeucROwDMrH5- z+R*@t%n74K-(zJZv7?A1CMJ&uw~nkBROQy<(rRnCM#IqTU>gUPaHhjU5BJ%|g&R{zm;>efFyrvO^ht^y zCpSByZh<2r$sSIZc^a-vv*S^mrqKW?%SJjxCJH9c|IWe`HXgS8feh|9$Y@P1YJ??= zu7D_f#VVlknXrPh?5ckxhn-xKvIfpqyl_%2b6b2WfSH0m#rdz8kIKqY@lfAi#!Wn4 zP7@iMv>Ymycg&*sJnW3Nni`5}R3ZB+ozgG@v9klJf5jp_l1Lizn!g{GL9B+M-j?&_@S~a1gtaPVbSSHP+ZPsoqh;h{xd!5Jl1z zr4piy*qJ(-v_X=}?4m`GymdCG|3nl`S@8(Kj^?jxmfg;ry%KA+wH&>WV0T@(-Aw))KSuqAOQG!5&2w2*sczafS0kx!O&6DlyK(DjkFKy=a_OyL-udluu zELysmf$zFkntd<3zZwi=9z#jxWXa+rFT?&f18C-L+E;_Z2<&A?>^Lh~wiXR`@;;A$ zH51&;0rHtNUiCu6h!sv`S1Kh^i0|*aH~(+Zg}WY4(8(^yUmd!jvB?vVeS`aV$imIU*1Bn3Et-oc_)rRxSZkx}s)Ye3tLmh< zYMLNtP|^sv5_-kIqrahe>)ICd4vxgDDD+h=7Ar20nc#Xc5u*sl;=Zb$uDN1Qp||I? zVlQGXkt_Bw6!&Nt4O_~K=|<{La(n|{Jkv$&)%S)ldW)M}lD1EtOwOjSYA8ss#AcOj z|1nHjT(P0rR}DiZ!fS1_XoZd#f8$)6*Cu~0Z%P3DsYnY?vrY8!S|zfE{z@fR(@<8> zK~}OPQp;#D*E`cE;H7;wPs7KlfNu^#OfUl30CW-xPjfh^ilSn(RJOnk4(3E&xmA%| zvH4z97IDTArF4``NJnaIjG%wia_tj&#PL28TAF7(De}}@t6O0x8he>EugjO6oGr%q zLytuB#fX1Ul@IZRV35GxP{Gc^(y58c%-PWMi9{e)2lnhAYs%0`nK^DdjUlkJs08{} zKvp+IR>+XN%%!Q(lQ^{Bq|D}~cKiRt)FK3%L#Nlj`RR#C_g6c&lj7W@P^mAFkkiaT zC7WF;J)H5CLz7-sDjj16mJ}0b5^x275XI$t_p0yp?ZgYtlN}&sQs>=QxL!)~VgYnk z?3=jwxq|NvxGc9w(%Cj#wOqPd)Wx7{RZFXuu{e#(OJDkh`j*_#C#yze_hh%77P#;< z+G^}#J`pK+)`;!snUIs5oZ9@SIgwWR<%p|1NT?RyfW=l!7I5_+K}#Xm|IQWkRko~_ zg-k3`zJj>(fvJ^c(kj-t>g!p}aDObOzWT9@$8#&v_+Y@(nohtGuPX&hhU+wtrvJBiw`w z9dI8UFpZ^)iEX~EkYt;Oygc%XBfjB3EGOivV$LEd)nVrpHu*$$Fg4@~<%I~lx+b%k z2F)+4xw-YAaS|3IVPowt1^~0gV^wlyDft*}EMD@G7P5?aZr2oZaTBR;(Y&SS%Y-nQ2Z0(cM?SCcC5dI1g5>Ec^6ZIj;&mWfh~}n81(a=@ z8|UzUJI<>ZQ+xlI{>?~A{)3T7)$O~f=YgwI4|9^J_1wwVO5dx#1`W@-hg zaUxu$H}Ob!kz^J9q4}3Gve$h}SHA{}**fg*lT}RRkiTgrpXDjYgwVJgS3@H$OGK~P zFnY^k@mv~BC8=UEz3*;vhQ2zHUi_qPF;Xn4pX_o@5wo!)t!z90%BDvUk4E3fq+4c@ z{ZRj@le}15uC>U@GI}F5Y$b09W|~3PT5?4h0<)OR5D7^qp_Ax_X85BC><#V7LWv}a zbL~@Y=ISPMv5UM1xp`kPVvd9=_lg|WE{uIelw_)GUd%MIuuO|ch?2t~l6wNf{CBFE zN02TXXG^h*T+tpUn48ydp?x)LIZH==Vo(0`z-Cu=V1&h~4q)kEUoI1+ae93jcgE--_UHg&Fw)X zBR@&jWvtxo3%2S1b%zE-IVrFC}b$sbZWsywVGuC+#hGqRsXjBkPytZb%lP zI#-s>do?m7{2gE&MRR4*oJNHsA>$z;Q-!{BBlHa|sj~X3CZ7x;FOIMGq&MGNaP~yC zFqGRxdkNfPmc8m{aer@}tl|MAbs7IZ_TD{4t}ML|yWG7yJIkG!o#AjE%i+vi_Uz1X zcDp&nez2R(?k4-iho;$0clR_`D@D-ls@v>ZR#%nkR*~$r60a3oRuoybv4Z3XM)Zgw z7+OIw90xE$BQOj{F^s^71tkyy+ekJ*kmL^~5RCkxKZ2a^abEYHd+(`cle;6t;}yy7 zs`LEL_x^q#q&b4;M`uDLDKE$|enN28&QS z99#}+@Si@Ln~Q7F6^xs<&W+zQ&l;7Nq}1Eq6NO1Bz33c6?r_3-DkY3n~tXSZbj@am&(ODOie z=x)OQuXM}j!#5aC0#xA}60ubL-?u>N3&s$>bJ2(!onGtI_oH>t@mAZ|vY^5WzQ(6Y znWs0|1vsN<)&7yD93+SDRy4K%?NTg>zUsVTb4*a&eu+IS!YMzc|R%r77Y z%c3v?uA5Pi+nsiQzwCQI37IH|=oONGD(h0#T~DC78LHRqf(+M|^CCvESfn&yp7azhf_YP2aO zc{%UT&Zyyx43SPFmy7g~g2g+9I}TWVATQZi&<4p!(C0D@#Rm|+Owi}!F~jI`r#EGM z#Z#Gk-I_A5Sbd2HEWd`cj!~Q>31d~?z!^r;cDTj0g_NbZQf?B3uLzzvOQV*S8NQ<3 zcjRTPkXz?+p5$8T_+QcEZ-H~TeDsVB9(*6Gx`1y_$XtSOGI*@-A6*=`(&&1#o%k5# zOGXpX8P(5Mx4bE6rKP+s3x-bn)orL*X8{Phtp&7DthrI1?5H%qLye(BJ~G{e3B(uJ zY7{`Lg}Tc5O`Kb3Yyc7tN89PPpe0o4=HFB)x;kMRAAlxV8di+fEmsBGYN)J0Hlf$3 zr0^2x9YKVwYKNg-hzm}rKFT+Yf9I_Wec|um0zUr6iKT zUJV~M@im)&y0ZYZT0@DWJ`D5)tTg6B(~8}82dJdnNP@>Sp(v4}N3x_zn@KXqT9;d{ z8Qc=55o&zWz8Bw1Dvx2(F)8sZi4Ub+T#`)mbg!xD$Z7x=K+-OktH$YMU1|oCqH$rk z(&c|WvwRz;ah%mtn^sTh!GT=2o8@+W+w)p%&`Kg&g~!JtpUlB24n4{-=bTUKEG={O zAnDyp+Vw*yIlT|gVCdag{+@j42vp&1wDl(~z@ArlYCjU1^PF!MO{UpU7IWHBV4f2r zz{~s1Uil+i@SKwl9Bjo|u0OD6{faT`%})88{`-W>EZXNOW5%tY86@%j3eSn}q}Pz4 z(Fks@I-o{Cg!!Q2P1#S>#1qo^tT!!N;8mL9cHC@%{+ft)TdG`K$ZX5(-tJJ_ zviBuj5~ceXuiy=mrA>u-1V%nGlxo|(7%JgP{Q<$J!9(%CRA;V#`tZ|=*pc)Gyc)h0 zejJ|GUzG);#Y!~UCgUs$O&=`*NnH#s2UCHLB)zoLOraBXzY|@&JT+A=zPKC#xPo4j ztVk&Kh-8ZhzMyIdijRQvGjr2@p40w|rN|pp`RdZ=HA~Uut;td+JIkz)uB6QUL4g zV4O<01M0U$JhO&6E1HigQ_)6|fMc06IUNG0QmV!>YWY;vw-e|jKWx0KOgZ|F^u6Z& zv+_#qB78^-kwCJ#5!Eu%y+o~0Fr4BO+D-G9;F4Oc&O-w@60c;?26K2Hf&sk<62~AE zFz6+e1j$ep{rz62-*2JG-iy-x0k=}aadC+J`0 zJN{TTvL4Si$7Ujhh~mw#X85o3X7UW*#tzyy5&$EccELa^h71E+Y}J`qxhhWYrZ_vu z@W4$mO^aPpVQ9Puk*(bXQ*2`J1u*IXKZ0sH4}Rx|a0V{m8e#=CtZSEU*B!^1+&c1^ z05XUFx%^v|jjH!zWnWmQQUq)3J|AL{2$PQc)J@B=`was5&IUSx$jn=R&To1Ey$@9I*?t_EEOIY&@V4G| zxQz^5h1u0SpE|f~)>Q(k1o~cf+zx!-Xh@M2#eqydT4n`e935lY3Lu)8v&sr=s>mPG zT{t8OFxTIwp6cMe6WXjLhJ_4HN24wvWg|8YfvF$FZE>dQumti?p7NH5qVgxwnh%5U&E zzcnR>t4?7U1p*2kwzZ7ZD<4`-*gb~zxpI$OH}G-As)rNg|I(;~q1U&QU3KZ2iLQ!; zE1?%?W~kr0Og~>_oU|Qoz`JIs=Uf7dGwxsrm2$KsHXoH@-F2MO0i4pH*EW?PK)AAQ z7Rk}Z<9i7HMQT@>;$dLlu;*1l#e4@tPGOzLsQf5(t}HZqikuC`^_Jj1tS;jpvt z-j7ue3I*)p{9YDD`?2H1HpGd2iW1Py;1u@Ah=jkEsNf^m$R!aU6>85&794xT!+;z& z6iAb@$k>9yrdck6)aI3ide3yQjGpBy*l`-8i+Gv}(gh{NC2+C@?#wbB3X}9DBbv6V zO45mFS*!T&k~vem(db;0NXv-Orn2WjB>Fb5EF{d|}Y3#TGDUZr$7{|(YN;tVzpl=k-^qQPW92KhX;54o9ntd(X z5=4xD1?kNd3Hi!OGesbmwa&eJoQX5s*l(+bU5smLqzd!c8*M}o-DtNCt8ODd{y1~o z;)Xsv3o((3+xP%yAmw&}`b&knYl+fhbZ$3fMvnaj(p~L@rQ%5@*@-+GUO}&p^f}Fk zvYEz?OjTgUVjkP6wa&va?xGPb3ks$dF2&PbvpvaAz@n#mZu;Vgw(Qu(q<%{n*-t3|sTP>o<9p zZPvy;FFMObhq>T4a#Q-;ZiEG=m)JSvK;_dB^)2vk?jB;EO4S|fo>VhVhJzVjeP2#< z7BivgoM#HhdXqT8e zLcS~V=#r(K5J))IVu1!Par6i6&Te1mZy=@1&*ntnJR9ktv(LrtvMW9#X{Mk7P|^=5 zqg)4sBtVEYy5ZS0o+Pcx%%YOW6f1(JfO0RJ=C_LW&+>hu5n`-G-@@M*{uaoONB~Vj zRkvCRp^7bx(E2_N)ja6Nb!djRJ3ze;Z%$|$&3ZF#Md_g1?FcS}gX1_AG+l<$^qT$_ zEO~1nhU*>T*GhnzO1@Qz)#UkIH(XQ6m%S02O2#-HMA=bFV4F$?Do1Ye`l1uOscip& z4}Me00A3JICEs616sN4$V%#hBG+Q~oVt_R#VLcVQL(UN1Pm#e<>=+#C4qh#oD>d>Y4JK0}JvM&CLcx-eXOC8~H(b?T$^6GyxK}dETKIZs_FNs$ zR9DGPtXy9eXt-k%(Hcg^tZjL7y%SjlSkawUe8{CPC95f|XDj*MxPwfyJJD*6on-o& zy-+^_KF0cyl3AW^MtaG_$C-LrcHPD4ilt|N3~7g@4EpFveP!BIz&OvLiA}7rp7mF` zj>68+%RxkUI#pjQ$8@gvVpeN=E^=sWxo`SFFjs7}0C~COTQ3Ji7{p&RAc!kgU75>R z^8MfCKuLt|6tJj>CGP0(n93c<2g)_f0kE#QK!@E_J2%x#sK`fUbn6yWyTMdjh9LI| zCLcZk9iS1V{Um|vK@}+Gz!_rs34S%!9|)!e(RWStWK*dyQpxfBv?CEw_TzC^!O@YK zsfddhYnkBWy`pIGhbmc5uM<0{z;2)wwbz1A+~ftH2^ZK~GLNEVn>{Fi-@L&Kk!`x< z9k~)A)I!DY-!LGSq@&0Vp($DjsI%4;yk|K-g{`ijcO10m>nt6_T7oNlc<_^=(Z?}) zVIhdP1Y|B;Vo$*ZT%FA8B8AFIHISKK_;Wjp&K+FV;jq5~n5CTqaVaTwJA$~aBD%d^ zv#yd1giQgZ0cj!wW)Jt11n@eW_4{em1{BFUg8p9-2D$!ZvmbrC3GuJ=LIjblF~FN_ zL(eeiN4OUcS_HmaLZ-iGgn+g0ftt=yo?6x-G4of)*`3P07&w)q#=j*m<}AN&=V@_Q zG|esiNPdT)E91jxH|ambd|?Qwr_Fm%_J+;p2%$ozm8R%3?d)N1IvH2Tx54kk=Slw= zpVfQDiEvT^>L{E6g&v(LgQl%gOQg(s<+Y-27cwb6_vpn&2 zmGD5Xe;Iw}-Aa@u)1EbYZ@jVRgjSaJ{X(^tYBV{8XB4SsqjC_*eT zQ#a>~xZia{!FQ!yOtI(IEL+dt*LTEyUGMbj$ykG9%jyO`OrsW<@xWz3gOCleMy@l% zA3>%xBI|}tKppzkAWc+K#DlmsNMufn&&&AZlG|L)zZTT6Ap*x;=?l2DEEj$Dcbq@_ zpHOF?w2$%VJr4JCCyi{$MWYgs1lNr8Bo-WpB+>~(skuS{D5cU$Y=Suo`MZQ*Kt&+8 zoTN(1IQ@+BjLfv%OSpnX6w0I`No35O%qPK+nGR|p3&_Hb6hEW zHz`;s*mWP03ZV1>;6bU$E9iMGNbrTjWQ2@yAEj_N2}Bj!N*5O@;H@UN$td zO$2f<~E%xT)f7~QZY zURUMR0wb4iOJ*d_;*yq(Sje2=h|@ufIr+{4ik8$^d~D;j&MWm_U2df*sEvOY57ItN zO)gMr?Kb?}V`+XJ z287?;gZ}f0wk(g#9R9v?=x_t0U|2_veOCI;hj;C4fH%89iqgGpXBsrzZl*$-!&B%C z(n8;k>eW#0->EpMe{LyRI+1C36T~ME_^!o-WSPw9hw;2vYiv5lLG6}co!}v z3kLO_7&K3p{b48S5>L`?ns*Tzqnk7Y(-rax;i&!0xCiCu=sdHdpP0J?2JKqWi({)k zJNf;J3Njaekgd?@h3yoISW_pQ;M{X^x6bhIHWZhX+)#69U9RX7HMfnbvjXwjY>W4T zA|`6by&kG1*kV#1(!*w>zwdKMzo-t$W-9q>-YH=kC00nrBkX9(ojZUfC>wg3j^Go2 zWC`7Q3?XSHS$f%Q@kSmqQ`{1pT~@!dKQHn7u3&Jqb|l|xww>@~M#N3yZ)+F;U9cY5 z4Ey&kGE<-8M|m;S9eU=5^wU<)Z<_}88Wxd0F7n!*reOcCx#+2vv{2Vf_nTeilvG@W z+_^pIL@2$InD9yM@w5a>k@llcBo zRe}?;Ku9JoNNSzs6Pd@D?0ONab_#HbB5$jWr6p!wRGc4SP0b`t?j6jrp`6Jb&d`$- z;76Z3oXQPvS<;Y6FGbYd6nFg`UThgBC6*07-g9FUKWVbkXX%`vA-lPY zACf)WPYOuy+k=Dd;gRX>Yeo!8d$}p0n~<^?B0cziur4TT5cGmrP*#Nh>IV-oN#(xy z_jU2_Bxr~~;U^CfJ+pxdm&~c$7C!~5Ofk0;GA#W}htWdCMEdW|m5v&>I;DiZOh(tm z!@^Zb?dl>f`Bhdi>!%GPV z_5#`!>{}S6UytpI>ofwReJHAe7V+FqT9b=aUR)yb|B13GrtlG7v06R3FJYb&WEWYh z+sW9bbVOO(R9;&25x#WDc9`H$Jhr@$Es{$0QR_8u(bn zBLtU?Jk4f1st$cLJNwo%_9okE zc*HVq*llfAhqX%*ex1%yQ2ccbFpPJT)EYAaDP$N0Lx-+ZBidJ+s%W)foWe#Zvvz)Lu?+LwieNh;^XWM z>U}%C1wYbC_WB=VRi4kA`=3-t+Zo0loMTUQj@K0dRXfp?w0C=+wP8C>tgAb-m`W0P zk-MYvSc|AT$Z927JT7gUaz_qye08dRz2ra$^HiR&jvd3r#4-{l7@he4hDS$yp_dHf z(}^6ZB(iNSs71P*@TJ9ie}GeBDo4e*H94*>m<`9_?^sI6Dz*4G_zm9=E*jN+XYF~S z^DCr`&PMNF{HS8q3o^Y8XBGSaU;lhK;npj33aZL7lflMqj7L^X_ko||Q0HUjoOKlw z%*YaWOGwlVZdG%0D2U{${bakSYa4(uVPG_45w}IH*q;|$pWrF(E|8T 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

  • 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%0DDp;TEra{W!u*B&T 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Ç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

    fKz`vB>io+icsi54+4Mar(fb+T`o!OCES~A z=s*De55Os3{lDOR-7D|@0yz1NdyZp!)8~BeQ#kbI+DF%UJoD*%3#YE(eT*wY|8+$#KWrZ-oxthFUH8YOfK$3h?(bC85sBaO zGKJe1$k*G1e(H@(ulphQ3VvAD0ks`=oGAHy68j~Mmw}Vsu9SP#C0n6a1NSSJF9hJ< z7yfZMFB2CzPkgXHpB{z7Ps;qQwue#x{a1zlsKjMDlZz*G+(S5D$4=mNw{xT(JrTIl z=RKSYJsyb*9+J3QXNsI@;dAIR=lJL{!QH!ZrFdS$sO_VZ#44T#iSCzFTnjJx3P+C;n5f z=v0(?f06NUs;AfwFZ(2;!sl;+E4}?4`=u$-=UWsmM7EC)04M(OKXJaaK0hyf3ZG;7 z?nf4dDh$$8{1Zbxnwd43C=#)+MBAK9w}UwI^_8~+3M z)1nD}@Fs-|k?rGO1Mq(bPX6{X@wd8t{E6^CB)oAQtL=pZMfX^wXN_~8TvwWYd@KZv+cJ&*FfD`{i5@%lP=SJX^Uw1s)yEXn? z_5-?of6Ako&%uZAxMN=O^-sWwPpFIap#8~v74Fr;9m1#Mf==}?E+oGKPWlP$XZ?i4 z5RZEd@%R2cO5xDkw>#Ctu#jW~FI*+{QSg@ve&nAS&kBCE;PZdQ@(&6AF5s$M%4aI% zJgL{GKh|HKX96erua$KlJ@)AjpuZph|2u`FpZr-)_ZE@o5O9*`@HxDqbdlgU16Tf8 z=Hay-ej334VW)9<9dqp;9u@qk>@(E-^MZH2o%J>;>Aq6%Yh-<4Meu8YlblB$&Gf5+ z|EHptAGVLPAII{9KgKmHd?G*00ayL@zhFDp`FbO8;@{!g$MR*3%XpTx2VST9m)8>% z4n6;z?Of+~B!GT40RIQzB+o&K!`UHu`%M7-Qy$OxUHMDak6v#&Pvd{Z_m-T;=;17F(=;wa+&nx0rM-=Ym^VR_Tv%rae z=s%tPoO^-mx@qTTJkj4yb}Ag>nqi(N(RP>zPW)F7vYgs}UMBQ6zmWaOm6FIC1P^_H z^Q-;vzY3oz*L`hI{|mPNqy0`lKL}ju?Q4%xobM6-7XzpE_l*+I=h=e4P3Sx1-seht z4V?V;O|ND-ua)-h#7@S~`Yz+25-`Fg6x^Ne35`Fas>zxHTZ=vVi!oNO(j(7P2q{Gsby(oF$; zekObhXL5bi^&;^U*2CdH;|UcV-}R-yl^s5j?NHAPeL(Q3=de6ii~Q$5mHEVvW4xc6 z^U&)A@4STdd9QRR|6Ad<0+g@EJ&pOS6qtTQ@E+hK&mlQ4ȤfTH*E`H;{T;+)^I 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໎m-e=n1v8I?=iql=Cq`a!K|qP~L8OM|?JZn%zmo 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 Paqq4i@};Cf^0D%Ntva?! diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc deleted file mode 100644 index ec0896d3d..000000000 --- a/selfdrive/ui/ui.cc +++ /dev/null @@ -1,522 +0,0 @@ -#include "selfdrive/ui/ui.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "common/transformations/orientation.hpp" -#include "common/swaglog.h" -#include "common/util.h" -#include "common/watchdog.h" -#include "system/hardware/hw.h" - -#define BACKLIGHT_DT 0.05 -#define BACKLIGHT_TS 10.00 - -namespace { - -enum class UIStallPhase { - INIT = 0, - UPDATE_START, - AFTER_SOCKETS, - AFTER_STATE, - AFTER_STATUS, - AFTER_WATCHDOG, - AFTER_EMIT, - AFTER_FS_UPDATE, - IDLE, -}; - -std::atomic ui_stall_last_progress_ns{0}; -std::atomic ui_stall_phase{static_cast(UIStallPhase::INIT)}; -std::atomic ui_stall_frame{0}; -std::atomic ui_stall_reported{false}; -std::atomic ui_stall_reported_ns{0}; -std::atomic ui_stall_reported_phase{static_cast(UIStallPhase::INIT)}; -std::atomic ui_main_tid{0}; - -double read_env_double(const char *name, double default_value) { - const char *value = std::getenv(name); - if (value == nullptr || *value == '\0') { - return default_value; - } - - char *end = nullptr; - double parsed = std::strtod(value, &end); - if (end == value || (end != nullptr && *end != '\0') || parsed <= 0.0) { - return default_value; - } - return parsed; -} - -const char *ui_stall_phase_name(UIStallPhase phase) { - switch (phase) { - case UIStallPhase::INIT: return "init"; - case UIStallPhase::UPDATE_START: return "update_start"; - case UIStallPhase::AFTER_SOCKETS: return "after_sockets"; - case UIStallPhase::AFTER_STATE: return "after_state"; - case UIStallPhase::AFTER_STATUS: return "after_status"; - case UIStallPhase::AFTER_WATCHDOG: return "after_watchdog"; - case UIStallPhase::AFTER_EMIT: return "after_emit"; - case UIStallPhase::AFTER_FS_UPDATE: return "after_fs_update"; - case UIStallPhase::IDLE: return "idle"; - } - return "unknown"; -} - -std::string ui_stall_dump_dir() { - return access("/data/log", W_OK) == 0 ? "/data/log" : "/tmp"; -} - -void write_stall_dump_section(int fd, const std::string &title, const std::string &body) { - std::string output = "== " + title + " ==\n"; - output += body.empty() ? "\n" : body; - if (!output.empty() && output.back() != '\n') { - output += '\n'; - } - HANDLE_EINTR(write(fd, output.data(), output.size())); -} - -void write_ui_thread_snapshot(int fd) { - const pid_t tid = ui_main_tid.load(std::memory_order_relaxed); - if (tid <= 0) { - write_stall_dump_section(fd, "main_thread", ""); - return; - } - - write_stall_dump_section(fd, "main_thread", util::string_format("pid=%d tid=%d", getpid(), tid)); - - const std::string task_dir = "/proc/self/task/" + std::to_string(tid); - write_stall_dump_section(fd, "main_thread status", util::read_file(task_dir + "/status")); - write_stall_dump_section(fd, "main_thread wchan", util::read_file(task_dir + "/wchan")); - write_stall_dump_section(fd, "main_thread syscall", util::read_file(task_dir + "/syscall")); - write_stall_dump_section(fd, "main_thread kernel_stack", util::read_file(task_dir + "/stack")); -} - -double ui_elapsed_s(uint64_t now, uint64_t then) { - if (then == 0 || now < then) { - return 0.0; - } - return static_cast(now - then) / 1e9; -} - -bool ui_timestamp_anomaly(uint64_t now, uint64_t then, const char *context, UIStallPhase phase, uint64_t frame) { - if (then == 0 || now >= then) { - return false; - } - - LOGW("UI stall monitor timestamp anomaly (%s now_ns=%llu then_ns=%llu phase=%s frame=%llu)", - context, - static_cast(now), - static_cast(then), - ui_stall_phase_name(phase), - static_cast(frame)); - return true; -} - -void ui_stall_progress(UIStallPhase phase, uint64_t frame = 0) { - const uint64_t now = nanos_since_boot(); - ui_stall_phase.store(static_cast(phase), std::memory_order_relaxed); - ui_stall_frame.store(frame, std::memory_order_relaxed); - ui_stall_last_progress_ns.store(now, std::memory_order_relaxed); - - if (ui_stall_reported.exchange(false, std::memory_order_relaxed)) { - const uint64_t stall_started = ui_stall_reported_ns.load(std::memory_order_relaxed); - const UIStallPhase stalled_phase = static_cast(ui_stall_reported_phase.load(std::memory_order_relaxed)); - const double stalled_for_s = ui_elapsed_s(now, stall_started); - if (ui_timestamp_anomaly(now, stall_started, "recover", stalled_phase, frame)) { - ui_stall_reported_ns.store(0, std::memory_order_relaxed); - } - LOGW("UI stall recovered after %.1fs (stalled_phase=%s current_phase=%s frame=%llu)", - stalled_for_s, - ui_stall_phase_name(stalled_phase), - ui_stall_phase_name(phase), - static_cast(frame)); - } -} - -void start_ui_stall_monitor() { - static std::once_flag once; - std::call_once(once, [] { - ui_main_tid.store(static_cast(syscall(SYS_gettid)), std::memory_order_relaxed); - ui_stall_progress(UIStallPhase::INIT, 0); - - const double stall_probe_dt = read_env_double("UI_STALL_PROBE_MAX_DT", 5.0); - if (stall_probe_dt <= 0.0) { - return; - } - - std::thread([stall_probe_dt]() { - using namespace std::chrono_literals; - constexpr auto poll_interval = 250ms; - - while (true) { - std::this_thread::sleep_for(poll_interval); - - const uint64_t now = nanos_since_boot(); - const uint64_t last_progress = ui_stall_last_progress_ns.load(std::memory_order_relaxed); - if (last_progress == 0) { - continue; - } - - const UIStallPhase phase = static_cast(ui_stall_phase.load(std::memory_order_relaxed)); - const uint64_t frame = ui_stall_frame.load(std::memory_order_relaxed); - if (ui_timestamp_anomaly(now, last_progress, "probe", phase, frame)) { - ui_stall_last_progress_ns.store(now, std::memory_order_relaxed); - ui_stall_reported.store(false, std::memory_order_relaxed); - continue; - } - - const double stalled_for_s = ui_elapsed_s(now, last_progress); - if (stalled_for_s < stall_probe_dt) { - continue; - } - - bool expected = false; - if (!ui_stall_reported.compare_exchange_strong(expected, true, std::memory_order_relaxed)) { - continue; - } - - ui_stall_reported_ns.store(now, std::memory_order_relaxed); - ui_stall_reported_phase.store(static_cast(phase), std::memory_order_relaxed); - - const std::string path = ui_stall_dump_dir() + "/qt_ui_stall_" + std::to_string(getpid()) + "_" + std::to_string(now) + ".log"; - int fd = open(path.c_str(), O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, 0644); - if (fd >= 0) { - char header[384]; - const int header_len = std::snprintf(header, sizeof(header), - "phase=%s frame=%llu stalled_for_s=%.3f now_ns=%llu last_progress_ns=%llu\n", - ui_stall_phase_name(phase), - static_cast(frame), - stalled_for_s, - static_cast(now), - static_cast(last_progress)); - if (header_len > 0) { - write(fd, header, header_len); - } - - write_ui_thread_snapshot(fd); - close(fd); - LOGE("UI main thread stalled for %.1fs (phase=%s frame=%llu now_ns=%llu last_progress_ns=%llu dump=%s)", - stalled_for_s, - ui_stall_phase_name(phase), - static_cast(frame), - static_cast(now), - static_cast(last_progress), - path.c_str()); - } else { - LOGE("UI main thread stalled for %.1fs (phase=%s frame=%llu now_ns=%llu last_progress_ns=%llu dump_open_failed errno=%d)", - stalled_for_s, - ui_stall_phase_name(phase), - static_cast(frame), - static_cast(now), - static_cast(last_progress), - errno); - } - } - }).detach(); - }); -} - -} // namespace - -static void update_sockets(UIState *s) { - s->sm->update(0); -} - -static void update_state(UIState *s, StarPilotUIState *fs) { - SubMaster &sm = *(s->sm); - UIScene &scene = s->scene; - - if (sm.updated("liveCalibration")) { - auto list2rot = [](const capnp::List::Reader &rpy_list) ->Eigen::Matrix3f { - return euler2rot({rpy_list[0], rpy_list[1], rpy_list[2]}).cast(); - }; - - auto live_calib = sm["liveCalibration"].getLiveCalibration(); - if (live_calib.getCalStatus() == cereal::LiveCalibrationData::Status::CALIBRATED) { - auto device_from_calib = list2rot(live_calib.getRpyCalib()); - auto wide_from_device = list2rot(live_calib.getWideFromDeviceEuler()); - s->scene.view_from_calib = VIEW_FROM_DEVICE * device_from_calib; - s->scene.view_from_wide_calib = VIEW_FROM_DEVICE * wide_from_device * device_from_calib; - } else { - s->scene.view_from_calib = s->scene.view_from_wide_calib = VIEW_FROM_DEVICE; - } - } - if (sm.updated("pandaStates")) { - auto pandaStates = sm["pandaStates"].getPandaStates(); - if (pandaStates.size() > 0) { - scene.pandaType = pandaStates[0].getPandaType(); - - if (scene.pandaType != cereal::PandaState::PandaType::UNKNOWN) { - scene.ignition = false; - for (const auto& pandaState : pandaStates) { - scene.ignition |= pandaState.getIgnitionLine() || pandaState.getIgnitionCan(); - } - } - } - } else if ((s->sm->frame - s->sm->rcv_frame("pandaStates")) > 5*UI_FREQ) { - scene.pandaType = cereal::PandaState::PandaType::UNKNOWN; - } - if (sm.updated("wideRoadCameraState")) { - auto cam_state = sm["wideRoadCameraState"].getWideRoadCameraState(); - float scale = (cam_state.getSensor() == cereal::FrameData::ImageSensor::AR0231) ? 6.0f : 1.0f; - scene.light_sensor = std::max(100.0f - scale * cam_state.getExposureValPercent(), 0.0f); - } else if (!sm.allAliveAndValid({"wideRoadCameraState"})) { - scene.light_sensor = -1; - } - scene.started = sm["deviceState"].getDeviceState().getStarted() && scene.ignition; - - auto params = Params(); - scene.recording_audio = params.getBool("RecordAudio") && scene.started; - - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - - if (sm.updated("carState")) { - const cereal::CarState::Reader &carState = sm["carState"].getCarState(); - starpilot_scene.parked = carState.getGearShifter() == cereal::CarState::GearShifter::PARK; - starpilot_scene.reverse = carState.getGearShifter() == cereal::CarState::GearShifter::REVERSE; - starpilot_scene.standstill = carState.getStandstill() && !starpilot_scene.reverse; - } - - if (scene.started) { - starpilot_scene.started_timer += 1; - } - scene.started |= starpilot_scene.starpilot_toggles.value("force_onroad").toBool(); - scene.started &= !starpilot_scene.starpilot_toggles.value("force_offroad").toBool(); -} - -void ui_update_params(UIState *s) { - auto params = Params(); - s->scene.is_metric = params.getBool("IsMetric"); -} - -void UIState::updateStatus(StarPilotUIState *fs) { - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - if (scene.started && sm->updated("selfdriveState")) { - auto ss = (*sm)["selfdriveState"].getSelfdriveState(); - auto state = ss.getState(); - - const UIStatus previous_status = status; - - if (state == cereal::SelfdriveState::OpenpilotState::PRE_ENABLED || state == cereal::SelfdriveState::OpenpilotState::OVERRIDING) { - status = STATUS_OVERRIDE; - } else if (starpilot_scene.switchback_mode_enabled && (ss.getEnabled() || starpilot_scene.always_on_lateral_active)) { - status = STATUS_SWITCHBACK_MODE_ENABLED; - } else if (starpilot_scene.always_on_lateral_active) { - status = STATUS_ALWAYS_ON_LATERAL_ACTIVE; - } else if (starpilot_scene.traffic_mode_enabled && ss.getEnabled()) { - status = STATUS_TRAFFIC_MODE_ENABLED; - } else { - status = ss.getEnabled() ? STATUS_ENGAGED : STATUS_DISENGAGED; - } - - const bool selfdrive_visible_alert = ss.getAlertSize() != cereal::SelfdriveState::AlertSize::NONE; - bool starpilot_visible_alert = false; - if (fs->sm->rcv_frame("starpilotSelfdriveState") > 0) { - const auto fpss = (*fs->sm)["starpilotSelfdriveState"].getStarpilotSelfdriveState(); - starpilot_visible_alert = fpss.getAlertSize() != cereal::StarPilotSelfdriveState::AlertSize::NONE; - } - - // Standby mode should wake for any visible onroad alert, not just elevated - // alert statuses. Calibration uses NORMAL status but still needs to wake. - starpilot_scene.wake_up_screen = - selfdrive_visible_alert || - starpilot_visible_alert || - ss.getAlertStatus() != cereal::SelfdriveState::AlertStatus::NORMAL || - (status != previous_status && status != STATUS_OVERRIDE); - } - - if (engaged() != engaged_prev) { - engaged_prev = engaged(); - emit engagedChanged(engaged()); - } - - // Handle onroad/offroad transition - if (scene.started != started_prev || sm->frame == 1) { - if (scene.started) { - status = STATUS_DISENGAGED; - scene.started_frame = sm->frame; - } - started_prev = scene.started; - emit offroadTransition(!scene.started); - - if (starpilot_toggles.value("tethering_config").toInt() == 2) { - fs->wifi->setTetheringEnabled(scene.started); - } - } -} - -UIState::UIState(QObject *parent) : QObject(parent) { - start_ui_stall_monitor(); - sm = std::make_unique(std::vector{ - "modelV2", "controlsState", "liveCalibration", "radarState", "deviceState", - "pandaStates", "carParams", "driverMonitoringState", "carState", "driverStateV2", - "wideRoadCameraState", "managerState", "selfdriveState", "longitudinalPlan", - }); - prime_state = new PrimeState(this); - language = QString::fromStdString(Params().get("LanguageSetting")); - - // update timer - timer = new QTimer(this); - QObject::connect(timer, &QTimer::timeout, this, &UIState::update); - timer->start(1000 / UI_FREQ); - ui_stall_progress(UIStallPhase::IDLE, sm->frame); -} - -void UIState::update() { - ui_stall_progress(UIStallPhase::UPDATE_START, sm->frame); - update_sockets(this); - ui_stall_progress(UIStallPhase::AFTER_SOCKETS, sm->frame); - update_state(this, starpilotUIState()); - ui_stall_progress(UIStallPhase::AFTER_STATE, sm->frame); - updateStatus(starpilotUIState()); - ui_stall_progress(UIStallPhase::AFTER_STATUS, sm->frame); - - if (sm->frame % UI_FREQ == 0) { - if (!watchdog_kick(nanos_since_boot())) { - LOGE("UI watchdog kick failed at frame %llu", static_cast(sm->frame)); - } - // Re-pin to the little cores: power-save can offline our core and the - // kernel may rebalance us onto core 4 (the realtime control loop). - if (!Hardware::PC()) { - util::set_core_affinity({0, 1, 2, 3}); - } - } - ui_stall_progress(UIStallPhase::AFTER_WATCHDOG, sm->frame); - emit uiUpdate(*this, *starpilotUIState()); - ui_stall_progress(UIStallPhase::AFTER_EMIT, sm->frame); - - StarPilotUIState *fs = starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - if (starpilot_scene.downloading_update || starpilot_scene.starpilot_panel_active) { - device()->resetInteractiveTimeout(starpilot_toggles.value("screen_timeout").toInt(), starpilot_toggles.value("screen_timeout_onroad").toInt()); - } - - fs->update(); - ui_stall_progress(UIStallPhase::AFTER_FS_UPDATE, sm->frame); - ui_stall_progress(UIStallPhase::IDLE, sm->frame); -} - -Device::Device(QObject *parent) : brightness_filter(BACKLIGHT_OFFROAD, BACKLIGHT_TS, BACKLIGHT_DT), QObject(parent) { - setAwake(true); - resetInteractiveTimeout(); - - QObject::connect(uiState(), &UIState::uiUpdate, this, &Device::update); -} - -void Device::update(const UIState &s, const StarPilotUIState &fs) { - updateBrightness(s, fs); - updateWakefulness(s, fs); -} - -void Device::setAwake(bool on) { - if (on != awake) { - awake = on; - Hardware::set_display_power(awake); - LOGD("setting display power %d", awake); - emit displayPowerChanged(awake); - } -} - -void Device::resetInteractiveTimeout(int timeout, int timeout_onroad) { - if (timeout == -1) { - timeout = (ignition_on ? 10 : 30); - } else { - timeout = (ignition_on ? timeout_onroad : timeout); - } - interactive_timeout = timeout * UI_FREQ; -} - -void Device::updateBrightness(const UIState &s, const StarPilotUIState &fs) { - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const int screen_brightness_onroad = starpilot_toggles.value("screen_brightness_onroad").toInt(); - const int clamped_onroad_brightness = std::clamp(screen_brightness_onroad, 0, 100); - - float clipped_brightness = offroad_brightness; - if (s.scene.started && s.scene.light_sensor >= 0) { - clipped_brightness = s.scene.light_sensor; - - // CIE 1931 - https://www.photonstophotos.net/GeneralTopics/Exposure/Psychometric_Lightness_and_Gamma.htm - if (clipped_brightness <= 8) { - clipped_brightness = (clipped_brightness / 903.3); - } else { - clipped_brightness = std::pow((clipped_brightness + 16.0) / 116.0, 3.0); - } - - // Scale back to 10% to 100% - clipped_brightness = std::clamp(100.0f * clipped_brightness, 10.0f, 100.0f); - } - - int brightness = brightness_filter.update(clipped_brightness); - if (!awake) { - brightness = 0; - } else if (s.scene.started && !starpilot_scene.wake_up_screen && interactive_timeout == 0 && starpilot_toggles.value("standby_mode").toBool()) { - brightness = 0; - } else if (s.scene.started && screen_brightness_onroad != 101) { - brightness = interactive_timeout > 0 ? std::max(5, clamped_onroad_brightness) : clamped_onroad_brightness; - } else if (starpilot_toggles.value("screen_brightness").toInt() != 101) { - brightness = starpilot_toggles.value("screen_brightness").toInt(); - } - - if (brightness != last_brightness) { - if (!brightness_future.isRunning()) { - brightness_future = QtConcurrent::run(Hardware::set_brightness, brightness); - last_brightness = brightness; - } - } -} - -void Device::updateWakefulness(const UIState &s, const StarPilotUIState &fs) { - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool standby_mode = starpilot_toggles.value("standby_mode").toBool(); - const int screen_brightness_onroad = starpilot_toggles.value("screen_brightness_onroad").toInt(); - const int screen_timeout = starpilot_toggles.value("screen_timeout").toInt(); - const int screen_timeout_onroad = starpilot_toggles.value("screen_timeout_onroad").toInt(); - - bool ignition_state_changed = s.scene.ignition != ignition_on; - ignition_on = s.scene.ignition; - - // Standby mode should extend the current wake window for alerts and status - // changes, but it must not clear the timer every frame or manual wakes will - // collapse immediately. - if (ignition_on && standby_mode && screen_brightness_onroad != 0 && starpilot_scene.wake_up_screen) { - resetInteractiveTimeout(screen_timeout, screen_timeout_onroad); - } - - if (ignition_state_changed) { - resetInteractiveTimeout(screen_timeout, screen_timeout_onroad); - } else if (interactive_timeout > 0 && --interactive_timeout == 0) { - emit interactiveTimeout(); - } - - setAwake(s.scene.ignition || interactive_timeout > 0); -} - -UIState *uiState() { - static UIState ui_state; - return &ui_state; -} - -Device *device() { - static Device _device; - return &_device; -} diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h deleted file mode 100644 index cf02c466e..000000000 --- a/selfdrive/ui/ui.h +++ /dev/null @@ -1,146 +0,0 @@ -#pragma once - -#include -#include -#include - -#include -#include -#include - -#include "cereal/messaging/messaging.h" -#include "common/mat.h" -#include "common/params.h" -#include "common/util.h" -#include "system/hardware/hw.h" -#include "selfdrive/ui/qt/prime_state.h" - -#include "starpilot/ui/starpilot_ui.h" - -const int UI_BORDER_SIZE = 30; -const int UI_HEADER_HEIGHT = 420; - -const int UI_FREQ = 20; // Hz -const int BACKLIGHT_OFFROAD = 50; - -const Eigen::Matrix3f VIEW_FROM_DEVICE = (Eigen::Matrix3f() << - 0.0, 1.0, 0.0, - 0.0, 0.0, 1.0, - 1.0, 0.0, 0.0).finished(); - -const Eigen::Matrix3f FCAM_INTRINSIC_MATRIX = (Eigen::Matrix3f() << - 2648.0, 0.0, 1928.0 / 2, - 0.0, 2648.0, 1208.0 / 2, - 0.0, 0.0, 1.0).finished(); - -// tici ecam focal probably wrong? magnification is not consistent across frame -// Need to retrain model before this can be changed -const Eigen::Matrix3f ECAM_INTRINSIC_MATRIX = (Eigen::Matrix3f() << - 567.0, 0.0, 1928.0 / 2, - 0.0, 567.0, 1208.0 / 2, - 0.0, 0.0, 1.0).finished(); - -typedef enum UIStatus { - STATUS_DISENGAGED, - STATUS_OVERRIDE, - STATUS_ENGAGED, - - STATUS_ALWAYS_ON_LATERAL_ACTIVE, - STATUS_CEM_DISABLED, - STATUS_EXPERIMENTAL_MODE_ENABLED, - STATUS_SWITCHBACK_MODE_ENABLED, - STATUS_TRAFFIC_MODE_ENABLED, -} UIStatus; - -const QColor bg_colors [] = { - [STATUS_DISENGAGED] = QColor(0x17, 0x33, 0x49, 0xc8), - [STATUS_OVERRIDE] = QColor(0x91, 0x9b, 0x95, 0xf1), - [STATUS_ENGAGED] = QColor(0x17, 0x86, 0x44, 0xf1), - - [STATUS_ALWAYS_ON_LATERAL_ACTIVE] = QColor(0x0a, 0xba, 0xb5, 0xf1), - [STATUS_CEM_DISABLED] = QColor(0xff, 0xff, 0x00, 0xf1), - [STATUS_EXPERIMENTAL_MODE_ENABLED] = QColor(0xda, 0x6f, 0x25, 0xf1), - [STATUS_SWITCHBACK_MODE_ENABLED] = QColor(0x8b, 0x6c, 0xc5, 0xf1), - [STATUS_TRAFFIC_MODE_ENABLED] = QColor(0xc9, 0x22, 0x31, 0xf1), -}; - -typedef struct UIScene { - Eigen::Matrix3f view_from_calib = VIEW_FROM_DEVICE; - Eigen::Matrix3f view_from_wide_calib = VIEW_FROM_DEVICE; - cereal::PandaState::PandaType pandaType; - - cereal::LongitudinalPersonality personality; - - float light_sensor = -1; - bool started, ignition, is_metric, recording_audio; - uint64_t started_frame; -} UIScene; - -class UIState : public QObject { - Q_OBJECT - -public: - UIState(QObject* parent = 0); - void updateStatus(StarPilotUIState *fs); - inline bool engaged() const { - return scene.started && (*sm)["selfdriveState"].getSelfdriveState().getEnabled(); - } - - std::unique_ptr sm; - UIStatus status; - UIScene scene = {}; - QString language; - PrimeState *prime_state; - -signals: - void uiUpdate(const UIState &s, const StarPilotUIState &fs); - void offroadTransition(bool offroad); - void engagedChanged(bool engaged); - -private slots: - void update(); - -private: - QTimer *timer; - bool started_prev = false; - bool engaged_prev = false; -}; - -UIState *uiState(); - -// device management class -class Device : public QObject { - Q_OBJECT - -public: - Device(QObject *parent = 0); - bool isAwake() { return awake; } - void setOffroadBrightness(int brightness) { - offroad_brightness = std::clamp(brightness, 0, 100); - } - -private: - bool awake = false; - int interactive_timeout = 0; - bool ignition_on = false; - - int offroad_brightness = BACKLIGHT_OFFROAD; - int last_brightness = 0; - FirstOrderFilter brightness_filter; - QFuture brightness_future; - - void updateBrightness(const UIState &s, const StarPilotUIState &fs); - void updateWakefulness(const UIState &s, const StarPilotUIState &fs); - void setAwake(bool on); - -signals: - void displayPowerChanged(bool on); - void interactiveTimeout(); - -public slots: - void resetInteractiveTimeout(int timeout = -1, int timeout_onroad = -1); - void update(const UIState &s, const StarPilotUIState &fs); -}; - -Device *device(); -void ui_update_params(UIState *s); diff --git a/selfdrive/ui/widgets/drive_stats.py b/selfdrive/ui/widgets/drive_stats.py index 12e51c5ec..6b2fcbe85 100644 --- a/selfdrive/ui/widgets/drive_stats.py +++ b/selfdrive/ui/widgets/drive_stats.py @@ -526,7 +526,7 @@ class DriveStatsDashboard: self.refresh() def refresh(self) -> None: - demo_enabled = os.getenv("SP_RAYBIG_FAKE_DRIVE_STATS", "0").lower() in ("1", "true", "yes", "on") + demo_enabled = os.getenv("SP_C3_FAKE_DRIVE_STATS", "0").lower() in ("1", "true", "yes", "on") self._data = demo_drive_stats_data(self._params.get_bool("IsMetric")) if demo_enabled else load_drive_stats_data(self._params) @staticmethod diff --git a/selfdrive/ui/widgets/offroad_alerts.py b/selfdrive/ui/widgets/offroad_alerts.py index 802243ff3..8d218e24d 100644 --- a/selfdrive/ui/widgets/offroad_alerts.py +++ b/selfdrive/ui/widgets/offroad_alerts.py @@ -33,7 +33,7 @@ class AlertConstants: MARGIN = 50 SPACING = 30 FONT_SIZE = 48 - BORDER_RADIUS = 30 * 2 # matches Qt's 30px + BORDER_RADIUS = 30 * 2 ALERT_HEIGHT = 120 ALERT_SPACING = 10 ALERT_INSET = 60 diff --git a/starpilot/common/maps_selection.py b/starpilot/common/maps_selection.py index 73dd13382..9ad6d34b6 100644 --- a/starpilot/common/maps_selection.py +++ b/starpilot/common/maps_selection.py @@ -5,7 +5,7 @@ COUNTRY_PREFIX = "nation." STATE_PREFIX = "us_state." # Legacy C3 map selection stored bare region codes instead of the prefixed -# keys consumed by mapd and the Qt settings path. +# Keys consumed by mapd and the settings UIs. US_STATE_CODES = frozenset({ "AK", "AL", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", diff --git a/starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json b/starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json index 9d47c5bcb..561ee7fc0 100644 --- a/starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json +++ b/starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json @@ -4134,14 +4134,6 @@ "parent_key": "GalaxyDeveloperMode", "settings_tier": "advanced" }, - { - "key": "UseOldUI", - "label": "Use Old UI", - "description": "Use the old Qt UI instead of the default raylib UI on tici/tizi devices. This setting has no effect on C4/mici devices.", - "data_type": "bool", - "ui_type": "toggle", - "settings_tier": "simple" - }, { "key": "CameraOffset", "label": "Camera Offset", diff --git a/starpilot/system/the_galaxy/assets/components/tools/galaxy.css b/starpilot/system/the_galaxy/assets/components/tools/galaxy.css index 2363d7d2c..a468f5ba5 100644 --- a/starpilot/system/the_galaxy/assets/components/tools/galaxy.css +++ b/starpilot/system/the_galaxy/assets/components/tools/galaxy.css @@ -129,6 +129,80 @@ background-color: rgba(224, 85, 119, 0.35); } +/* ――― Sentry event viewer ――― */ +.sentry-event-widget { + background-color: var(--secondary-bg); + border-radius: var(--border-radius-lg); + box-shadow: var(--shadow-sm); + display: flex; + flex-direction: column; + gap: var(--gap-sm); + margin-top: var(--margin-lg); + max-width: var(--width-xxxl); + padding: var(--padding-lg); +} + +.sentry-event-heading { + align-items: flex-start; + display: flex; + gap: var(--gap-base); + justify-content: space-between; +} + +.sentry-event-heading h3 { + padding-top: 0; +} + +.sentry-event-state, +.sentry-event-kind { + background-color: var(--input-bg); + border-radius: 999px; + color: var(--main-fg); + font-size: var(--font-size-xs); + font-weight: var(--font-weight-bold); + padding: 0.25rem 0.55rem; + white-space: nowrap; +} + +.sentry-event-meta { + align-items: center; + color: var(--text-muted); + display: flex; + flex-wrap: wrap; + font-size: var(--font-size-xs); + gap: var(--gap-sm); +} + +.sentry-event-message { + color: var(--text-color); + margin: 0; +} + +.sentry-image-grid { + display: grid; + gap: var(--gap-sm); + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); +} + +.sentry-image-grid a { + display: block; +} + +.sentry-image-grid img { + border: var(--border-style-main); + border-radius: var(--border-radius-base); + display: block; + height: auto; + max-width: 100%; + width: 100%; +} + +.sentry-empty { + color: var(--text-muted); + font-style: italic; + margin: 0; +} + /* ――― Mobile ――― */ @media only screen and (max-width: 768px) and (orientation: portrait) { .galaxy-wrapper { diff --git a/starpilot/system/the_galaxy/assets/components/tools/galaxy.js b/starpilot/system/the_galaxy/assets/components/tools/galaxy.js index 674d49fcf..dc2b4ecfa 100644 --- a/starpilot/system/the_galaxy/assets/components/tools/galaxy.js +++ b/starpilot/system/the_galaxy/assets/components/tools/galaxy.js @@ -11,8 +11,14 @@ const state = reactive({ submitting: false, showUnpairModal: false, fetched: false, + sentryLoading: true, + sentryStatus: {}, + sentryEvent: {}, + sentryTestBusy: false, }) +let sentryPollTimer = null + async function fetchStatus() { state.loading = true try { @@ -26,6 +32,91 @@ async function fetchStatus() { state.loading = false } +async function fetchSentryStatus() { + try { + const res = await fetch("/api/sentry/status", { cache: "no-store" }) + if (!res.ok) return + const data = await res.json() + state.sentryStatus = data.status || {} + state.sentryEvent = data.lastEvent || {} + } catch (e) { + console.error("Failed to fetch Sentry status:", e) + } finally { + state.sentryLoading = false + } +} + +function ensureSentryPolling() { + if (sentryPollTimer !== null) return + fetchSentryStatus() + sentryPollTimer = window.setInterval(fetchSentryStatus, 5000) +} + +async function sendSentryTest() { + if (state.sentryTestBusy) return + state.sentryTestBusy = true + try { + const res = await fetch("/api/sentry/test", { method: "POST" }) + const data = await res.json() + if (!res.ok) { + showSnackbar(data.error || "Sentry test failed.") + return + } + showSnackbar("Sentry test started. Galaxy will show the captured images when ready.") + } catch (e) { + showSnackbar("Network error — is the device reachable?") + } finally { + state.sentryTestBusy = false + } +} + +function SentryEventPanel(showTestButton = true) { + return html` +

    +
    +
    +

    Sentry Mode

    +

    View the latest movement event and captured images directly in Galaxy.

    +
    + ${() => state.sentryStatus.state || "unknown"} +
    + + ${() => { + if (state.sentryLoading) return html`
    Checking Sentry status…
    ` + const event = state.sentryEvent || {} + if (!event.eventId) return html`

    No Sentry events recorded yet.

    ` + + return html` +
    + ${String(event.kind || "event").toUpperCase()} + ${event.detectedAt || ""} +
    +

    ${event.message || "Movement detected while parked."}

    + ${Array.isArray(event.imageUrls) && event.imageUrls.length > 0 ? html` +
    + ` : html`

    No camera images were available for this event.

    `} + ` + }} + + ${showTestButton ? html` + + ` : ""} +
    + ` +} + async function pair() { if (state.submitting) return const pw = state.password.trim() @@ -79,12 +170,17 @@ async function unpair() { } export function GalaxyPairing() { + ensureSentryPolling() + if (isGalaxyTunnel()) { return html` -
    -
    🛰ï¸
    -

    Galaxy Pairing Unavailable via Galaxy

    -

    Galaxy pairing requires a direct connection.
    Connect to your device's local network to use this feature.

    +
    +
    +
    🛰ï¸
    +

    Galaxy Pairing Unavailable via Galaxy

    +

    Galaxy pairing requires a direct connection.
    Connect to your device's local network to use this feature.

    +
    + ${SentryEventPanel(false)}
    `; } @@ -171,6 +267,7 @@ export function GalaxyPairing() { ` }} + ${SentryEventPanel()}
    ` } diff --git a/starpilot/system/the_galaxy/tests/test_device_settings_layout.py b/starpilot/system/the_galaxy/tests/test_device_settings_layout.py index 3ea99252e..9ec8c06f0 100644 --- a/starpilot/system/the_galaxy/tests/test_device_settings_layout.py +++ b/starpilot/system/the_galaxy/tests/test_device_settings_layout.py @@ -1,5 +1,4 @@ import json -import importlib.util import re from pathlib import Path @@ -7,7 +6,6 @@ from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[4] LAYOUT_PATH = REPO_ROOT / "starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json" PARAM_KEYS_PATH = REPO_ROOT / "common/params_keys.h" -GENERATOR_PATH = REPO_ROOT / "tools/StarPilot/generate_galaxy_layout.py" def _layout(): @@ -31,14 +29,6 @@ def _declared_default(key): return match.group(1) -def _generator_module(): - spec = importlib.util.spec_from_file_location("generate_galaxy_layout", GENERATOR_PATH) - assert spec is not None and spec.loader is not None - module = importlib.util.module_from_spec(spec) - spec.loader.exec_module(module) - return module - - def test_galaxy_layout_removes_obsolete_and_duplicate_controls(): layout = _layout() sections = _params_by_section(layout) @@ -68,7 +58,7 @@ def test_galaxy_layout_contains_basic_mode_controls(): } <= sections["Longitudinal (Speed & Following)"].keys() assert "RedneckCruise" not in sections["Longitudinal (Speed & Following)"].keys() assert sections["Developer"]["RedneckCruise"]["parent_key"] == "GalaxyDeveloperMode" - assert {"AlphaLongitudinalEnabled", "ForceOffroad", "GalaxyDeveloperMode", "UseOldUI"} <= sections["Developer"].keys() + assert {"AlphaLongitudinalEnabled", "ForceOffroad", "GalaxyDeveloperMode"} <= sections["Developer"].keys() def test_device_shutdown_uses_literal_hours(): @@ -100,11 +90,6 @@ def test_every_galaxy_setting_has_a_shared_settings_tier(): assert None not in tiers -def test_galaxy_layout_generator_is_semantically_idempotent(): - layout = _layout() - assert _generator_module().generate_layout(layout) == layout - - def test_requested_simple_and_advanced_settings_tiers(): sections = _params_by_section(_layout()) lateral = sections["Lateral (Steering)"] @@ -161,7 +146,6 @@ def test_requested_simple_and_advanced_settings_tiers(): assert developer["ForceOffroad"]["parent_key"] == "GalaxyDeveloperMode" assert developer["ForceOffroad"]["requires_parked"] is True assert developer["ForceOffroad"]["settings_tier"] == "advanced" - assert developer["UseOldUI"]["settings_tier"] == "simple" assert developer["DeveloperUI"]["settings_tier"] == "advanced" assert developer["RedneckCruise"]["settings_tier"] == "advanced" assert sections["Visual (Display & UI)"]["DisableWideRoad"]["settings_tier"] == "advanced" diff --git a/starpilot/system/the_galaxy/tests/test_navigation_params.py b/starpilot/system/the_galaxy/tests/test_navigation_params.py index ef5148741..1919a603f 100644 --- a/starpilot/system/the_galaxy/tests/test_navigation_params.py +++ b/starpilot/system/the_galaxy/tests/test_navigation_params.py @@ -86,12 +86,10 @@ def _params_client(monkeypatch, values, device_type): the_galaxy, "_get_param_type_info", lambda: ( - {"AlphaLongitudinalEnabled", "ForceOffroad", "UseOldUI", "TryRaylibUI"}, + {"AlphaLongitudinalEnabled", "ForceOffroad"}, { "AlphaLongitudinalEnabled": bool, "ForceOffroad": bool, - "UseOldUI": bool, - "TryRaylibUI": bool, }, ), ) @@ -226,18 +224,18 @@ def test_configured_favorite_slot_values_only_reads_selected_keys(monkeypatch): def test_favorite_values_endpoint_returns_current_selected_value(monkeypatch): - client, _ = _params_client(monkeypatch, {"UseOldUI": False}, "tici") - monkeypatch.setattr(the_galaxy, "_get_favorite_slot_options", lambda: [{"key": "UseOldUI"}]) + client, _ = _params_client(monkeypatch, {"ForceOffroad": False}, "tici") + monkeypatch.setattr(the_galaxy, "_get_favorite_slot_options", lambda: [{"key": "ForceOffroad"}]) monkeypatch.setattr( the_galaxy, "normalize_favorite_slots", - lambda *args, **kwargs: [{"enabled": True, "key": "UseOldUI"}], + lambda *args, **kwargs: [{"enabled": True, "key": "ForceOffroad"}], ) response = client.get("/api/favorites/values") assert response.status_code == 200 - assert response.get_json() == {"values": {"UseOldUI": False}} + assert response.get_json() == {"values": {"ForceOffroad": False}} def test_favorite_slot_options_include_virtual_cruise_actions(monkeypatch): @@ -262,56 +260,6 @@ def test_favorite_action_endpoint_increments_virtual_button_counter(monkeypatch) assert fake_memory.get_int("FavoriteVirtualAccelCruiseCounter") == 1 -def test_use_old_ui_is_noop_on_c4_mici(monkeypatch): - client, fake_params = _params_client(monkeypatch, {"UseOldUI": False, "IsOnroad": False}, "mici") - - response = client.put("/api/params", json={"key": "UseOldUI", "value": True}) - payload = response.get_json() - - assert response.status_code == 200 - assert payload["updated"] == {"UseOldUI": False, "TryRaylibUI": False} - assert fake_params.values["UseOldUI"] is False - assert fake_params.writes == [] - - -def test_use_old_ui_writes_on_big_device_offroad(monkeypatch): - client, fake_params = _params_client(monkeypatch, {"UseOldUI": False, "TryRaylibUI": True, "IsOnroad": False}, "tici") - - response = client.put("/api/params", json={"key": "UseOldUI", "value": True}) - payload = response.get_json() - - assert response.status_code == 200 - assert payload["updated"] == {"UseOldUI": True, "TryRaylibUI": False} - assert fake_params.values["UseOldUI"] is True - assert fake_params.values["TryRaylibUI"] is False - assert fake_params.writes == [("UseOldUI", True), ("TryRaylibUI", False)] - - -def test_use_old_ui_rejects_big_device_onroad_change(monkeypatch): - client, fake_params = _params_client(monkeypatch, {"UseOldUI": False, "TryRaylibUI": True, "IsOnroad": True}, "tici") - - response = client.put("/api/params", json={"key": "UseOldUI", "value": True}) - - assert response.status_code == 403 - assert response.get_json()["error"] == "Cannot change Use Old UI while driving." - assert fake_params.values["UseOldUI"] is False - assert fake_params.values["TryRaylibUI"] is True - assert fake_params.writes == [] - - -def test_legacy_try_raylib_ui_payload_updates_use_old_ui(monkeypatch): - client, fake_params = _params_client(monkeypatch, {"UseOldUI": True, "TryRaylibUI": False, "IsOnroad": False}, "tici") - - response = client.put("/api/params", json={"key": "TryRaylibUI", "value": True}) - payload = response.get_json() - - assert response.status_code == 200 - assert payload["updated"] == {"UseOldUI": False, "TryRaylibUI": True} - assert fake_params.values["UseOldUI"] is False - assert fake_params.values["TryRaylibUI"] is True - assert fake_params.writes == [("UseOldUI", False), ("TryRaylibUI", True)] - - def test_alpha_longitudinal_toggle_writes_and_requests_offroad_cycle(monkeypatch): client, fake_params = _params_client(monkeypatch, { "AlphaLongitudinalEnabled": False, diff --git a/starpilot/system/the_galaxy/the_galaxy.py b/starpilot/system/the_galaxy/the_galaxy.py index 285d91063..0d18fb5ca 100644 --- a/starpilot/system/the_galaxy/the_galaxy.py +++ b/starpilot/system/the_galaxy/the_galaxy.py @@ -163,13 +163,6 @@ def _is_comma_device_runtime() -> bool: return False -def _raylib_ui_toggle_affects_device() -> bool: - try: - return HARDWARE.get_device_type() in ("tici", "tizi") - except Exception: - return False - - def _get_param_key_type(params_obj, key): getter = getattr(params_obj, "get_key_type", None) if getter is None: @@ -544,6 +537,64 @@ def _normalize_sentry_event(payload) -> dict | None: } +def _sentry_image_path(event_id: str, filename: str) -> Path | None: + if not event_id or Path(event_id).name != event_id: + return None + if filename not in {"wide.jpg", "driver.jpg"} or Path(filename).name != filename: + return None + + for root in _sentry_event_roots(): + path = (root / event_id / filename).resolve() + if root in path.parents and path.is_file(): + return path + return None + + +def _public_sentry_event(event: dict) -> dict: + public_event = dict(event) + public_event.pop("imagePaths", None) + public_event["imageUrls"] = [] + event_id = str(public_event.get("eventId") or "") + for raw_path in event.get("imagePaths", []): + path = Path(str(raw_path)).resolve() + if path.parent.name != event_id: + continue + if _sentry_image_path(event_id, path.name) == path: + public_event["imageUrls"].append( + f"/api/sentry/images/{quote(event_id, safe='')}/{quote(path.name, safe='')}" + ) + return public_event + + +def _capture_sentry_test_images(event_id: str) -> list[str]: + from openpilot.system.camerad.snapshot import jpeg_write, snapshot + + params.put_bool("SentryModeCapture", True) + try: + rear, front = snapshot(allow_existing=True) + except Exception: + cloudlog.exception("Galaxy: sentry test snapshot failed") + return [] + finally: + params.put_bool("SentryModeCapture", False) + + if rear is None and front is None: + return [] + + directory = _sentry_event_roots()[0] / event_id + directory.mkdir(parents=True, exist_ok=True) + paths = [] + if rear is not None: + path = directory / "wide.jpg" + jpeg_write(str(path), rear) + paths.append(str(path)) + if front is not None: + path = directory / "driver.jpg" + jpeg_write(str(path), front) + paths.append(str(path)) + return paths + + def _dispatch_sentry_event(event: dict) -> None: message = f"🚨 StarPilot Sentry Mode: {event['message']}" webhook = (params.get("SentryModeWebhook", encoding="utf-8") or "").strip() @@ -2756,18 +2807,6 @@ def _is_blank_param_raw(raw_value): return len(raw_value.strip()) == 0 return False -def _get_use_old_ui_enabled(): - if not _raylib_ui_toggle_affects_device(): - return False - - raw_value = _safe_params_get_live_raw("UseOldUI") - if _is_blank_param_raw(raw_value): - legacy_raw_value = _safe_params_get_live_raw("TryRaylibUI") - if not _is_blank_param_raw(legacy_raw_value): - return not _coerce_param_value(legacy_raw_value, bool) - - return _coerce_param_value(raw_value, bool) - def _has_runtime_default_value(key, raw_value): if _is_blank_param_raw(raw_value): return False @@ -2846,11 +2885,6 @@ def _get_runtime_default_param_overrides(): return overrides def _get_current_param_value(key, value_type, defaults_lookup=None): - if key == "UseOldUI": - return _get_use_old_ui_enabled() - if key == "TryRaylibUI": - return _raylib_ui_toggle_affects_device() and not _get_use_old_ui_enabled() - if key == CUSTOM_ACCEL_PROFILE_INITIALIZED_KEY: return _get_custom_accel_profile_initialized() @@ -4147,6 +4181,7 @@ def setup(app): "/assets/components/tools/device_settings.css", "/assets/components/tools/device_settings_layout.json", "/assets/components/tools/galaxy.js", + "/assets/components/tools/galaxy.css", "/assets/components/tools/v_asm.js", "/assets/components/tools/v_asm.css", "/assets/components/tools/pip_sidecam.js", @@ -4582,26 +4617,6 @@ def setup(app): if key not in allowed_keys: return jsonify({"error": f"Parameter '{key}' is not editable."}), 403 - if key in {"UseOldUI", "TryRaylibUI"}: - enabled = str_val.strip() in ("1", "true", "True") - use_old_ui = enabled if key == "UseOldUI" else not enabled - updated = {"UseOldUI": use_old_ui, "TryRaylibUI": not use_old_ui} - if not _raylib_ui_toggle_affects_device(): - return jsonify({ - "message": "Use Old UI is only available on tici/tizi devices.", - "updated": {"UseOldUI": False, "TryRaylibUI": False}, - }), 200 - - if params.get_bool("IsOnroad"): - return jsonify({"error": "Cannot change Use Old UI while driving."}), 403 - - params.put_bool("UseOldUI", use_old_ui) - params.put_bool("TryRaylibUI", not use_old_ui) - return jsonify({ - "message": f"{'Old' if use_old_ui else 'Raylib'} UI selected. UI will restart shortly.", - "updated": updated, - }), 200 - if key == "AlphaLongitudinalEnabled": if not _get_alpha_longitudinal_available(): return jsonify({"error": "Alpha Longitudinal is not available for the detected vehicle."}), 403 @@ -4954,10 +4969,6 @@ def setup(app): return _serialize_param_write_value(_get_custom_accel_profile_initialized()), 200 if request_key == "LeadIndicator": return _serialize_param_write_value(_get_lead_indicator_enabled()), 200 - if request_key == "UseOldUI": - return ("1" if _get_use_old_ui_enabled() else "0"), 200 - if request_key == "TryRaylibUI": - return ("1" if _raylib_ui_toggle_affects_device() and not _get_use_old_ui_enabled() else "0"), 200 if request_key == "IsRHD" and not params.get_bool("IsRHDOverride"): return ("1" if params.get_bool("IsRhdDetected") else "0"), 200 value = params.get(request_key) or "" @@ -5015,11 +5026,7 @@ def setup(app): default_val = defaults_lookup.get(key) try: - if key == "UseOldUI": - result[key] = False - elif key == "TryRaylibUI": - result[key] = _raylib_ui_toggle_affects_device() - elif t == bool: + if t == bool: if isinstance(default_val, bytes): default_str = default_val.decode("utf-8", errors="replace") else: @@ -6714,9 +6721,40 @@ def setup(app): return jsonify({ "enabled": params.get_bool("SentryModeEnabled"), "status": status if isinstance(status, dict) else {}, - "lastEvent": last_event if isinstance(last_event, dict) else {}, + "lastEvent": _public_sentry_event(last_event) if isinstance(last_event, dict) else {}, }) + @app.route("/api/sentry/images//", methods=["GET"]) + def sentry_image(event_id, filename): + image_path = _sentry_image_path(event_id, filename) + if image_path is None: + return jsonify({"error": "Sentry image not found."}), 404 + return send_file(image_path, mimetype="image/jpeg", max_age=0) + + @app.route("/api/sentry/test", methods=["POST"]) + def sentry_test(): + if request.remote_addr not in {None, "127.0.0.1", "::1"}: + return jsonify({"error": "Sentry tests must originate on the device."}), 403 + if not params.get_bool("IsOffroad"): + return jsonify({"error": "Sentry tests are only available while parked."}), 409 + + event_id = f"test-{int(time.time())}-{secrets.token_hex(4)}" + event = { + "eventId": event_id, + "kind": "alarm", + "detectedAt": datetime.now(timezone.utc).isoformat(), + "imagePaths": [], + "message": "Test sentry event.", + } + + def capture_and_publish(): + event["imagePaths"] = _capture_sentry_test_images(event_id) + params.put("SentryModeLastEvent", json.dumps(event, separators=(",", ":"))) + threading.Thread(target=_dispatch_sentry_event, args=(event,), name="galaxy-sentry-test-notify", daemon=True).start() + + threading.Thread(target=capture_and_publish, name="galaxy-sentry-test-capture", daemon=True).start() + return jsonify({"accepted": True, "eventId": event_id}), 202 + @app.route("/api/sentry/events", methods=["POST"]) def sentry_event(): if request.remote_addr not in {None, "127.0.0.1", "::1"}: diff --git a/starpilot/ui/moc_starpilot_ui.cc b/starpilot/ui/moc_starpilot_ui.cc deleted file mode 100644 index 53bf78456..000000000 --- a/starpilot/ui/moc_starpilot_ui.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_ui.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_ui.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_ui.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotUIState_t { - QByteArrayData data[3]; - char stringdata0[31]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotUIState_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotUIState_t qt_meta_stringdata_StarPilotUIState = { - { -QT_MOC_LITERAL(0, 0, 16), // "StarPilotUIState" -QT_MOC_LITERAL(1, 17, 12), // "themeUpdated" -QT_MOC_LITERAL(2, 30, 0) // "" - - }, - "StarPilotUIState\0themeUpdated\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotUIState[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotUIState::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->themeUpdated(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotUIState::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotUIState::themeUpdated)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotUIState::staticMetaObject = { { - &QObject::staticMetaObject, - qt_meta_stringdata_StarPilotUIState.data, - qt_meta_data_StarPilotUIState, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotUIState::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotUIState::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotUIState.stringdata0)) - return static_cast(this); - return QObject::qt_metacast(_clname); -} - -int StarPilotUIState::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QObject::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotUIState::themeUpdated() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/data_settings.cc b/starpilot/ui/qt/offroad/data_settings.cc deleted file mode 100644 index 3774a9286..000000000 --- a/starpilot/ui/qt/offroad/data_settings.cc +++ /dev/null @@ -1,872 +0,0 @@ -#include - -#include "starpilot/ui/qt/offroad/data_settings.h" - -namespace { -bool isPathPreserved(const char *path) { - char preserveValue[10] = {0}; -#ifdef __APPLE__ - const ssize_t attr_size = getxattr(path, "user.preserve", preserveValue, sizeof(preserveValue), 0, 0); -#else - const ssize_t attr_size = getxattr(path, "user.preserve", preserveValue, sizeof(preserveValue)); -#endif - return attr_size > 0 && strcmp(preserveValue, "1") == 0; -} -} // namespace - -StarPilotDataPanel::StarPilotDataPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *dataLayout = new QStackedLayout(); - addItem(dataLayout); - - StarPilotListWidget *dataMainList = new StarPilotListWidget(this); - ScrollView *dataMainPanel = new ScrollView(dataMainList, this); - dataLayout->addWidget(dataMainPanel); - - StarPilotListWidget *statsLabelsList = new StarPilotListWidget(this); - ScrollView *statsLabelsPanel = new ScrollView(statsLabelsList, this); - dataLayout->addWidget(statsLabelsPanel); - - ButtonControl *deleteDrivingDataButton = new ButtonControl(tr("Delete Driving Data"), tr("DELETE"), tr("Delete all stored driving footage and data to free up storage space or to simply just erase driving data.")); - QObject::connect(deleteDrivingDataButton, &ButtonControl::clicked, [=]() { - if (ConfirmationDialog::confirm(tr("Delete all driving data and footage?"), tr("Delete"), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - deleteDrivingDataButton->setEnabled(false); - deleteDrivingDataButton->setValue(tr("Deleting...")); - - std::vector drivePaths = {"/data/media/0/realdata/", "/data/media/0/realdata_HD/", "/data/media/0/realdata_konik/"}; - for (const QString &path : drivePaths) { - QDir dir(path); - if (!dir.exists()) { - continue; - } - - for (const QFileInfo &entry : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { - if (!isPathPreserved(entry.absoluteFilePath().toUtf8().constData())) { - QDir(entry.absoluteFilePath()).removeRecursively(); - } - } - } - - deleteDrivingDataButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - deleteDrivingDataButton->setEnabled(true); - deleteDrivingDataButton->setValue(""); - - parent->keepScreenOn = false; - }).detach(); - } - }); - if (forceOpenDescriptions) { - deleteDrivingDataButton->showDescription(); - } - dataMainList->addItem(deleteDrivingDataButton); - - ButtonControl *deleteErrorLogsButton = new ButtonControl(tr("Delete Error Logs"), tr("DELETE"), tr("Delete collected error logs to free up space and clear old crash records.")); - QObject::connect(deleteErrorLogsButton, &ButtonControl::clicked, [=]() { - QDir errorLogsDir("/data/error_logs"); - - if (ConfirmationDialog::confirm(tr("Delete all error logs?"), tr("Delete"), this)) { - std::thread([=]() mutable { - parent->keepScreenOn = true; - - deleteErrorLogsButton->setEnabled(false); - deleteErrorLogsButton->setValue(tr("Deleting...")); - - errorLogsDir.removeRecursively(); - errorLogsDir.mkpath("."); - - deleteErrorLogsButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - deleteErrorLogsButton->setEnabled(true); - deleteErrorLogsButton->setValue(""); - - parent->keepScreenOn = false; - }).detach(); - } - }); - if (forceOpenDescriptions) { - deleteErrorLogsButton->showDescription(); - } - dataMainList->addItem(deleteErrorLogsButton); - - StarPilotButtonsControl *screenRecordingsButton = new StarPilotButtonsControl(tr("Screen Recordings"), tr("Delete or rename screen recordings."), "", {tr("DELETE"), tr("DELETE ALL"), tr("RENAME")}); - QObject::connect(screenRecordingsButton, &StarPilotButtonsControl::buttonClicked, [=](int id) { - QDir recordingsDir("/data/media/screen_recordings"); - QStringList recordingsNames = recordingsDir.entryList(QDir::Files | QDir::NoDotAndDotDot); - std::sort(recordingsNames.begin(), recordingsNames.end(), std::greater()); - - QStringList friendlyNames; - QMap recordingMap; - - for (const QString &name : recordingsNames) { - if (!name.endsWith(".mp4", Qt::CaseInsensitive)) { - continue; - } - - QString friendlyName = name; - QString cleanName = QString(name).remove(".mp4"); - - QStringList parts = cleanName.split(cleanName.contains("--") ? "--" : "_"); - - if (parts.size() >= 2) { - QDate date = QDate::fromString(parts[0], "yyyy-MM-dd"); - QTime time = QTime::fromString(parts[1], "HH-mm-ss"); - - if (date.isValid() && time.isValid()) { - int day = date.day(); - QString suffix = (day >= 11 && day <= 13) ? "th" : - (day % 10 == 1) ? "st" : - (day % 10 == 2) ? "nd" : - (day % 10 == 3) ? "rd" : "th"; - - friendlyName = QString("%1 %2%3, %4 (%5)") - .arg(date.toString("MMMM")) - .arg(day) - .arg(suffix) - .arg(date.year()) - .arg(time.toString("h:mm AP")); - } - } - - if (friendlyName == name) { - friendlyName = cleanName; - friendlyName.replace("_", " "); - } - - friendlyNames.append(friendlyName); - recordingMap[friendlyName] = name; - } - - if (id == 0) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a screen recording to delete"), friendlyNames, "", this); - if (!selection.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Delete this screen recording?"), tr("Delete"), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - screenRecordingsButton->setEnabled(false); - screenRecordingsButton->setValue(tr("Deleting...")); - - screenRecordingsButton->setVisibleButton(1, false); - screenRecordingsButton->setVisibleButton(2, false); - - QFile::remove(recordingsDir.absoluteFilePath(recordingMap[selection])); - - screenRecordingsButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - screenRecordingsButton->setEnabled(true); - screenRecordingsButton->setValue(""); - - screenRecordingsButton->setVisibleButton(1, true); - screenRecordingsButton->setVisibleButton(2, true); - - parent->keepScreenOn = false; - }).detach(); - } - } - - } else if (id == 1) { - if (ConfirmationDialog::confirm(tr("Delete all screen recordings?"), tr("Delete All"), this)) { - std::thread([=]() mutable { - parent->keepScreenOn = true; - - screenRecordingsButton->setEnabled(false); - screenRecordingsButton->setValue(tr("Deleting...")); - - screenRecordingsButton->setVisibleButton(0, false); - screenRecordingsButton->setVisibleButton(2, false); - - recordingsDir.removeRecursively(); - recordingsDir.mkpath("."); - - screenRecordingsButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - screenRecordingsButton->setEnabled(true); - screenRecordingsButton->setValue(""); - - screenRecordingsButton->setVisibleButton(0, true); - screenRecordingsButton->setVisibleButton(2, true); - - parent->keepScreenOn = false; - }).detach(); - } - - } else if (id == 2) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a screen recording to rename"), friendlyNames, "", this); - if (!selection.isEmpty()) { - QString newBase = InputDialog::getText(tr("Enter a new name"), this, tr("Rename Screen Recording")).trimmed().replace(" ", "_"); - if (!newBase.isEmpty()) { - QString newName = newBase + ".mp4"; - if (recordingsNames.contains(newName)) { - ConfirmationDialog::alert(tr("Name already in use. Please choose a different name!"), this); - return; - } - std::thread([=]() { - parent->keepScreenOn = true; - - screenRecordingsButton->setEnabled(false); - screenRecordingsButton->setValue(tr("Renaming...")); - - screenRecordingsButton->setVisibleButton(0, false); - screenRecordingsButton->setVisibleButton(1, false); - - QString newPath = recordingsDir.absoluteFilePath(newName); - QString oldPath = recordingsDir.absoluteFilePath(recordingMap[selection]); - QFile::rename(oldPath, newPath); - - screenRecordingsButton->setValue(tr("Renamed!")); - - util::sleep_for(2500); - - screenRecordingsButton->setEnabled(true); - screenRecordingsButton->setValue(""); - - screenRecordingsButton->setVisibleButton(0, true); - screenRecordingsButton->setVisibleButton(1, true); - - parent->keepScreenOn = false; - }).detach(); - } - } - } - }); - if (forceOpenDescriptions) { - screenRecordingsButton->showDescription(); - } - dataMainList->addItem(screenRecordingsButton); - - StarPilotButtonsControl *starpilotBackupButton = new StarPilotButtonsControl(tr("StarPilot Backups"), tr("Create, delete, or restore StarPilot backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); - QObject::connect(starpilotBackupButton, &StarPilotButtonsControl::buttonClicked, [=](int id) { - QDir backupDir("/data/backups"); - - QFileInfoList backupList = backupDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot); - std::sort(backupList.begin(), backupList.end(), [](const QFileInfo &a, const QFileInfo &b) { - return a.lastModified() > b.lastModified(); - }); - - QStringList friendlyNames; - QMap backupMap; - - for (const QFileInfo &fileInfo : backupList) { - QString fileName = fileInfo.fileName(); - - if (fileName.contains("in_progress")) { - continue; - } - - QString friendlyName = fileName; - - if (fileName.endsWith("_auto.tar.zst")) { - QStringList parts = QString(fileName).remove(".tar.zst").split("_"); - - if (parts.size() >= 3) { - QDate date = fileInfo.lastModified().date(); - - if (date.isValid()) { - int day = date.day(); - QString suffix = (day >= 11 && day <= 13) ? "th" : - (day % 10 == 1) ? "st" : - (day % 10 == 2) ? "nd" : - (day % 10 == 3) ? "rd" : "th"; - - friendlyName = QString("%1 %2%3, %4 (%5)") - .arg(date.toString("MMMM")) - .arg(day) - .arg(suffix) - .arg(date.year()) - .arg(parts[1]); - } - } - } - - if (friendlyName == fileName) { - friendlyName.remove(".tar.zst"); - friendlyName.replace("_", " "); - } - - friendlyNames.append(friendlyName); - backupMap[friendlyName] = fileName; - } - - if (id == 0) { - QString name = InputDialog::getText(tr("Name your backup"), this, tr("Backup Name")).trimmed().replace(" ", "_"); - if (!name.isEmpty()) { - QStringList distinctFileNames = backupDir.entryList(QDir::Files | QDir::NoDotAndDotDot); - if (distinctFileNames.contains(name + ".tar.zst")) { - ConfirmationDialog::alert(tr("Name already in use. Please choose a different name!"), this); - return; - } - - std::thread([=]() { - parent->keepScreenOn = true; - - starpilotBackupButton->setEnabled(false); - starpilotBackupButton->setValue(tr("Backing up...")); - - starpilotBackupButton->setVisibleButton(1, false); - starpilotBackupButton->setVisibleButton(2, false); - starpilotBackupButton->setVisibleButton(3, false); - - std::system(QString("tar --use-compress-program=zstd -cf %1 %2").arg(backupDir.absoluteFilePath(name + ".tar.zst"), "/data/openpilot").toStdString().c_str()); - - starpilotBackupButton->setValue(tr("Backup created!")); - - util::sleep_for(2500); - - starpilotBackupButton->setEnabled(true); - starpilotBackupButton->setValue(""); - - starpilotBackupButton->setVisibleButton(1, true); - starpilotBackupButton->setVisibleButton(2, true); - starpilotBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - - } else if (id == 1) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a backup to delete"), friendlyNames, "", this); - if (!selection.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Delete this backup?"), tr("Delete"), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - starpilotBackupButton->setEnabled(false); - starpilotBackupButton->setValue(tr("Deleting...")); - - starpilotBackupButton->setVisibleButton(0, false); - starpilotBackupButton->setVisibleButton(2, false); - starpilotBackupButton->setVisibleButton(3, false); - - QFile::remove(backupDir.absoluteFilePath(backupMap[selection])); - - starpilotBackupButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - starpilotBackupButton->setEnabled(true); - starpilotBackupButton->setValue(""); - - starpilotBackupButton->setVisibleButton(0, true); - starpilotBackupButton->setVisibleButton(2, true); - starpilotBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - } - - } else if (id == 2) { - if (ConfirmationDialog::confirm(tr("Delete all StarPilot backups?"), tr("Delete All"), this)) { - std::thread([=]() mutable { - parent->keepScreenOn = true; - - starpilotBackupButton->setEnabled(false); - starpilotBackupButton->setValue(tr("Deleting...")); - - starpilotBackupButton->setVisibleButton(0, false); - starpilotBackupButton->setVisibleButton(1, false); - starpilotBackupButton->setVisibleButton(3, false); - - backupDir.removeRecursively(); - backupDir.mkpath("."); - - starpilotBackupButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - starpilotBackupButton->setEnabled(true); - starpilotBackupButton->setValue(""); - - starpilotBackupButton->setVisibleButton(0, true); - starpilotBackupButton->setVisibleButton(1, true); - starpilotBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - - } else if (id == 3) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a backup to restore"), friendlyNames, "", this); - if (!selection.isEmpty()) { - if (StarPilotConfirmationDialog::yesorno(tr("Restore this backup? This will overwrite your current installation and reboot the device."), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - starpilotBackupButton->setEnabled(false); - starpilotBackupButton->setValue(tr("Restoring...")); - - starpilotBackupButton->setVisibleButton(0, false); - starpilotBackupButton->setVisibleButton(1, false); - starpilotBackupButton->setVisibleButton(2, false); - - std::system(QString("rm -rf /data/openpilot/* && tar --use-compress-program=zstd -xf %1 -C /").arg(backupDir.absoluteFilePath(backupMap[selection])).toStdString().c_str()); - QFile("/cache/on_backup").open(QIODevice::WriteOnly); - - starpilotBackupButton->setValue(tr("Restored!")); - - util::sleep_for(2500); - - starpilotBackupButton->setValue(tr("Rebooting...")); - - util::sleep_for(2500); - - Hardware::reboot(); - }).detach(); - } - } - } - }); - if (forceOpenDescriptions) { - starpilotBackupButton->showDescription(); - } - dataMainList->addItem(starpilotBackupButton); - - StarPilotButtonsControl *toggleBackupButton = new StarPilotButtonsControl(tr("Toggle Backups"), tr("Create, delete, or restore toggle backups."), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")}); - QObject::connect(toggleBackupButton, &StarPilotButtonsControl::buttonClicked, [=](int id) { - QDir backupDir("/data/toggle_backups"); - - QStringList backupNames = backupDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); - std::sort(backupNames.begin(), backupNames.end(), std::greater()); - - QMap backupMap; - for (const QString &dirName : backupNames) { - if (dirName.contains("in_progress")) { - continue; - } - - QString friendlyName = dirName; - - if (dirName.endsWith("_auto")) { - QStringList parts = QString(dirName).remove("_auto").split("_"); - - if (parts.size() >= 2) { - QDate date = QDate::fromString(parts[0], "yyyy-MM-dd"); - QTime time = QTime::fromString(parts[1], "HH-mm-ss"); - - if (date.isValid() && time.isValid()) { - int day = date.day(); - QString suffix = (day >= 11 && day <= 13) ? "th" : - (day % 10 == 1) ? "st" : - (day % 10 == 2) ? "nd" : - (day % 10 == 3) ? "rd" : "th"; - - friendlyName = QString("%1 %2%3, %4 (%5)") - .arg(date.toString("MMMM")) - .arg(day) - .arg(suffix) - .arg(date.year()) - .arg(time.toString("h:mm AP")); - } - } - } - - if (friendlyName == dirName) { - friendlyName.replace("_", " "); - } - - backupMap[friendlyName] = dirName; - } - - if (id == 0) { - QString name = InputDialog::getText(tr("Name your backup"), this, tr("Backup Name")).trimmed().replace(" ", "_"); - if (!name.isEmpty()) { - if (backupNames.contains(name)) { - ConfirmationDialog::alert(tr("Name already in use. Please choose a different name!"), this); - return; - } - - std::thread([=]() { - parent->keepScreenOn = true; - - toggleBackupButton->setEnabled(false); - toggleBackupButton->setValue(tr("Backing up...")); - - toggleBackupButton->setVisibleButton(1, false); - toggleBackupButton->setVisibleButton(2, false); - toggleBackupButton->setVisibleButton(3, false); - - std::system(QString("cp -r /data/params/d/ %1").arg(backupDir.absoluteFilePath(name)).toStdString().c_str()); - - toggleBackupButton->setValue(tr("Backup created!")); - - util::sleep_for(2500); - - toggleBackupButton->setEnabled(true); - toggleBackupButton->setValue(""); - - toggleBackupButton->setVisibleButton(1, true); - toggleBackupButton->setVisibleButton(2, true); - toggleBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - - } else if (id == 1) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a backup to delete"), backupMap.keys(), "", this); - if (!selection.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Delete this backup?"), tr("Delete"), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - toggleBackupButton->setEnabled(false); - toggleBackupButton->setValue(tr("Deleting...")); - - toggleBackupButton->setVisibleButton(0, false); - toggleBackupButton->setVisibleButton(2, false); - toggleBackupButton->setVisibleButton(3, false); - - QDir(backupDir.absoluteFilePath(backupMap[selection])).removeRecursively(); - - toggleBackupButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - toggleBackupButton->setEnabled(true); - toggleBackupButton->setValue(""); - - toggleBackupButton->setVisibleButton(0, true); - toggleBackupButton->setVisibleButton(2, true); - toggleBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - } - - } else if (id == 2) { - if (ConfirmationDialog::confirm(tr("Delete all toggle backups?"), tr("Delete All"), this)) { - std::thread([=]() mutable { - parent->keepScreenOn = true; - - toggleBackupButton->setEnabled(false); - toggleBackupButton->setValue(tr("Deleting...")); - - toggleBackupButton->setVisibleButton(0, false); - toggleBackupButton->setVisibleButton(1, false); - toggleBackupButton->setVisibleButton(3, false); - - backupDir.removeRecursively(); - backupDir.mkpath("."); - - toggleBackupButton->setValue(tr("Deleted!")); - - util::sleep_for(2500); - - toggleBackupButton->setEnabled(true); - toggleBackupButton->setValue(""); - - toggleBackupButton->setVisibleButton(0, true); - toggleBackupButton->setVisibleButton(1, true); - toggleBackupButton->setVisibleButton(3, true); - - parent->keepScreenOn = false; - }).detach(); - } - - } else if (id == 3) { - QString selection = MultiOptionDialog::getSelection(tr("Choose a backup to restore"), backupMap.keys(), "", this); - if (!selection.isEmpty()) { - if (StarPilotConfirmationDialog::yesorno(tr("Restore this backup? This will overwrite your current settings!"), this)) { - std::thread([=]() { - parent->keepScreenOn = true; - - toggleBackupButton->setEnabled(false); - toggleBackupButton->setValue(tr("Restoring...")); - - toggleBackupButton->setVisibleButton(0, false); - toggleBackupButton->setVisibleButton(1, false); - toggleBackupButton->setVisibleButton(2, false); - - std::system(QString("cp -r %1/* /data/params/d/").arg(backupDir.absoluteFilePath(backupMap[selection])).toStdString().c_str()); - - updateStarPilotToggles(); - - toggleBackupButton->setValue(tr("Restored!")); - - util::sleep_for(2500); - - toggleBackupButton->setEnabled(true); - toggleBackupButton->setValue(""); - - toggleBackupButton->setVisibleButton(0, true); - toggleBackupButton->setVisibleButton(1, true); - toggleBackupButton->setVisibleButton(2, true); - - parent->keepScreenOn = false; - }).detach(); - } - } - } - }); - if (forceOpenDescriptions) { - toggleBackupButton->showDescription(); - } - dataMainList->addItem(toggleBackupButton); - - StarPilotButtonsControl *viewStatsButton = new StarPilotButtonsControl(tr("StarPilot Stats"), tr("View your collected StarPilot stats."), "", {tr("RESET"), tr("VIEW")}); - QObject::connect(viewStatsButton, &StarPilotButtonsControl::buttonClicked, [dataLayout, statsLabelsPanel, this](int id) { - if (id == 0) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset all of your StarPilot stats?"), tr("Reset"), this)) { - params.remove("StarPilotStats"); - } - } else if (id == 1) { - emit openSubPanel(); - dataLayout->setCurrentWidget(statsLabelsPanel); - } - }); - if (forceOpenDescriptions) { - viewStatsButton->showDescription(); - } - dataMainList->addItem(viewStatsButton); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [dataLayout, dataMainPanel] { - dataLayout->setCurrentWidget(dataMainPanel); - }); - QObject::connect(parent, &StarPilotSettingsWindow::updateMetric, [this](bool metric){isMetric = metric;}); - QObject::connect(uiState(), &UIState::offroadTransition, [statsLabelsList, this](bool offroad) { - if (offroad) { - updateStatsLabels(statsLabelsList); - } - }); - - updateStatsLabels(statsLabelsList); -} - -void StarPilotDataPanel::updateStatsLabels(StarPilotListWidget *labelsList) { - labelsList->clear(); - - QJsonObject stats = QJsonDocument::fromJson(QByteArray::fromStdString(params.get("StarPilotStats"))).object(); - - static QMap> keyMap = { - {"AEBEvents", {tr("Total Emergency Brake Alerts"), "count"}}, - {"AOLTime", {tr("Time Using \"Always On Lateral\""), "timePercent"}}, - {"CruiseSpeedTimes", {tr("Favorite Set Speed"), "speed"}}, - {"CurrentMonthsMeters", {tr("Distance Driven This Month"), "distance"}}, - {"DayTime", {tr("Time Driving (Daytime)"), "timePercent"}}, - {"Disengages", {tr("Total Disengagements"), "count"}}, - {"Engages", {tr("Total Engagements"), "count"}}, - {"ExperimentalModeTime", {tr("Time Using \"Experimental Mode\""), "timePercent"}}, - {"FrogChirps", {tr("Total Frog Chirps"), "count"}}, - {"FrogHops", {tr("Total Frog Hops"), "count"}}, - {"StarPilotDrives", {tr("Total Drives"), "count"}}, - {"StarPilotMeters", {tr("Total Distance Driven"), "distance"}}, - {"StarPilotSeconds", {tr("Total Driving Time"), "time"}}, - {"FrogSqueaks", {tr("Total Frog Squeaks"), "count"}}, - {"GoatScreams", {tr("Total Goat Screams"), "count"}}, - {"LateralTime", {tr("Time Using Lateral Control"), "timePercent"}}, - {"LongestDistanceWithoutOverride", {tr("Longest Distance Without an Override"), "distance"}}, - {"LongitudinalTime", {tr("Time Using Longitudinal Control"), "timePercent"}}, - {"MaxAcceleration", {tr("Highest Acceleration Rate"), "accel"}}, - {"ModelTimes", {tr("Driving Models:"), "parent"}}, - {"Month", {tr("Month"), "other"}}, - {"NightTime", {tr("Time Driving (Nighttime)"), "timePercent"}}, - {"Overrides", {tr("Total Overrides"), "count"}}, - {"OverrideTime", {tr("Time Overriding openpilot"), "timePercent"}}, - {"PersonalityTimes", {tr("Driving Personalities:"), "parent"}}, - {"RandomEvents", {tr("Random Events:"), "parent"}}, - {"StandstillTime", {tr("Time Stopped"), "timePercent"}}, - {"StopLightTime", {tr("Time Spent at Stoplights"), "timePercent"}}, - {"TrackedTime", {tr("Total Time Tracked"), "time"}}, - {"WeatherTimes", {tr("Time Driven (Weather):"), "parent"}} - }; - - static QMap randomEventsMap = { - {"accel30", tr("UwUs")}, - {"accel35", tr("Loch Ness Encounters")}, - {"accel40", tr("Visits to 1955")}, - {"dejaVuCurve", tr("Deja Vu Moments")}, - {"firefoxSteerSaturated", tr("Internet Explorer Weeeeeeees")}, - {"hal9000", tr("HAL 9000 Denials")}, - {"openpilotCrashedRandomEvent", tr("openpilot Crashes")}, - {"thisIsFineSteerSaturated", tr("This Is Fine Moments")}, - {"toBeContinued", tr("To Be Continued Moments")}, - {"vCruise69", tr("Noices")}, - {"yourFrogTriedToKillMe", tr("Attempted Frog Murders")}, - {"youveGotMail", tr("Total Mail Received")} - }; - - static QSet ignoredKeys = { - "Month" - }; - - QStringList keys = keyMap.keys(); - std::sort(keys.begin(), keys.end(), [&](const QString &a, const QString &b) { - return keyMap.value(a).first.toLower() < keyMap.value(b).first.toLower(); - }); - - std::function format_number = [&](double number) { - return QLocale().toString(number); - }; - - std::function format_distance = [&](double meters) { - double value; - QString unit; - if (isMetric) { - value = meters / 1000.0; - unit = (value == 1.0) ? tr(" kilometer") : tr(" kilometers"); - } else { - value = meters * METER_TO_MILE; - unit = (value == 1.0) ? tr(" mile") : tr(" miles"); - } - return format_number(qRound(value)) + unit; - }; - - std::function format_time = [&](int seconds) { - static int secondsInDay = 60 * 60 * 24; - static int secondsInHour = 60 * 60; - - int days = seconds / secondsInDay; - int hours = (seconds % secondsInDay) / secondsInHour; - int minutes = (seconds % secondsInHour) / 60; - - QString result; - if (days > 0) { - result += format_number(days) + (days == 1 ? tr(" day ") : tr(" days ")); - } - if (hours > 0 || days > 0) { - result += format_number(hours) + (hours == 1 ? tr(" hour ") : tr(" hours ")); - } - result += format_number(minutes) + (minutes == 1 ? tr(" minute") : tr(" minutes")); - return result.trimmed(); - }; - - double trackedTime = stats.contains("TrackedTime") ? stats.value("TrackedTime").toDouble() : 0.0; - - for (const QString &key : keys) { - if (ignoredKeys.contains(key)) { - continue; - } - - QJsonValue value = stats.contains(key) ? stats.value(key) : QJsonValue(0); - QString labelText = keyMap.value(key).first; - QString type = keyMap.value(key).second; - - if (key == "AEBEvents") { - QJsonObject totalEvents = stats.value("TotalEvents").toObject(); - - QString trimmedLabel = labelText; - QString prefix = tr("Total "); - if (trimmedLabel.startsWith(prefix)) { - trimmedLabel = trimmedLabel.mid(prefix.length()); - } - QString displayValue = format_number(totalEvents.value("stockAeb").toInt(0) + totalEvents.value("fcw").toInt(0)) + " " + trimmedLabel; - - labelsList->addItem(new LabelControl(labelText, displayValue, "", this)); - - } else if (key == "CruiseSpeedTimes" && value.isObject()) { - QJsonObject speeds = value.toObject(); - - double maxTime = -1.0; - QString bestSpeed; - for (const QString &speedKey : speeds.keys()) { - double time = speeds.value(speedKey).toDouble(); - if (time > maxTime) { - bestSpeed = speedKey; - maxTime = time; - } - } - - QString displaySpeed; - if (isMetric) { - displaySpeed = QString::number(qRound(bestSpeed.toDouble() * MS_TO_KPH)) + " " + tr("km/h"); - } else { - displaySpeed = QString::number(qRound(bestSpeed.toDouble() * MS_TO_MPH)) + " " + tr("mph"); - } - - labelsList->addItem(new LabelControl(labelText, displaySpeed + " (" + format_time(maxTime) + ")", "", this)); - } else if (type == "parent" && value.isObject()) { - labelsList->addItem(new LabelControl(labelText, "", "", this)); - - QJsonObject subObject = value.toObject(); - QStringList subKeys; - - if (key == "RandomEvents") { - subKeys = randomEventsMap.keys(); - } else { - subKeys = subObject.keys(); - } - - std::sort(subKeys.begin(), subKeys.end(), [&](const QString &a, const QString &b) { - QString displayA, displayB; - if (key == "RandomEvents") { - displayA = randomEventsMap.value(a, a); - displayB = randomEventsMap.value(b, b); - } else { - displayA = a; - displayB = b; - } - return displayA.toLower() < displayB.toLower(); - }); - - for (const QString &subkey : subKeys) { - if (subkey == "Unknown") { - continue; - } - - QString displaySubKey; - if (key == "ModelTimes") { - displaySubKey = cleanModelName(subkey); - } else if (key == "RandomEvents") { - displaySubKey = randomEventsMap.value(subkey, subkey); - } else if (key == "WeatherTimes") { - displaySubKey = subkey.left(1).toUpper() + subkey.mid(1); - } else { - displaySubKey = subkey; - } - - QString subvalue; - if (key.endsWith("Times")) { - subvalue = format_time(subObject.value(subkey).toDouble()); - } else { - subvalue = format_number(subObject.value(subkey).toInt(0)); - } - - labelsList->addItem(new LabelControl(" " + displaySubKey, subvalue, "", this)); - } - } else { - QString displayValue; - if (type == "accel") { - displayValue = QString::number(value.toDouble(), 'f', 2) + " " + tr("m/s²"); - } else if (type == "count") { - QString trimmedLabel = labelText; - QString prefix = tr("Total "); - if (trimmedLabel.startsWith(prefix)) { - trimmedLabel = trimmedLabel.mid(prefix.length()); - } - displayValue = format_number(value.toInt()) + " " + trimmedLabel; - } else if (type == "distance") { - displayValue = format_distance(value.toDouble()); - } else if (type == "time" || type == "timePercent") { - displayValue = format_time(value.toDouble()); - } else { - QString stringValue = value.toVariant().toString(); - displayValue = stringValue.isEmpty() ? "0" : stringValue; - } - - labelsList->addItem(new LabelControl(labelText, displayValue, "", this)); - - if (type == "timePercent") { - int percent = 0; - if (trackedTime > 0.0) { - percent = (value.toDouble() * 100.0) / trackedTime; - } - - labelsList->addItem(new LabelControl(tr("% of ") + labelText, format_number(percent) + "%", "", this)); - } - } - } -} diff --git a/starpilot/ui/qt/offroad/data_settings.h b/starpilot/ui/qt/offroad/data_settings.h deleted file mode 100644 index dc01c17c9..000000000 --- a/starpilot/ui/qt/offroad/data_settings.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotDataPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotDataPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -private: - void updateStatsLabels(StarPilotListWidget *labelsList); - - bool forceOpenDescriptions; - bool isMetric; - - StarPilotSettingsWindow *parent; - - Params params; -}; diff --git a/starpilot/ui/qt/offroad/device_settings.cc b/starpilot/ui/qt/offroad/device_settings.cc deleted file mode 100644 index 1265a5d08..000000000 --- a/starpilot/ui/qt/offroad/device_settings.cc +++ /dev/null @@ -1,272 +0,0 @@ -#include "starpilot/ui/screenrecorder/screenrecorder.h" -#include "starpilot/ui/qt/offroad/device_settings.h" - -namespace { - -std::string cacheParamsPath() { - return Path::params_cache(); -} - -void prepareKonikServerSwitch(bool use_konik) { - Params params; - Params params_cache(cacheParamsPath()); - - if (use_konik) { - params.remove("KonikDongleId"); - params_cache.remove("KonikDongleId"); - } else { - params.remove("DongleId"); - params_cache.remove("DongleId"); - } -} - -} // namespace - -StarPilotDevicePanel::StarPilotDevicePanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - ScreenRecorder *screenRecorder = new ScreenRecorder(this); - screenRecorder->setVisible(false); - - QStackedLayout *deviceLayout = new QStackedLayout(); - addItem(deviceLayout); - - StarPilotListWidget *deviceList = new StarPilotListWidget(this); - - ScrollView *devicePanel = new ScrollView(deviceList, this); - - deviceLayout->addWidget(devicePanel); - - StarPilotListWidget *deviceManagementList = new StarPilotListWidget(this); - StarPilotListWidget *screenList = new StarPilotListWidget(this); - - ScrollView *deviceManagementPanel = new ScrollView(deviceManagementList, this); - ScrollView *screenPanel = new ScrollView(screenList, this); - - deviceLayout->addWidget(deviceManagementPanel); - deviceLayout->addWidget(screenPanel); - - const std::vector> deviceToggles { - {"DeviceManagement", tr("Device Settings"), tr("Settings that control how the device runs, powers off, and manages driving data."), "../../starpilot/assets/toggle_icons/icon_device.png"}, - {"DeviceShutdown", tr("Device Shutdown Timer"), tr("Keep the device on for the set amount of time after a drive before it shuts down automatically."), ""}, - {"DisableWideRoad", tr("Disable Wide Road Camera"), QString("%1

    %2").arg(tr("WARNING: Only use this if the wide camera is malfunctioning or for development purposes. This may cause instability!")).arg(tr("Requires a reboot to take effect.")), ""}, - {"NoLogging", tr("Disable Logging"), QString("%1

    %2").arg(tr("WARNING: This will prevent your drives from being recorded and all data will be unobtainable!")).arg(tr("Prevent the device from saving driving data.")), ""}, - {"NoUploads", tr("Disable Uploads"), QString("%1

    %2").arg(tr("WARNING: This will prevent your drives from being uploaded to comma connect which will impact debugging and official support from comma!")).arg(tr("Prevent the device from uploading driving data.")), ""}, - {"HigherBitrate", tr("High-Quality Recording"), tr("Save drive footage in higher video quality."), ""}, - {"LowVoltageShutdown", tr("Low-Voltage Cutoff"), tr("While parked, if the battery voltage falls below the set level, the device shuts down to prevent excessive battery drain."), ""}, - {"IncreaseThermalLimits", tr("Raise Temperature Limits"), QString("%1

    %2").arg(tr("WARNING: Running at higher temperatures may damage your device!")).arg(tr("Allow the device to run at higher temperatures before throttling or shutting down. Use only if you understand the risks!")), ""}, - {"UseKonikServer", tr("Use Konik Server"), tr("Upload driving data to \"stable.konik.ai\" instead of \"connect.comma.ai\"."), ""}, - - {"ScreenManagement", tr("Screen Settings"), tr("Settings that control screen brightness, screen recording, and timeout duration."), "../../starpilot/assets/toggle_icons/icon_light.png"}, - {"ScreenBrightness", tr("Screen Brightness (Offroad)"), tr("The screen brightness while not driving."), ""}, - {"ScreenBrightnessOnroad", tr("Screen Brightness (Onroad)"), tr("The screen brightness while driving."), ""}, - {"ScreenRecorder", tr("Screen Recorder"), tr("Add a button to the driving screen to record the display."), ""}, - {"ScreenTimeout", tr("Screen Timeout (Offroad)"), tr("How long the screen stays on after being tapped while not driving."), ""}, - {"ScreenTimeoutOnroad", tr("Screen Timeout (Onroad)"), tr("How long the screen stays on after being tapped while driving."), ""}, - {"StandbyMode", tr("Standby Mode"), tr("Turn the screen off while driving and automatically wake it up for alerts or engagement state changes."), ""} - }; - - for (const auto &[param, title, desc, icon] : deviceToggles) { - AbstractControl *deviceToggle; - - if (param == "DeviceManagement") { - StarPilotManageControl *deviceManagementToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(deviceManagementToggle, &StarPilotManageControl::manageButtonClicked, [deviceLayout, deviceManagementPanel]() { - deviceLayout->setCurrentWidget(deviceManagementPanel); - }); - deviceToggle = deviceManagementToggle; - } else if (param == "DeviceShutdown") { - std::map shutdownLabels; - for (int i = 0; i <= 33; ++i) { - shutdownLabels[i] = i == 0 ? tr("5 mins") : i <= 3 ? QString::number(i * 15) + tr(" mins") : QString::number(i - 3) + (i == 4 ? tr(" hour") : tr(" hours")); - } - deviceToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 33, QString(), shutdownLabels); - } else if (param == "NoUploads") { - std::vector uploadsToggles{"DisableOnroadUploads"}; - std::vector uploadsToggleNames{tr("Disable Onroad Only")}; - deviceToggle = new StarPilotButtonToggleControl(param, title, desc, icon, uploadsToggles, uploadsToggleNames); - } else if (param == "LowVoltageShutdown") { - deviceToggle = new StarPilotParamValueControl(param, title, desc, icon, 11.8, 12.5, tr(" volts"), std::map(), 0.1); - - } else if (param == "ScreenManagement") { - StarPilotManageControl *screenToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(screenToggle, &StarPilotManageControl::manageButtonClicked, [deviceLayout, screenPanel]() { - deviceLayout->setCurrentWidget(screenPanel); - }); - deviceToggle = screenToggle; - } else if (param == "ScreenBrightness" || param == "ScreenBrightnessOnroad") { - std::map brightnessLabels; - const int minBrightness = 1; - for (int i = minBrightness; i <= 101; ++i) { - brightnessLabels[i] = i == 101 ? tr("Auto") : QString::number(i) + "%"; - } - deviceToggle = new StarPilotParamValueControl(param, title, desc, icon, minBrightness, 101, QString(), brightnessLabels, 1, true); - } else if (param == "ScreenRecorder") { - std::vector recorderButtonNames{tr("Start Recording"), tr("Stop Recording")}; - StarPilotButtonControl *recorderToggle = new StarPilotButtonControl(param, title, desc, icon, recorderButtonNames, true); - QObject::connect(recorderToggle, &StarPilotButtonControl::buttonClicked, [recorderToggle, screenRecorder](int id) { - if (id == 0) { - recorderToggle->setCheckedButton(1); - - recorderToggle->setVisibleButton(0, false); - recorderToggle->setVisibleButton(1, true); - - screenRecorder->startRecording(); - } else if (id == 1) { - recorderToggle->clearCheckedButtons(); - - recorderToggle->setVisibleButton(0, true); - recorderToggle->setVisibleButton(1, false); - - screenRecorder->stopRecording(); - } - }); - recorderToggle->setVisibleButton(1, false); - deviceToggle = recorderToggle; - } else if (param == "ScreenTimeout" || param == "ScreenTimeoutOnroad") { - deviceToggle = new StarPilotParamValueControl(param, title, desc, icon, 5, 60, tr(" seconds"), {}, 5); - - } else { - deviceToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = deviceToggle; - - if (deviceManagementKeys.contains(param)) { - deviceManagementList->addItem(deviceToggle); - } else if (screenKeys.contains(param)) { - screenList->addItem(deviceToggle); - } else { - deviceList->addItem(deviceToggle); - - parentKeys.insert(param); - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(deviceToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(deviceToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(deviceToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - static_cast(toggles["IncreaseThermalLimits"])->setConfirmation(true, false); - static_cast(toggles["NoLogging"])->setConfirmation(true, false); - static_cast(toggles["NoUploads"])->setConfirmation(true, false); - - QSet brightnessKeys = {"ScreenBrightness", "ScreenBrightnessOnroad"}; - for (const QString &key : brightnessKeys) { - StarPilotParamValueControl *paramControl = static_cast(toggles[key]); - QObject::connect(paramControl, &StarPilotParamValueControl::valueChanged, [key, this](int value) { - if (!started && key == "ScreenBrightness") { - Hardware::set_brightness(value); - } else if (started && key == "ScreenBrightnessOnroad") { - Hardware::set_brightness(value); - } - }); - } - - QSet forceUpdateKeys = {"NoUploads"}; - for (const QString &key : forceUpdateKeys) { - QObject::connect(static_cast(toggles[key]), &StarPilotButtonToggleControl::buttonClicked, this, &StarPilotDevicePanel::updateToggles); - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &StarPilotDevicePanel::updateToggles); - } - - QSet rebootKeys = {"DisableWideRoad", "HigherBitrate", "UseKonikServer"}; - for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { - QString filePath; - if (key == "HigherBitrate") { - filePath = "/cache/use_HD"; - } else if (key == "UseKonikServer") { - filePath = "/cache/use_konik"; - prepareKonikServerSwitch(state); - } - - if (!filePath.isEmpty()) { - QFile toggleFile(filePath); - if (state) { - if (!toggleFile.exists()) { - toggleFile.open(QIODevice::WriteOnly); - toggleFile.close(); - } - } else { - if (toggleFile.exists()) { - toggleFile.remove(); - } - } - } - - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - }); - } - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [deviceLayout, devicePanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - deviceLayout->setCurrentWidget(devicePanel); - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotDevicePanel::updateState); -} - -void StarPilotDevicePanel::showEvent(QShowEvent *event) { - updateToggles(); -} - -void StarPilotDevicePanel::updateState(const UIState &s) { - if (!isVisible()) { - return; - } - - started = s.scene.started; -} - -void StarPilotDevicePanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles && key == "HigherBitrate") { - setVisible &= params.getBool("DeviceManagement") && params.getBool("NoUploads") && !params.getBool("DisableOnroadUploads"); - } - - else if (key == "UseKonikServer" && QFile("/data/not_vetted").exists()) { - static_cast(toggle)->forceOn(true); - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (deviceManagementKeys.contains(key)) { - toggles["DeviceManagement"]->setVisible(true); - } else if (screenKeys.contains(key)) { - toggles["ScreenManagement"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/device_settings.h b/starpilot/ui/qt/offroad/device_settings.h deleted file mode 100644 index 8d152741a..000000000 --- a/starpilot/ui/qt/offroad/device_settings.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotDevicePanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotDevicePanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateState(const UIState &s); - void updateToggles(); - - bool forceOpenDescriptions; - bool started; - - std::map toggles; - - QSet deviceManagementKeys = {"DeviceShutdown", "DisableWideRoad", "HigherBitrate", "IncreaseThermalLimits", "LowVoltageShutdown", "NoLogging", "NoUploads", "UseKonikServer"}; - QSet screenKeys = {"ScreenBrightness", "ScreenBrightnessOnroad", "ScreenRecorder", "ScreenTimeout", "ScreenTimeoutOnroad", "StandbyMode"}; - - QSet parentKeys; - - StarPilotSettingsWindow *parent; - - Params params; -}; diff --git a/starpilot/ui/qt/offroad/expandable_multi_option_dialog.cc b/starpilot/ui/qt/offroad/expandable_multi_option_dialog.cc deleted file mode 100644 index 573c578ce..000000000 --- a/starpilot/ui/qt/offroad/expandable_multi_option_dialog.cc +++ /dev/null @@ -1,769 +0,0 @@ -#include "starpilot/ui/qt/offroad/expandable_multi_option_dialog.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "selfdrive/ui/qt/widgets/scrollview.h" - -ExpandableMultiOptionDialog::ExpandableMultiOptionDialog(const QString &prompt_text, - const QMap &seriesToModels, - const QString ¤t, QWidget *parent, - const QStringList &userFavorites, - const QStringList &communityFavorites, - const QMap &modelReleasedDates, - const QMap &modelFileToNameMap, - const QString &initialSortMode) - : DialogBase(parent), seriesToModels(seriesToModels), currentSortMode(initialSortMode.isEmpty() ? QString("alphabetical") : initialSortMode), - userFavorites(userFavorites), communityFavorites(communityFavorites), modelReleasedDates(modelReleasedDates), - modelFileToNameMap(modelFileToNameMap), currentSelection(current) { - - baseSeriesToModels = seriesToModels; - - for (auto it = this->modelFileToNameMap.constBegin(); it != this->modelFileToNameMap.constEnd(); ++it) { - modelNameToFileMap.insert(it.value(), it.key()); - } - - for (auto it = seriesToModels.constBegin(); it != seriesToModels.constEnd(); ++it) { - const QStringList &models = it.value(); - for (const QString &modelName : models) { - if (modelName.isEmpty() || modelNameToFileMap.contains(modelName)) { - continue; - } - this->modelFileToNameMap.insert(modelName, modelName); - modelNameToFileMap.insert(modelName, modelName); - } - } - - currentSelectionKey = modelNameToFileMap.value(currentSelection); - if (!currentSelectionKey.isEmpty()) { - selectionKey = currentSelectionKey; - selection = this->modelFileToNameMap.value(currentSelectionKey, currentSelection); - currentSelection = selection; - } else { - selectionKey.clear(); - selection.clear(); - currentSelection.clear(); - } - - if (currentSortMode != "alphabetical" && currentSortMode != "date" && - currentSortMode != "favorites" && currentSortMode != "date_oldest") { - currentSortMode = "alphabetical"; - } - - QFrame *container = new QFrame(this); - container->setStyleSheet(R"( - QFrame { background-color: #1B1B1B; } - QPushButton { - height: 135; - padding: 0px 50px; - text-align: left; - font-size: 55px; - font-weight: 300; - border-radius: 10px; - background-color: #4F4F4F; - border: 2px solid transparent; - } - QPushButton.model-option:checked { - background-color: #465BEA !important; - border: 3px solid #FFFFFF !important; - color: white !important; - font-weight: 500 !important; - } - QPushButton:hover { background-color: #5A5A5A; } - QPushButton.model-option:checked:hover { background-color: #5A6BEA; } - QPushButton:pressed { - background-color: #3049F4; - } - QPushButton.model-option:checked:pressed { - background-color: #3049F4; - border: 3px solid #CCCCCC; - } - QPushButton.series-header { - background-color: #333333; - font-weight: 500; - text-align: left; - padding-left: 80px; - } - QPushButton.series-header:hover { background-color: #404040; } - QPushButton.favorite-button { - background-color: transparent; - border: none; - font-size: 60px; - padding: 0px; - margin: 0px; - min-width: 80px; - max-width: 80px; - } - QPushButton.favorite-button:hover { background-color: #404040; } - QComboBox { - background-color: #4F4F4F; - border: 2px solid transparent; - border-radius: 10px; - padding: 10px; - font-size: 50px; - color: white; - min-width: 200px; - } - QComboBox:hover { background-color: #5A5A5A; } - QComboBox::drop-down { - border: none; - width: 50px; - } - QComboBox::down-arrow { - image: url("../../starpilot/assets/toggle_icons/icon_dropdown.png"); - width: 30px; - height: 30px; - } - QComboBox QAbstractItemView { - background-color: #4F4F4F; - border: 2px solid #FFFFFF; - border-radius: 10px; - color: white; - selection-background-color: #465BEA; - font-size: 50px; - } - )"); - - QVBoxLayout *main_layout = new QVBoxLayout(container); - main_layout->setContentsMargins(55, 50, 55, 50); - - QLabel *title = new QLabel(prompt_text, this); - title->setStyleSheet("font-size: 70px; font-weight: 500;"); - main_layout->addWidget(title, 0, Qt::AlignLeft | Qt::AlignTop); - main_layout->addSpacing(25); - - // Sort controls - simple cycling button - QHBoxLayout *sortLayout = new QHBoxLayout(); - sortLayout->setContentsMargins(0, 0, 0, 0); - sortLayout->setSpacing(20); - sortLayout->addStretch(); // Push to the right - - QLabel *sortLabel = new QLabel(tr("Sort by:"), this); - sortLabel->setStyleSheet("font-size: 50px; color: white;"); - sortLayout->addWidget(sortLabel); - - QPushButton *sortButton = new QPushButton(tr("Alphabetical"), this); - sortButton->setFocusPolicy(Qt::NoFocus); - sortButton->setAutoDefault(false); - sortButton->setDefault(false); - sortButton->setFixedWidth(420); - sortButton->setStyleSheet(R"( - QPushButton { - background-color: #4F4F4F; - border: 2px solid transparent; - border-radius: 10px; - padding: 10px 20px; - font-size: 50px; - color: white; - text-align: center; - } - QPushButton:hover { background-color: #5A5A5A; } - )"); - - // Set initial button text based on sort mode - if (currentSortMode == "date") { - sortButton->setText(tr("Date (Newest)")); - } else if (currentSortMode == "date_oldest") { - sortButton->setText(tr("Date (Oldest)")); - } else if (currentSortMode == "favorites") { - sortButton->setText(tr("Favorites First")); - } else { - sortButton->setText(tr("Alphabetical")); - } - - QWidget *sortWidget = new QWidget(container); - sortWidget->setLayout(sortLayout); - sortWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); - sortLayout->setSizeConstraint(QLayout::SetFixedSize); - sortWidget->setStyleSheet("background: transparent;"); - - sortLayout->addWidget(sortButton); - - auto updateSortOverlayGeometry = [sortWidget, sortLayout]() { - if (!sortWidget) return; - const QSize hint = sortLayout->sizeHint(); - sortWidget->setFixedSize(hint); - }; - updateSortOverlayGeometry(); - - QObject::connect(sortButton, &QPushButton::clicked, [this, sortButton, updateSortOverlayGeometry]() { - if (currentSortMode == "alphabetical") { - currentSortMode = "date"; - sortButton->setText(tr("Date (Newest)")); - } else if (currentSortMode == "date") { - currentSortMode = "date_oldest"; - sortButton->setText(tr("Date (Oldest)")); - } else if (currentSortMode == "date_oldest") { - currentSortMode = "favorites"; - sortButton->setText(tr("Favorites First")); - } else { - currentSortMode = "alphabetical"; - sortButton->setText(tr("Alphabetical")); - } - updateSortOverlayGeometry(); - updateSorting(); - }); - - listWidgetContainer = new QWidget(this); - listLayout = new QVBoxLayout(listWidgetContainer); - listLayout->setSpacing(10); - listLayout->setContentsMargins(0, 0, 0, 0); - - confirmButton = new QPushButton(tr("Select")); - confirmButton->setObjectName("confirm_btn"); - confirmButton->setEnabled(!selectionKey.isEmpty()); - - scrollView = new ScrollView(listWidgetContainer, this); - scrollView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - if (scrollView->viewport()) { - scrollView->viewport()->setAttribute(Qt::WA_AcceptTouchEvents, true); - } - - QWidget *listContainer = new QWidget(container); - QGridLayout *overlayLayout = new QGridLayout(listContainer); - overlayLayout->setContentsMargins(0, 0, 0, 0); - overlayLayout->setSpacing(0); - overlayLayout->addWidget(scrollView, 0, 0); - overlayLayout->setRowStretch(0, 1); - overlayLayout->setColumnStretch(0, 1); - overlayLayout->addWidget(sortWidget, 0, 0, Qt::AlignRight | Qt::AlignTop); - - // Create series headers and their expandable content - rebuildModelList(seriesToModels.keys(), seriesToModels); - - main_layout->addWidget(listContainer); - main_layout->addSpacing(35); - - // Cancel + confirm buttons - QHBoxLayout *blayout = new QHBoxLayout; - main_layout->addLayout(blayout); - blayout->setSpacing(50); - - QPushButton *cancel_btn = new QPushButton(tr("Cancel")); - QObject::connect(cancel_btn, &QPushButton::clicked, this, &ConfirmationDialog::reject); - QObject::connect(confirmButton, &QPushButton::clicked, this, &ConfirmationDialog::accept); - blayout->addWidget(cancel_btn); - blayout->addWidget(confirmButton); - - QVBoxLayout *outer_layout = new QVBoxLayout(this); - outer_layout->setContentsMargins(50, 50, 50, 50); - outer_layout->addWidget(container); - - // Initial sorting - updateSorting(); -} - -void ExpandableMultiOptionDialog::toggleSeries(const QString &series, QPushButton *headerButton) { - if (!headerButton) return; - - QWidget *container = seriesWidgets.value(series, nullptr); - if (!container) return; - - bool expanded = seriesExpanded[series]; - QString seriesName = series; - - if (expanded) { - container->hide(); - seriesExpanded[series] = false; - headerButton->setText("â–¶ " + seriesName); - } else { - container->show(); - seriesExpanded[series] = true; - headerButton->setText("â–¼ " + seriesName); - - // Auto-scroll to place the series at the top of the viewport when expanded - if (scrollView) { - QPointer headerPtr(headerButton); - QPointer scrollPtr(scrollView); - QTimer::singleShot(50, [headerPtr, scrollPtr]() { - if (!scrollPtr || !headerPtr) return; - QWidget *contents = scrollPtr->widget(); - if (!contents) return; - if (QScrollBar *vScrollBar = scrollPtr->verticalScrollBar()) { - QPoint headerTop = headerPtr->mapTo(contents, QPoint(0, 0)); - int targetValue = qMax(headerTop.y() - 20, 0); - vScrollBar->setValue(targetValue); - } - }); - } - } - - // Update the button's appearance - headerButton->update(); -} - -QString ExpandableMultiOptionDialog::getSelection(const QString &prompt_text, - const QMap &seriesToModels, - const QString ¤t, QWidget *parent, - const QStringList &userFavorites, - const QStringList &communityFavorites, - const QMap &modelReleasedDates, - const QMap &modelFileToNameMap, - const QString &initialSortMode) { - ExpandableMultiOptionDialog d(prompt_text, seriesToModels, current, parent, - userFavorites, communityFavorites, modelReleasedDates, modelFileToNameMap, initialSortMode); - if (d.exec()) { - return d.selection; - } - return ""; -} - -QStringList ExpandableMultiOptionDialog::getUserFavorites() const { - QStringList filteredFavorites; - for (const QString &fav : userFavorites) { - if (modelFileToNameMap.contains(fav) && !filteredFavorites.contains(fav)) { - filteredFavorites.append(fav); - } - } - return filteredFavorites; -} - -void ExpandableMultiOptionDialog::stopActiveScroll() { - if (!scrollView) { - return; - } - - if (QScroller *scroller = QScroller::scroller(scrollView->viewport())) { - if (scroller->state() == QScroller::Scrolling) { - scroller->stop(); - } - } -} - -void ExpandableMultiOptionDialog::stopActiveScrollForInteraction() { - if (!scrollView) { - return; - } - - if (QScroller *scroller = QScroller::scroller(scrollView->viewport())) { - const QScroller::State state = scroller->state(); - if (state == QScroller::Scrolling || state == QScroller::Dragging || state == QScroller::Pressed) { - scroller->stop(); - } - } -} - -void ExpandableMultiOptionDialog::createModelButton(const QString &modelKey, const QString &modelName, const QString &displayName, - QVBoxLayout *layout) { - QString effectiveKey = modelKey.isEmpty() ? modelName : modelKey; - if (effectiveKey.isEmpty()) { - return; - } - - if (!modelFileToNameMap.contains(effectiveKey)) { - const QString storedName = !modelName.isEmpty() ? modelName : displayName; - modelFileToNameMap.insert(effectiveKey, storedName); - } - - if (!modelName.isEmpty()) { - modelNameToFileMap.insert(modelName, effectiveKey); - } - - QWidget *modelWidget = new QWidget(); - QHBoxLayout *modelLayout = new QHBoxLayout(modelWidget); - modelLayout->setContentsMargins(0, 0, 0, 0); - modelLayout->setSpacing(10); - - // Star button - QPushButton *starButton = new QPushButton(); - starButton->setProperty("class", "favorite-button"); - starButton->setCheckable(true); - starButton->setCursor(Qt::PointingHandCursor); - starButton->setFocusPolicy(Qt::NoFocus); - - // Check if this model is a favorite - bool isCommunityFav = communityFavorites.contains(effectiveKey); - bool isUserFav = userFavorites.contains(effectiveKey); - bool isFavorite = isCommunityFav || isUserFav; - - starButton->setChecked(isFavorite); - starButton->setText(isFavorite ? QString::fromUtf16(u"\u2665") : QString::fromUtf16(u"\u2661")); - - QObject::connect(starButton, &QPushButton::clicked, [this, effectiveKey]() { - stopActiveScrollForInteraction(); - toggleFavorite(effectiveKey); - }); - - favoriteButtons[effectiveKey].append(starButton); - modelLayout->addWidget(starButton); - - // Model button - QPushButton *modelButton = new QPushButton(displayName); - modelButton->setCheckable(true); - modelButton->setProperty("class", "model-option"); - modelButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - modelButton->setCursor(Qt::PointingHandCursor); - modelButton->setFocusPolicy(Qt::NoFocus); - modelButton->setProperty("modelKey", effectiveKey); - modelButton->setProperty("modelName", modelName); - - modelButtons[effectiveKey].append(modelButton); - if (selectionKey == effectiveKey && currentSelectionButton.isNull()) { - currentSelectionButton = modelButton; - } - modelLayout->addWidget(modelButton); - - const QString resolvedSelection = modelFileToNameMap.value(effectiveKey, !modelName.isEmpty() ? modelName : displayName); - - QObject::connect(modelButton, &QPushButton::clicked, this, [this, effectiveKey, modelButton, resolvedSelection]() { - stopActiveScrollForInteraction(); - selectionKey = effectiveKey; - currentSelectionKey = effectiveKey; - selection = resolvedSelection; - currentSelection = resolvedSelection; - currentSelectionButton = modelButton; - if (confirmButton) { - confirmButton->setEnabled(true); - } - - updateButtonStyles(); - }); - - layout->addWidget(modelWidget); -} - -void ExpandableMultiOptionDialog::toggleFavorite(const QString &modelKey) { - // Update local state - if (modelKey.isEmpty()) { - return; - } - - if (userFavorites.contains(modelKey)) { - userFavorites.removeAll(modelKey); - } else { - userFavorites.append(modelKey); - } - - updateSorting(); -} - -void ExpandableMultiOptionDialog::updateSorting() { - const QString favoritesSeriesName = QStringLiteral("♥ Favorites"); - QMap newSeriesToModels; - QStringList orderedSeries; - QSet validSeries; - QSet favoriteModelKeys; - QSet availableModelKeys; - displayOverrides.clear(); - - const bool sortByDate = (currentSortMode == "date" || currentSortMode == "date_oldest"); - const bool sortDateNewestFirst = (currentSortMode == "date"); - - for (auto it = baseSeriesToModels.constBegin(); it != baseSeriesToModels.constEnd(); ++it) { - const QStringList &models = it.value(); - for (const QString &modelName : models) { - const QString modelKey = modelNameToFileMap.value(modelName, modelName); - if (!modelKey.isEmpty()) { - availableModelKeys.insert(modelKey); - } - } - } - - if (currentSortMode == "favorites") { - QStringList favoritesList; - - for (const QString &modelKey : communityFavorites) { - if (availableModelKeys.contains(modelKey)) { - const QString modelName = modelFileToNameMap.value(modelKey); - favoritesList.append(modelName); - favoriteModelKeys.insert(modelKey); - displayOverrides.insert(modelKey, tr("%1 (Community Fav)").arg(modelName)); - } - } - - for (const QString &modelKey : userFavorites) { - if (availableModelKeys.contains(modelKey) && !favoriteModelKeys.contains(modelKey)) { - favoritesList.append(modelFileToNameMap.value(modelKey)); - favoriteModelKeys.insert(modelKey); - } - } - - if (!favoritesList.isEmpty()) { - std::sort(favoritesList.begin(), favoritesList.end()); - newSeriesToModels.insert(favoritesSeriesName, favoritesList); - orderedSeries.append(favoritesSeriesName); - validSeries.insert(favoritesSeriesName); - seriesExpanded.insert(favoritesSeriesName, true); - } else { - seriesExpanded.remove(favoritesSeriesName); - } - } else { - seriesExpanded.remove(favoritesSeriesName); - } - - struct SeriesInfo { - QString name; - QStringList models; - QString newestDate; - QString oldestDate; - }; - - QVector seriesInfos; - - for (auto it = baseSeriesToModels.constBegin(); it != baseSeriesToModels.constEnd(); ++it) { - QString series = it.key(); - QStringList models = it.value(); - - if (sortByDate) { - std::sort(models.begin(), models.end(), [this, sortDateNewestFirst](const QString &a, const QString &b) { - QString keyA = modelNameToFileMap.value(a, a); - QString keyB = modelNameToFileMap.value(b, b); - QString dateA = modelReleasedDates.value(keyA, QStringLiteral("1970-01-01")); - QString dateB = modelReleasedDates.value(keyB, QStringLiteral("1970-01-01")); - if (dateA == dateB) { - return a < b; - } - return sortDateNewestFirst ? (dateA > dateB) : (dateA < dateB); - }); - } else { - std::sort(models.begin(), models.end()); - } - - if (currentSortMode == "favorites" && !favoriteModelKeys.isEmpty()) { - QStringList filteredModels; - for (const QString &modelName : models) { - QString key = modelNameToFileMap.value(modelName, modelName); - if (!favoriteModelKeys.contains(key)) { - filteredModels.append(modelName); - } - } - models = filteredModels; - } - - if (models.isEmpty()) { - continue; - } - - QString newestDate = QStringLiteral("1970-01-01"); - QString oldestDate = QStringLiteral("1970-01-01"); - bool hasDate = false; - for (const QString &modelName : models) { - const QString key = modelNameToFileMap.value(modelName, modelName); - const QString date = modelReleasedDates.value(key, QStringLiteral("1970-01-01")); - if (!hasDate) { - newestDate = date; - oldestDate = date; - hasDate = true; - } else { - if (date > newestDate) { - newestDate = date; - } - if (date < oldestDate) { - oldestDate = date; - } - } - } - - if (!hasDate) { - oldestDate = QStringLiteral("1970-01-01"); - } - - seriesInfos.push_back({series, models, newestDate, oldestDate}); - newSeriesToModels.insert(series, models); - } - - if (sortByDate) { - std::sort(seriesInfos.begin(), seriesInfos.end(), [sortDateNewestFirst](const SeriesInfo &a, const SeriesInfo &b) { - if (sortDateNewestFirst) { - if (a.newestDate == b.newestDate) { - return a.name < b.name; - } - return a.newestDate > b.newestDate; - } else { - if (a.oldestDate == b.oldestDate) { - return a.name < b.name; - } - return a.oldestDate < b.oldestDate; - } - }); - } else { - std::sort(seriesInfos.begin(), seriesInfos.end(), [](const SeriesInfo &a, const SeriesInfo &b) { - return a.name < b.name; - }); - } - - for (const SeriesInfo &info : seriesInfos) { - orderedSeries.append(info.name); - validSeries.insert(info.name); - } - - for (auto it = seriesExpanded.begin(); it != seriesExpanded.end(); ) { - if (!validSeries.contains(it.key())) { - it = seriesExpanded.erase(it); - } else { - ++it; - } - } - - rebuildModelList(orderedSeries, newSeriesToModels); - refreshFavoriteIcons(); -} - -void ExpandableMultiOptionDialog::rebuildModelList(const QStringList &orderedSeries, const QMap &newSeriesToModels) { - if (!listLayout) return; - - stopActiveScroll(); - - while (QLayoutItem *item = listLayout->takeAt(0)) { - if (QWidget *w = item->widget()) { - delete w; - } else if (QLayout *layout = item->layout()) { - delete layout; - } - delete item; - } - - seriesWidgets.clear(); - modelButtons.clear(); - favoriteButtons.clear(); - currentSelectionButton = nullptr; - - for (const QString &series : orderedSeries) { - const QStringList models = newSeriesToModels.value(series); - if (models.isEmpty()) { - continue; - } - - QPushButton *seriesHeader = new QPushButton("â–¶ " + series); - seriesHeader->setProperty("class", "series-header"); - seriesHeader->setCheckable(false); - - bool expanded = seriesExpanded.value(series, false); - seriesExpanded.insert(series, expanded); - - QObject::connect(seriesHeader, &QPushButton::clicked, [this, series, seriesHeader]() { - toggleSeries(series, seriesHeader); - }); - - QWidget *seriesContainer = new QWidget(); - QVBoxLayout *seriesLayout = new QVBoxLayout(seriesContainer); - seriesLayout->setContentsMargins(20, 0, 0, 0); - seriesLayout->setSpacing(10); - - for (const QString &modelName : models) { - QString modelKey = modelNameToFileMap.value(modelName, modelName); - if (!modelFileToNameMap.contains(modelKey)) { - modelFileToNameMap.insert(modelKey, modelName); - } - QString displayName = displayOverrides.value(modelKey, modelName); - createModelButton(modelKey, modelName, displayName, seriesLayout); - } - - if (expanded) { - seriesContainer->show(); - seriesHeader->setText("â–¼ " + series); - } else { - seriesContainer->hide(); - seriesHeader->setText("â–¶ " + series); - } - - seriesWidgets.insert(series, seriesContainer); - - listLayout->addWidget(seriesHeader); - listLayout->addWidget(seriesContainer); - } - - listLayout->addStretch(1); - - seriesToModels = newSeriesToModels; - - listWidgetContainer->updateGeometry(); - listWidgetContainer->adjustSize(); - if (scrollView && scrollView->widget()) { - scrollView->widget()->updateGeometry(); - scrollView->widget()->adjustSize(); - } - - updateButtonStyles(); -} - -void ExpandableMultiOptionDialog::refreshFavoriteIcons() { - for (auto it = favoriteButtons.begin(); it != favoriteButtons.end(); ++it) { - const QString &modelKey = it.key(); - const QList &buttons = it.value(); - bool isCommunityFav = communityFavorites.contains(modelKey); - bool isUserFav = userFavorites.contains(modelKey); - bool isFavorite = isCommunityFav || isUserFav; - - for (QPushButton *button : buttons) { - if (!button) continue; - button->setChecked(isFavorite); - button->setText(isFavorite ? QString::fromUtf16(u"\u2665") : QString::fromUtf16(u"\u2661")); - } - } - - if (confirmButton && !selectionKey.isEmpty()) { - confirmButton->setEnabled(true); - } - - updateButtonStyles(); -} - -void ExpandableMultiOptionDialog::updateButtonStyles() { - const QString selectedKey = selectionKey; - const QString selectedStyle = QStringLiteral( - "QPushButton {" - "background-color: #465BEA;" - "border: 3px solid #FFFFFF;" - "color: white;" - "font-weight: 500;" - "height: 135;" - "padding: 0px 50px;" - "text-align: left;" - "font-size: 55px;" - "border-radius: 10px;" - "}"); - - if (selectedKey.isEmpty()) { - currentSelectionButton = nullptr; - } - - QPushButton *explicitButton = currentSelectionButton.data(); - if (explicitButton && explicitButton->property("modelKey").toString() != selectedKey) { - explicitButton = nullptr; - } - - for (auto it = modelButtons.begin(); it != modelButtons.end(); ++it) { - const QString &modelKey = it.key(); - const QList &buttons = it.value(); - const bool keyMatches = (!selectedKey.isEmpty() && modelKey == selectedKey); - bool activatedForKey = false; - - for (QPushButton *button : buttons) { - if (!button) continue; - - bool isActive = false; - if (explicitButton) { - isActive = (button == explicitButton); - } else if (keyMatches && !activatedForKey) { - isActive = true; - activatedForKey = true; - currentSelectionButton = button; - } - - QSignalBlocker blocker(button); - button->setChecked(isActive); - button->setStyleSheet(isActive ? selectedStyle : QString()); - } - } -} diff --git a/starpilot/ui/qt/offroad/expandable_multi_option_dialog.h b/starpilot/ui/qt/offroad/expandable_multi_option_dialog.h deleted file mode 100644 index 2c0b1e61d..000000000 --- a/starpilot/ui/qt/offroad/expandable_multi_option_dialog.h +++ /dev/null @@ -1,76 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "selfdrive/ui/qt/widgets/input.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" - -class QPushButton; -class ExpandableMultiOptionDialog : public DialogBase { - Q_OBJECT - -public: - explicit ExpandableMultiOptionDialog(const QString &prompt_text, const QMap &seriesToModels, - const QString ¤t, QWidget *parent, - const QStringList &userFavorites = QStringList(), - const QStringList &communityFavorites = QStringList(), - const QMap &modelReleasedDates = QMap(), - const QMap &modelFileToNameMap = QMap(), - const QString &initialSortMode = "alphabetical"); - static QString getSelection(const QString &prompt_text, const QMap &seriesToModels, - const QString ¤t, QWidget *parent, - const QStringList &userFavorites = QStringList(), - const QStringList &communityFavorites = QStringList(), - const QMap &modelReleasedDates = QMap(), - const QMap &modelFileToNameMap = QMap(), - const QString &initialSortMode = QString()); - QString selection; - - QString getCurrentSortMode() const { return currentSortMode; } - QStringList getUserFavorites() const; - -private: - void toggleSeries(const QString &series, QPushButton *headerButton); - void toggleFavorite(const QString &modelKey); - void updateSorting(); - void rebuildModelList(const QStringList &orderedSeries, const QMap &newSeriesToModels); - void createModelButton(const QString &modelKey, const QString &modelName, const QString &displayName, - QVBoxLayout *layout); - void refreshFavoriteIcons(); - void updateButtonStyles(); - void stopActiveScroll(); - void stopActiveScrollForInteraction(); - - QMap seriesToModels; - QMap baseSeriesToModels; - QMap seriesWidgets; - QMap seriesExpanded; - QMap> modelButtons; - QMap> favoriteButtons; - - QStringList userFavorites; - QStringList communityFavorites; - QMap modelReleasedDates; - QMap modelFileToNameMap; - QMap modelNameToFileMap; - QMap displayOverrides; - - QString currentSortMode; - QString currentSelection; - QString currentSelectionKey; - QString selectionKey; - - ScrollView *scrollView = nullptr; - QVBoxLayout *listLayout = nullptr; - QPushButton *confirmButton = nullptr; - QWidget *listWidgetContainer = nullptr; - QPointer currentSelectionButton; -}; diff --git a/starpilot/ui/qt/offroad/lateral_settings.cc b/starpilot/ui/qt/offroad/lateral_settings.cc deleted file mode 100644 index 555268428..000000000 --- a/starpilot/ui/qt/offroad/lateral_settings.cc +++ /dev/null @@ -1,447 +0,0 @@ -#include "starpilot/ui/qt/offroad/lateral_settings.h" - -StarPilotLateralPanel::StarPilotLateralPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *lateralLayout = new QStackedLayout(); - addItem(lateralLayout); - - StarPilotListWidget *lateralList = new StarPilotListWidget(this); - - ScrollView *lateralPanel = new ScrollView(lateralList, this); - - lateralLayout->addWidget(lateralPanel); - - StarPilotListWidget *advancedLateralTuneList = new StarPilotListWidget(this); - StarPilotListWidget *aolList = new StarPilotListWidget(this); - StarPilotListWidget *laneChangeList = new StarPilotListWidget(this); - StarPilotListWidget *lateralTuneList = new StarPilotListWidget(this); - StarPilotListWidget *qolList = new StarPilotListWidget(this); - - ScrollView *advancedLateralTunePanel = new ScrollView(advancedLateralTuneList, this); - ScrollView *aolPanel = new ScrollView(aolList, this); - ScrollView *laneChangePanel = new ScrollView(laneChangeList, this); - ScrollView *lateralTunePanel = new ScrollView(lateralTuneList, this); - ScrollView *qolPanel = new ScrollView(qolList, this); - - lateralLayout->addWidget(advancedLateralTunePanel); - lateralLayout->addWidget(aolPanel); - lateralLayout->addWidget(laneChangePanel); - lateralLayout->addWidget(lateralTunePanel); - lateralLayout->addWidget(qolPanel); - - const std::vector> lateralToggles { - {"AdvancedLateralTune", tr("Advanced Lateral Tuning"), tr("Advanced steering control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_advanced_lateral_tune.png"}, - {"SteerDelay", parent->steerActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(parent->steerActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("The time between openpilot's steering command and the vehicle's response. Increase if the vehicle reacts late; decrease if it feels jumpy. Auto-learned by default."), ""}, - {"SteerFriction", parent->friction != 0 ? QString(tr("Friction (Default: %1)")).arg(QString::number(parent->friction, 'f', 2)) : tr("Friction"), tr("Compensates for steering friction. Increase if the wheel sticks near center; decrease if it jitters. Auto-learned by default."), ""}, - {"SteerKP", parent->steerKp != 0 ? QString(tr("Kp Factor (Default: %1)")).arg(QString::number(parent->steerKp, 'f', 2)) : tr("Kp Factor"), tr("How strongly openpilot corrects lane position. Higher is tighter but twitchier; lower is smoother but slower. Auto-learned by default."), ""}, - {"SteerLatAccel", parent->latAccelFactor != 0 ? QString(tr("Lateral Acceleration (Default: %1)")).arg(QString::number(parent->latAccelFactor, 'f', 2)) : tr("Lateral Acceleration"), tr("Maps steering torque to turning response. Increase for sharper turns; decrease for gentler steering. Auto-learned by default."), ""}, - {"SteerRatio", parent->steerRatio != 0 ? QString(tr("Steer Ratio (Default: %1)")).arg(QString::number(parent->steerRatio, 'f', 2)) : tr("Steer Ratio"), tr("The relationship between steering wheel rotation and road wheel angle. Increase if steering feels too quick or twitchy; decrease if it feels too slow or weak. Auto-learned by default."), ""}, - {"ForceAutoTune", tr("Force Auto-Tune On"), tr("Force-enable openpilot's live auto-tuning for \"Friction\" and \"Lateral Acceleration\"."), ""}, - {"ForceAutoTuneOff", tr("Force Auto-Tune Off"), tr("Force-disable openpilot's live auto-tuning for \"Friction\" and \"Lateral Acceleration\" and use the set value instead."), ""}, - {"ForceTorqueController", tr("Force Torque Controller"), tr("Use torque-based steering control instead of angle-based control for smoother lane keeping, especially in curves."), ""}, - - {"AlwaysOnLateral", tr("Always On Lateral"), tr("openpilot's steering remains active even when the accelerator or brake pedals are pressed."), "../../starpilot/assets/toggle_icons/icon_always_on_lateral.png"}, - {"PauseAOLOnBrake", tr("Pause on Brake Press Below"), tr("Pause \"Always On Lateral\" below the set speed while the brake pedal is pressed."), ""}, - - {"LaneChanges", tr("Lane Changes"), tr("Allow openpilot to change lanes."), "../../starpilot/assets/toggle_icons/icon_lane.png"}, - {"NudgelessLaneChange", tr("Automatic Lane Changes"), tr("When the turn signal is on, openpilot will automatically change lanes. No steering-wheel nudge required!"), ""}, - {"LaneChangeTime", tr("Lane Change Delay"), tr("Delay between turn signal activation and the start of an automatic lane change."), ""}, - {"MinimumLaneChangeSpeed", tr("Minimum Lane Change Speed"), tr("Lowest speed at which openpilot will change lanes."), ""}, - {"LaneDetectionWidth", tr("Minimum Lane Width"), tr("Prevent automatic lane changes into lanes narrower than the set width."), ""}, - {"OneLaneChange", tr("One Lane Change Per Signal"), tr("Limit automatic lane changes to one per turn-signal activation."), ""}, - {"LaneChangeSmoothing", tr("Lane Change Smoothing"), tr("Controls how smoothly openpilot commits to a lane change. 10 is stock behavior; lower values produce a gentler, more gradual maneuver. 1 stretches the maneuver to ~8 seconds."), ""}, - - {"LateralTune", tr("Lateral Tuning"), tr("Miscellaneous steering control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_lateral_tune.png"}, - {"TurnDesires", tr("Force Turn Desires Below Lane Change Speed"), tr("While driving below the minimum lane change speed with an active turn signal, instruct openpilot to turn left/right."), ""}, - {"NavDesiresAllowed", tr("Use Route Desires"), tr("Allow an active navigation route to request keep-left, keep-right, and low-speed turn desires."), ""}, - {"NNFF", tr("Neural Network Feedforward (NNFF)"), tr("Twilsonco's \"Neural Network FeedForward\" controller. Uses a trained neural network model to predict steering torque based on vehicle speed, roll, and past/future planned path data for smoother, model-based steering."), ""}, - {"NNFFLite", tr("Neural Network Feedforward (NNFF) Lite"), tr("A lightweight version of Twilsonco's \"Neural Network FeedForward\" controller. Uses the \"look-ahead\" planned lateral jerk logic from the full model to help smoothen steering adjustments in curves, but does not use the full neural network for torque calculation."), ""}, - - {"QOLLateral", tr("Quality of Life"), tr("Steering control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"PauseLateralSpeed", tr("Pause Steering Below"), tr("Pause steering below the set speed."), ""}, - {"LateralResumeDelay", tr("Lateral Resume Delay"), tr("Delay before lateral control resumes after the turn signal is turned off. Only applies when the vehicle speed dropped below half the \"Pause Steering Below\" speed during the turn signal. Set to 0 to disable."), ""} - }; - - for (const auto &[param, title, desc, icon] : lateralToggles) { - AbstractControl *lateralToggle; - - if (param == "AdvancedLateralTune") { - StarPilotManageControl *advancedLateralTuneToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(advancedLateralTuneToggle, &StarPilotManageControl::manageButtonClicked, [lateralLayout, advancedLateralTunePanel]() { - lateralLayout->setCurrentWidget(advancedLateralTunePanel); - }); - lateralToggle = advancedLateralTuneToggle; - } else if (param == "SteerDelay") { - std::vector steerDelayButton{"Reset"}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0.01, 1, QString(), std::map(), 0.01, false, {}, steerDelayButton, false, false); - } else if (param == "SteerFriction") { - std::vector steerFrictionButton{"Reset"}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0, 1, QString(), std::map(), 0.01, false, {}, steerFrictionButton, false, false); - } else if (param == "SteerKP") { - std::vector steerKPButton{"Reset"}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, parent->steerKp * 0.5, parent->steerKp * 1.5, QString(), std::map(), 0.01, false, {}, steerKPButton, false, false); - } else if (param == "SteerLatAccel") { - std::vector steerLatAccelButton{"Reset"}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, parent->latAccelFactor * 0.5, parent->latAccelFactor * 1.5, QString(), std::map(), 0.01, false, {}, steerLatAccelButton, false, false); - } else if (param == "SteerRatio") { - std::vector steerRatioButton{"Reset"}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, parent->steerRatio * 0.5, parent->steerRatio * 1.5, QString(), std::map(), 0.01, false, {}, steerRatioButton, false, false); - - } else if (param == "AlwaysOnLateral") { - StarPilotManageControl *aolToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(aolToggle, &StarPilotManageControl::manageButtonClicked, [lateralLayout, aolPanel]() { - lateralLayout->setCurrentWidget(aolPanel); - }); - lateralToggle = aolToggle; - } else if (param == "PauseAOLOnBrake") { - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, QString(), std::map(), 1, true); - - } else if (param == "LaneChanges") { - StarPilotManageControl *laneChangeToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(laneChangeToggle, &StarPilotManageControl::manageButtonClicked, [lateralLayout, laneChangePanel]() { - lateralLayout->setCurrentWidget(laneChangePanel); - }); - lateralToggle = laneChangeToggle; - } else if (param == "LaneChangeTime") { - std::map laneChangeTimeLabels; - for (float i = 0; i <= 5; i += 0.1) { - laneChangeTimeLabels[i] = i == 0 ? tr("Instant") : std::lround(i / 0.1) == 1 / 0.1 ? QString::number(i, 'f', 1) + tr(" second") : QString::number(i, 'f', 1) + tr(" seconds"); - } - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 5, QString(), laneChangeTimeLabels, 0.1); - } else if (param == "LaneDetectionWidth") { - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 15, QString(), std::map(), 0.1, true); - } else if (param == "MinimumLaneChangeSpeed") { - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, QString(), std::map(), 1, true); - } else if (param == "LaneChangeSmoothing") { - std::map smoothingLabels; - smoothingLabels[10] = tr("Stock"); - smoothingLabels[1] = tr("Smoothest"); - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 1, 10, QString(), smoothingLabels, 1); - - } else if (param == "LateralTune") { - StarPilotManageControl *lateralTuneToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(lateralTuneToggle, &StarPilotManageControl::manageButtonClicked, [lateralLayout, lateralTunePanel]() { - lateralLayout->setCurrentWidget(lateralTunePanel); - }); - lateralToggle = lateralTuneToggle; - - } else if (param == "QOLLateral") { - StarPilotManageControl *qolLateralToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(qolLateralToggle, &StarPilotManageControl::manageButtonClicked, [lateralLayout, qolPanel]() { - lateralLayout->setCurrentWidget(qolPanel); - }); - lateralToggle = qolLateralToggle; - } else if (param == "PauseLateralSpeed") { - std::vector pauseLateralToggles{"PauseLateralOnSignal"}; - std::vector pauseLateralToggleNames{tr("Turn Signal Only")}; - lateralToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0, 99, QString(), std::map(), 1, true, pauseLateralToggles, pauseLateralToggleNames, true); - - } else if (param == "LateralResumeDelay") { - std::map delayLabels; - for (int i = 0; i <= 50; ++i) { - float key = i / 10.0f; - delayLabels[key] = key == 0.0f ? tr("Off") : QString::number(key, 'f', 1) + tr(" s"); - } - lateralToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 5, QString(), delayLabels, 0.1); - - } else { - lateralToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = lateralToggle; - - if (advancedLateralTuneKeys.contains(param)) { - advancedLateralTuneList->addItem(lateralToggle); - } else if (aolKeys.contains(param)) { - aolList->addItem(lateralToggle); - } else if (laneChangeKeys.contains(param)) { - laneChangeList->addItem(lateralToggle); - } else if (lateralTuneKeys.contains(param)) { - lateralTuneList->addItem(lateralToggle); - } else if (qolKeys.contains(param)) { - qolList ->addItem(lateralToggle); - } else { - lateralList->addItem(lateralToggle); - - parentKeys.insert(param); - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(lateralToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(lateralToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(lateralToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - QSet forceUpdateKeys = {"ForceAutoTune", "ForceAutoTuneOff", "LateralTune", "NNFF", "NudgelessLaneChange"}; - for (const QString &key : forceUpdateKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &StarPilotLateralPanel::updateToggles); - } - - QSet rebootKeys = {"AlwaysOnLateral", "ForceTorqueController", "NNFF", "NNFFLite"}; - for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { - if (started) { - if (key == "AlwaysOnLateral" && state) { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - } else if (key != "AlwaysOnLateral") { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - } - } - }); - } - - steerDelayToggle = static_cast(toggles["SteerDelay"]); - QObject::connect(steerDelayToggle, &StarPilotParamValueButtonControl::buttonClicked, [parent, this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Reset Actuator Delay to its default value?"), this)) { - params.putFloat("SteerDelay", parent->steerActuatorDelay); - steerDelayToggle->refresh(); - } - }); - - steerFrictionToggle = static_cast(toggles["SteerFriction"]); - QObject::connect(steerFrictionToggle, &StarPilotParamValueButtonControl::buttonClicked, [parent, this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Reset Friction to its default value?"), this)) { - params.putFloat("SteerFriction", parent->friction); - steerFrictionToggle->refresh(); - } - }); - - steerKPToggle = static_cast(toggles["SteerKP"]); - QObject::connect(steerKPToggle, &StarPilotParamValueButtonControl::buttonClicked, [parent, this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Reset Kp Factor to its default value?"), this)) { - params.putFloat("SteerKP", parent->steerKp); - steerKPToggle->refresh(); - } - }); - - steerLatAccelToggle = static_cast(toggles["SteerLatAccel"]); - QObject::connect(steerLatAccelToggle, &StarPilotParamValueButtonControl::buttonClicked, [parent, this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Reset Lateral Accel to its default value?"), this)) { - params.putFloat("SteerLatAccel", parent->latAccelFactor); - steerLatAccelToggle->refresh(); - } - }); - - steerRatioToggle = static_cast(toggles["SteerRatio"]); - QObject::connect(steerRatioToggle, &StarPilotParamValueButtonControl::buttonClicked, [parent, this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Reset Steer Ratio to its default value?"), this)) { - params.putFloat("SteerRatio", parent->steerRatio); - steerRatioToggle->refresh(); - } - }); - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [lateralLayout, lateralPanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - lateralLayout->setCurrentWidget(lateralPanel); - }); - QObject::connect(parent, &StarPilotSettingsWindow::updateMetric, this, &StarPilotLateralPanel::updateMetric); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotLateralPanel::updateState); -} - -void StarPilotLateralPanel::showEvent(QShowEvent *event) { - steerDelayToggle->setTitle(QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(parent->steerActuatorDelay, 'f', 2))); - steerFrictionToggle->setTitle(QString(tr("Friction (Default: %1)")).arg(QString::number(parent->friction, 'f', 2))); - steerKPToggle->setTitle(QString(tr("Kp Factor (Default: %1)")).arg(QString::number(parent->steerKp, 'f', 2))); - steerKPToggle->updateControl(parent->steerKp * 0.5, parent->steerKp * 1.5); - steerLatAccelToggle->setTitle(QString(tr("Lateral Accel (Default: %1)")).arg(QString::number(parent->latAccelFactor, 'f', 2))); - steerLatAccelToggle->updateControl(parent->latAccelFactor * 0.5, parent->latAccelFactor * 1.5); - steerRatioToggle->setTitle(QString(tr("Steer Ratio (Default: %1)")).arg(QString::number(parent->steerRatio, 'f', 2))); - steerRatioToggle->updateControl(parent->steerRatio * 0.5, parent->steerRatio * 1.5); - - updateToggles(); -} - -void StarPilotLateralPanel::updateState(const UIState &s) { - if (!isVisible()) return; - - started = s.scene.started; -} - -void StarPilotLateralPanel::updateMetric(bool metric, bool bootRun) { - static bool previousMetric; - if (metric != previousMetric && !bootRun) { - double distanceConversion = metric ? FOOT_TO_METER : METER_TO_FOOT; - double speedConversion = metric ? MILE_TO_KM : KM_TO_MILE; - - params.putFloatNonBlocking("LaneDetectionWidth", params.getFloat("LaneDetectionWidth") * distanceConversion); - - params.putIntNonBlocking("MinimumLaneChangeSpeed", params.getInt("MinimumLaneChangeSpeed") * speedConversion); - params.putIntNonBlocking("PauseAOLOnBrake", params.getInt("PauseAOLOnBrake") * speedConversion); - params.putIntNonBlocking("PauseLateralSpeed", params.getInt("PauseLateralSpeed") * speedConversion); - } - previousMetric = metric; - - static std::map imperialDistanceLabels; - static std::map imperialSpeedLabels; - static std::map metricDistanceLabels; - static std::map metricSpeedLabels; - - static bool labelsInitialized = false; - if (!labelsInitialized) { - for (int i = 0; i <= 150; ++i) { - float key = i / 10.0f; - imperialDistanceLabels[key] = key == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" foot") : QString::number(key, 'f', 1) + tr(" feet"); - } - - for (int i = 0; i <= 99; ++i) { - imperialSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" mph"); - } - - for (int i = 0; i <= 50; ++i) { - float key = i / 10.0f; - metricDistanceLabels[key] = key == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" meter") : QString::number(key, 'f', 1) + tr(" meters"); - } - - for (int i = 0; i <= 150; ++i) { - metricSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" km/h"); - } - - labelsInitialized = true; - } - - StarPilotParamValueControl *laneWidthToggle = static_cast(toggles["LaneDetectionWidth"]); - StarPilotParamValueControl *minimumLaneChangeSpeedToggle = static_cast(toggles["MinimumLaneChangeSpeed"]); - StarPilotParamValueControl *pauseAOLOnBrakeToggle = static_cast(toggles["PauseAOLOnBrake"]); - StarPilotParamValueControl *pauseLateralToggle = static_cast(toggles["PauseLateralSpeed"]); - - if (metric) { - laneWidthToggle->updateControl(0, 5, metricDistanceLabels); - - minimumLaneChangeSpeedToggle->updateControl(0, 150, metricSpeedLabels); - pauseAOLOnBrakeToggle->updateControl(0, 150, metricSpeedLabels); - pauseLateralToggle->updateControl(0, 150, metricSpeedLabels); - } else { - laneWidthToggle->updateControl(0, 15, imperialDistanceLabels); - - minimumLaneChangeSpeedToggle->updateControl(0, 99, imperialSpeedLabels); - pauseAOLOnBrakeToggle->updateControl(0, 99, imperialSpeedLabels); - pauseLateralToggle->updateControl(0, 99, imperialSpeedLabels); - } -} - -void StarPilotLateralPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - bool forcingAutoTune = !parent->hasAutoTune && params.getBool("ForceAutoTune"); - bool forcingAutoTuneOff = parent->hasAutoTune && params.getBool("ForceAutoTuneOff"); - bool forcingTorqueController = !parent->isAngleCar && params.getBool("ForceTorqueController"); - bool usingNNFF = parent->hasNNFFLog && params.getBool("LateralTune") && params.getBool("NNFF"); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "ForceAutoTune") { - setVisible &= !parent->hasAutoTune; - setVisible &= !parent->isAngleCar; - setVisible &= parent->isTorqueCar || forcingTorqueController || usingNNFF; - } - - else if (key == "ForceAutoTuneOff") { - setVisible &= parent->hasAutoTune; - } - - else if (key == "ForceTorqueController") { - setVisible &= !parent->isAngleCar; - setVisible &= !parent->isTorqueCar; - } - - else if (key == "LaneChangeTime") { - setVisible &= params.getBool("LaneChanges") && params.getBool("NudgelessLaneChange"); - } - - else if (key == "LaneDetectionWidth") { - setVisible &= params.getBool("LaneChanges") && params.getBool("NudgelessLaneChange"); - } - - else if (key == "LateralResumeDelay") { - setVisible &= params.getBool("PauseLateralOnSignal"); - } - - else if (key == "NNFF") { - setVisible &= parent->hasNNFFLog; - setVisible &= !parent->isAngleCar; - } - - else if (key == "NNFFLite") { - setVisible &= !usingNNFF; - setVisible &= !parent->isAngleCar; - } - - else if (key == "SteerDelay") { - setVisible &= parent->steerActuatorDelay != 0; - } - - else if (key == "SteerFriction") { - setVisible &= parent->friction != 0; - setVisible &= parent->hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - setVisible &= parent->isTorqueCar || forcingTorqueController || usingNNFF; - setVisible &= !usingNNFF; - } - - else if (key == "SteerKP") { - setVisible &= parent->steerKp != 0; - setVisible &= parent->isTorqueCar || forcingTorqueController || usingNNFF; - setVisible &= !parent->isAngleCar; - } - - else if (key == "SteerLatAccel") { - setVisible &= parent->latAccelFactor != 0; - setVisible &= parent->hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - setVisible &= parent->isTorqueCar || forcingTorqueController || usingNNFF; - setVisible &= !usingNNFF; - } - - else if (key == "SteerRatio") { - setVisible &= parent->steerRatio != 0; - setVisible &= parent->hasAutoTune ? forcingAutoTuneOff : !forcingAutoTune; - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (advancedLateralTuneKeys.contains(key)) { - toggles["AdvancedLateralTune"]->setVisible(true); - } else if (aolKeys.contains(key)) { - toggles["AlwaysOnLateral"]->setVisible(true); - } else if (laneChangeKeys.contains(key)) { - toggles["LaneChanges"]->setVisible(true); - } else if (lateralTuneKeys.contains(key)) { - toggles["LateralTune"]->setVisible(true); - } else if (qolKeys.contains(key)) { - toggles["QOLLateral"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/lateral_settings.h b/starpilot/ui/qt/offroad/lateral_settings.h deleted file mode 100644 index 9693989e0..000000000 --- a/starpilot/ui/qt/offroad/lateral_settings.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotLateralPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotLateralPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateMetric(bool metric, bool bootRun); - void updateState(const UIState &s); - void updateToggles(); - - bool forceOpenDescriptions; - bool started; - - std::map toggles; - - QSet advancedLateralTuneKeys = {"ForceAutoTune", "ForceAutoTuneOff", "ForceTorqueController", "SteerDelay", "SteerFriction", "SteerLatAccel", "SteerKP", "SteerRatio"}; - QSet aolKeys = {"PauseAOLOnBrake"}; - QSet laneChangeKeys = {"LaneChangeSmoothing", "LaneChangeTime", "LaneDetectionWidth", "MinimumLaneChangeSpeed", "NudgelessLaneChange", "OneLaneChange"}; - QSet lateralTuneKeys = {"NNFF", "NNFFLite", "TurnDesires", "NavDesiresAllowed"}; - QSet qolKeys = {"PauseLateralSpeed", "LateralResumeDelay"}; - - QSet parentKeys; - - StarPilotParamValueButtonControl *steerDelayToggle; - StarPilotParamValueButtonControl *steerFrictionToggle; - StarPilotParamValueButtonControl *steerLatAccelToggle; - StarPilotParamValueButtonControl *steerKPToggle; - StarPilotParamValueButtonControl *steerRatioToggle; - - StarPilotSettingsWindow *parent; - - Params params; -}; diff --git a/starpilot/ui/qt/offroad/longitudinal_settings.cc b/starpilot/ui/qt/offroad/longitudinal_settings.cc deleted file mode 100644 index 28ea8eb3b..000000000 --- a/starpilot/ui/qt/offroad/longitudinal_settings.cc +++ /dev/null @@ -1,1118 +0,0 @@ -#include "starpilot/ui/qt/offroad/longitudinal_settings.h" - -StarPilotLongitudinalPanel::StarPilotLongitudinalPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - networkManager = new QNetworkAccessManager(this); - - QStackedLayout *longitudinalLayout = new QStackedLayout(); - addItem(longitudinalLayout); - - StarPilotListWidget *longitudinalList = new StarPilotListWidget(this); - - ScrollView *longitudinalPanel = new ScrollView(longitudinalList, this); - - longitudinalLayout->addWidget(longitudinalPanel); - - StarPilotListWidget *advancedLongitudinalTuneList = new StarPilotListWidget(this); - StarPilotListWidget *aggressivePersonalityList = new StarPilotListWidget(this); - StarPilotListWidget *conditionalChillList = new StarPilotListWidget(this); - StarPilotListWidget *conditionalExperimentalList = new StarPilotListWidget(this); - StarPilotListWidget *curveSpeedList = new StarPilotListWidget(this); - StarPilotListWidget *customDrivingPersonalityList = new StarPilotListWidget(this); - StarPilotListWidget *longitudinalTuneList = new StarPilotListWidget(this); - StarPilotListWidget *qolList = new StarPilotListWidget(this); - StarPilotListWidget *relaxedPersonalityList = new StarPilotListWidget(this); - StarPilotListWidget *speedLimitControllerList = new StarPilotListWidget(this); - StarPilotListWidget *speedLimitControllerOffsetsList = new StarPilotListWidget(this); - StarPilotListWidget *speedLimitControllerQOLList = new StarPilotListWidget(this); - StarPilotListWidget *speedLimitControllerVisualList = new StarPilotListWidget(this); - StarPilotListWidget *standardPersonalityList = new StarPilotListWidget(this); - StarPilotListWidget *trafficPersonalityList = new StarPilotListWidget(this); - StarPilotListWidget *weatherList = new StarPilotListWidget(this); - StarPilotListWidget *weatherLowVisibilityList = new StarPilotListWidget(this); - StarPilotListWidget *weatherRainList = new StarPilotListWidget(this); - StarPilotListWidget *weatherRainStormList = new StarPilotListWidget(this); - StarPilotListWidget *weatherSnowList = new StarPilotListWidget(this); - - ScrollView *advancedLongitudinalTunePanel = new ScrollView(advancedLongitudinalTuneList, this); - ScrollView *aggressivePersonalityPanel = new ScrollView(aggressivePersonalityList, this); - ScrollView *conditionalChillPanel = new ScrollView(conditionalChillList, this); - ScrollView *conditionalExperimentalPanel = new ScrollView(conditionalExperimentalList, this); - ScrollView *curveSpeedPanel = new ScrollView(curveSpeedList, this); - ScrollView *customDrivingPersonalityPanel = new ScrollView(customDrivingPersonalityList, this); - ScrollView *longitudinalTunePanel = new ScrollView(longitudinalTuneList, this); - ScrollView *qolPanel = new ScrollView(qolList, this); - ScrollView *relaxedPersonalityPanel = new ScrollView(relaxedPersonalityList, this); - ScrollView *speedLimitControllerPanel = new ScrollView(speedLimitControllerList, this); - ScrollView *speedLimitControllerOffsetsPanel = new ScrollView(speedLimitControllerOffsetsList, this); - ScrollView *speedLimitControllerQOLPanel = new ScrollView(speedLimitControllerQOLList, this); - ScrollView *speedLimitControllerVisualPanel = new ScrollView(speedLimitControllerVisualList, this); - ScrollView *standardPersonalityPanel = new ScrollView(standardPersonalityList, this); - ScrollView *trafficPersonalityPanel = new ScrollView(trafficPersonalityList, this); - ScrollView *weatherLowVisibilityPanel = new ScrollView(weatherLowVisibilityList, this); - ScrollView *weatherPanel = new ScrollView(weatherList, this); - ScrollView *weatherRainPanel = new ScrollView(weatherRainList, this); - ScrollView *weatherRainStormPanel = new ScrollView(weatherRainStormList, this); - ScrollView *weatherSnowPanel = new ScrollView(weatherSnowList, this); - - longitudinalLayout->addWidget(advancedLongitudinalTunePanel); - longitudinalLayout->addWidget(aggressivePersonalityPanel); - longitudinalLayout->addWidget(conditionalChillPanel); - longitudinalLayout->addWidget(conditionalExperimentalPanel); - longitudinalLayout->addWidget(curveSpeedPanel); - longitudinalLayout->addWidget(customDrivingPersonalityPanel); - longitudinalLayout->addWidget(longitudinalTunePanel); - longitudinalLayout->addWidget(qolPanel); - longitudinalLayout->addWidget(relaxedPersonalityPanel); - longitudinalLayout->addWidget(speedLimitControllerPanel); - longitudinalLayout->addWidget(speedLimitControllerOffsetsPanel); - longitudinalLayout->addWidget(speedLimitControllerQOLPanel); - longitudinalLayout->addWidget(speedLimitControllerVisualPanel); - longitudinalLayout->addWidget(standardPersonalityPanel); - longitudinalLayout->addWidget(trafficPersonalityPanel); - longitudinalLayout->addWidget(weatherLowVisibilityPanel); - longitudinalLayout->addWidget(weatherPanel); - longitudinalLayout->addWidget(weatherRainPanel); - longitudinalLayout->addWidget(weatherRainStormPanel); - longitudinalLayout->addWidget(weatherSnowPanel); - - const std::vector> longitudinalToggles { - {"AdvancedLongitudinalTune", tr("Advanced Longitudinal Tuning"), tr("Advanced acceleration and braking control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_advanced_longitudinal_tune.png"}, - {"EVTuning", tr("EV Tuning"), tr("Use acceleration profiles tuned for EVs. Defaults to the vehicle's detected powertrain type but can be overridden if the automatic choice doesn't match."), ""}, - {"TruckTuning", tr("Truck Tuning"), tr("Use aggressive acceleration profiles tuned for trucks. Intended for heavy vehicles that need stronger throttle."), ""}, - {"TrailerLoad", tr("Trailer Load"), tr("Add trailer weight to vehicle mass for tow-aware gas, brake, and conservative lateral assist. Enter the loaded trailer weight in pounds."), ""}, - {"LongitudinalActuatorDelay", parent->longitudinalActuatorDelay != 0 ? QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(parent->longitudinalActuatorDelay, 'f', 2)) : tr("Actuator Delay"), tr("The time between openpilot's throttle or brake command and the vehicle's response. Increase if the vehicle feels slow to react; decrease if it feels too eager or overshoots."), ""}, - {"MaxDesiredAcceleration", tr("Maximum Acceleration"), tr("Limit the strongest acceleration openpilot can command."), ""}, - {"StartAccel", parent->startAccel != 0 ? QString(tr("Start Acceleration (Default: %1)")).arg(QString::number(parent->startAccel, 'f', 2)) : tr("Start Acceleration"), tr("Extra acceleration applied when starting from a stop. Increase for quicker takeoffs; decrease for smoother, gentler starts."), ""}, - {"VEgoStarting", parent->vEgoStarting != 0 ? QString(tr("Start Speed (Default: %1)")).arg(QString::number(parent->vEgoStarting, 'f', 2)) : tr("Start Speed"), tr("The speed at which openpilot exits the stopped state. Increase to reduce creeping; decrease to move sooner after stopping."), ""}, - {"StopAccel", parent->stopAccel != 0 ? QString(tr("Stop Acceleration (Default: %1)")).arg(QString::number(parent->stopAccel, 'f', 2)) : tr("Stop Acceleration"), tr("Brake force applied to hold the vehicle at a standstill. Increase to prevent rolling on hills; decrease for smoother, softer stops."), ""}, - {"StoppingDecelRate", parent->stoppingDecelRate != 0 ? QString(tr("Stopping Rate (Default: %1)")).arg(QString::number(parent->stoppingDecelRate, 'f', 2)) : tr("Stopping Rate"), tr("How quickly braking ramps up when stopping. Increase for shorter, firmer stops; decrease for smoother, longer stops."), ""}, - {"VEgoStopping", parent->vEgoStopping != 0 ? QString(tr("Stop Speed (Default: %1)")).arg(QString::number(parent->vEgoStopping, 'f', 2)) : tr("Stop Speed"), tr("The speed at which openpilot considers the vehicle stopped. Increase to brake earlier and stop smoothly; decrease to wait longer but risk overshooting."), ""}, - - {"ConditionalExperimental", tr("Conditional Experimental Mode"), tr("Automatically switch to \"Experimental Mode\" when set conditions are met. Allows the model to handle challenging situations with smarter decision making."), "../../starpilot/assets/toggle_icons/icon_conditional.png"}, - {"PersistExperimentalState", tr("Persist Experimental State"), tr("Keep your manual Conditional Experimental override through reboots until you manually clear it."), ""}, - {"CESpeed", tr("Below"), tr("Switch to \"Experimental Mode\" when driving below this speed without a lead to help openpilot handle low-speed situations more smoothly."), ""}, - {"CECurves", tr("Curve Detected Ahead"), tr("Switch to \"Experimental Mode\" when a curve is detected to allow the model to set an appropriate speed for the curve."), ""}, - {"CEStopLights", tr("\"Detected\" Stop Lights/Signs"), tr("Switch to \"Experimental Mode\" whenever the driving model \"detects\" a red light or stop sign.

    Disclaimer: openpilot does not explicitly detect traffic lights or stop signs. In \"Experimental Mode\", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason!"), ""}, - {"CELead", tr("Lead Detected Ahead"), tr("Switch to \"Experimental Mode\" when a slower or stopped vehicle is detected. Can make braking smoother and more reliable on some vehicles."), ""}, - {"CEModelStopTime", tr("Predicted Stop In"), tr("Switch to \"Experimental Mode\" when openpilot predicts a stop within the set time. This is usually triggered when the model \"sees\" a red light or stop sign ahead.

    Disclaimer: openpilot does not explicitly detect traffic lights or stop signs. In \"Experimental Mode\", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason!"), ""}, - {"CESignalSpeed", tr("Turn Signal Below"), tr("Switch to \"Experimental Mode\" when using a turn signal below the set speed to allow the model to choose an appropriate speed for smoother left and right turns."), ""}, - {"ShowCEMStatus", tr("Status Widget"), tr("Show which condition triggered \"Experimental Mode\" on the driving screen."), ""}, - {"ConditionalChill", tr("Conditional Chill Mode"), tr("Keep \"Experimental Mode\" on by default, but temporarily switch to \"Chill Mode\" in simple cruising scenes where speed holding is usually better."), "../../starpilot/assets/toggle_icons/icon_conditional.png"}, - {"PersistChillState", tr("Persist Chill State"), tr("Keep your manual Conditional Chill override through reboots until you manually clear it."), ""}, - {"CCMSpeed", tr("Above"), tr("Switch to \"Chill Mode\" on open roads above this speed when no lead is detected and the car is still below the set speed."), ""}, - {"CCMLead", tr("Stable Lead Ahead"), tr("Switch to \"Chill Mode\" when following a steady, well-tracked lead vehicle at cruising speeds."), ""}, - {"CCMLaunchAssist", tr("Launch Assist"), tr("Temporarily switch to \"Chill Mode\" when starting from a stop if planner is already allowing throttle. Useful if your car launches too slowly from lights or stop signs."), ""}, - {"CCMSetSpeedMargin", tr("Set Speed Margin"), tr("How far below the set speed the car must be before open-road Conditional Chill can engage."), ""}, - {"ShowCCMStatus", tr("Status Widget"), tr("Show which condition triggered \"Chill Mode\" on the driving screen."), ""}, - - {"CurveSpeedController", tr("Curve Speed Controller"), tr("Automatically slow down for upcoming curves using data learned from your driving style, adapting to curves as you would."), "../../starpilot/assets/toggle_icons/icon_speed_map.png"}, - {"CalibratedLateralAcceleration", tr("Calibrated Lateral Acceleration"), tr("The learned lateral acceleration from collected driving data. This sets how fast openpilot will take curves. Higher values allow faster cornering; lower values slow the vehicle for gentler turns."), ""}, - {"CalibrationProgress", tr("Calibration Progress"), tr("How much curve data has been collected. This is a progress meter; it is normal for the value to stay low and rarely reach 100%."), ""}, - {"ResetCurveData", tr("Reset Curve Data"), tr("Reset collected user data for \"Curve Speed Controller\"."), ""}, - {"ShowCSCStatus", tr("Status Widget"), tr("Show the \"Curve Speed Controller\" target speed on the driving screen."), ""}, - - {"CustomPersonalities", tr("Driving Personalities"), tr("Customize the \"Driving Personalities\" to better match your driving style."), "../../starpilot/assets/toggle_icons/icon_personality.png"}, - - {"TrafficPersonalityProfile", tr("Traffic Mode"), tr("Customize the \"Traffic Mode\" personality profile. Designed for stop-and-go driving."), "../../starpilot/assets/stock_theme/distance_icons/traffic.png"}, - {"TrafficFollow", tr("Following Distance"), tr("The minimum following distance to the lead vehicle in \"Traffic Mode\". openpilot blends between this value and the \"Relaxed\" profile as speed increases. Increase for more space; decrease for tighter gaps."), ""}, - {"TrafficJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates in \"Traffic Mode\". Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, - {"TrafficJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes in \"Traffic Mode\". Increase for gentler stops; decrease for quicker but sharper braking."), ""}, - {"TrafficJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead in \"Traffic Mode\". Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, - {"TrafficJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down in \"Traffic Mode\". Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, - {"TrafficJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up in \"Traffic Mode\". Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, - {"ResetTrafficPersonality", tr("Reset to Defaults"), tr("Reset \"Traffic Mode\" settings to defaults."), ""}, - - {"AggressivePersonalityProfile", tr("Aggressive"), tr("Customize the \"Aggressive\" personality profile. Designed for assertive driving with tighter gaps."), "../../starpilot/assets/stock_theme/distance_icons/aggressive.png"}, - {"AggressiveFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Aggressive\" profile. Increase for more space; decrease for tighter gaps.

    Default: 1.25 seconds."), ""}, - {"AggressiveFollowHigh", tr("High Speed Following Distance"), tr("Following distance for higher speeds in the \"Aggressive\" profile. openpilot smoothly blends from the base value to this value as speed rises."), ""}, - {"AggressiveJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Aggressive\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, - {"AggressiveJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Aggressive\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, - {"AggressiveJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Aggressive\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, - {"AggressiveJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Aggressive\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, - {"AggressiveJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Aggressive\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, - {"ResetAggressivePersonality", tr("Reset to Defaults"), tr("Reset the \"Aggressive\" profile to defaults."), ""}, - - {"StandardPersonalityProfile", tr("Standard"), tr("Customize the \"Standard\" personality profile. Designed for balanced driving with moderate gaps."), "../../starpilot/assets/stock_theme/distance_icons/standard.png"}, - {"StandardFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Standard\" profile. Increase for more space; decrease for tighter gaps.

    Default: 1.45 seconds."), ""}, - {"StandardFollowHigh", tr("High Speed Following Distance"), tr("Following distance for higher speeds in the \"Standard\" profile. openpilot smoothly blends from the base value to this value as speed rises."), ""}, - {"StandardJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Standard\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, - {"StandardJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Standard\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, - {"StandardJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Standard\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, - {"StandardJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Standard\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, - {"StandardJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Standard\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, - {"ResetStandardPersonality", tr("Reset to Defaults"), tr("Reset the \"Standard\" profile to defaults."), ""}, - - {"RelaxedPersonalityProfile", tr("Relaxed"), tr("Customize the \"Relaxed\" personality profile. Designed for smoother, more comfortable driving with larger gaps."), "../../starpilot/assets/stock_theme/distance_icons/relaxed.png"}, - {"RelaxedFollow", tr("Following Distance"), tr("How many seconds openpilot follows behind lead vehicles when using the \"Relaxed\" profile. Increase for more space; decrease for tighter gaps.

    Default: 1.6 seconds."), ""}, - {"RelaxedFollowHigh", tr("High Speed Following Distance"), tr("Following distance for higher speeds in the \"Relaxed\" profile. openpilot smoothly blends from the base value to this value as speed rises."), ""}, - {"RelaxedJerkAcceleration", tr("Acceleration Smoothness"), tr("How smoothly openpilot accelerates with the \"Relaxed\" profile. Increase for gentler starts; decrease for faster but more abrupt takeoffs."), ""}, - {"RelaxedJerkDeceleration", tr("Braking Smoothness"), tr("How smoothly openpilot brakes with the \"Relaxed\" profile. Increase for gentler stops; decrease for quicker but sharper braking."), ""}, - {"RelaxedJerkDanger", tr("Safety Gap Bias"), tr("How much extra space openpilot keeps from the vehicle ahead with the \"Relaxed\" profile. Increase for larger gaps and more cautious following; decrease for tighter gaps and closer following."), ""}, - {"RelaxedJerkSpeedDecrease", tr("Slowdown Response"), tr("How smoothly openpilot slows down with the \"Relaxed\" profile. Increase for more gradual deceleration; decrease for faster but sharper slowdowns."), ""}, - {"RelaxedJerkSpeed", tr("Speed-Up Response"), tr("How smoothly openpilot speeds up with the \"Relaxed\" profile. Increase for more gradual acceleration; decrease for quicker but more jolting acceleration."), ""}, - {"ResetRelaxedPersonality", tr("Reset to Defaults"), tr("Reset the \"Relaxed\" profile to defaults."), ""}, - - {"LongitudinalTune", tr("Longitudinal Tuning"), tr("Acceleration and braking control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_longitudinal_tune.png"}, - {"AccelerationProfile", tr("Acceleration Profile"), tr("How quickly openpilot speeds up. \"Eco\" is gentle and efficient, \"Sport\" is firmer and more responsive, and \"Sport+\" accelerates at the maximum rate allowed."), ""}, - {"DecelerationProfile", tr("Deceleration Profile"), tr("How firmly openpilot slows down. \"Eco\" favors coasting, \"Sport\" applies stronger braking."), ""}, - {"HumanLaneChanges", tr("Human-Like Lane Changes"), tr("Lane-change behavior that mimics human drivers by anticipating and tracking adjacent vehicles during lane changes."), ""}, - {"LeadDetectionThreshold", tr("Lead Detection Sensitivity"), tr("How sensitive openpilot is to detecting vehicles. Higher sensitivity allows quicker detection at longer distances but may react to non-vehicle objects; lower sensitivity is more conservative and reduces false detections."), ""}, - {"TacoTune", tr("\"Taco Bell Run\" Turn Speed Hack"), tr("The turn-speed hack from comma's 2022 \"Taco Bell Run\". Designed to slow down for left and right turns."), ""}, - {"NavLongitudinalAllowed", tr("Use Route Speed Control"), tr("Allow an active navigation route to reduce cruise speed for upcoming turns, ramps, and roundabouts."), ""}, - - {"QOLLongitudinal", tr("Quality of Life"), tr("Miscellaneous acceleration and braking control changes to fine-tune how openpilot drives."), "../../starpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"CustomCruise", tr("Cruise Interval"), tr("How much the set speed increases or decreases for each + or – cruise control button press."), ""}, - {"CustomCruiseLong", tr("Cruise Interval (Hold)"), tr("How much the set speed increases or decreases while holding the + or – cruise control buttons."), ""}, - {"ForceStops", tr("Force Stop at \"Detected\" Stop Lights/Signs"), tr("Force openpilot to stop whenever the driving model \"detects\" a red light or stop sign.

    Disclaimer: openpilot does not explicitly detect traffic lights or stop signs. In \"Experimental Mode\", openpilot makes end-to-end driving decisions from camera input, which means it may stop even when there's no clear reason!"), ""}, - {"ForceStopDistanceOffset", tr("Force Stop Distance Offset"), tr("Tune where Force Stops bring the car to rest. Positive values let the car roll further before stopping (longer stop, closer to the line). Negative values stop the car sooner (more buffer before the line)."), ""}, - {"ForceStandstill", tr("Force Standstill State"), tr("Keep openpilot in the standstill state until you press the gas pedal or the Resume/+ cruise button.

    This applies to any engaged stop, not just red lights or stop signs."), ""}, - {"RadarTakeoffs", tr("Radar for Takeoffs"), tr("Turns on/off using radar data to track leads at standstill, making following/takeoffs more responsive once leads move."), ""}, - {"IncreasedStoppedDistance", tr("Increase Stopped Distance by:"), tr("Add extra space when stopped behind vehicles. Increase for more room; decrease for shorter gaps."), ""}, - {"MapGears", tr("Map Accel/Decel to Gears"), tr("Map the Acceleration or Deceleration profiles to the vehicle's \"Eco\" and \"Sport\" gear modes."), ""}, - {"SetSpeedOffset", tr("Offset Set Speed by:"), tr("Increase the set speed by the chosen offset. For example, set +5 if you usually drive 5 over the limit."), ""}, - {"ReverseCruise", tr("Reverse Cruise Increase"), tr("Reverse the cruise control button behavior so a short press increases the set speed by 5 instead of 1."), ""}, - {"WeatherPresets", tr("Weather Condition Offsets"), tr("Automatically adjust driving behavior based on real-time weather. Helps maintain comfort and safety in low visibility, rain, or snow."), ""}, - - {"LowVisibilityOffsets", tr("Low Visibility"), tr("Driving adjustments for fog, haze, or other low-visibility conditions."), ""}, - {"IncreaseFollowingLowVisibility", tr("Increase Following Distance by:"), tr("Add extra space behind lead vehicles in low visibility. Increase for more space; decrease for tighter gaps."), ""}, - {"IncreasedStoppedDistanceLowVisibility", tr("Increase Stopped Distance by:"), tr("Add extra buffer when stopped behind vehicles in low visibility. Increase for more room; decrease for shorter gaps."), ""}, - {"ReduceAccelerationLowVisibility", tr("Reduce Acceleration by:"), tr("Lower the maximum acceleration in low visibility. Increase for softer takeoffs; decrease for quicker but less stable takeoffs."), ""}, - {"ReduceLateralAccelerationLowVisibility", tr("Reduce Speed in Curves by:"), tr("Lower the desired speed while driving through curves in low visibility. Increase for safer, gentler turns; decrease for more aggressive driving in curves."), ""}, - - {"RainOffsets", tr("Rain"), tr("Driving adjustments for rainy conditions."), ""}, - {"IncreaseFollowingRain", tr("Increase Following Distance by:"), tr("Add extra space behind lead vehicles in rain. Increase for more space; decrease for tighter gaps."), ""}, - {"IncreasedStoppedDistanceRain", tr("Increase Stopped Distance by:"), tr("Add extra buffer when stopped behind vehicles in rain. Increase for more room; decrease for shorter gaps."), ""}, - {"ReduceAccelerationRain", tr("Reduce Acceleration by:"), tr("Lower the maximum acceleration in rain. Increase for softer takeoffs; decrease for quicker but less stable takeoffs."), ""}, - {"ReduceLateralAccelerationRain", tr("Reduce Speed in Curves by:"), tr("Lower the desired speed while driving through curves in rain. Increase for safer, gentler turns; decrease for more aggressive driving in curves."), ""}, - - {"RainStormOffsets", tr("Rainstorms"), tr("Driving adjustments for rainstorms."), ""}, - {"IncreaseFollowingRainStorm", tr("Increase Following Distance by:"), tr("Add extra space behind lead vehicles in a rainstorm. Increase for more space; decrease for tighter gaps."), ""}, - {"IncreasedStoppedDistanceRainStorm", tr("Increase Stopped Distance by:"), tr("Add extra buffer when stopped behind vehicles in a rainstorm. Increase for more room; decrease for shorter gaps."), ""}, - {"ReduceAccelerationRainStorm", tr("Reduce Acceleration by:"), tr("Lower the maximum acceleration in a rainstorm. Increase for softer takeoffs; decrease for quicker but less stable takeoffs."), ""}, - {"ReduceLateralAccelerationRainStorm", tr("Reduce Speed in Curves by:"), tr("Lower the desired speed while driving through curves in a rainstorm. Increase for safer, gentler turns; decrease for more aggressive driving in curves."), ""}, - - {"SnowOffsets", tr("Snow"), tr("Driving adjustments for snowy conditions."), ""}, - {"IncreaseFollowingSnow", tr("Increase Following Distance by:"), tr("Add extra space behind lead vehicles in snow. Increase for more space; decrease for tighter gaps."), ""}, - {"IncreasedStoppedDistanceSnow", tr("Increase Stopped Distance by:"), tr("Add extra buffer when stopped behind vehicles in snow. Increase for more room; decrease for shorter gaps."), ""}, - {"ReduceAccelerationSnow", tr("Reduce Acceleration by:"), tr("Lower the maximum acceleration in snow. Increase for softer takeoffs; decrease for quicker but less stable takeoffs."), ""}, - {"ReduceLateralAccelerationSnow", tr("Reduce Speed in Curves by:"), tr("Lower the desired speed while driving through curves in snow. Increase for safer, gentler turns; decrease for more aggressive driving in curves."), ""}, - - - {"SpeedLimitController", tr("Speed Limit Controller"), tr("Limit openpilot's maximum driving speed to the current speed limit obtained from downloaded maps, Mapbox, the dashboard, or vision-detected signs."), "../../starpilot/assets/toggle_icons/icon_speed_limit.png"}, - {"SLCFallback", tr("Fallback Speed"), tr("The speed used by \"Speed Limit Controller\" when no speed limit is found.

    - Set Speed: Use the cruise set speed
    - Experimental Mode: Estimate the limit using the driving model
    - Previous Limit: Keep using the last confirmed limit"), ""}, - {"SLCOverride", tr("Override Speed"), tr("The speed used by \"Speed Limit Controller\" after you manually drive faster than the posted limit.

    - Set with Gas Pedal: Use the highest speed reached while pressing the gas
    - Max Set Speed: Use the cruise set speed

    Overrides clear when openpilot disengages."), ""}, - {"SLCQOL", tr("Quality of Life"), tr("Miscellaneous \"Speed Limit Controller\" changes to fine-tune how openpilot drives."), ""}, - {"SLCConfirmation", tr("Confirm New Speed Limits"), tr("Ask before changing to a new speed limit. To accept, tap the flashing on-screen widget or press the Cruise Increase button. To deny, press the Cruise Decrease button or ignore the prompt for 30 seconds."), ""}, - {"SLCLookaheadHigher", tr("Higher Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming higher speed limits from downloaded map data."), ""}, - {"SLCLookaheadLower", tr("Lower Limit Lookahead Time"), tr("How far ahead openpilot anticipates upcoming lower speed limits from downloaded map data."), ""}, - {"SetSpeedLimit", tr("Match Speed Limit on Engage"), tr("When openpilot is first enabled, automatically set the max speed to the current posted limit."), ""}, - {"SLCMapboxFiller", tr("Use Mapbox as Fallback"), tr("Use Mapbox speed-limit data when no other source is available."), ""}, - {"VisionSpeedLimitDetection", tr("Vision Speed Limit Detection"), tr("Use the road camera to detect speed limit signs for SLC and speed limit filling."), ""}, - {"SLCPriority", tr("Speed Limit Source Priority"), tr("The source order for speed limits when more than one is available."), ""}, - {"SLCOffsets", tr("Speed Limit Offsets"), tr("Add an offset to the posted speed limit to better match your driving style."), ""}, - {"Offset1", tr("Speed Offset (0–24 mph)"), tr("How much to offset posted speed-limits between 0 and 24 mph."), ""}, - {"Offset2", tr("Speed Offset (25–34 mph)"), tr("How much to offset posted speed-limits between 25 and 34 mph."), ""}, - {"Offset3", tr("Speed Offset (35–44 mph)"), tr("How much to offset posted speed-limits between 35 and 44 mph."), ""}, - {"Offset4", tr("Speed Offset (45–54 mph)"), tr("How much to offset posted speed-limits between 45 and 54 mph."), ""}, - {"Offset5", tr("Speed Offset (55–64 mph)"), tr("How much to offset posted speed-limits between 55 and 64 mph."), ""}, - {"Offset6", tr("Speed Offset (65–74 mph)"), tr("How much to offset posted speed-limits between 65 and 74 mph."), ""}, - {"Offset7", tr("Speed Offset (75–99 mph)"), tr("How much to offset posted speed-limits between 75 and 99 mph."), ""}, - {"SLCVisuals", tr("Visual Settings"), tr("Visual \"Speed Limit Controller\" changes to fine-tune how the driving screen looks."), ""}, - {"ShowSLCOffset", tr("Show Speed Limit Offset"), tr("Show the current offset from the posted limit on the driving screen."), ""}, - {"SpeedLimitSources", tr("Show Speed Limit Sources"), tr("Display the speed-limit sources and their current values on the driving screen."), ""}, - {"SLCAbbreviatedSources", tr("Show Abbreviated Icon Sources"), tr("Render the speed-limit sources as compact text labels (e.g. \"Dash-45\", \"MapD-30\") without icons."), ""}, - {"SLCActiveSourcesOnly", tr("Only Show Sources With Speed Limits"), tr("Hide source rows that have no current speed limit reading. Works with both abbreviated and full display."), ""} - }; - - for (const auto &[param, title, desc, icon] : longitudinalToggles) { - AbstractControl *longitudinalToggle; - - if (param == "AdvancedLongitudinalTune") { - StarPilotManageControl *advancedLongitudinalTuneToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(advancedLongitudinalTuneToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, advancedLongitudinalTunePanel]() { - longitudinalLayout->setCurrentWidget(advancedLongitudinalTunePanel); - }); - longitudinalToggle = advancedLongitudinalTuneToggle; - } else if (param == "LongitudinalActuatorDelay") { - longitudinalActuatorDelayToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 1, tr(" seconds"), std::map(), 0.01); - longitudinalToggle = longitudinalActuatorDelayToggle; - } else if (param == "MaxDesiredAcceleration") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0.1, 4.0, tr(" m/s²"), std::map(), 0.1); - } else if (param == "TrailerLoad") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 15000, tr(" lbs"), std::map(), 500); - } else if (param == "StartAccel") { - startAccelToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 4, tr(" m/s²"), std::map(), 0.01, true); - longitudinalToggle = startAccelToggle; - } else if (param == "VEgoStarting") { - vEgoStartingToggle = new StarPilotParamValueControl(param, title, desc, icon, 0.01, 1, tr(" m/s²"), std::map(), 0.01); - longitudinalToggle = vEgoStartingToggle; - } else if (param == "StopAccel") { - stopAccelToggle = new StarPilotParamValueControl(param, title, desc, icon, -4, 0, tr(" m/s²"), std::map(), 0.01, true); - longitudinalToggle = stopAccelToggle; - } else if (param == "StoppingDecelRate") { - stoppingDecelRateToggle = new StarPilotParamValueControl(param, title, desc, icon, 0.001, 1, tr(" m/s²"), std::map(), 0.001, true); - longitudinalToggle = stoppingDecelRateToggle; - } else if (param == "VEgoStopping") { - vEgoStoppingToggle = new StarPilotParamValueControl(param, title, desc, icon, 0.01, 1, tr(" m/s²"), std::map(), 0.01); - longitudinalToggle = vEgoStoppingToggle; - - } else if (param == "ConditionalExperimental") { - StarPilotManageControl *conditionalExperimentalToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(conditionalExperimentalToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, conditionalExperimentalPanel]() { - longitudinalLayout->setCurrentWidget(conditionalExperimentalPanel); - }); - longitudinalToggle = conditionalExperimentalToggle; - } else if (param == "ConditionalChill") { - StarPilotManageControl *conditionalChillToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(conditionalChillToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, conditionalChillPanel]() { - longitudinalLayout->setCurrentWidget(conditionalChillPanel); - }); - longitudinalToggle = conditionalChillToggle; - } else if (param == "CESpeed") { - StarPilotParamValueControl *CESpeed = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); - StarPilotParamValueControl *CESpeedLead = new StarPilotParamValueControl("CESpeedLead", tr("With Lead"), tr("Switch to \"Experimental Mode\" when driving below this speed with a lead to help openpilot handle low-speed situations more smoothly."), icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); - StarPilotDualParamValueControl *conditionalSpeeds = new StarPilotDualParamValueControl(CESpeed, CESpeedLead); - longitudinalToggle = reinterpret_cast(conditionalSpeeds); - } else if (param == "CCMSpeed") { - StarPilotParamValueControl *CCMSpeed = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); - StarPilotParamValueControl *CCMSpeedLead = new StarPilotParamValueControl("CCMSpeedLead", tr("With Lead"), tr("Switch to \"Chill Mode\" when a stable lead is being followed above this speed."), icon, 0, 99, tr(" mph"), std::map(), 1, true, 175); - StarPilotDualParamValueControl *conditionalSpeeds = new StarPilotDualParamValueControl(CCMSpeed, CCMSpeedLead); - longitudinalToggle = reinterpret_cast(conditionalSpeeds); - } else if (param == "CECurves") { - std::vector curveToggles{"CECurvesLead"}; - std::vector curveToggleNames{tr("With Lead")}; - longitudinalToggle = new StarPilotButtonToggleControl(param, title, desc, icon, curveToggles, curveToggleNames); - } else if (param == "CELead") { - std::vector leadToggles{"CESlowerLead", "CEStoppedLead"}; - std::vector leadToggleNames{tr("Slower Lead"), tr("Stopped Lead")}; - longitudinalToggle = new StarPilotButtonToggleControl(param, title, desc, icon, leadToggles, leadToggleNames); - } else if (param == "CCMSetSpeedMargin") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 15, tr(" mph"), std::map(), 1, true, 175); - } else if (param == "CEModelStopTime") { - std::map stopTimeLabels{{0.0f, tr("Off")}}; - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 9, tr(" seconds"), stopTimeLabels, 0.1); - } else if (param == "CESignalSpeed") { - std::vector ceSignalToggles{"CESignalLaneDetection"}; - std::vector ceSignalToggleNames{tr("Not For Detected Lanes")}; - longitudinalToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0, 99, tr(" mph"), std::map(), 1.0, true, ceSignalToggles, ceSignalToggleNames, true); - - } else if (param == "CurveSpeedController") { - StarPilotManageControl *curveControlToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(curveControlToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, curveSpeedPanel]() { - longitudinalLayout->setCurrentWidget(curveSpeedPanel); - }); - longitudinalToggle = curveControlToggle; - } else if (param == "CalibrationProgress") { - calibrationProgressLabel = new LabelControl(title, QString::number(params.getFloat("CalibrationProgress"), 'f', 2) + "%", desc); - longitudinalToggle = calibrationProgressLabel; - } else if (param == "CalibratedLateralAcceleration") { - calibratedLateralAccelerationLabel = new LabelControl(title, QString::number(params.getFloat("CalibratedLateralAcceleration"), 'f', 2) + tr(" m/s²"), desc); - longitudinalToggle = calibratedLateralAccelerationLabel; - } else if (param == "ResetCurveData") { - ButtonControl *resetCurveDataButton = new ButtonControl(title, tr("RESET"), desc); - QObject::connect(resetCurveDataButton, &ButtonControl::clicked, [this]() { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your curvature data?"), this)) { - params.putFloat("CalibratedLateralAcceleration", 2.00); - params.remove("CalibrationProgress"); - params.remove("CurvatureData"); - - calibratedLateralAccelerationLabel->setText(QString::number(2.00, 'f', 2) + tr(" m/s²")); - calibrationProgressLabel->setText(QString::number(0.00, 'f', 2) + "%"); - } - }); - longitudinalToggle = resetCurveDataButton; - - } else if (param == "CustomPersonalities") { - StarPilotManageControl *customPersonalitiesToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(customPersonalitiesToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, customDrivingPersonalityPanel]() { - longitudinalLayout->setCurrentWidget(customDrivingPersonalityPanel); - }); - longitudinalToggle = customPersonalitiesToggle; - } else if (param == "ResetTrafficPersonality" || param == "ResetAggressivePersonality" || param == "ResetStandardPersonality" || param == "ResetRelaxedPersonality") { - ButtonControl *resetButton = new ButtonControl(title, tr("RESET"), desc); - longitudinalToggle = resetButton; - } else if (param == "TrafficPersonalityProfile") { - StarPilotButtonsControl *trafficPersonalityToggle = new StarPilotButtonsControl(title, desc, icon, {tr("MANAGE")}); - QObject::connect(trafficPersonalityToggle, &StarPilotButtonsControl::buttonClicked, [longitudinalLayout, trafficPersonalityPanel, this](int id) { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(trafficPersonalityPanel); - - customPersonalityOpen = true; - }); - longitudinalToggle = trafficPersonalityToggle; - } else if (param == "AggressivePersonalityProfile") { - StarPilotButtonsControl *aggressivePersonalityToggle = new StarPilotButtonsControl(title, desc, icon, {tr("MANAGE")}); - QObject::connect(aggressivePersonalityToggle, &StarPilotButtonsControl::buttonClicked, [longitudinalLayout, aggressivePersonalityPanel, this](int id) { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(aggressivePersonalityPanel); - - customPersonalityOpen = true; - }); - longitudinalToggle = aggressivePersonalityToggle; - } else if (param == "StandardPersonalityProfile") { - StarPilotButtonsControl *standardPersonalityToggle = new StarPilotButtonsControl(title, desc, icon, {tr("MANAGE")}); - QObject::connect(standardPersonalityToggle, &StarPilotButtonsControl::buttonClicked, [longitudinalLayout, standardPersonalityPanel, this](int id) { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(standardPersonalityPanel); - - customPersonalityOpen = true; - }); - longitudinalToggle = standardPersonalityToggle; - } else if (param == "RelaxedPersonalityProfile") { - StarPilotButtonsControl *relaxedPersonalityToggle = new StarPilotButtonsControl(title, desc, icon, {tr("MANAGE")}); - QObject::connect(relaxedPersonalityToggle, &StarPilotButtonsControl::buttonClicked, [longitudinalLayout, relaxedPersonalityPanel, this](int id) { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(relaxedPersonalityPanel); - - customPersonalityOpen = true; - }); - longitudinalToggle = relaxedPersonalityToggle; - } else if (aggressivePersonalityKeys.contains(param) || standardPersonalityKeys.contains(param) || relaxedPersonalityKeys.contains(param) || trafficPersonalityKeys.contains(param)) { - if (param == "TrafficFollow" || param == "AggressiveFollow" || param == "AggressiveFollowHigh" || - param == "StandardFollow" || param == "StandardFollowHigh" || param == "RelaxedFollow" || param == "RelaxedFollowHigh") { - std::map followTimeLabels; - for (float i = 0; i <= 3; i += 0.01) { - followTimeLabels[i] = std::lround(i / 0.01) == 1 / 0.01 ? QString::number(i, 'f', 2) + tr(" second") : QString::number(i, 'f', 2) + tr(" seconds"); - } - if (param == "TrafficFollow") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0.5, 3, QString(), followTimeLabels, 0.01, true); - } else { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 1, 3, QString(), followTimeLabels, 0.01, true); - } - } else { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 25, 200, "%"); - } - - } else if (param == "LongitudinalTune") { - StarPilotManageControl *longitudinalTuneToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(longitudinalTuneToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, longitudinalTunePanel]() { - longitudinalLayout->setCurrentWidget(longitudinalTunePanel); - }); - longitudinalToggle = longitudinalTuneToggle; - } else if (param == "AccelerationProfile") { - std::vector accelerationProfiles{tr("Standard"), tr("Eco"), tr("Sport"), tr("Sport+")}; - ButtonParamControl *accelerationProfileToggle = new ButtonParamControl(param, title, desc, icon, accelerationProfiles); - longitudinalToggle = accelerationProfileToggle; - } else if (param == "DecelerationProfile") { - std::vector decelerationProfiles{tr("Standard"), tr("Eco"), tr("Sport")}; - ButtonParamControl *decelerationProfileToggle = new ButtonParamControl(param, title, desc, icon, decelerationProfiles); - longitudinalToggle = decelerationProfileToggle; - } else if (param == "LeadDetectionThreshold") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 25, 50, "%"); - - } else if (param == "QOLLongitudinal") { - StarPilotManageControl *qolLongitudinalToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(qolLongitudinalToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, qolPanel]() { - longitudinalLayout->setCurrentWidget(qolPanel); - }); - longitudinalToggle = qolLongitudinalToggle; - } else if (param == "CustomCruise") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 1, 99, tr(" mph")); - } else if (param == "CustomCruiseLong") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 1, 99, tr(" mph")); - } else if (param == "IncreasedStoppedDistance") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 10, tr(" feet")); - } else if (param == "ForceStopDistanceOffset") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, -20, 20, tr(" feet")); - } else if (param == "MapGears") { - std::vector mapGearsToggles{"MapAcceleration", "MapDeceleration"}; - std::vector mapGearsToggleNames{tr("Acceleration"), tr("Deceleration")}; - longitudinalToggle = new StarPilotButtonToggleControl(param, title, desc, icon, mapGearsToggles, mapGearsToggleNames); - } else if (param == "SetSpeedOffset") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, tr(" mph")); - } else if (param == "WeatherPresets") { - StarPilotManageControl *weatherToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(weatherToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, weatherPanel, this]() { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(weatherPanel); - - qolOpen = true; - }); - longitudinalToggle = weatherToggle; - } else if (param == "LowVisibilityOffsets") { - ButtonControl *manageLowVisibilitOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageLowVisibilitOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, weatherLowVisibilityPanel, this]() { - openSubSubSubPanel(); - - longitudinalLayout->setCurrentWidget(weatherLowVisibilityPanel); - - weatherOpen = true; - }); - longitudinalToggle = manageLowVisibilitOffsetsButton; - } else if (param == "RainOffsets") { - ButtonControl *manageRainOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageRainOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, weatherRainPanel, this]() { - openSubSubSubPanel(); - - longitudinalLayout->setCurrentWidget(weatherRainPanel); - - weatherOpen = true; - }); - longitudinalToggle = manageRainOffsetsButton; - } else if (param == "RainStormOffsets") { - ButtonControl *manageRainStormOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageRainStormOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, weatherRainStormPanel, this]() { - openSubSubSubPanel(); - - longitudinalLayout->setCurrentWidget(weatherRainStormPanel); - - weatherOpen = true; - }); - longitudinalToggle = manageRainStormOffsetsButton; - } else if (param == "SnowOffsets") { - ButtonControl *manageSnowOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSnowOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, weatherSnowPanel, this]() { - openSubSubSubPanel(); - - longitudinalLayout->setCurrentWidget(weatherSnowPanel); - - weatherOpen = true; - }); - longitudinalToggle = manageSnowOffsetsButton; - } else if (param == "IncreaseFollowingLowVisibility" || param == "IncreaseFollowingRain" || param == "IncreaseFollowingRainStorm" || param == "IncreaseFollowingSnow") { - std::map followTimeLabels; - for (float i = 0; i <= 3; i += 0.01) { - followTimeLabels[i] = std::lround(i / 0.01) == 1 / 0.01 ? QString::number(i, 'f', 2) + tr(" second") : QString::number(i, 'f', 2) + tr(" seconds"); - } - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 3, QString(), followTimeLabels, 0.01, true); - } else if (param == "IncreasedStoppedDistanceLowVisibility" || param == "IncreasedStoppedDistanceRain" || param == "IncreasedStoppedDistanceRainStorm" || param == "IncreasedStoppedDistanceSnow") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 10, tr(" feet")); - } else if (param == "ReduceAccelerationLowVisibility" || param == "ReduceAccelerationRain" || param == "ReduceAccelerationRainStorm" || param == "ReduceAccelerationSnow") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, "%", std::map(), 1); - } else if (param == "ReduceLateralAccelerationLowVisibility" || param == "ReduceLateralAccelerationRain" || param == "ReduceLateralAccelerationRainStorm" || param == "ReduceLateralAccelerationSnow") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 99, "%", std::map(), 1); - - } else if (param == "SpeedLimitController") { - StarPilotManageControl *speedLimitControllerToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(speedLimitControllerToggle, &StarPilotManageControl::manageButtonClicked, [longitudinalLayout, speedLimitControllerPanel]() { - longitudinalLayout->setCurrentWidget(speedLimitControllerPanel); - }); - longitudinalToggle = speedLimitControllerToggle; - } else if (param == "SLCFallback") { - std::vector fallbackOptions{tr("Set Speed"), tr("Experimental Mode"), tr("Previous Limit")}; - ButtonParamControl *fallbackSelection = new ButtonParamControl(param, title, desc, icon, fallbackOptions); - longitudinalToggle = fallbackSelection; - } else if (param == "SLCOverride") { - std::vector overrideOptions{tr("None"), tr("Set With Gas Pedal"), tr("Max Set Speed")}; - ButtonParamControl *overrideSelection = new ButtonParamControl(param, title, desc, icon, overrideOptions); - longitudinalToggle = overrideSelection; - } else if (param == "SLCPriority") { - ButtonControl *slcPriorityButton = new ButtonControl(title, tr("SELECT"), desc); - QStringList primaryPriorities = {tr("Dashboard"), tr("Map Data"), tr("Vision"), tr("Highest"), tr("Lowest")}; - QStringList otherPriorities = {tr("None"), tr("Dashboard"), tr("Map Data"), tr("Vision")}; - QStringList priorityPrompts = {tr("Select your primary priority"), tr("Select your secondary priority")}; - - QObject::connect(slcPriorityButton, &ButtonControl::clicked, [=]() { - QStringList selectedPriorities; - - for (int i = 1; i <= 2; ++i) { - QStringList availablePriorities = i == 1 ? primaryPriorities : otherPriorities; - availablePriorities = availablePriorities.toSet().subtract(selectedPriorities.toSet()).toList(); - - if (!parent->hasDashSpeedLimits) { - availablePriorities.removeAll(tr("Dashboard")); - } - if (availablePriorities.size() == 1 && availablePriorities.contains(tr("None"))) { - break; - } - - QString selection = MultiOptionDialog::getSelection(priorityPrompts[i - 1], availablePriorities, "", this); - if (selection.isEmpty()) { - if (i == 2 && !selectedPriorities.isEmpty()) { - params.put("SLCPriority2", tr("None").toStdString()); - } - break; - } - - selectedPriorities.append(selection); - - params.put(QString("SLCPriority%1").arg(i).toStdString(), selection.toStdString()); - if (selection == tr("None") || selection == tr("Lowest") || selection == tr("Highest")) { - for (int j = i + 1; j <= 2; ++j) { - params.put(QString("SLCPriority%1").arg(j).toStdString(), tr("None").toStdString()); - } - break; - } - } - - selectedPriorities.removeAll(tr("None")); - if (!selectedPriorities.isEmpty()) { - slcPriorityButton->setValue(selectedPriorities.join(", ")); - } - }); - - QStringList selectedPriorities; - for (int i = 1; i <= 2; ++i) { - QString priority = QString::fromStdString(params.get(QString("SLCPriority%1").arg(i).toStdString())); - if (primaryPriorities.contains(priority)) { - selectedPriorities.append(priority); - } - } - slcPriorityButton->setValue(selectedPriorities.join(", ")); - - longitudinalToggle = slcPriorityButton; - } else if (param == "SLCOffsets") { - ButtonControl *manageSLCOffsetsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCOffsetsButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerOffsetsPanel, this]() { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(speedLimitControllerOffsetsPanel); - - slcOpen = true; - }); - longitudinalToggle = manageSLCOffsetsButton; - } else if (speedLimitControllerOffsetsKeys.contains(param)) { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, -99, 99, tr(" mph")); - } else if (param == "SLCQOL") { - ButtonControl *manageSLCQOLButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCQOLButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerQOLPanel, this]() { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(speedLimitControllerQOLPanel); - - slcOpen = true; - }); - longitudinalToggle = manageSLCQOLButton; - } else if (param == "SLCConfirmation") { - std::vector confirmationToggles{"SLCConfirmationLower", "SLCConfirmationHigher"}; - std::vector confirmationToggleNames{tr("Lower Limits"), tr("Higher Limits")}; - longitudinalToggle = new StarPilotButtonToggleControl(param, title, desc, icon, confirmationToggles, confirmationToggleNames); - } else if (param == "SLCLookaheadHigher" || param == "SLCLookaheadLower") { - longitudinalToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 30, tr(" seconds")); - } else if (param == "SLCVisuals") { - ButtonControl *manageSLCVisualsButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(manageSLCVisualsButton, &ButtonControl::clicked, [longitudinalLayout, speedLimitControllerVisualPanel, this]() { - openSubSubPanel(); - - longitudinalLayout->setCurrentWidget(speedLimitControllerVisualPanel); - - slcOpen = true; - }); - longitudinalToggle = manageSLCVisualsButton; - - } else { - longitudinalToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = longitudinalToggle; - - if (advancedLongitudinalTuneKeys.contains(param)) { - advancedLongitudinalTuneList->addItem(longitudinalToggle); - } else if (aggressivePersonalityKeys.contains(param)) { - aggressivePersonalityList->addItem(longitudinalToggle); - } else if (conditionalChillKeys.contains(param)) { - conditionalChillList->addItem(longitudinalToggle); - } else if (conditionalExperimentalKeys.contains(param)) { - conditionalExperimentalList->addItem(longitudinalToggle); - } else if (curveSpeedKeys.contains(param)) { - curveSpeedList->addItem(longitudinalToggle); - } else if (customDrivingPersonalityKeys.contains(param)) { - customDrivingPersonalityList->addItem(longitudinalToggle); - } else if (longitudinalTuneKeys.contains(param)) { - longitudinalTuneList->addItem(longitudinalToggle); - } else if (qolKeys.contains(param)) { - qolList->addItem(longitudinalToggle); - } else if (relaxedPersonalityKeys.contains(param)) { - relaxedPersonalityList->addItem(longitudinalToggle); - } else if (speedLimitControllerKeys.contains(param)) { - speedLimitControllerList->addItem(longitudinalToggle); - } else if (speedLimitControllerOffsetsKeys.contains(param)) { - speedLimitControllerOffsetsList->addItem(longitudinalToggle); - } else if (speedLimitControllerQOLKeys.contains(param)) { - speedLimitControllerQOLList->addItem(longitudinalToggle); - } else if (speedLimitControllerVisualKeys.contains(param)) { - speedLimitControllerVisualList->addItem(longitudinalToggle); - } else if (standardPersonalityKeys.contains(param)) { - standardPersonalityList->addItem(longitudinalToggle); - } else if (trafficPersonalityKeys.contains(param)) { - trafficPersonalityList->addItem(longitudinalToggle); - } else if (weatherKeys.contains(param)) { - weatherList->addItem(longitudinalToggle); - } else if (weatherLowVisibilityKeys.contains(param)) { - weatherLowVisibilityList->addItem(longitudinalToggle); - } else if (weatherRainKeys.contains(param)) { - weatherRainList->addItem(longitudinalToggle); - } else if (weatherRainStormKeys.contains(param)) { - weatherRainStormList->addItem(longitudinalToggle); - } else if (weatherSnowKeys.contains(param)) { - weatherSnowList->addItem(longitudinalToggle); - } else { - longitudinalList->addItem(longitudinalToggle); - - parentKeys.insert(param); - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(longitudinalToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(longitudinalToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(longitudinalToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - QSet forceUpdateKeys = {"LongitudinalTune"}; - for (const QString &key : forceUpdateKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &StarPilotLongitudinalPanel::updateToggles); - } - - QObject::connect(static_cast(toggles["EVTuning"]), &ToggleControl::toggleFlipped, this, [this]() { - if (params.getBool("EVTuning")) { - params.putBool("TruckTuning", false); - } - updateToggles(); - }); - QObject::connect(static_cast(toggles["TruckTuning"]), &ToggleControl::toggleFlipped, this, [this]() { - if (params.getBool("TruckTuning")) { - params.putBool("EVTuning", false); - } - updateToggles(); - }); - QObject::connect(static_cast(toggles["ConditionalExperimental"]), &ToggleControl::toggleFlipped, this, [this]() { - if (params.getBool("ConditionalExperimental")) { - params.putBool("ConditionalChill", false); - static_cast(toggles["ConditionalChill"])->refresh(); - } - updateToggles(); - }); - QObject::connect(static_cast(toggles["ConditionalChill"]), &ToggleControl::toggleFlipped, this, [this]() { - if (params.getBool("ConditionalChill")) { - params.putBool("ConditionalExperimental", false); - static_cast(toggles["ConditionalExperimental"])->refresh(); - } - updateToggles(); - }); - - StarPilotParamValueControl *trafficFollowToggle = static_cast(toggles["TrafficFollow"]); - StarPilotParamValueControl *trafficAccelerationToggle = static_cast(toggles["TrafficJerkAcceleration"]); - StarPilotParamValueControl *trafficDecelerationToggle = static_cast(toggles["TrafficJerkDeceleration"]); - StarPilotParamValueControl *trafficDangerToggle = static_cast(toggles["TrafficJerkDanger"]); - StarPilotParamValueControl *trafficSpeedToggle = static_cast(toggles["TrafficJerkSpeed"]); - StarPilotParamValueControl *trafficSpeedDecreaseToggle = static_cast(toggles["TrafficJerkSpeedDecrease"]); - StarPilotButtonsControl *trafficResetButton = static_cast(toggles["ResetTrafficPersonality"]); - QObject::connect(trafficResetButton, &StarPilotButtonsControl::buttonClicked, [=]() { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for Traffic Mode?"), this)) { - params.putFloat("TrafficFollow", std::stof(params.getKeyDefaultValue("TrafficFollow").value())); - params.putFloat("TrafficJerkAcceleration", std::stof(params.getKeyDefaultValue("TrafficJerkAcceleration").value())); - params.putFloat("TrafficJerkDeceleration", std::stof(params.getKeyDefaultValue("TrafficJerkDeceleration").value())); - params.putFloat("TrafficJerkDanger", std::stof(params.getKeyDefaultValue("TrafficJerkDanger").value())); - params.putFloat("TrafficJerkSpeed", std::stof(params.getKeyDefaultValue("TrafficJerkSpeed").value())); - params.putFloat("TrafficJerkSpeedDecrease", std::stof(params.getKeyDefaultValue("TrafficJerkSpeedDecrease").value())); - - trafficFollowToggle->refresh(); - trafficAccelerationToggle->refresh(); - trafficDecelerationToggle->refresh(); - trafficDangerToggle->refresh(); - trafficSpeedToggle->refresh(); - trafficSpeedDecreaseToggle->refresh(); - } - }); - - StarPilotParamValueControl *aggressiveFollowToggle = static_cast(toggles["AggressiveFollow"]); - StarPilotParamValueControl *aggressiveFollowHighToggle = static_cast(toggles["AggressiveFollowHigh"]); - StarPilotParamValueControl *aggressiveAccelerationToggle = static_cast(toggles["AggressiveJerkAcceleration"]); - StarPilotParamValueControl *aggressiveDecelerationToggle = static_cast(toggles["AggressiveJerkDeceleration"]); - StarPilotParamValueControl *aggressiveDangerToggle = static_cast(toggles["AggressiveJerkDanger"]); - StarPilotParamValueControl *aggressiveSpeedToggle = static_cast(toggles["AggressiveJerkSpeed"]); - StarPilotParamValueControl *aggressiveSpeedDecreaseToggle = static_cast(toggles["AggressiveJerkSpeedDecrease"]); - StarPilotButtonsControl *aggressiveResetButton = static_cast(toggles["ResetAggressivePersonality"]); - QObject::connect(aggressiveResetButton, &StarPilotButtonsControl::buttonClicked, [=]() { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Aggressive personality?"), this)) { - params.putFloat("AggressiveFollow", std::stof(params.getKeyDefaultValue("AggressiveFollow").value())); - params.putFloat("AggressiveFollowHigh", std::stof(params.getKeyDefaultValue("AggressiveFollowHigh").value())); - params.putFloat("AggressiveJerkAcceleration", std::stof(params.getKeyDefaultValue("AggressiveJerkAcceleration").value())); - params.putFloat("AggressiveJerkDeceleration", std::stof(params.getKeyDefaultValue("AggressiveJerkDeceleration").value())); - params.putFloat("AggressiveJerkDanger", std::stof(params.getKeyDefaultValue("AggressiveJerkDanger").value())); - params.putFloat("AggressiveJerkSpeed", std::stof(params.getKeyDefaultValue("AggressiveJerkSpeed").value())); - params.putFloat("AggressiveJerkSpeedDecrease", std::stof(params.getKeyDefaultValue("AggressiveJerkSpeedDecrease").value())); - - aggressiveFollowToggle->refresh(); - aggressiveFollowHighToggle->refresh(); - aggressiveAccelerationToggle->refresh(); - aggressiveDecelerationToggle->refresh(); - aggressiveDangerToggle->refresh(); - aggressiveSpeedToggle->refresh(); - aggressiveSpeedDecreaseToggle->refresh(); - } - }); - - StarPilotParamValueControl *standardFollowToggle = static_cast(toggles["StandardFollow"]); - StarPilotParamValueControl *standardFollowHighToggle = static_cast(toggles["StandardFollowHigh"]); - StarPilotParamValueControl *standardAccelerationToggle = static_cast(toggles["StandardJerkAcceleration"]); - StarPilotParamValueControl *standardDecelerationToggle = static_cast(toggles["StandardJerkDeceleration"]); - StarPilotParamValueControl *standardDangerToggle = static_cast(toggles["StandardJerkDanger"]); - StarPilotParamValueControl *standardSpeedToggle = static_cast(toggles["StandardJerkSpeed"]); - StarPilotParamValueControl *standardSpeedDecreaseToggle = static_cast(toggles["StandardJerkSpeedDecrease"]); - StarPilotButtonsControl *standardResetButton = static_cast(toggles["ResetStandardPersonality"]); - QObject::connect(standardResetButton, &StarPilotButtonsControl::buttonClicked, [=]() { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Standard personality?"), this)) { - params.putFloat("StandardFollow", std::stof(params.getKeyDefaultValue("StandardFollow").value())); - params.putFloat("StandardFollowHigh", std::stof(params.getKeyDefaultValue("StandardFollowHigh").value())); - params.putFloat("StandardJerkAcceleration", std::stof(params.getKeyDefaultValue("StandardJerkAcceleration").value())); - params.putFloat("StandardJerkDeceleration", std::stof(params.getKeyDefaultValue("StandardJerkDeceleration").value())); - params.putFloat("StandardJerkDanger", std::stof(params.getKeyDefaultValue("StandardJerkDanger").value())); - params.putFloat("StandardJerkSpeed", std::stof(params.getKeyDefaultValue("StandardJerkSpeed").value())); - params.putFloat("StandardJerkSpeedDecrease", std::stof(params.getKeyDefaultValue("StandardJerkSpeedDecrease").value())); - - standardFollowToggle->refresh(); - standardFollowHighToggle->refresh(); - standardAccelerationToggle->refresh(); - standardDecelerationToggle->refresh(); - standardDangerToggle->refresh(); - standardSpeedToggle->refresh(); - standardSpeedDecreaseToggle->refresh(); - } - }); - - StarPilotParamValueControl *relaxedFollowToggle = static_cast(toggles["RelaxedFollow"]); - StarPilotParamValueControl *relaxedFollowHighToggle = static_cast(toggles["RelaxedFollowHigh"]); - StarPilotParamValueControl *relaxedAccelerationToggle = static_cast(toggles["RelaxedJerkAcceleration"]); - StarPilotParamValueControl *relaxedDecelerationToggle = static_cast(toggles["RelaxedJerkDeceleration"]); - StarPilotParamValueControl *relaxedDangerToggle = static_cast(toggles["RelaxedJerkDanger"]); - StarPilotParamValueControl *relaxedSpeedToggle = static_cast(toggles["RelaxedJerkSpeed"]); - StarPilotParamValueControl *relaxedSpeedDecreaseToggle = static_cast(toggles["RelaxedJerkSpeedDecrease"]); - StarPilotButtonsControl *relaxedResetButton = static_cast(toggles["ResetRelaxedPersonality"]); - QObject::connect(relaxedResetButton, &StarPilotButtonsControl::buttonClicked, [=]() { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your settings for the Relaxed personality?"), this)) { - params.putFloat("RelaxedFollow", std::stof(params.getKeyDefaultValue("RelaxedFollow").value())); - params.putFloat("RelaxedFollowHigh", std::stof(params.getKeyDefaultValue("RelaxedFollowHigh").value())); - params.putFloat("RelaxedJerkAcceleration", std::stof(params.getKeyDefaultValue("RelaxedJerkAcceleration").value())); - params.putFloat("RelaxedJerkDeceleration", std::stof(params.getKeyDefaultValue("RelaxedJerkDeceleration").value())); - params.putFloat("RelaxedJerkDanger", std::stof(params.getKeyDefaultValue("RelaxedJerkDanger").value())); - params.putFloat("RelaxedJerkSpeed", std::stof(params.getKeyDefaultValue("RelaxedJerkSpeed").value())); - params.putFloat("RelaxedJerkSpeedDecrease", std::stof(params.getKeyDefaultValue("RelaxedJerkSpeedDecrease").value())); - - relaxedFollowToggle->refresh(); - relaxedFollowHighToggle->refresh(); - relaxedAccelerationToggle->refresh(); - relaxedDecelerationToggle->refresh(); - relaxedDangerToggle->refresh(); - relaxedSpeedToggle->refresh(); - relaxedSpeedDecreaseToggle->refresh(); - } - }); - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [longitudinalLayout, longitudinalPanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - longitudinalLayout->setCurrentWidget(longitudinalPanel); - }); - QObject::connect(parent, &StarPilotSettingsWindow::closeSubSubPanel, [longitudinalLayout, customDrivingPersonalityPanel, qolPanel, speedLimitControllerPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - - if (customPersonalityOpen) { - longitudinalLayout->setCurrentWidget(customDrivingPersonalityPanel); - - customPersonalityOpen = false; - } else if (qolOpen) { - longitudinalLayout->setCurrentWidget(qolPanel); - - qolOpen = false; - } else if (slcOpen) { - longitudinalLayout->setCurrentWidget(speedLimitControllerPanel); - - slcOpen = false; - } - }); - QObject::connect(parent, &StarPilotSettingsWindow::closeSubSubSubPanel, [longitudinalLayout, weatherPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - - if (weatherOpen) { - longitudinalLayout->setCurrentWidget(weatherPanel); - - weatherOpen = false; - } - }); - QObject::connect(parent, &StarPilotSettingsWindow::updateMetric, this, &StarPilotLongitudinalPanel::updateMetric); -} - -void StarPilotLongitudinalPanel::showEvent(QShowEvent *event) { - calibratedLateralAccelerationLabel->setText(QString::number(params.getFloat("CalibratedLateralAcceleration"), 'f', 2) + tr(" m/s²")); - calibrationProgressLabel->setText(QString::number(params.getFloat("CalibrationProgress"), 'f', 2) + "%"); - - longitudinalActuatorDelayToggle->setTitle(QString(tr("Actuator Delay (Default: %1)")).arg(QString::number(parent->longitudinalActuatorDelay, 'f', 2))); - startAccelToggle->setTitle(QString(tr("Start Acceleration (Default: %1)")).arg(QString::number(parent->startAccel, 'f', 2))); - stopAccelToggle->setTitle(QString(tr("Stop Acceleration (Default: %1)")).arg(QString::number(parent->stopAccel, 'f', 2))); - stoppingDecelRateToggle->setTitle(QString(tr("Stopping Rate (Default: %1)")).arg(QString::number(parent->stoppingDecelRate, 'f', 2))); - vEgoStartingToggle->setTitle(QString(tr("Start Speed (Default: %1)")).arg(QString::number(parent->vEgoStarting, 'f', 2))); - vEgoStoppingToggle->setTitle(QString(tr("Stop Speed (Default: %1)")).arg(QString::number(parent->vEgoStopping, 'f', 2))); - - - - updateToggles(); -} - -void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { - static bool previousMetric; - if (metric != previousMetric && !bootRun) { - double distanceConversion = metric ? FOOT_TO_METER : METER_TO_FOOT; - double speedConversion = metric ? MILE_TO_KM : KM_TO_MILE; - - params.putIntNonBlocking("IncreasedStoppedDistance", params.getInt("IncreasedStoppedDistance") * distanceConversion); - params.putIntNonBlocking("IncreasedStoppedDistanceLowVisibility", params.getInt("IncreasedStoppedDistanceLowVisibility") * distanceConversion); - params.putIntNonBlocking("IncreasedStoppedDistanceRain", params.getInt("IncreasedStoppedDistanceRain") * distanceConversion); - params.putIntNonBlocking("IncreasedStoppedDistanceRainStorm", params.getInt("IncreasedStoppedDistanceRainStorm") * distanceConversion); - params.putIntNonBlocking("IncreasedStoppedDistanceSnow", params.getInt("IncreasedStoppedDistanceSnow") * distanceConversion); - - params.putIntNonBlocking("CCMSpeed", params.getInt("CCMSpeed") * speedConversion); - params.putIntNonBlocking("CCMSpeedLead", params.getInt("CCMSpeedLead") * speedConversion); - params.putIntNonBlocking("CCMSetSpeedMargin", params.getInt("CCMSetSpeedMargin") * speedConversion); - params.putIntNonBlocking("CESignalSpeed", params.getInt("CESignalSpeed") * speedConversion); - params.putIntNonBlocking("CESpeed", params.getInt("CESpeed") * speedConversion); - params.putIntNonBlocking("CESpeedLead", params.getInt("CESpeedLead") * speedConversion); - params.putIntNonBlocking("CustomCruise", params.getInt("CustomCruise") * speedConversion); - params.putIntNonBlocking("CustomCruiseLong", params.getInt("CustomCruiseLong") * speedConversion); - params.putIntNonBlocking("Offset1", params.getInt("Offset1") * speedConversion); - params.putIntNonBlocking("Offset2", params.getInt("Offset2") * speedConversion); - params.putIntNonBlocking("Offset3", params.getInt("Offset3") * speedConversion); - params.putIntNonBlocking("Offset4", params.getInt("Offset4") * speedConversion); - params.putIntNonBlocking("Offset5", params.getInt("Offset5") * speedConversion); - params.putIntNonBlocking("Offset6", params.getInt("Offset6") * speedConversion); - params.putIntNonBlocking("Offset7", params.getInt("Offset7") * speedConversion); - params.putIntNonBlocking("SetSpeedOffset", params.getInt("SetSpeedOffset") * speedConversion); - } - previousMetric = metric; - - static std::map imperialDistanceLabels; - static std::map imperialSpeedLabels; - static std::map imperialOffsetLabels; - static std::map metricDistanceLabels; - static std::map metricSpeedLabels; - static std::map metricOffsetLabels; - - static bool labelsInitialized = false; - if (!labelsInitialized) { - for (int i = 0; i <= 10; ++i) { - imperialDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" foot") : QString::number(i) + tr(" feet"); - } - - for (int i = 0; i <= 99; ++i) { - imperialSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" mph"); - } - for (int i = -99; i <= 99; ++i) { - imperialOffsetLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" mph"); - } - - for (int i = 0; i <= 3; ++i) { - metricDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" meter") : QString::number(i) + tr(" meters"); - } - - for (int i = 0; i <= 150; ++i) { - metricSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" km/h"); - } - for (int i = -150; i <= 150; ++i) { - metricOffsetLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" km/h"); - } - - labelsInitialized = true; - } - - StarPilotDualParamValueControl *ccmSpeedToggle = reinterpret_cast(toggles["CCMSpeed"]); - StarPilotDualParamValueControl *ceSpeedToggle = reinterpret_cast(toggles["CESpeed"]); - StarPilotParamValueControl *ccmSetSpeedMarginToggle = static_cast(toggles["CCMSetSpeedMargin"]); - StarPilotParamValueButtonControl *ceSignal = static_cast(toggles["CESignalSpeed"]); - StarPilotParamValueControl *customCruiseToggle = static_cast(toggles["CustomCruise"]); - StarPilotParamValueControl *customCruiseLongToggle = static_cast(toggles["CustomCruiseLong"]); - StarPilotParamValueControl *offset1Toggle = static_cast(toggles["Offset1"]); - StarPilotParamValueControl *offset2Toggle = static_cast(toggles["Offset2"]); - StarPilotParamValueControl *offset3Toggle = static_cast(toggles["Offset3"]); - StarPilotParamValueControl *offset4Toggle = static_cast(toggles["Offset4"]); - StarPilotParamValueControl *offset5Toggle = static_cast(toggles["Offset5"]); - StarPilotParamValueControl *offset6Toggle = static_cast(toggles["Offset6"]); - StarPilotParamValueControl *offset7Toggle = static_cast(toggles["Offset7"]); - StarPilotParamValueControl *increasedStoppedDistanceToggle = static_cast(toggles["IncreasedStoppedDistance"]); - StarPilotParamValueControl *increasedStoppedDistanceLowVisibilityToggle = static_cast(toggles["IncreasedStoppedDistanceLowVisibility"]); - StarPilotParamValueControl *increasedStoppedDistanceRainToggle = static_cast(toggles["IncreasedStoppedDistanceRain"]); - StarPilotParamValueControl *increasedStoppedDistanceRainStormToggle = static_cast(toggles["IncreasedStoppedDistanceRainStorm"]); - StarPilotParamValueControl *increasedStoppedDistanceSnowToggle = static_cast(toggles["IncreasedStoppedDistanceSnow"]); - StarPilotParamValueControl *setSpeedOffsetToggle = static_cast(toggles["SetSpeedOffset"]); - - if (metric) { - offset1Toggle->setTitle(tr("Speed Offset (0–29 km/h)")); - offset2Toggle->setTitle(tr("Speed Offset (30–49 km/h)")); - offset3Toggle->setTitle(tr("Speed Offset (50–59 km/h)")); - offset4Toggle->setTitle(tr("Speed Offset (60–79 km/h)")); - offset5Toggle->setTitle(tr("Speed Offset (80–99 km/h)")); - offset6Toggle->setTitle(tr("Speed Offset (100–119 km/h)")); - offset7Toggle->setTitle(tr("Speed Offset (120–140 km/h)")); - - offset1Toggle->setDescription(tr("How much to offset posted speed-limits between 0 and 24 mph.")); - offset2Toggle->setDescription(tr("How much to offset posted speed-limits between 25 and 34 mph.")); - offset3Toggle->setDescription(tr("How much to offset posted speed-limits between 35 and 44 mph.")); - offset4Toggle->setDescription(tr("How much to offset posted speed-limits between 45 and 54 mph.")); - offset5Toggle->setDescription(tr("How much to offset posted speed-limits between 55 and 64 mph.")); - offset6Toggle->setDescription(tr("How much to offset posted speed-limits between 65 and 74 mph.")); - offset7Toggle->setDescription(tr("How much to offset posted speed-limits between 75 and 99 mph.")); - - increasedStoppedDistanceToggle->updateControl(0, 3, metricDistanceLabels); - increasedStoppedDistanceLowVisibilityToggle->updateControl(0, 3, metricDistanceLabels); - increasedStoppedDistanceRainToggle->updateControl(0, 3, metricDistanceLabels); - increasedStoppedDistanceRainStormToggle->updateControl(0, 3, metricDistanceLabels); - increasedStoppedDistanceSnowToggle->updateControl(0, 3, metricDistanceLabels); - - ccmSpeedToggle->updateControl(0, 150, metricSpeedLabels); - ccmSetSpeedMarginToggle->updateControl(0, 25, metricSpeedLabels); - ceSignal->updateControl(0, 150, metricSpeedLabels); - ceSpeedToggle->updateControl(0, 150, metricSpeedLabels); - customCruiseToggle->updateControl(1, 150, metricSpeedLabels); - customCruiseLongToggle->updateControl(1, 150, metricSpeedLabels); - offset1Toggle->updateControl(-150, 150, metricOffsetLabels); - offset2Toggle->updateControl(-150, 150, metricOffsetLabels); - offset3Toggle->updateControl(-150, 150, metricOffsetLabels); - offset4Toggle->updateControl(-150, 150, metricOffsetLabels); - offset5Toggle->updateControl(-150, 150, metricOffsetLabels); - offset6Toggle->updateControl(-150, 150, metricOffsetLabels); - offset7Toggle->updateControl(-150, 150, metricOffsetLabels); - setSpeedOffsetToggle->updateControl(-150, 150, metricSpeedLabels); - } else { - offset1Toggle->setTitle(tr("Speed Offset (0–24 mph)")); - offset2Toggle->setTitle(tr("Speed Offset (25–34 mph)")); - offset3Toggle->setTitle(tr("Speed Offset (35–44 mph)")); - offset4Toggle->setTitle(tr("Speed Offset (45–54 mph)")); - offset5Toggle->setTitle(tr("Speed Offset (55–64 mph)")); - offset6Toggle->setTitle(tr("Speed Offset (65–74 mph)")); - offset7Toggle->setTitle(tr("Speed Offset (75–99 mph)")); - - offset1Toggle->setDescription(tr("How much to offset posted speed-limits between 0 and 24 mph.")); - offset2Toggle->setDescription(tr("How much to offset posted speed-limits between 25 and 34 mph.")); - offset3Toggle->setDescription(tr("How much to offset posted speed-limits between 35 and 44 mph.")); - offset4Toggle->setDescription(tr("How much to offset posted speed-limits between 45 and 54 mph.")); - offset5Toggle->setDescription(tr("How much to offset posted speed-limits between 55 and 64 mph.")); - offset6Toggle->setDescription(tr("How much to offset posted speed-limits between 65 and 74 mph.")); - offset7Toggle->setDescription(tr("How much to offset posted speed-limits between 75 and 99 mph.")); - - increasedStoppedDistanceToggle->updateControl(0, 10, imperialDistanceLabels); - increasedStoppedDistanceLowVisibilityToggle->updateControl(0, 10, imperialDistanceLabels); - increasedStoppedDistanceRainToggle->updateControl(0, 10, imperialDistanceLabels); - increasedStoppedDistanceRainStormToggle->updateControl(0, 10, imperialDistanceLabels); - increasedStoppedDistanceSnowToggle->updateControl(0, 10, imperialDistanceLabels); - - ccmSpeedToggle->updateControl(0, 99, imperialSpeedLabels); - ccmSetSpeedMarginToggle->updateControl(0, 15, imperialSpeedLabels); - ceSignal->updateControl(0, 99, imperialSpeedLabels); - ceSpeedToggle->updateControl(0, 99, imperialSpeedLabels); - customCruiseToggle->updateControl(1, 99, imperialSpeedLabels); - customCruiseLongToggle->updateControl(1, 99, imperialSpeedLabels); - offset1Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset2Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset3Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset4Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset5Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset6Toggle->updateControl(-99, 99, imperialOffsetLabels); - offset7Toggle->updateControl(-99, 99, imperialOffsetLabels); - setSpeedOffsetToggle->updateControl(0, 99, imperialSpeedLabels); - } -} - -void StarPilotLongitudinalPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "CEStopLights") { - setVisible &= parent->tuningLevel < parent->starpilotToggleLevels["CEModelStopTime"].toDouble(); - } - - else if (key == "CustomCruise" || key == "CustomCruiseLong" || key == "SetSpeedLimit" || key == "SetSpeedOffset") { - setVisible &= !parent->hasPCMCruise; - } - - else if (key == "HumanLaneChanges") { - setVisible &= parent->hasRadar; - } - - else if (key == "RadarTakeoffs") { - setVisible &= parent->hasRadar; - } - - else if (key == "MapGears") { - setVisible &= parent->isToyota || parent->isHKG; - setVisible &= !parent->isTSK; - } - - else if (key == "ReverseCruise") { - setVisible &= parent->isToyota; - } - - else if (key == "SLCMapboxFiller") { - setVisible &= !params.get("MapboxSecretKey").empty(); - } - - else if (key == "StoppingDecelRate" || key == "VEgoStarting" || key == "VEgoStopping") { - setVisible &= !parent->isGM || !params.getBool("ExperimentalGMTune"); - } - } - - if (key == "EVTuning") { - toggle->setEnabled(!params.getBool("TruckTuning")); - } else if (key == "TruckTuning") { - toggle->setEnabled(!params.getBool("EVTuning")); - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (advancedLongitudinalTuneKeys.contains(key)) { - toggles["AdvancedLongitudinalTune"]->setVisible(true); - } else if (aggressivePersonalityKeys.contains(key)) { - toggles["AggressivePersonalityProfile"]->setVisible(true); - } else if (conditionalChillKeys.contains(key)) { - toggles["ConditionalChill"]->setVisible(true); - } else if (conditionalExperimentalKeys.contains(key)) { - toggles["ConditionalExperimental"]->setVisible(true); - } else if (curveSpeedKeys.contains(key)) { - toggles["CurveSpeedController"]->setVisible(true); - } else if (customDrivingPersonalityKeys.contains(key)) { - toggles["CustomPersonalities"]->setVisible(true); - } else if (longitudinalTuneKeys.contains(key)) { - toggles["LongitudinalTune"]->setVisible(true); - } else if (qolKeys.contains(key)) { - toggles["QOLLongitudinal"]->setVisible(true); - } else if (relaxedPersonalityKeys.contains(key)) { - toggles["RelaxedPersonalityProfile"]->setVisible(true); - } else if (speedLimitControllerKeys.contains(key)) { - toggles["SpeedLimitController"]->setVisible(true); - } else if (speedLimitControllerOffsetsKeys.contains(key)) { - toggles["SLCOffsets"]->setVisible(true); - } else if (speedLimitControllerQOLKeys.contains(key)) { - toggles["SLCQOL"]->setVisible(true); - } else if (speedLimitControllerVisualKeys.contains(key)) { - toggles["SLCVisuals"]->setVisible(true); - } else if (standardPersonalityKeys.contains(key)) { - toggles["StandardPersonalityProfile"]->setVisible(true); - } else if (trafficPersonalityKeys.contains(key)) { - toggles["TrafficPersonalityProfile"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/longitudinal_settings.h b/starpilot/ui/qt/offroad/longitudinal_settings.h deleted file mode 100644 index a0166c2c3..000000000 --- a/starpilot/ui/qt/offroad/longitudinal_settings.h +++ /dev/null @@ -1,71 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotLongitudinalPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotLongitudinalPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - void openSubSubPanel(); - void openSubSubSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateMetric(bool metric, bool bootRun); - void updateToggles(); - - bool customPersonalityOpen; - bool forceOpenDescriptions; - bool qolOpen; - bool slcOpen; - bool weatherOpen; - - std::map toggles; - - QSet advancedLongitudinalTuneKeys = {"EVTuning", "TruckTuning", "TrailerLoad", "LongitudinalActuatorDelay", "MaxDesiredAcceleration", "StartAccel", "StopAccel", "StoppingDecelRate", "VEgoStarting", "VEgoStopping"}; - QSet aggressivePersonalityKeys = {"AggressiveFollow", "AggressiveFollowHigh", "AggressiveJerkAcceleration", "AggressiveJerkDeceleration", "AggressiveJerkDanger", "AggressiveJerkSpeed", "AggressiveJerkSpeedDecrease", "ResetAggressivePersonality"}; - QSet conditionalChillKeys = {"PersistChillState", "CCMSpeed", "CCMSpeedLead", "CCMLead", "CCMLaunchAssist", "CCMSetSpeedMargin", "ShowCCMStatus"}; - QSet conditionalExperimentalKeys = {"PersistExperimentalState", "CESpeed", "CESpeedLead", "CECurves", "CELead", "CEModelStopTime", "CESignalSpeed", "CEStopLights", "ShowCEMStatus"}; - QSet curveSpeedKeys = {"CalibratedLateralAcceleration", "CalibrationProgress", "ResetCurveData", "ShowCSCStatus"}; - QSet customDrivingPersonalityKeys = {"AggressivePersonalityProfile", "RelaxedPersonalityProfile", "StandardPersonalityProfile", "TrafficPersonalityProfile"}; - QSet longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "HumanLaneChanges", "LeadDetectionThreshold", "TacoTune", "NavLongitudinalAllowed"}; - QSet qolKeys = {"CustomCruise", "CustomCruiseLong", "ForceStops", "ForceStopDistanceOffset", "ForceStandstill", "RadarTakeoffs", "IncreasedStoppedDistance", "MapGears", "ReverseCruise", "SetSpeedOffset", "WeatherPresets"}; - QSet relaxedPersonalityKeys = {"RelaxedFollow", "RelaxedFollowHigh", "RelaxedJerkAcceleration", "RelaxedJerkDeceleration", "RelaxedJerkDanger", "RelaxedJerkSpeed", "RelaxedJerkSpeedDecrease", "ResetRelaxedPersonality"}; - QSet speedLimitControllerKeys = {"SLCOffsets", "SLCFallback", "SLCOverride", "SLCPriority", "SLCQOL", "SLCVisuals"}; - QSet speedLimitControllerOffsetsKeys = {"Offset1", "Offset2", "Offset3", "Offset4", "Offset5", "Offset6", "Offset7"}; - QSet speedLimitControllerQOLKeys = {"SetSpeedLimit", "SLCConfirmation", "SLCLookaheadHigher", "SLCLookaheadLower", "SLCMapboxFiller", "VisionSpeedLimitDetection"}; - QSet speedLimitControllerVisualKeys = {"ShowSLCOffset", "SLCAbbreviatedSources", "SLCActiveSourcesOnly", "SpeedLimitSources"}; - QSet standardPersonalityKeys = {"StandardFollow", "StandardFollowHigh", "StandardJerkAcceleration", "StandardJerkDeceleration", "StandardJerkDanger", "StandardJerkSpeed", "StandardJerkSpeedDecrease", "ResetStandardPersonality"}; - QSet trafficPersonalityKeys = {"TrafficFollow", "TrafficJerkAcceleration", "TrafficJerkDeceleration", "TrafficJerkDanger", "TrafficJerkSpeed", "TrafficJerkSpeedDecrease", "ResetTrafficPersonality"}; - QSet weatherKeys = {"LowVisibilityOffsets", "RainOffsets", "RainStormOffsets", "SetWeatherKey", "SnowOffsets"}; - QSet weatherLowVisibilityKeys = {"IncreaseFollowingLowVisibility", "IncreasedStoppedDistanceLowVisibility", "ReduceAccelerationLowVisibility", "ReduceLateralAccelerationLowVisibility"}; - QSet weatherRainKeys = {"IncreaseFollowingRain", "IncreasedStoppedDistanceRain", "ReduceAccelerationRain", "ReduceLateralAccelerationRain"}; - QSet weatherRainStormKeys = {"IncreaseFollowingRainStorm", "IncreasedStoppedDistanceRainStorm", "ReduceAccelerationRainStorm", "ReduceLateralAccelerationRainStorm"}; - QSet weatherSnowKeys = {"IncreaseFollowingSnow", "IncreasedStoppedDistanceSnow", "ReduceAccelerationSnow", "ReduceLateralAccelerationSnow"}; - - QSet parentKeys; - - - - StarPilotParamValueControl *longitudinalActuatorDelayToggle; - StarPilotParamValueControl *startAccelToggle; - StarPilotParamValueControl *stopAccelToggle; - StarPilotParamValueControl *stoppingDecelRateToggle; - StarPilotParamValueControl *vEgoStartingToggle; - StarPilotParamValueControl *vEgoStoppingToggle; - - StarPilotSettingsWindow *parent; - - LabelControl *calibratedLateralAccelerationLabel; - LabelControl *calibrationProgressLabel; - - Params params; - - QNetworkAccessManager *networkManager; -}; diff --git a/starpilot/ui/qt/offroad/maps_settings.cc b/starpilot/ui/qt/offroad/maps_settings.cc deleted file mode 100644 index 24af3c8bb..000000000 --- a/starpilot/ui/qt/offroad/maps_settings.cc +++ /dev/null @@ -1,290 +0,0 @@ -#include -#include - -#include "starpilot/ui/qt/offroad/maps_settings.h" - -namespace { -bool hasDownloadedMaps(const QDir &dir) { - if (!dir.exists()) { - return false; - } - - QDirIterator it(dir.absolutePath(), QDir::Files, QDirIterator::Subdirectories); - return it.hasNext(); -} -} // namespace - -StarPilotMapsPanel::StarPilotMapsPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *mapsLayout = new QStackedLayout(); - addItem(mapsLayout); - - StarPilotListWidget *settingsList = new StarPilotListWidget(this); - - std::vector scheduleOptions{tr("Manually"), tr("Weekly"), tr("Monthly")}; - preferredSchedule = new ButtonParamControl("PreferredSchedule", tr("Automatically Update Maps"), - tr("How often maps update from \"OpenStreetMap (OSM)\" with the latest speed limit information. " - "Weekly updates run every Sunday; monthly updates run on the 1st."), - "", - scheduleOptions); - settingsList->addItem(preferredSchedule); - - downloadMapsButton = new ButtonControl(tr("Download Maps"), tr("DOWNLOAD"), tr("Manually update your selected map sources so \"Speed Limit Controller\" has the latest speed limit information.")); - QObject::connect(downloadMapsButton, &ButtonControl::clicked, [this] { - if (downloadMapsButton->text() == tr("CANCEL")) { - if (StarPilotConfirmationDialog::yesorno(tr("Cancel the download?"), this)) { - cancelDownload(); - } - } else { - startDownload(); - } - }); - settingsList->addItem(downloadMapsButton); - - settingsList->addItem(lastMapsDownload = new LabelControl(tr("Last Updated"), params.get("LastMapsUpdate").empty() ? "Never" : QString::fromStdString(params.get("LastMapsUpdate")))); - - selectMaps = new StarPilotButtonsControl(tr("Map Sources"), - tr("Select the countries or U.S. states to use with \"Speed Limit Controller\".") , - "", {tr("COUNTRIES"), tr("STATES")}); - QObject::connect(selectMaps, &StarPilotButtonsControl::buttonClicked, [mapsLayout, this](int id) { - mapsLayout->setCurrentIndex(id + 1); - - openSubPanel(); - }); - settingsList->addItem(selectMaps); - - settingsList->addItem(downloadStatus = new LabelControl(tr("Progress"))); - settingsList->addItem(downloadTimeElapsed = new LabelControl(tr("Time Elapsed"))); - settingsList->addItem(downloadETA = new LabelControl(tr("Time Remaining"))); - - downloadETA->setVisible(false); - downloadStatus->setVisible(false); - downloadTimeElapsed->setVisible(false); - - removeMapsButton = new ButtonControl(tr("Remove Maps"), tr("REMOVE"), tr("Delete downloaded map data to free up storage space.")); - QObject::connect(removeMapsButton, &ButtonControl::clicked, [this] { - if (StarPilotConfirmationDialog::yesorno(tr("Delete all downloaded maps?"), this)) { - std::thread([this] { - mapsSize->setText(tr("0 MB")); - - mapsFolderPath.removeRecursively(); - }).detach(); - } - }); - settingsList->addItem(removeMapsButton); - - settingsList->addItem(mapsSize = new LabelControl(tr("Storage Used"), calculateDirectorySize(mapsFolderPath))); - - ScrollView *settingsPanel = new ScrollView(settingsList, this); - mapsLayout->addWidget(settingsPanel); - - StarPilotListWidget *countriesList = new StarPilotListWidget(this); - std::vector>> countries = { - {tr("Africa"), africaMap}, - {tr("Antarctica"), antarcticaMap}, - {tr("Asia"), asiaMap}, - {tr("Europe"), europeMap}, - {tr("North America"), northAmericaMap}, - {tr("Oceania"), oceaniaMap}, - {tr("South America"), southAmericaMap} - }; - - for (std::pair> country : countries) { - countriesList->addItem(new LabelControl(country.first, "")); - countriesList->addItem(new MapSelectionControl(country.second, true)); - } - - ScrollView *countryMapsPanel = new ScrollView(countriesList, this); - mapsLayout->addWidget(countryMapsPanel); - - StarPilotListWidget *statesList = new StarPilotListWidget(this); - std::vector>> states = { - {tr("United States - Midwest"), midwestMap}, - {tr("United States - Northeast"), northeastMap}, - {tr("United States - South"), southMap}, - {tr("United States - West"), westMap}, - {tr("United States - Territories"), territoriesMap} - }; - - for (std::pair> state : states) { - statesList->addItem(new LabelControl(state.first, "")); - statesList->addItem(new MapSelectionControl(state.second)); - } - - ScrollView *stateMapsPanel = new ScrollView(statesList, this); - mapsLayout->addWidget(stateMapsPanel); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [mapsLayout, settingsPanel, this] { - if (forceOpenDescriptions) { - downloadMapsButton->showDescription(); - preferredSchedule->showDescription(); - removeMapsButton->showDescription(); - selectMaps->showDescription(); - } - - hasMapsSelected = !params.get("MapsSelected").empty(); - - mapsLayout->setCurrentWidget(settingsPanel); - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotMapsPanel::updateState); -} - -void StarPilotMapsPanel::showEvent(QShowEvent *event) { - if (forceOpenDescriptions) { - downloadMapsButton->showDescription(); - preferredSchedule->showDescription(); - removeMapsButton->showDescription(); - selectMaps->showDescription(); - } - - UIState &s = *uiState(); - UIScene &scene = s.scene; - - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - SubMaster &fpsm = *(fs.sm); - - const cereal::MapdExtendedOut::Reader &mapdExtendedOut = fpsm["mapdExtendedOut"].getMapdExtendedOut(); - const cereal::MapdDownloadProgress::Reader &downloadProgress = mapdExtendedOut.getDownloadProgress(); - - bool mapDownloadActive = downloadProgress.getActive(); - - int mapDownloadDownloaded = downloadProgress.getDownloadedFiles(); - int mapDownloadTotal = downloadProgress.getTotalFiles(); - - hasMapsSelected = !params.get("MapsSelected").empty(); - - bool parked = !scene.started || starpilot_scene.parked || parent->isFrogsGoMoo; - - removeMapsButton->setVisible(hasDownloadedMaps(mapsFolderPath)); - - if (mapDownloadActive) { - downloadMapsButton->setText(tr("CANCEL")); - downloadStatus->setText(tr("Calculating...")); - - downloadStatus->setVisible(true); - - lastMapsDownload->setVisible(false); - removeMapsButton->setVisible(false); - - updateDownloadLabels(mapDownloadDownloaded, mapDownloadTotal); - } else { - downloadMapsButton->setEnabled(!cancellingDownload && hasMapsSelected && starpilot_scene.online && parked); - downloadMapsButton->setValue(starpilot_scene.online ? (parked ? "" : tr("Not parked")) : tr("Offline...")); - } -} - - -void StarPilotMapsPanel::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible()) { - return; - } - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const UIScene &scene = s.scene; - const SubMaster &fpsm = *(fs.sm); - - const cereal::MapdExtendedOut::Reader &mapdExtendedOut = fpsm["mapdExtendedOut"].getMapdExtendedOut(); - const cereal::MapdDownloadProgress::Reader &downloadProgress = mapdExtendedOut.getDownloadProgress(); - - bool mapDownloadActive = downloadProgress.getActive(); - bool parked = !scene.started || starpilot_scene.parked || parent->isFrogsGoMoo; - - int mapDownloadDownloaded = downloadProgress.getDownloadedFiles(); - int mapDownloadTotal = downloadProgress.getTotalFiles(); - - if (mapDownloadActive && !cancellingDownload) { - updateDownloadLabels(mapDownloadDownloaded, mapDownloadTotal); - } else if (downloadMapsButton->text() == tr("CANCEL")) { - updateDownloadLabels(mapDownloadDownloaded, mapDownloadTotal); - } else { - downloadMapsButton->setEnabled(!cancellingDownload && hasMapsSelected && starpilot_scene.online && parked); - downloadMapsButton->setValue(starpilot_scene.online ? (parked ? "" : tr("Not parked")) : tr("Offline...")); - } - - parent->keepScreenOn = mapDownloadActive; -} - -void StarPilotMapsPanel::cancelDownload() { - cancellingDownload = true; - - downloadMapsButton->setEnabled(false); - - downloadETA->setText(tr("Calculating...")); - downloadMapsButton->setText(tr("CANCEL")); - downloadStatus->setText(tr("Calculating...")); - downloadTimeElapsed->setText(tr("Calculating...")); - - params_memory.putBool("CancelDownloadMaps", true); - params_memory.remove("DownloadMaps"); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - - downloadMapsButton->setEnabled(true); - - downloadMapsButton->setText(tr("DOWNLOAD")); - - downloadETA->setVisible(false); - downloadStatus->setVisible(false); - downloadTimeElapsed->setVisible(false); - - lastMapsDownload->setVisible(true); - removeMapsButton->setVisible(hasDownloadedMaps(mapsFolderPath)); - - update(); - }); -} - -void StarPilotMapsPanel::startDownload() { - downloadETA->setText(tr("Calculating...")); - downloadMapsButton->setText(tr("CANCEL")); - downloadStatus->setText(tr("Calculating...")); - downloadTimeElapsed->setText(tr("Calculating...")); - - downloadETA->setVisible(true); - downloadStatus->setVisible(true); - downloadTimeElapsed->setVisible(true); - - lastMapsDownload->setVisible(false); - removeMapsButton->setVisible(false); - - elapsedTime.start(); - startTime = QDateTime::currentDateTime(); - - params_memory.putBool("DownloadMaps", true); -} - -void StarPilotMapsPanel::updateDownloadLabels(int downloadedFiles, int totalFiles) { - if (downloadedFiles == totalFiles && totalFiles != 0) { - downloadMapsButton->setText(tr("DOWNLOAD")); - lastMapsDownload->setText(formatCurrentDate()); - - downloadETA->setVisible(false); - downloadStatus->setVisible(false); - downloadTimeElapsed->setVisible(false); - - lastMapsDownload->setVisible(true); - removeMapsButton->setVisible(hasDownloadedMaps(mapsFolderPath)); - - params.put("LastMapsUpdate", formatCurrentDate().toStdString()); - - update(); - - return; - } - - static int previousDownloadedFiles = 0; - if (downloadedFiles != previousDownloadedFiles) { - std::thread([this]() { - mapsSize->setText(calculateDirectorySize(mapsFolderPath)); - }).detach(); - } - - downloadETA->setText(QString("%1").arg(formatETA(elapsedTime.elapsed(), downloadedFiles, previousDownloadedFiles, totalFiles, startTime))); - downloadStatus->setText(QString("%1 / %2 (%3%)").arg(downloadedFiles).arg(totalFiles).arg((downloadedFiles * 100) / (totalFiles == 0 ? 1 : totalFiles))); - downloadTimeElapsed->setText(formatElapsedTime(elapsedTime.elapsed())); - - previousDownloadedFiles = downloadedFiles; -} diff --git a/starpilot/ui/qt/offroad/maps_settings.h b/starpilot/ui/qt/offroad/maps_settings.h deleted file mode 100644 index eb12ddbd9..000000000 --- a/starpilot/ui/qt/offroad/maps_settings.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" -#include "starpilot/ui/qt/widgets/navigation_functions.h" - -class StarPilotMapsPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotMapsPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void cancelDownload(); - void startDownload(); - void updateDownloadLabels(int downloadedFiles, int totalFiles); - void updateState(const UIState &s, const StarPilotUIState &fs); - - bool cancellingDownload; - bool forceOpenDescriptions; - bool hasMapsSelected; - - ButtonControl *downloadMapsButton; - ButtonControl *removeMapsButton; - - ButtonParamControl *preferredSchedule; - - StarPilotButtonsControl *selectMaps; - - StarPilotSettingsWindow *parent; - - LabelControl *downloadETA; - LabelControl *downloadStatus; - LabelControl *downloadTimeElapsed; - LabelControl *lastMapsDownload; - LabelControl *mapsSize; - - Params params; - Params params_memory{"", true}; - - QDateTime startTime; - - QDir mapsFolderPath{"/data/media/0/osm/offline"}; - - QElapsedTimer elapsedTime; -}; diff --git a/starpilot/ui/qt/offroad/moc_data_settings.cc b/starpilot/ui/qt/offroad/moc_data_settings.cc deleted file mode 100644 index aa212342f..000000000 --- a/starpilot/ui/qt/offroad/moc_data_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'data_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "data_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'data_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotDataPanel_t { - QByteArrayData data[3]; - char stringdata0[33]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotDataPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotDataPanel_t qt_meta_stringdata_StarPilotDataPanel = { - { -QT_MOC_LITERAL(0, 0, 18), // "StarPilotDataPanel" -QT_MOC_LITERAL(1, 19, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 32, 0) // "" - - }, - "StarPilotDataPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotDataPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotDataPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotDataPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotDataPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotDataPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotDataPanel.data, - qt_meta_data_StarPilotDataPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotDataPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotDataPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotDataPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotDataPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotDataPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_device_settings.cc b/starpilot/ui/qt/offroad/moc_device_settings.cc deleted file mode 100644 index a00bda66b..000000000 --- a/starpilot/ui/qt/offroad/moc_device_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'device_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "device_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'device_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotDevicePanel_t { - QByteArrayData data[3]; - char stringdata0[35]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotDevicePanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotDevicePanel_t qt_meta_stringdata_StarPilotDevicePanel = { - { -QT_MOC_LITERAL(0, 0, 20), // "StarPilotDevicePanel" -QT_MOC_LITERAL(1, 21, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 34, 0) // "" - - }, - "StarPilotDevicePanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotDevicePanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotDevicePanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotDevicePanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotDevicePanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotDevicePanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotDevicePanel.data, - qt_meta_data_StarPilotDevicePanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotDevicePanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotDevicePanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotDevicePanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotDevicePanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotDevicePanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_expandable_multi_option_dialog.cc b/starpilot/ui/qt/offroad/moc_expandable_multi_option_dialog.cc deleted file mode 100644 index 5adae0880..000000000 --- a/starpilot/ui/qt/offroad/moc_expandable_multi_option_dialog.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'expandable_multi_option_dialog.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "expandable_multi_option_dialog.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'expandable_multi_option_dialog.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ExpandableMultiOptionDialog_t { - QByteArrayData data[1]; - char stringdata0[28]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ExpandableMultiOptionDialog_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ExpandableMultiOptionDialog_t qt_meta_stringdata_ExpandableMultiOptionDialog = { - { -QT_MOC_LITERAL(0, 0, 27) // "ExpandableMultiOptionDialog" - - }, - "ExpandableMultiOptionDialog" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ExpandableMultiOptionDialog[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void ExpandableMultiOptionDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ExpandableMultiOptionDialog::staticMetaObject = { { - &DialogBase::staticMetaObject, - qt_meta_stringdata_ExpandableMultiOptionDialog.data, - qt_meta_data_ExpandableMultiOptionDialog, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ExpandableMultiOptionDialog::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ExpandableMultiOptionDialog::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ExpandableMultiOptionDialog.stringdata0)) - return static_cast(this); - return DialogBase::qt_metacast(_clname); -} - -int ExpandableMultiOptionDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = DialogBase::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_lateral_settings.cc b/starpilot/ui/qt/offroad/moc_lateral_settings.cc deleted file mode 100644 index 269b02a23..000000000 --- a/starpilot/ui/qt/offroad/moc_lateral_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'lateral_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "lateral_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'lateral_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotLateralPanel_t { - QByteArrayData data[3]; - char stringdata0[36]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotLateralPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotLateralPanel_t qt_meta_stringdata_StarPilotLateralPanel = { - { -QT_MOC_LITERAL(0, 0, 21), // "StarPilotLateralPanel" -QT_MOC_LITERAL(1, 22, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 35, 0) // "" - - }, - "StarPilotLateralPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotLateralPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotLateralPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotLateralPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotLateralPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotLateralPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotLateralPanel.data, - qt_meta_data_StarPilotLateralPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotLateralPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotLateralPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotLateralPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotLateralPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotLateralPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_longitudinal_settings.cc b/starpilot/ui/qt/offroad/moc_longitudinal_settings.cc deleted file mode 100644 index e7529eb1f..000000000 --- a/starpilot/ui/qt/offroad/moc_longitudinal_settings.cc +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'longitudinal_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "longitudinal_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'longitudinal_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotLongitudinalPanel_t { - QByteArrayData data[5]; - char stringdata0[76]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotLongitudinalPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotLongitudinalPanel_t qt_meta_stringdata_StarPilotLongitudinalPanel = { - { -QT_MOC_LITERAL(0, 0, 26), // "StarPilotLongitudinalPanel" -QT_MOC_LITERAL(1, 27, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 40, 0), // "" -QT_MOC_LITERAL(3, 41, 15), // "openSubSubPanel" -QT_MOC_LITERAL(4, 57, 18) // "openSubSubSubPanel" - - }, - "StarPilotLongitudinalPanel\0openSubPanel\0" - "\0openSubSubPanel\0openSubSubSubPanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotLongitudinalPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 3, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 3, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 29, 2, 0x06 /* Public */, - 3, 0, 30, 2, 0x06 /* Public */, - 4, 0, 31, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void StarPilotLongitudinalPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - case 1: _t->openSubSubPanel(); break; - case 2: _t->openSubSubSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotLongitudinalPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotLongitudinalPanel::openSubPanel)) { - *result = 0; - return; - } - } - { - using _t = void (StarPilotLongitudinalPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotLongitudinalPanel::openSubSubPanel)) { - *result = 1; - return; - } - } - { - using _t = void (StarPilotLongitudinalPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotLongitudinalPanel::openSubSubSubPanel)) { - *result = 2; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotLongitudinalPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotLongitudinalPanel.data, - qt_meta_data_StarPilotLongitudinalPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotLongitudinalPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotLongitudinalPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotLongitudinalPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotLongitudinalPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 3) - qt_static_metacall(this, _c, _id, _a); - _id -= 3; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 3) - *reinterpret_cast(_a[0]) = -1; - _id -= 3; - } - return _id; -} - -// SIGNAL 0 -void StarPilotLongitudinalPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void StarPilotLongitudinalPanel::openSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} - -// SIGNAL 2 -void StarPilotLongitudinalPanel::openSubSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_maps_settings.cc b/starpilot/ui/qt/offroad/moc_maps_settings.cc deleted file mode 100644 index ec40879cb..000000000 --- a/starpilot/ui/qt/offroad/moc_maps_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'maps_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "maps_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'maps_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotMapsPanel_t { - QByteArrayData data[3]; - char stringdata0[33]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotMapsPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotMapsPanel_t qt_meta_stringdata_StarPilotMapsPanel = { - { -QT_MOC_LITERAL(0, 0, 18), // "StarPilotMapsPanel" -QT_MOC_LITERAL(1, 19, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 32, 0) // "" - - }, - "StarPilotMapsPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotMapsPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotMapsPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotMapsPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotMapsPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotMapsPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotMapsPanel.data, - qt_meta_data_StarPilotMapsPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotMapsPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotMapsPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotMapsPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotMapsPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotMapsPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_model_settings.cc b/starpilot/ui/qt/offroad/moc_model_settings.cc deleted file mode 100644 index aa73fde7e..000000000 --- a/starpilot/ui/qt/offroad/moc_model_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'model_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "model_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'model_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotModelPanel_t { - QByteArrayData data[3]; - char stringdata0[34]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotModelPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotModelPanel_t qt_meta_stringdata_StarPilotModelPanel = { - { -QT_MOC_LITERAL(0, 0, 19), // "StarPilotModelPanel" -QT_MOC_LITERAL(1, 20, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 33, 0) // "" - - }, - "StarPilotModelPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotModelPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotModelPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotModelPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotModelPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotModelPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotModelPanel.data, - qt_meta_data_StarPilotModelPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotModelPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotModelPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotModelPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotModelPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotModelPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_navigation_settings.cc b/starpilot/ui/qt/offroad/moc_navigation_settings.cc deleted file mode 100644 index 42d738dd3..000000000 --- a/starpilot/ui/qt/offroad/moc_navigation_settings.cc +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'navigation_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "navigation_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'navigation_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotNavigationPanel_t { - QByteArrayData data[4]; - char stringdata0[53]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotNavigationPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotNavigationPanel_t qt_meta_stringdata_StarPilotNavigationPanel = { - { -QT_MOC_LITERAL(0, 0, 24), // "StarPilotNavigationPanel" -QT_MOC_LITERAL(1, 25, 13), // "closeSubPanel" -QT_MOC_LITERAL(2, 39, 0), // "" -QT_MOC_LITERAL(3, 40, 12) // "openSubPanel" - - }, - "StarPilotNavigationPanel\0closeSubPanel\0" - "\0openSubPanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotNavigationPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 24, 2, 0x06 /* Public */, - 3, 0, 25, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void StarPilotNavigationPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->closeSubPanel(); break; - case 1: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotNavigationPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotNavigationPanel::closeSubPanel)) { - *result = 0; - return; - } - } - { - using _t = void (StarPilotNavigationPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotNavigationPanel::openSubPanel)) { - *result = 1; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotNavigationPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotNavigationPanel.data, - qt_meta_data_StarPilotNavigationPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotNavigationPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotNavigationPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotNavigationPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotNavigationPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void StarPilotNavigationPanel::closeSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void StarPilotNavigationPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_sounds_settings.cc b/starpilot/ui/qt/offroad/moc_sounds_settings.cc deleted file mode 100644 index 0d51e65a0..000000000 --- a/starpilot/ui/qt/offroad/moc_sounds_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'sounds_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "sounds_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'sounds_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotSoundsPanel_t { - QByteArrayData data[3]; - char stringdata0[35]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotSoundsPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotSoundsPanel_t qt_meta_stringdata_StarPilotSoundsPanel = { - { -QT_MOC_LITERAL(0, 0, 20), // "StarPilotSoundsPanel" -QT_MOC_LITERAL(1, 21, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 34, 0) // "" - - }, - "StarPilotSoundsPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotSoundsPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotSoundsPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotSoundsPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSoundsPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotSoundsPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotSoundsPanel.data, - qt_meta_data_StarPilotSoundsPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotSoundsPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotSoundsPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotSoundsPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotSoundsPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotSoundsPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_starpilot_settings.cc b/starpilot/ui/qt/offroad/moc_starpilot_settings.cc deleted file mode 100644 index 2b27a8e5d..000000000 --- a/starpilot/ui/qt/offroad/moc_starpilot_settings.cc +++ /dev/null @@ -1,280 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotSettingsWindow_t { - QByteArrayData data[14]; - char stringdata0[187]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotSettingsWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotSettingsWindow_t qt_meta_stringdata_StarPilotSettingsWindow = { - { -QT_MOC_LITERAL(0, 0, 23), // "StarPilotSettingsWindow" -QT_MOC_LITERAL(1, 24, 13), // "closeSubPanel" -QT_MOC_LITERAL(2, 38, 0), // "" -QT_MOC_LITERAL(3, 39, 16), // "closeSubSubPanel" -QT_MOC_LITERAL(4, 56, 19), // "closeSubSubSubPanel" -QT_MOC_LITERAL(5, 76, 9), // "openPanel" -QT_MOC_LITERAL(6, 86, 12), // "openSubPanel" -QT_MOC_LITERAL(7, 99, 15), // "openSubSubPanel" -QT_MOC_LITERAL(8, 115, 18), // "openSubSubSubPanel" -QT_MOC_LITERAL(9, 134, 18), // "tuningLevelChanged" -QT_MOC_LITERAL(10, 153, 5), // "level" -QT_MOC_LITERAL(11, 159, 12), // "updateMetric" -QT_MOC_LITERAL(12, 172, 6), // "metric" -QT_MOC_LITERAL(13, 179, 7) // "bootRun" - - }, - "StarPilotSettingsWindow\0closeSubPanel\0" - "\0closeSubSubPanel\0closeSubSubSubPanel\0" - "openPanel\0openSubPanel\0openSubSubPanel\0" - "openSubSubSubPanel\0tuningLevelChanged\0" - "level\0updateMetric\0metric\0bootRun" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotSettingsWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 10, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 10, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 64, 2, 0x06 /* Public */, - 3, 0, 65, 2, 0x06 /* Public */, - 4, 0, 66, 2, 0x06 /* Public */, - 5, 0, 67, 2, 0x06 /* Public */, - 6, 0, 68, 2, 0x06 /* Public */, - 7, 0, 69, 2, 0x06 /* Public */, - 8, 0, 70, 2, 0x06 /* Public */, - 9, 1, 71, 2, 0x06 /* Public */, - 11, 2, 74, 2, 0x06 /* Public */, - 11, 1, 79, 2, 0x26 /* Public | MethodCloned */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, - QMetaType::Void, QMetaType::Int, 10, - QMetaType::Void, QMetaType::Bool, QMetaType::Bool, 12, 13, - QMetaType::Void, QMetaType::Bool, 12, - - 0 // eod -}; - -void StarPilotSettingsWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->closeSubPanel(); break; - case 1: _t->closeSubSubPanel(); break; - case 2: _t->closeSubSubSubPanel(); break; - case 3: _t->openPanel(); break; - case 4: _t->openSubPanel(); break; - case 5: _t->openSubSubPanel(); break; - case 6: _t->openSubSubSubPanel(); break; - case 7: _t->tuningLevelChanged((*reinterpret_cast< int(*)>(_a[1]))); break; - case 8: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; - case 9: _t->updateMetric((*reinterpret_cast< bool(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::closeSubPanel)) { - *result = 0; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::closeSubSubPanel)) { - *result = 1; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::closeSubSubSubPanel)) { - *result = 2; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::openPanel)) { - *result = 3; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::openSubPanel)) { - *result = 4; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::openSubSubPanel)) { - *result = 5; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::openSubSubSubPanel)) { - *result = 6; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::tuningLevelChanged)) { - *result = 7; - return; - } - } - { - using _t = void (StarPilotSettingsWindow::*)(bool , bool ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotSettingsWindow::updateMetric)) { - *result = 8; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotSettingsWindow::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_StarPilotSettingsWindow.data, - qt_meta_data_StarPilotSettingsWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotSettingsWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotSettingsWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotSettingsWindow.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int StarPilotSettingsWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 10) - qt_static_metacall(this, _c, _id, _a); - _id -= 10; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 10) - *reinterpret_cast(_a[0]) = -1; - _id -= 10; - } - return _id; -} - -// SIGNAL 0 -void StarPilotSettingsWindow::closeSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void StarPilotSettingsWindow::closeSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} - -// SIGNAL 2 -void StarPilotSettingsWindow::closeSubSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 2, nullptr); -} - -// SIGNAL 3 -void StarPilotSettingsWindow::openPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 3, nullptr); -} - -// SIGNAL 4 -void StarPilotSettingsWindow::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 4, nullptr); -} - -// SIGNAL 5 -void StarPilotSettingsWindow::openSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 5, nullptr); -} - -// SIGNAL 6 -void StarPilotSettingsWindow::openSubSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 6, nullptr); -} - -// SIGNAL 7 -void StarPilotSettingsWindow::tuningLevelChanged(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 7, _a); -} - -// SIGNAL 8 -void StarPilotSettingsWindow::updateMetric(bool _t1, bool _t2) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)), const_cast(reinterpret_cast(&_t2)) }; - QMetaObject::activate(this, &staticMetaObject, 8, _a); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_theme_settings.cc b/starpilot/ui/qt/offroad/moc_theme_settings.cc deleted file mode 100644 index f57592f48..000000000 --- a/starpilot/ui/qt/offroad/moc_theme_settings.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'theme_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "theme_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'theme_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotThemesPanel_t { - QByteArrayData data[3]; - char stringdata0[35]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotThemesPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotThemesPanel_t qt_meta_stringdata_StarPilotThemesPanel = { - { -QT_MOC_LITERAL(0, 0, 20), // "StarPilotThemesPanel" -QT_MOC_LITERAL(1, 21, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 34, 0) // "" - - }, - "StarPilotThemesPanel\0openSubPanel\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotThemesPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotThemesPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotThemesPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotThemesPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotThemesPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotThemesPanel.data, - qt_meta_data_StarPilotThemesPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotThemesPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotThemesPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotThemesPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotThemesPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotThemesPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_utilities.cc b/starpilot/ui/qt/offroad/moc_utilities.cc deleted file mode 100644 index c35509e9a..000000000 --- a/starpilot/ui/qt/offroad/moc_utilities.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'utilities.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "utilities.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'utilities.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotUtilitiesPanel_t { - QByteArrayData data[1]; - char stringdata0[24]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotUtilitiesPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotUtilitiesPanel_t qt_meta_stringdata_StarPilotUtilitiesPanel = { - { -QT_MOC_LITERAL(0, 0, 23) // "StarPilotUtilitiesPanel" - - }, - "StarPilotUtilitiesPanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotUtilitiesPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotUtilitiesPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotUtilitiesPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotUtilitiesPanel.data, - qt_meta_data_StarPilotUtilitiesPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotUtilitiesPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotUtilitiesPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotUtilitiesPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotUtilitiesPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_vehicle_settings.cc b/starpilot/ui/qt/offroad/moc_vehicle_settings.cc deleted file mode 100644 index 496a53f43..000000000 --- a/starpilot/ui/qt/offroad/moc_vehicle_settings.cc +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'vehicle_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "vehicle_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'vehicle_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotVehiclesPanel_t { - QByteArrayData data[3]; - char stringdata0[37]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotVehiclesPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotVehiclesPanel_t qt_meta_stringdata_StarPilotVehiclesPanel = { - { -QT_MOC_LITERAL(0, 0, 22), // "StarPilotVehiclesPanel" -QT_MOC_LITERAL(1, 23, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 36, 0) // "" - - }, - "StarPilotVehiclesPanel\0openSubPanel\0" - "" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotVehiclesPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotVehiclesPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotVehiclesPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotVehiclesPanel::openSubPanel)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotVehiclesPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotVehiclesPanel.data, - qt_meta_data_StarPilotVehiclesPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotVehiclesPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotVehiclesPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotVehiclesPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotVehiclesPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotVehiclesPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_visual_settings.cc b/starpilot/ui/qt/offroad/moc_visual_settings.cc deleted file mode 100644 index b65ed4b10..000000000 --- a/starpilot/ui/qt/offroad/moc_visual_settings.cc +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'visual_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "visual_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'visual_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotVisualsPanel_t { - QByteArrayData data[4]; - char stringdata0[52]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotVisualsPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotVisualsPanel_t qt_meta_stringdata_StarPilotVisualsPanel = { - { -QT_MOC_LITERAL(0, 0, 21), // "StarPilotVisualsPanel" -QT_MOC_LITERAL(1, 22, 12), // "openSubPanel" -QT_MOC_LITERAL(2, 35, 0), // "" -QT_MOC_LITERAL(3, 36, 15) // "openSubSubPanel" - - }, - "StarPilotVisualsPanel\0openSubPanel\0\0" - "openSubSubPanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotVisualsPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 24, 2, 0x06 /* Public */, - 3, 0, 25, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - QMetaType::Void, - - 0 // eod -}; - -void StarPilotVisualsPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->openSubPanel(); break; - case 1: _t->openSubSubPanel(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotVisualsPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotVisualsPanel::openSubPanel)) { - *result = 0; - return; - } - } - { - using _t = void (StarPilotVisualsPanel::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotVisualsPanel::openSubSubPanel)) { - *result = 1; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotVisualsPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotVisualsPanel.data, - qt_meta_data_StarPilotVisualsPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotVisualsPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotVisualsPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotVisualsPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotVisualsPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void StarPilotVisualsPanel::openSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} - -// SIGNAL 1 -void StarPilotVisualsPanel::openSubSubPanel() -{ - QMetaObject::activate(this, &staticMetaObject, 1, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/moc_wheel_settings.cc b/starpilot/ui/qt/offroad/moc_wheel_settings.cc deleted file mode 100644 index 9f76e7b46..000000000 --- a/starpilot/ui/qt/offroad/moc_wheel_settings.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'wheel_settings.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "wheel_settings.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'wheel_settings.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotWheelPanel_t { - QByteArrayData data[1]; - char stringdata0[20]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotWheelPanel_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotWheelPanel_t qt_meta_stringdata_StarPilotWheelPanel = { - { -QT_MOC_LITERAL(0, 0, 19) // "StarPilotWheelPanel" - - }, - "StarPilotWheelPanel" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotWheelPanel[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotWheelPanel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotWheelPanel::staticMetaObject = { { - &StarPilotListWidget::staticMetaObject, - qt_meta_stringdata_StarPilotWheelPanel.data, - qt_meta_data_StarPilotWheelPanel, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotWheelPanel::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotWheelPanel::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotWheelPanel.stringdata0)) - return static_cast(this); - return StarPilotListWidget::qt_metacast(_clname); -} - -int StarPilotWheelPanel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotListWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/offroad/model_settings.cc b/starpilot/ui/qt/offroad/model_settings.cc deleted file mode 100644 index 6839a60d2..000000000 --- a/starpilot/ui/qt/offroad/model_settings.cc +++ /dev/null @@ -1,858 +0,0 @@ -#include "starpilot/ui/qt/offroad/model_settings.h" -#include "starpilot/ui/qt/offroad/expandable_multi_option_dialog.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include "system/hardware/hw.h" - -namespace { - -QString paramDefaultValue(const Params ¶ms, const char *key) { - return QString::fromStdString(const_cast(params).getKeyDefaultValue(key).value_or("")).trimmed(); -} - -QString builtinDefaultModelKey(const Params ¶ms) { - QString key = paramDefaultValue(params, "Model"); - if (key.isEmpty()) { - key = paramDefaultValue(params, "DrivingModel"); - } - return key.isEmpty() ? QStringLiteral("rdf43") : key; -} - -QString builtinDefaultModelName(const Params ¶ms) { - QString name = paramDefaultValue(params, "DrivingModelName"); - return name.isEmpty() ? QStringLiteral("Regret Driven Framework V4") : name; -} - -QStringList builtinDefaultModelAliases(const QString &defaultKey) { - QString canonical = defaultKey.trimmed(); - if (canonical.isEmpty()) { - canonical = QStringLiteral("rdf43"); - } - - QStringList aliases{canonical}; - - if (canonical == QStringLiteral("rdf43")) { - aliases.append(QStringLiteral("rdf")); - } - - if (canonical.endsWith("2")) { - aliases.append(canonical.left(canonical.size() - 1)); - } else { - aliases.append(canonical + "2"); - } - - if (canonical.endsWith("_default")) { - aliases.append(canonical.left(canonical.size() - QStringLiteral("_default").size())); - } - - aliases.removeAll(""); - aliases.removeDuplicates(); - return aliases; -} - -bool isBuiltinDefaultModel(const Params ¶ms, const QString &key) { - return builtinDefaultModelAliases(builtinDefaultModelKey(params)).contains(key.trimmed()); -} - -QString canonicalModelKey(const Params ¶ms, const QString &key) { - const QString trimmedKey = key.trimmed(); - return isBuiltinDefaultModel(params, trimmedKey) ? builtinDefaultModelKey(params) : trimmedKey; -} - -void ensureDefaultModelVisible(const Params ¶ms, const QString &fallbackSeries, - QMap &modelFileToNameMap, - QMap &modelFileToNameMapProcessed, - QMap &modelSeriesMap, - QMap &modelReleasedDates) { - const QString defaultKey = builtinDefaultModelKey(params); - QString displayName = builtinDefaultModelName(params); - QString series = fallbackSeries; - QString releasedDate; - - for (const QString &alias : builtinDefaultModelAliases(defaultKey)) { - if (!modelFileToNameMap.contains(alias)) { - continue; - } - - displayName = modelFileToNameMap.value(alias, displayName); - if (series == fallbackSeries && modelSeriesMap.contains(alias)) { - series = modelSeriesMap.value(alias); - } - if (releasedDate.isEmpty() && modelReleasedDates.contains(alias)) { - releasedDate = modelReleasedDates.value(alias); - } - - if (alias != defaultKey) { - modelFileToNameMap.remove(alias); - modelFileToNameMapProcessed.remove(alias); - modelSeriesMap.remove(alias); - modelReleasedDates.remove(alias); - } - } - - modelFileToNameMap.insert(defaultKey, displayName); - modelFileToNameMapProcessed.insert(defaultKey, cleanModelName(displayName)); - modelSeriesMap.insert(defaultKey, series); - if (!releasedDate.isEmpty()) { - modelReleasedDates.insert(defaultKey, releasedDate); - } -} - -} // namespace - -StarPilotModelPanel::StarPilotModelPanel(StarPilotSettingsWindow *parent) : StarPilotListWidget(parent), - allModelsDownloaded(false), - allModelsDownloading(false), - cancellingDownload(false), - finalizingDownload(false), - forceOpenDescriptions(false), - modelDownloading(false), - noModelsDownloaded(true), - started(false), - tinygradUpdate(false), - updatingTinygrad(false), - tuningLevel(0), - parent(parent) { - if (Hardware::PC()) { - modelDir.setPath(QString::fromStdString(Path::comma_home() + "/starpilot/data/models/")); - } - modelDir.mkpath("."); - - QStackedLayout *modelLayout = new QStackedLayout(); - addItem(modelLayout); - - StarPilotListWidget *modelList = new StarPilotListWidget(this); - - ScrollView *modelPanel = new ScrollView(modelList, this); - - modelLayout->addWidget(modelPanel); - - StarPilotListWidget *modelLabelsList = new StarPilotListWidget(this); - - ScrollView *modelLabelsPanel = new ScrollView(modelLabelsList, this); - - modelLayout->addWidget(modelLabelsPanel); - - const std::vector> modelToggles { - {"AutomaticallyDownloadModels", tr("Automatically Download New Models"), tr("Automatically download new driving models as they become available."), ""}, - {"DeleteModel", tr("Delete Driving Models"), tr("Delete driving models from the device."), ""}, - {"DownloadModel", tr("Download Driving Models"), tr("Download driving models to the device."), ""}, - {"ModelRandomizer", tr("Model Randomizer"), tr("Driving models are chosen at random each drive and feedback prompts are used to find the model that best suits your needs."), ""}, - {"RecoveryPower", tr("Recovery Power"), tr("Adjust the strength of planplus lane recovery corrections (0.5 to 2.0)."), ""}, - {"ManageBlacklistedModels", tr("Manage Model Blacklist"), tr("Add or remove models from the Model Randomizer's blacklist list."), ""}, - {"ManageScores", tr("Manage Model Ratings"), tr("Reset or view the saved ratings for the driving models."), ""}, - {"SelectModel", tr("Select Driving Model"), tr("Select the active driving model."), ""}, - }; - - StarPilotParamValueButtonControl *recoveryPowerToggle = nullptr; - - for (const auto &[param, title, desc, icon] : modelToggles) { - AbstractControl *modelToggle; - - if (param == "DeleteModel") { - deleteModelButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DELETE ALL")}); - QObject::connect(deleteModelButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QMap deletableModelsMap = getDeletableModelDisplayNames(); - noModelsDownloaded = deletableModelsMap.isEmpty(); - - if (noModelsDownloaded) { - return; - } - - if (id == 0) { - // Group deletable models by series and keep a lookup for selected names - QMap deletableSeriesToModels; - QMap displayNameToKey; - QMap deletableFileToNameMap; - for (auto it = deletableModelsMap.constBegin(); it != deletableModelsMap.constEnd(); ++it) { - const QString &modelKey = it.key(); - const QString &displayName = it.value(); - QString series = modelSeriesMap.value(modelKey, tr("Custom Series")); - deletableSeriesToModels[series].append(displayName); - displayNameToKey.insert(displayName, modelKey); - deletableFileToNameMap.insert(modelKey, displayName); - } - - // Sort models within each series - for (QString &series : deletableSeriesToModels.keys()) { - QStringList &models = deletableSeriesToModels[series]; - models.removeDuplicates(); - std::sort(models.begin(), models.end()); - } - - QString savedSortMode = QString::fromStdString(params.get("ModelSortMode")); - if (savedSortMode.isEmpty()) savedSortMode = "alphabetical"; - - QString modelToDelete = ExpandableMultiOptionDialog::getSelection(tr("Select a driving model to delete"), deletableSeriesToModels, "", this, - QStringList(), QStringList(), QMap(), - deletableFileToNameMap, savedSortMode); - if (!modelToDelete.isEmpty()) { - QString modelKey = displayNameToKey.value(modelToDelete); - if (modelKey.isEmpty()) { - QString processedName = cleanModelName(modelToDelete); - for (auto it = deletableModelsMap.constBegin(); it != deletableModelsMap.constEnd(); ++it) { - if (cleanModelName(it.value()) == processedName) { - modelKey = it.key(); - break; - } - } - } - - if (!modelKey.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete the \"%1\" model?").arg(modelToDelete), tr("Delete"), this)) { - for (const QString &file : modelDir.entryList(QDir::Files)) { - QString base = QFileInfo(file).baseName(); - if (base.startsWith(modelKey)) { - QFile::remove(modelDir.filePath(file)); - } - } - - allModelsDownloaded = false; - noModelsDownloaded = getDeletableModelDisplayNames().isEmpty(); - deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); - } - } - } else if (id == 1) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to delete all of your downloaded driving models?"), tr("Delete"), this)) { - const QList deletableKeys = deletableModelsMap.keys(); - for (const QString &file : modelDir.entryList(QDir::Files)) { - QString base = QFileInfo(file).baseName(); - for (const QString &modelKey : deletableKeys) { - if (base.startsWith(modelKey)) { - QFile::remove(modelDir.filePath(file)); - break; - } - } - } - - allModelsDownloaded = false; - noModelsDownloaded = true; - deleteModelButton->setEnabled(false); - } - } - }); - modelToggle = deleteModelButton; - } else if (param == "DownloadModel") { - downloadModelButton = new StarPilotButtonsControl(title, desc, icon, {tr("DOWNLOAD"), tr("DOWNLOAD ALL")}); - QObject::connect(downloadModelButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - if (id == 0) { - if (modelDownloading) { - params_memory.putBool("CancelModelDownload", true); - - cancellingDownload = true; - } else { - QMap downloadableSeriesToModels; - QStringList downloadableModelNames; - - for (auto it = modelFileToNameMap.constBegin(); it != modelFileToNameMap.constEnd(); ++it) { - const QString &modelKey = it.key(); - const QString &modelName = it.value(); - if (modelName.isEmpty() || isModelInstalled(modelKey)) { - continue; - } - - QString series = modelSeriesMap.value(modelKey, tr("Custom Series")); - downloadableSeriesToModels[series].append(modelName); - if (!downloadableModelNames.contains(modelName)) { - downloadableModelNames.append(modelName); - } - } - - allModelsDownloaded = downloadableModelNames.isEmpty(); - if (allModelsDownloaded) { - return; - } - - for (QString &series : downloadableSeriesToModels.keys()) { - QStringList &models = downloadableSeriesToModels[series]; - models.removeDuplicates(); - std::sort(models.begin(), models.end()); - } - - QStringList userFavorites = QString::fromStdString(params.get("UserFavorites")).split(","); - userFavorites.removeAll(""); - - QStringList communityFavorites = QString::fromStdString(params.get("CommunityFavorites")).split(","); - communityFavorites.removeAll(""); - - QString savedSortMode = QString::fromStdString(params.get("ModelSortMode")); - if (savedSortMode.isEmpty()) savedSortMode = "alphabetical"; - - ExpandableMultiOptionDialog dialog( - tr("Select a driving model to download"), - downloadableSeriesToModels, - "", - this, - userFavorites, - communityFavorites, - modelReleasedDates, - modelFileToNameMap, - savedSortMode); - - int dialogResult = dialog.exec(); - - QString sortMode = dialog.getCurrentSortMode(); - QStringList newUserFavs = dialog.getUserFavorites(); - params.put("ModelSortMode", sortMode.toStdString()); - params.put("UserFavorites", newUserFavs.join(",").toStdString()); - userFavorites = newUserFavs; - - if (dialogResult == QDialog::Accepted) { - QString modelToDownload = dialog.selection; - if (!modelToDownload.isEmpty()) { - QString modelKey = modelFileToNameMap.key(modelToDownload); - params_memory.put("ModelToDownload", modelKey.toStdString()); - // Also persist the version for this downloaded model if known - { - QFile vf(modelDir.filePath(".model_versions.json")); - if (vf.open(QIODevice::ReadOnly)) { - auto doc = QJsonDocument::fromJson(vf.readAll()); - if (doc.isObject()) { - auto obj = doc.object(); - if (obj.contains(modelKey)) { - const std::string version = obj.value(modelKey).toString().toStdString(); - params.put("ModelVersion", version); - params.put("DrivingModelVersion", version); - } - } - } - } - params_memory.put("ModelDownloadProgress", "Downloading..."); - - downloadModelButton->setText(0, tr("CANCEL")); - - downloadModelButton->setValue("Downloading..."); - - downloadModelButton->setVisibleButton(1, false); - - modelDownloading = true; - } - } - } - } else if (id == 1) { - if (allModelsDownloading) { - params_memory.putBool("CancelModelDownload", true); - - cancellingDownload = true; - } else { - params_memory.putBool("DownloadAllModels", true); - params_memory.put("ModelDownloadProgress", "Downloading..."); - - downloadModelButton->setText(1, tr("CANCEL")); - - downloadModelButton->setValue("Downloading..."); - - downloadModelButton->setVisibleButton(0, false); - - allModelsDownloading = true; - } - } - }); - modelToggle = downloadModelButton; - } else if (param == "ManageBlacklistedModels") { - StarPilotButtonsControl *blacklistBtn = new StarPilotButtonsControl(title, desc, icon, {tr("ADD"), tr("REMOVE"), tr("REMOVE ALL")}); - QObject::connect(blacklistBtn, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList blacklistedModels = QString::fromStdString(params.get("BlacklistedModels")).split(","); - blacklistedModels.removeAll(""); - - if (id == 0) { - QStringList blacklistableModels; - for (const QString &model : modelFileToNameMapProcessed.keys()) { - if (!blacklistedModels.contains(model)) { - blacklistableModels.append(modelFileToNameMapProcessed.value(model)); - } - } - - if (blacklistableModels.size() <= 1) { - ConfirmationDialog::alert(tr("There are no more models to blacklist! The only available model is \"%1\"!").arg(blacklistableModels.first()), this); - } else { - // Group blacklistable models by series - QMap blacklistableSeriesToModels; - for (const QString &modelName : blacklistableModels) { - QString modelKey = modelFileToNameMapProcessed.key(modelName); - QString series = modelSeriesMap.value(modelKey, "Custom Series"); - blacklistableSeriesToModels[series].append(modelName); - } - - // Sort models within each series - for (QString &series : blacklistableSeriesToModels.keys()) { - blacklistableSeriesToModels[series].sort(); - } - - QString modelToBlacklist = ExpandableMultiOptionDialog::getSelection(tr("Select a model to add to the blacklist"), blacklistableSeriesToModels, "", this); - if (!modelToBlacklist.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to add the \"%1\" model to the blacklist?").arg(modelToBlacklist), tr("Add"), this)) { - blacklistedModels.append(modelFileToNameMapProcessed.key(modelToBlacklist)); - - params.put("BlacklistedModels", blacklistedModels.join(",").toStdString()); - } - } - } - } else if (id == 1) { - QStringList whitelistableModels; - for (const QString &model : blacklistedModels) { - QString modelName = modelFileToNameMapProcessed.value(model); - whitelistableModels.append(modelName); - } - - // Group whitelistable models by series - QMap whitelistableSeriesToModels; - for (const QString &modelName : whitelistableModels) { - QString modelKey = modelFileToNameMapProcessed.key(modelName); - QString series = modelSeriesMap.value(modelKey, "Custom Series"); - whitelistableSeriesToModels[series].append(modelName); - } - - // Sort models within each series - for (QString &series : whitelistableSeriesToModels.keys()) { - whitelistableSeriesToModels[series].sort(); - } - - QString modelToWhitelist = ExpandableMultiOptionDialog::getSelection(tr("Select a model to remove from the blacklist"), whitelistableSeriesToModels, "", this); - if (!modelToWhitelist.isEmpty()) { - if (ConfirmationDialog::confirm(tr("Are you sure you want to remove the \"%1\" model from the blacklist?").arg(modelToWhitelist), tr("Remove"), this)) { - blacklistedModels.removeAll(modelFileToNameMapProcessed.key(modelToWhitelist)); - - params.put("BlacklistedModels", blacklistedModels.join(",").toStdString()); - } - } - } else if (id == 2) { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to remove all of your blacklisted models?"), this)) { - params.remove("BlacklistedModels"); - } - } - }); - modelToggle = blacklistBtn; - } else if (param == "ManageScores") { - StarPilotButtonsControl *manageScoresBtn = new StarPilotButtonsControl(title, desc, icon, {tr("RESET"), tr("VIEW")}); - QObject::connect(manageScoresBtn, &StarPilotButtonsControl::buttonClicked, [this, modelLayout, modelLabelsList, modelLabelsPanel](int id) { - if (id == 0) { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to reset all of your model drives and scores?"), this)) { - params.remove("ModelDrivesAndScores"); - } - } else if (id == 1) { - openSubPanel(); - - updateModelLabels(modelLabelsList); - - modelLayout->setCurrentWidget(modelLabelsPanel); - } - }); - modelToggle = manageScoresBtn; - } else if (param == "SelectModel") { - selectModelButton = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(selectModelButton, &ButtonControl::clicked, [this]() { - // Group models by series for the enhanced dialog - QMap seriesToModels; - QMap installedModelFileToNameMap; - QMap installedReleasedDates; - - // Add all available models by series - for (const QString &modelKey : modelFileToNameMap.keys()) { - if (!isModelInstalled(modelKey)) { - continue; - } - - QString modelName = modelFileToNameMap.value(modelKey); - installedModelFileToNameMap.insert(modelKey, modelName); - if (modelReleasedDates.contains(modelKey)) { - installedReleasedDates.insert(modelKey, modelReleasedDates.value(modelKey)); - } - - QString series = modelSeriesMap.value(modelKey, "Custom Series"); - seriesToModels[series].append(modelName); - } - - // Sort models alphabetically within each series - for (QString &series : seriesToModels.keys()) { - seriesToModels[series].sort(); - } - - // Add default model to the beginning of its series - const QString defaultKey = builtinDefaultModelKey(params); - const QString defaultName = modelFileToNameMap.value(defaultKey, builtinDefaultModelName(params)); - const QString defaultSeries = modelSeriesMap.value(defaultKey, tr("Custom Series")); - if (seriesToModels.contains(defaultSeries) && seriesToModels[defaultSeries].contains(defaultName)) { - seriesToModels[defaultSeries].removeAll(defaultName); - seriesToModels[defaultSeries].prepend(defaultName); - } - - // Prepare favorites and dates for the enhanced dialog - QStringList userFavs = QString::fromStdString(params.get("UserFavorites")).split(","); - userFavs.removeAll(""); - - QStringList communityFavs = QString::fromStdString(params.get("CommunityFavorites")).split(","); - communityFavs.removeAll(""); - - // Create dialog instance to access sort mode and favorites after selection - QString savedSortMode = QString::fromStdString(params.get("ModelSortMode")); - if (savedSortMode.isEmpty()) savedSortMode = "alphabetical"; - - ExpandableMultiOptionDialog dialog(tr("Select a model - ðŸ—ºï¸ = Navigation | 📡 = Radar | 👀 = VOACC"), - seriesToModels, currentModel, this, - userFavs, communityFavs, installedReleasedDates, installedModelFileToNameMap, savedSortMode); - - int dialogResult = dialog.exec(); - - // Persist sort mode and user favorites even if no selection was made - QString sortMode = dialog.getCurrentSortMode(); - QStringList newUserFavs = dialog.getUserFavorites(); - params.put("ModelSortMode", sortMode.toStdString()); - params.put("UserFavorites", newUserFavs.join(",").toStdString()); - - if (dialogResult == QDialog::Accepted) { - QString modelToSelect = dialog.selection; - if (!modelToSelect.isEmpty()) { - currentModel = modelToSelect; - - QString modelKey = modelFileToNameMap.key(modelToSelect); - params.put("Model", modelKey.toStdString()); - params.put("DrivingModel", modelKey.toStdString()); - params.put("DrivingModelName", modelToSelect.toStdString()); - // Sync ModelVersion with the selected model if known - { - QFile vf(modelDir.filePath(".model_versions.json")); - if (vf.open(QIODevice::ReadOnly)) { - auto doc = QJsonDocument::fromJson(vf.readAll()); - if (doc.isObject()) { - auto obj = doc.object(); - if (obj.contains(modelKey)) { - const std::string version = obj.value(modelKey).toString().toStdString(); - params.put("ModelVersion", version); - params.put("DrivingModelVersion", version); - } - } - } - } - - updateStarPilotToggles(); - - if (started) { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - } - selectModelButton->setValue(modelToSelect); - - noModelsDownloaded = getDeletableModelDisplayNames().isEmpty(); - deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); - } - } - }); - modelToggle = selectModelButton; - - } else if (param == "RecoveryPower") { - std::vector recoveryPowerButton{"Reset"}; - modelToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0.5, 2.0, QString(), std::map(), 0.1, false, {}, recoveryPowerButton, false, false); - recoveryPowerToggle = static_cast(modelToggle); - } else { - modelToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = modelToggle; - - modelList->addItem(modelToggle); - - QObject::connect(modelToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - QObject::connect(static_cast(toggles["ModelRandomizer"]), &ToggleControl::toggleFlipped, [this](bool state) { - updateToggles(); - - if (state && !allModelsDownloaded) { - if (StarPilotConfirmationDialog::yesorno(tr("The \"Model Randomizer\" only works with downloaded models. Do you want to download all the driving models?"), this)) { - params_memory.putBool("DownloadAllModels", true); - params_memory.put("ModelDownloadProgress", "Downloading..."); - - downloadModelButton->setValue("Downloading..."); - - allModelsDownloading = true; - } - } - }); - - if (recoveryPowerToggle) { - QObject::connect(recoveryPowerToggle, &StarPilotParamValueButtonControl::buttonClicked, [this, recoveryPowerToggle]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset your Recovery Power to the default of 1.0?"), tr("Reset"), this)) { - params.putFloat("RecoveryPower", 1.0); - recoveryPowerToggle->refresh(); - updateStarPilotToggles(); - } - }); - } - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [modelLayout, modelPanel] {modelLayout->setCurrentWidget(modelPanel);}); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotModelPanel::updateState); -} - -bool StarPilotModelPanel::isModelInstalled(const QString &key) const { - if (key.isEmpty()) { - return false; - } - - if (isBuiltinDefaultModel(params, key)) { - return true; - } - - bool has_combined_tg = false; - - for (const QString &file : modelDir.entryList(QDir::Files)) { - QFileInfo fi(modelDir.filePath(file)); - const QString base = fi.baseName(); - const QString ext = fi.suffix(); - - if (!(base.startsWith(key) || base.startsWith(key + "_"))) continue; - if (ext == "pkl" && base == key + "_driving_tinygrad") { - has_combined_tg = true; - } - } - - return has_combined_tg; -} - -QMap StarPilotModelPanel::getDeletableModelDisplayNames() { - QMap deletable; - - const QString defaultKey = builtinDefaultModelKey(params); - const QString defaultName = modelFileToNameMap.value(defaultKey, builtinDefaultModelName(params)); - const QString processedDefault = cleanModelName(defaultName); - QString processedCurrent = cleanModelName(currentModel); - - for (auto it = modelFileToNameMap.constBegin(); it != modelFileToNameMap.constEnd(); ++it) { - const QString &modelKey = it.key(); - const QString &displayName = it.value(); - if (displayName.isEmpty()) { - continue; - } - - if (!isModelInstalled(modelKey)) { - continue; - } - - QString processedName = cleanModelName(displayName); - if (!processedCurrent.isEmpty() && processedName == processedCurrent) { - continue; - } - - if (!processedDefault.isEmpty() && processedName == processedDefault) { - continue; - } - - deletable.insert(modelKey, displayName); - } - - return deletable; -} - -void StarPilotModelPanel::showEvent(QShowEvent *event) { - StarPilotUIState &fs = *starpilotUIState(); - UIState &s = *uiState(); - - starpilotToggleLevels = parent->starpilotToggleLevels; - tuningLevel = parent->tuningLevel; - - allModelsDownloading = params_memory.getBool("DownloadAllModels"); - modelDownloading = !params_memory.get("ModelToDownload").empty(); - - QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(","); - availableModelNames = QString::fromStdString(params.get("AvailableModelNames")).split(","); - availableModelSeries = QString::fromStdString(params.get("AvailableModelSeries")).split(","); - QStringList releasedDatesParam = QString::fromStdString(params.get("ModelReleasedDates")).split(","); - QStringList communityFavsParam = QString::fromStdString(params.get("CommunityFavorites")).split(","); - QStringList userFavsParam = QString::fromStdString(params.get("UserFavorites")).split(","); - - // Build a simple model->version map for quick lookups elsewhere - { - QStringList versionList = QString::fromStdString(params.get("ModelVersions")).split(","); - QJsonObject versionObj; - int verCount = qMin(availableModels.size(), versionList.size()); - for (int i = 0; i < verCount; ++i) { - const QString modelKey = canonicalModelKey(params, availableModels[i]); - if (!modelKey.isEmpty()) { - versionObj.insert(modelKey, versionList[i]); - } - } - QFile out(modelDir.filePath(".model_versions.json")); - if (out.open(QIODevice::WriteOnly)) { - out.write(QJsonDocument(versionObj).toJson()); - out.close(); - } - } - - modelFileToNameMap.clear(); - modelFileToNameMapProcessed.clear(); - modelSeriesMap.clear(); - modelReleasedDates.clear(); - int size = qMin(availableModels.size(), availableModelNames.size()); - for (int i = 0; i < size; ++i) { - const QString modelKey = canonicalModelKey(params, availableModels[i]); - const QString modelName = availableModelNames[i].trimmed(); - if (modelKey.isEmpty() || modelName.isEmpty()) { - continue; - } - - QString series; - if (i < availableModelSeries.size()) { - series = availableModelSeries[i].trimmed(); - } - if (series.isEmpty()) { - series = tr("Custom Series"); - } - - modelFileToNameMap.insert(modelKey, modelName); - modelFileToNameMapProcessed.insert(modelKey, cleanModelName(modelName)); - modelSeriesMap.insert(modelKey, series); - - if (i < releasedDatesParam.size()) { - const QString released = releasedDatesParam[i].trimmed(); - if (!released.isEmpty()) { - this->modelReleasedDates.insert(modelKey, released); - } - } - } - - ensureDefaultModelVisible(params, tr("Custom Series"), modelFileToNameMap, modelFileToNameMapProcessed, modelSeriesMap, modelReleasedDates); - - allModelsDownloaded = true; - for (auto it = modelFileToNameMap.constBegin(); it != modelFileToNameMap.constEnd(); ++it) { - if (it.value().isEmpty()) { - continue; - } - if (!isModelInstalled(it.key())) { - allModelsDownloaded = false; - break; - } - } - - QString modelKey = canonicalModelKey(params, QString::fromStdString(params.get("Model"))); - if (modelKey.isEmpty()) { - modelKey = canonicalModelKey(params, QString::fromStdString(params.get("DrivingModel"))); - } - if (!isModelInstalled(modelKey)) { - modelKey = builtinDefaultModelKey(params); - } - currentModel = modelFileToNameMap.value(modelKey, builtinDefaultModelName(params)); - selectModelButton->setValue(currentModel); - - noModelsDownloaded = getDeletableModelDisplayNames().isEmpty(); - - bool parked = !s.scene.started || fs.starpilot_scene.parked || parent->isFrogsGoMoo; - - deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); - - downloadModelButton->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && fs.starpilot_scene.online && parked); - downloadModelButton->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && fs.starpilot_scene.online && parked); - - downloadModelButton->setValue(fs.starpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); - - started = s.scene.started; - - updateToggles(); -} - -void StarPilotModelPanel::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible() || finalizingDownload) { - return; - } - - bool parked = !started || fs.starpilot_scene.parked || parent->isFrogsGoMoo; - - if (allModelsDownloading || modelDownloading) { - QString progress = QString::fromStdString(params_memory.get("ModelDownloadProgress")); - bool downloadFailed = progress.contains(QRegularExpression("cancelled|exists|failed|offline", QRegularExpression::CaseInsensitiveOption)); - - if (progress != "Downloading...") { - downloadModelButton->setValue(progress); - } - - if (progress == "All models downloaded!" && allModelsDownloading || progress == "Downloaded!" && modelDownloading || downloadFailed) { - finalizingDownload = true; - - QTimer::singleShot(2500, [this, progress]() { - allModelsDownloaded = progress == "All models downloaded!"; - allModelsDownloading = false; - cancellingDownload = false; - finalizingDownload = false; - modelDownloading = false; - noModelsDownloaded = false; - - params_memory.remove("CancelModelDownload"); - params_memory.remove("DownloadAllModels"); - params_memory.remove("ModelDownloadProgress"); - params_memory.remove("ModelToDownload"); - - downloadModelButton->setEnabled(true); - downloadModelButton->setValue(""); - }); - } - } else { - downloadModelButton->setValue(fs.starpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); - } - - deleteModelButton->setEnabled(!(allModelsDownloading || modelDownloading || noModelsDownloaded)); - - downloadModelButton->setText(0, modelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - downloadModelButton->setText(1, allModelsDownloading ? tr("CANCEL") : tr("DOWNLOAD ALL")); - - downloadModelButton->setEnabledButtons(0, !allModelsDownloaded && !allModelsDownloading && !cancellingDownload && fs.starpilot_scene.online && parked); - downloadModelButton->setEnabledButtons(1, !allModelsDownloaded && !modelDownloading && !cancellingDownload && fs.starpilot_scene.online && parked); - - downloadModelButton->setVisibleButton(0, !allModelsDownloading); - downloadModelButton->setVisibleButton(1, !modelDownloading); - - started = s.scene.started; - - parent->keepScreenOn = allModelsDownloading || modelDownloading; -} - -void StarPilotModelPanel::updateModelLabels(StarPilotListWidget *labelsList) { - labelsList->clear(); - - QJsonObject modelDrivesAndScores = QJsonDocument::fromJson(QString::fromStdString(params.get("ModelDrivesAndScores")).toUtf8()).object(); - - for (const QString &modelName : availableModelNames) { - QJsonObject modelData = modelDrivesAndScores.value(cleanModelName(modelName)).toObject(); - - int drives = modelData.value("Drives").toInt(0); - int score = modelData.value("Score").toInt(0); - - QString drivesDisplay = drives == 1 ? QString("%1 Drive").arg(drives) : drives > 0 ? QString("%1 Drives").arg(drives) : "N/A"; - QString scoreDisplay = drives > 0 ? QString("Score: %1%").arg(score) : "N/A"; - - QString labelTitle = cleanModelName(modelName); - QString labelText = QString("%1 (%2)").arg(scoreDisplay, drivesDisplay); - - LabelControl *labelControl = new LabelControl(labelTitle, labelText, "", this); - labelsList->addItem(labelControl); - } -} - -void StarPilotModelPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - bool setVisible = showAllToggles || tuningLevel >= starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "ManageBlacklistedModels" || key == "ManageScores") { - setVisible &= params.getBool("ModelRandomizer"); - } else if (key == "SelectModel") { - setVisible &= !params.getBool("ModelRandomizer"); - } else if (key == "RecoveryPower") { - setVisible &= (tuningLevel == 3); // Only visible in developer tuning level - } - } - - toggle->setVisible(setVisible); - } - - update(); -} diff --git a/starpilot/ui/qt/offroad/model_settings.h b/starpilot/ui/qt/offroad/model_settings.h deleted file mode 100644 index 7526cd543..000000000 --- a/starpilot/ui/qt/offroad/model_settings.h +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotModelPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotModelPanel(StarPilotSettingsWindow *parent); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateModelLabels(StarPilotListWidget *labelsList); - void updateState(const UIState &s, const StarPilotUIState &fs); - void updateToggles(); - bool isModelInstalled(const QString &key) const; - QMap getDeletableModelDisplayNames(); - - bool allModelsDownloaded; - bool allModelsDownloading; - bool cancellingDownload; - bool finalizingDownload; - bool forceOpenDescriptions; - bool modelDownloading; - bool noModelsDownloaded; - bool started; - bool tinygradUpdate; - bool updatingTinygrad; - - int tuningLevel; - - std::map toggles; - - ButtonControl *selectModelButton; - - StarPilotButtonsControl *deleteModelButton; - StarPilotButtonsControl *downloadModelButton; - StarPilotButtonsControl *updateTinygradButton; - - StarPilotSettingsWindow *parent; - - Params params; - Params params_memory{"", true}; - - QDir modelDir{"/data/models/"}; - - QJsonObject starpilotToggleLevels; - - QMap modelFileToNameMap; - QMap modelFileToNameMapProcessed; - QMap modelReleasedDates; - QMap modelSeriesMap; - - QString currentModel; - - - QStringList availableModelNames; - QStringList availableModelSeries; -}; diff --git a/starpilot/ui/qt/offroad/navigation_settings.cc b/starpilot/ui/qt/offroad/navigation_settings.cc deleted file mode 100644 index c323cd6f8..000000000 --- a/starpilot/ui/qt/offroad/navigation_settings.cc +++ /dev/null @@ -1,330 +0,0 @@ -#include "starpilot/ui/qt/offroad/navigation_settings.h" - -StarPilotNavigationPanel::StarPilotNavigationPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - networkManager = new QNetworkAccessManager(this); - - primelessLayout = new QStackedLayout(); - addItem(primelessLayout); - - StarPilotListWidget *settingsList = new StarPilotListWidget(this); - ipLabel = new LabelControl(tr("Manage Your Settings At"), tr("Offline...")); - settingsList->addItem(ipLabel); - - publicMapboxKeyControl = new StarPilotButtonsControl(tr("Public Mapbox Key"), tr("Manage your Public Mapbox Key."), "", {tr("ADD"), tr("TEST")}); - QObject::connect(publicMapboxKeyControl, &StarPilotButtonsControl::buttonClicked, [this](int id) { - if (id == 0) { - if (mapboxPublicKeySet) { - if (StarPilotConfirmationDialog::yesorno(tr("Remove your Public Mapbox Key?"), this)) { - params.remove("MapboxPublicKey"); - - updateButtons(); - } - } else { - int minKeyLength = 80; - QString key = InputDialog::getText(tr("Enter your Public Mapbox Key"), this, "", false, minKeyLength).trimmed(); - if (!key.isEmpty()) { - if (!key.startsWith("pk.")) { - key = "pk." + key; - } - params.put("MapboxPublicKey", key.toStdString()); - updateButtons(); - } - } - } else { - publicMapboxKeyControl->setValue(tr("Testing...")); - - QString key = QString::fromStdString(params.get("MapboxPublicKey")); - QString url = QString("https://api.mapbox.com/geocoding/v5/mapbox.places/mapbox.json?access_token=%1").arg(key); - - QNetworkRequest request(url); - QNetworkReply *reply = networkManager->get(request); - connect(reply, &QNetworkReply::finished, [=]() { - publicMapboxKeyControl->setValue(""); - - QString message; - if (reply->error() == QNetworkReply::NoError) { - message = tr("Key is valid!"); - } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 401) { - message = tr("Key is invalid!"); - } else { - message = tr("An error occurred: %1").arg(reply->errorString()); - } - ConfirmationDialog::alert(message, this); - reply->deleteLater(); - }); - } - }); - settingsList->addItem(publicMapboxKeyControl); - - secretMapboxKeyControl = new StarPilotButtonsControl(tr("Secret Mapbox Key"), tr("Manage your Secret Mapbox Key."), "", {tr("ADD"), tr("TEST")}); - QObject::connect(secretMapboxKeyControl, &StarPilotButtonsControl::buttonClicked, [this](int id) { - if (id == 0) { - if (mapboxSecretKeySet) { - if (StarPilotConfirmationDialog::yesorno(tr("Remove your Secret Mapbox Key?"), this)) { - params.remove("MapboxSecretKey"); - - updateButtons(); - } - } else { - int minKeyLength = 80; - QString key = InputDialog::getText(tr("Enter your Secret Mapbox Key"), this, "", false, minKeyLength).trimmed(); - if (!key.isEmpty()) { - if (!key.startsWith("sk.")) { - key = "sk." + key; - } - params.put("MapboxSecretKey", key.toStdString()); - updateButtons(); - } - } - } else { - secretMapboxKeyControl->setValue(tr("Testing...")); - - QString key = QString::fromStdString(params.get("MapboxSecretKey")); - QString url = QString("https://api.mapbox.com/directions/v5/mapbox/driving/-73.989,40.733;-74,40.733?access_token=%1").arg(key); - - QNetworkRequest request(url); - QNetworkReply *reply = networkManager->get(request); - connect(reply, &QNetworkReply::finished, [=]() { - secretMapboxKeyControl->setValue(""); - - QString message; - if (reply->error() == QNetworkReply::NoError) { - message = tr("Key is valid!"); - } else if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 401) { - message = tr("Key is invalid!"); - } else { - message = tr("An error occurred: %1").arg(reply->errorString()); - } - ConfirmationDialog::alert(message, this); - reply->deleteLater(); - }); - } - }); - settingsList->addItem(secretMapboxKeyControl); - - setupButton = new ButtonControl(tr("Mapbox Setup Instructions"), tr("VIEW"), tr("Instructions on how to set up Mapbox for \"Primeless Navigation\"."), this); - QObject::connect(setupButton, &ButtonControl::clicked, [this]() { - openSubPanel(); - - updateStep(); - - primelessLayout->setCurrentIndex(1); - }); - settingsList->addItem(setupButton); - - std::vector filterButtonNames{tr("CANCEL"), tr("Manually Update Speed Limits")}; - updateSpeedLimitsToggle = new StarPilotButtonControl("SpeedLimitFiller", tr("Speed Limit Filler"), - tr("Automatically collect missing or incorrect speed limits while you drive using speeds limits sourced from your dashboard (if supported), " - "Mapbox, and \"Navigate on openpilot\".

    " - "When you're parked and connected to Wi-Fi, StarPilot will automatically process this data into a file " - "to be used with the \"Speed Limit Filler\" tool in \"The Galaxy\".

    " - "You can download this file from \"The Galaxy\" in the \"Download Speed Limits\" menu.

    " - "Need a step-by-step guide? Visit #speed-limit-filler in the StarPilot Discord!"), - "", filterButtonNames); - QObject::connect(updateSpeedLimitsToggle, &StarPilotButtonControl::buttonClicked, [this](int id) { - if (id == 0) { - if (StarPilotConfirmationDialog::yesorno(tr("Cancel the speed-limit update?"), this)) { - updatingLimits = false; - - updateSpeedLimitsToggle->setEnabledButton(0, false); - updateSpeedLimitsToggle->setValue(tr("Cancelled...")); - - params_memory.remove("UpdateSpeedLimits"); - - QTimer::singleShot(2500, [this]() { - updateSpeedLimitsToggle->clearCheckedButtons(); - updateSpeedLimitsToggle->setEnabledButton(0, true); - updateSpeedLimitsToggle->setValue(""); - updateSpeedLimitsToggle->setVisibleButton(0, false); - updateSpeedLimitsToggle->setVisibleButton(1, true); - - params_memory.remove("UpdateSpeedLimitsStatus"); - }); - } - } else if (id == 1) { - QJsonObject overpassRequests = QJsonDocument::fromJson(QString::fromStdString(params.get("OverpassRequests")).toUtf8()).object(); - - int totalRequests = overpassRequests.value("total_requests").toInt(0); - int maxRequests = overpassRequests.value("max_requests").toInt(10000); - int savedDay = overpassRequests.value("day").toInt(QDate::currentDate().day()); - - int currentDay = QDate::currentDate().day(); - - if (savedDay != currentDay) { - totalRequests = 0; - } - - if (totalRequests >= maxRequests) { - QTime now = QTime::currentTime(); - - int secondsUntilMidnight = (24 * 3600) - (now.hour() * 3600 + now.minute() * 60 + now.second()); - int hours = secondsUntilMidnight / 3600; - int minutes = (secondsUntilMidnight % 3600) / 60; - - ConfirmationDialog::alert(QString(tr("You've hit today's request limit.\n\nIt will reset in %1 hours and %2 minutes.")).arg(hours).arg(minutes), this); - - updateSpeedLimitsToggle->clearCheckedButtons(); - return; - } - - updateSpeedLimitsToggle->setVisibleButton(0, true); - updateSpeedLimitsToggle->setVisibleButton(1, false); - - if (StarPilotConfirmationDialog::yesorno(tr("This process takes a while. It's recommended to start when you're done driving and connected to stable Wi-Fi. Continue?"), this)) { - updatingLimits = true; - - updateSpeedLimitsToggle->setValue("Calculating..."); - - params_memory.put("UpdateSpeedLimitsStatus", "Calculating..."); - params_memory.putBool("UpdateSpeedLimits", true); - } else { - updateSpeedLimitsToggle->setVisibleButton(0, false); - updateSpeedLimitsToggle->setVisibleButton(1, true); - - updateSpeedLimitsToggle->clearCheckedButtons(); - } - } - }); - updateSpeedLimitsToggle->setVisibleButton(0, false); - settingsList->addItem(updateSpeedLimitsToggle); - - ScrollView *settingsPanel = new ScrollView(settingsList, this); - primelessLayout->addWidget(settingsPanel); - - imageLabel = new QLabel(this); - - ScrollView *instructionsPanel = new ScrollView(imageLabel, this); - primelessLayout->addWidget(instructionsPanel); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [this]() { - primelessLayout->setCurrentIndex(0); - - if (forceOpenDescriptions) { - publicMapboxKeyControl->showDescription(); - secretMapboxKeyControl->showDescription(); - setupButton->showDescription(); - updateSpeedLimitsToggle->showDescription(); - } - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotNavigationPanel::updateState); -} - -void StarPilotNavigationPanel::showEvent(QShowEvent *event) { - if (forceOpenDescriptions) { - publicMapboxKeyControl->showDescription(); - secretMapboxKeyControl->showDescription(); - setupButton->showDescription(); - updateSpeedLimitsToggle->showDescription(); - } - - UIState &s = *uiState(); - - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - QString ipAddress = fs.wifi->getIp4Address(); - ipLabel->setText(ipAddress.isEmpty() ? tr("Offline...") : QString("%1:8082").arg(ipAddress)); - - updateButtons(); - - updatingLimits = !params_memory.get("UpdateSpeedLimitsStatus").empty() && QString::fromStdString(params_memory.get("UpdateSpeedLimitsStatus")) != "Completed!"; - - bool parked = !s.scene.started || starpilot_scene.parked || parent->isFrogsGoMoo; - - updateSpeedLimitsToggle->setVisibleButton(0, updatingLimits); - updateSpeedLimitsToggle->setVisibleButton(1, !updatingLimits); - - if (updatingLimits) { - updateSpeedLimitsToggle->setValue(QString::fromStdString(params_memory.get("UpdateSpeedLimitsStatus"))); - } else { - updateSpeedLimitsToggle->setEnabledButton(1, starpilot_scene.online && util::system_time_valid() && parked); - updateSpeedLimitsToggle->setValue(starpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); - updateSpeedLimitsToggle->setVisible(parent->showAllTogglesEnabled() || parent->tuningLevel >= parent->starpilotToggleLevels["SpeedLimitFiller"].toDouble()); - } -} - -void StarPilotNavigationPanel::hideEvent(QHideEvent *event) { - primelessLayout->setCurrentIndex(0); -} - -void StarPilotNavigationPanel::mousePressEvent(QMouseEvent *event) { - if (primelessLayout->currentIndex() == 1) { - closeSubPanel(); - - primelessLayout->setCurrentIndex(0); - - if (forceOpenDescriptions) { - publicMapboxKeyControl->showDescription(); - secretMapboxKeyControl->showDescription(); - setupButton->showDescription(); - updateSpeedLimitsToggle->showDescription(); - } - } -} - -void StarPilotNavigationPanel::updateButtons() { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - mapboxPublicKeySet = QString::fromStdString(params.get("MapboxPublicKey")).startsWith("pk"); - mapboxSecretKeySet = QString::fromStdString(params.get("MapboxSecretKey")).startsWith("sk"); - - publicMapboxKeyControl->setText(0, mapboxPublicKeySet ? tr("REMOVE") : tr("ADD")); - publicMapboxKeyControl->setVisibleButton(1, mapboxPublicKeySet && starpilot_scene.online); - secretMapboxKeyControl->setText(0, mapboxSecretKeySet ? tr("REMOVE") : tr("ADD")); - secretMapboxKeyControl->setVisibleButton(1, mapboxSecretKeySet && starpilot_scene.online); -} - -void StarPilotNavigationPanel::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible() || s.sm->frame % (UI_FREQ / 2) != 0) { - return; - } - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - updateButtons(); - updateStep(); - - bool parked = !s.scene.started || starpilot_scene.parked || parent->isFrogsGoMoo; - - if (updatingLimits) { - if (QString::fromStdString(params_memory.get("UpdateSpeedLimitsStatus")) == "Completed!") { - updatingLimits = false; - - updateSpeedLimitsToggle->setValue(tr("Completed!")); - - QTimer::singleShot(2500, [this]() { - updateSpeedLimitsToggle->clearCheckedButtons(); - updateSpeedLimitsToggle->setValue(""); - updateSpeedLimitsToggle->setVisibleButton(0, false); - updateSpeedLimitsToggle->setVisibleButton(1, true); - - params_memory.remove("UpdateSpeedLimitsStatus"); - }); - } else { - updateSpeedLimitsToggle->setValue(QString::fromStdString(params_memory.get("UpdateSpeedLimitsStatus"))); - } - } else { - updateSpeedLimitsToggle->setEnabledButton(1, starpilot_scene.online && util::system_time_valid() && parked); - updateSpeedLimitsToggle->setValue(starpilot_scene.online ? (parked ? "" : "Not parked") : tr("Offline...")); - } - - parent->keepScreenOn = primelessLayout->currentIndex() == 1 || updatingLimits; -} - -void StarPilotNavigationPanel::updateStep() { - QString currentStep; - if (mapboxPublicKeySet) { - currentStep = "../../starpilot/navigation/navigation_training/public_key_set.png"; - } else { - currentStep = "../../starpilot/navigation/navigation_training/no_keys_set.png"; - } - - QPixmap pixmap; - pixmap.load(currentStep); - imageLabel->setPixmap(pixmap.scaledToWidth(1500, Qt::SmoothTransformation)); - - update(); -} diff --git a/starpilot/ui/qt/offroad/navigation_settings.h b/starpilot/ui/qt/offroad/navigation_settings.h deleted file mode 100644 index f08160aa6..000000000 --- a/starpilot/ui/qt/offroad/navigation_settings.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotNavigationPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotNavigationPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void closeSubPanel(); - void openSubPanel(); - -protected: - void hideEvent(QHideEvent *event); - void showEvent(QShowEvent *event) override; - -private: - void mousePressEvent(QMouseEvent *event); - void updateButtons(); - void updateState(const UIState &s, const StarPilotUIState &fs); - void updateStep(); - - bool forceOpenDescriptions; - bool mapboxPublicKeySet; - bool mapboxSecretKeySet; - bool updatingLimits; - - StarPilotButtonsControl *publicMapboxKeyControl; - StarPilotButtonsControl *secretMapboxKeyControl; - ButtonControl *setupButton; - - StarPilotButtonControl *updateSpeedLimitsToggle; - - StarPilotSettingsWindow *parent; - - LabelControl *ipLabel; - - Params params; - Params params_memory{"", true}; - - QLabel *imageLabel; - - QNetworkAccessManager *networkManager; - - QStackedLayout *primelessLayout; -}; diff --git a/starpilot/ui/qt/offroad/sounds_settings.cc b/starpilot/ui/qt/offroad/sounds_settings.cc deleted file mode 100644 index 08052a384..000000000 --- a/starpilot/ui/qt/offroad/sounds_settings.cc +++ /dev/null @@ -1,241 +0,0 @@ -#include "starpilot/ui/qt/offroad/sounds_settings.h" - -StarPilotSoundsPanel::StarPilotSoundsPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *soundsLayout = new QStackedLayout(); - addItem(soundsLayout); - - StarPilotListWidget *soundsList = new StarPilotListWidget(this); - - ScrollView *soundsPanel = new ScrollView(soundsList, this); - - soundsLayout->addWidget(soundsPanel); - - StarPilotListWidget *alertVolumeControlList = new StarPilotListWidget(this); - StarPilotListWidget *customAlertsList = new StarPilotListWidget(this); - - ScrollView *alertVolumeControlPanel = new ScrollView(alertVolumeControlList, this); - ScrollView *customAlertsPanel = new ScrollView(customAlertsList, this); - - soundsLayout->addWidget(alertVolumeControlPanel); - soundsLayout->addWidget(customAlertsPanel); - - const std::vector> soundsToggles { - {"AlertVolumeControl", tr("Alert Volume Controller"), tr("Set how loud each type of openpilot alert is to keep routine prompts from becoming distracting."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"SwitchbackModeCooldown", tr("Switchback Mode Cooldown"), tr("Set the minimum time between repeated steering-limit and minimum-steer-speed alerts while \"Switchback Mode\" is active.

    Useful on winding roads where \"Turn Exceeds Steering Limit\" and \"Steer Unavailable Under\" can repeat frequently. Set to Off to disable the cooldown even when the mode is on."), ""}, - {"BelowSteerSpeedVolume", tr("Min Steer Speed Alert Volume"), tr("Set the volume for the \"Steer Unavailable Under\" alert shown below the car's minimum steering speed.

    Set to Muted to silence only this alert."), ""}, - {"DisengageVolume", tr("Disengage Volume"), tr("Set the volume for alerts when openpilot disengages.

    Examples include: \"Cruise Fault: Restart the Car\", \"Parking Brake Engaged\", \"Pedal Pressed\"."), ""}, - {"EngageVolume", tr("Engage Volume"), tr("Set the volume for the chime when openpilot engages, such as after pressing the \"RESUME\" or \"SET\" steering wheel buttons."), ""}, - {"PromptVolume", tr("Prompt Volume"), tr("Set the volume for prompts that need attention.

    Examples include: \"Car Detected in Blindspot\", \"Steering Temporarily Unavailable\", \"Turn Exceeds Steering Limit\"."), ""}, - {"PromptDistractedVolume", tr("Prompt Distracted Volume"), tr("Set the volume for prompts when openpilot detects driver distraction or unresponsiveness.

    Examples include: \"Pay Attention\", \"Touch Steering Wheel\"."), ""}, - {"RefuseVolume", tr("Refuse Volume"), tr("Set the volume for alerts when openpilot refuses to engage.

    Examples include: \"Brake Hold Active\", \"Door Open\", \"Seatbelt Unlatched\"."), ""}, - {"WarningSoftVolume", tr("Warning Soft Volume"), tr("Set the volume for softer warnings about potential risks.

    Examples include: \"BRAKE! Risk of Collision\", \"Steering Temporarily Unavailable\"."), ""}, - {"WarningImmediateVolume", tr("Warning Immediate Volume"), tr("Set the volume for the loudest warnings that require urgent attention.

    Examples include: \"DISENGAGE IMMEDIATELY — Driver Distracted\", \"DISENGAGE IMMEDIATELY — Driver Unresponsive\"."), ""}, - - {"CustomAlerts", tr("StarPilot Alerts"), tr("Optional StarPilot alerts that highlight driving events in a more noticeable way."), "../../starpilot/assets/toggle_icons/icon_green_light.png"}, - {"GoatScream", tr("Goat Scream"), tr("Play the infamous \"Goat Scream\" when the steering controller reaches its limit. Based on the \"Turn Exceeds Steering Limit\" event."), ""}, - {"GoatScreamCriticalAlerts", tr("Goat Scream Critical Alerts"), tr("Play the infamous \"Goat Scream\" for full-screen critical alerts that require immediate takeover.

    Examples include: \"TAKE CONTROL IMMEDIATELY\" and \"Stock AEB: Risk of Collision\"."), ""}, - {"GreenLightAlert", tr("Green Light Alert"), tr("Play an alert when the model predicts a red light has turned green.

    Disclaimer: openpilot does not explicitly detect traffic lights. This alert is based on end-to-end model predictions from camera input and may trigger even when the light has not changed."), ""}, - {"LeadDepartingAlert", tr("Lead Departing Alert"), tr("Play an alert when the lead vehicle departs from a stop."), ""}, - {"LoudBlindspotAlert", tr("Loud \"Car Detected in Blindspot\" Alert"), tr("Play a louder alert if a vehicle is in the blind spot when attempting to change lanes. Based on the \"Car Detected in Blindspot\" event."), ""}, - {"LoudBlindspotAlertWhenDisengaged", tr("Blind Spot Alert When Disengaged"), tr("Play the loud blind spot alert while lateral control is off or paused.

    Useful when steering pauses on turn signal, since the lane-change state machine is inactive then."), ""}, - {"SpeedLimitChangedAlert", tr("Speed Limit Changed Alert"), tr("Play an alert when the posted speed limit changes."), ""} - }; - - for (const auto &[param, title, desc, icon] : soundsToggles) { - AbstractControl *soundsToggle; - - if (param == "AlertVolumeControl") { - StarPilotManageControl *alertVolumeControlToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(alertVolumeControlToggle, &StarPilotManageControl::manageButtonClicked, [soundsLayout, alertVolumeControlPanel]() { - soundsLayout->setCurrentWidget(alertVolumeControlPanel); - }); - soundsToggle = alertVolumeControlToggle; - } else if (alertCooldownKeys.contains(param)) { - std::map cooldownLabels; - for (int i = 0; i <= 30; ++i) { - cooldownLabels[i] = i == 0 ? tr("Off") : i == 1 ? tr("1 minute") : QString::number(i) + tr(" minutes"); - } - soundsToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 30, QString(), cooldownLabels, 1); - } else if (alertVolumeControlKeys.contains(param)) { - std::map volumeLabels; - for (int i = 0; i <= 101; ++i) { - volumeLabels[i] = i == 0 ? tr("Muted") : i == 101 ? tr("Auto") : QString::number(i) + "%"; - } - std::vector alertButton{tr("Test")}; - if (param == "WarningImmediateVolume" || param == "WarningSoftVolume") { - soundsToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 25, 101, QString(), volumeLabels, 1, true, {}, alertButton, false, false); - } else { - soundsToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 0, 101, QString(), volumeLabels, 1, true, {}, alertButton, false, false); - } - - } else if (param == "CustomAlerts") { - StarPilotManageControl *customAlertsToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(customAlertsToggle, &StarPilotManageControl::manageButtonClicked, [soundsLayout, customAlertsPanel]() { - soundsLayout->setCurrentWidget(customAlertsPanel); - }); - soundsToggle = customAlertsToggle; - - } else { - soundsToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = soundsToggle; - - if (alertCooldownKeys.contains(param) || alertVolumeControlKeys.contains(param)) { - alertVolumeControlList->addItem(soundsToggle); - } else if (customAlertsKeys.contains(param)) { - customAlertsList->addItem(soundsToggle); - } else { - soundsList->addItem(soundsToggle); - - parentKeys.insert(param); - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(soundsToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(soundsToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(soundsToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - for (const QString &key : alertVolumeControlKeys) { - StarPilotParamValueButtonControl *toggle = static_cast(toggles[key]); - QObject::connect(toggle, &StarPilotParamValueButtonControl::buttonClicked, [key, toggle, this]() { - toggle->updateParam(); - testSound(key); - }); - } - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [soundsLayout, soundsPanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - soundsLayout->setCurrentWidget(soundsPanel); - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotSoundsPanel::updateState); - - for (auto &[key, toggle] : toggles) { - if (alertCooldownKeys.contains(key) || alertVolumeControlKeys.contains(key)) { - toggle->setVisible(true); - } - } - - initializeSoundPlayer(); - - updateToggles(); -} - -void StarPilotSoundsPanel::showEvent(QShowEvent *event) { - updateToggles(); -} - -void StarPilotSoundsPanel::initializeSoundPlayer() { - QString program = R"( -import numpy as np -import sounddevice as sd -import sys -import wave - -while True: - try: - line = sys.stdin.readline() - if not line: - break - path, volume = line.strip().split('|') - - sound_file = wave.open(path, 'rb') - audio = np.frombuffer(sound_file.readframes(sound_file.getnframes()), dtype=np.int16).astype(np.float32) / 32768.0 - - sd.play(audio * float(volume), sound_file.getframerate()) - sd.wait() - except Exception: - pass -)"; - - soundPlayerProcess = new QProcess(this); - soundPlayerProcess->start("python3", QStringList{"-u", "-c", program}); -} - -void StarPilotSoundsPanel::updateState(const UIState &s) { - if (!isVisible()) { - return; - } - - started = s.scene.started; -} - -void StarPilotSoundsPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "LoudBlindspotAlert") { - setVisible &= parent->hasBSM; - } - - else if (key == "LoudBlindspotAlertWhenDisengaged") { - setVisible &= parent->hasBSM && params.getBool("LoudBlindspotAlert"); - } - - else if (key == "SpeedLimitChangedAlert") { - setVisible &= params.getBool("ShowSpeedLimits") || (parent->hasOpenpilotLongitudinal && params.getBool("SpeedLimitController")); - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (alertCooldownKeys.contains(key) || alertVolumeControlKeys.contains(key)) { - toggles["AlertVolumeControl"]->setVisible(true); - } else if (customAlertsKeys.contains(key)) { - toggles["CustomAlerts"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} - -void StarPilotSoundsPanel::testSound(const QString &key) { - QString baseName = QString(key).remove("Volume"); - - if (started) { - updateStarPilotToggles(); - - util::sleep_for(UI_FREQ); - - QString camelCaseAlert = baseName == "BelowSteerSpeed" ? "belowSteerSpeed" : QString(baseName).replace(0, 1, baseName[0].toLower()); - params_memory.put("TestAlert", camelCaseAlert.toStdString()); - } else { - QString previewBaseName = baseName == "BelowSteerSpeed" ? "Prompt" : baseName; - QString snakeCaseAlert = QString(previewBaseName).replace(QRegularExpression("([A-Z])"), "_\\1").toLower().mid(1); - QString stockPath = "../../selfdrive/assets/sounds/" + snakeCaseAlert + ".wav"; - QString themePath = "../../starpilot/assets/active_theme/sounds/" + snakeCaseAlert + ".wav"; - - float volume = params.getFloat(key.toStdString()) / 100.0f; - - soundPlayerProcess->write(((QFile::exists(themePath) ? themePath : stockPath) + "|" + QString::number(volume) + "\n").toUtf8()); - } -} diff --git a/starpilot/ui/qt/offroad/sounds_settings.h b/starpilot/ui/qt/offroad/sounds_settings.h deleted file mode 100644 index f8d448e4d..000000000 --- a/starpilot/ui/qt/offroad/sounds_settings.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotSoundsPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotSoundsPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void initializeSoundPlayer(); - void testSound(const QString &key); - void updateState(const UIState &s); - void updateToggles(); - - bool forceOpenDescriptions; - bool started; - - std::map toggles; - - QSet alertCooldownKeys {"SwitchbackModeCooldown"}; - QSet alertVolumeControlKeys {"BelowSteerSpeedVolume", "DisengageVolume", "EngageVolume", "PromptDistractedVolume", "PromptVolume", "RefuseVolume", "WarningImmediateVolume", "WarningSoftVolume"}; - QSet customAlertsKeys {"GoatScream", "GoatScreamCriticalAlerts", "GreenLightAlert", "LeadDepartingAlert", "LoudBlindspotAlert", "LoudBlindspotAlertWhenDisengaged", "SpeedLimitChangedAlert"}; - - QSet parentKeys; - - StarPilotSettingsWindow *parent; - - Params params; - Params params_memory{"", true}; - - QProcess *soundPlayerProcess; -}; diff --git a/starpilot/ui/qt/offroad/starpilot_settings.cc b/starpilot/ui/qt/offroad/starpilot_settings.cc deleted file mode 100644 index 119a4df09..000000000 --- a/starpilot/ui/qt/offroad/starpilot_settings.cc +++ /dev/null @@ -1,482 +0,0 @@ -#include "starpilot/ui/qt/offroad/data_settings.h" -#include "starpilot/ui/qt/offroad/device_settings.h" -#include "starpilot/ui/qt/offroad/starpilot_settings.h" -#include "starpilot/ui/qt/offroad/lateral_settings.h" -#include "starpilot/ui/qt/offroad/longitudinal_settings.h" -#include "starpilot/ui/qt/offroad/maps_settings.h" -#include "starpilot/ui/qt/offroad/model_settings.h" -#include "starpilot/ui/qt/offroad/navigation_settings.h" -#include "starpilot/ui/qt/offroad/sounds_settings.h" -#include "starpilot/ui/qt/offroad/theme_settings.h" -#include "starpilot/ui/qt/offroad/utilities.h" -#include "starpilot/ui/qt/offroad/vehicle_settings.h" -#include "starpilot/ui/qt/offroad/visual_settings.h" -#include "starpilot/ui/qt/offroad/wheel_settings.h" -#include "system/hardware/hw.h" - -#include - -bool nnffLogFileExists(const QString &carFingerprint) { - static QStringList models; - static QMap substitutes; - - if (models.isEmpty()) { - QFileInfoList fileInfoList = QDir(QStringLiteral("../../starpilot/assets/nnff_models")).entryInfoList(QDir::Files | QDir::NoDotAndDotDot); - for (const QFileInfo &fileInfo : fileInfoList) { - models.append(fileInfo.completeBaseName()); - } - - QFile sub_file("../../opendbc/car/torque_data/substitute.toml"); - if (sub_file.open(QIODevice::ReadOnly)) { - QTextStream in(&sub_file); - while (!in.atEnd()) { - QString line = in.readLine().trimmed(); - if (line.startsWith("#") || line.startsWith("legend") || !line.contains("=")) { - continue; - } - - QStringList parts = line.split("="); - if (parts.size() == 2) { - QString key = parts[0].trimmed().remove('"'); - QString value = parts[1].trimmed().remove('"'); - if (!key.isEmpty() && !value.isEmpty()) { - substitutes[key] = value; - } - } - } - } - } - - QStringList fingerprintsToCheck; - fingerprintsToCheck.append(carFingerprint); - if (substitutes.contains(carFingerprint)) { - fingerprintsToCheck.append(substitutes.value(carFingerprint)); - } - - for (const QString &fingerprint : fingerprintsToCheck) { - for (const QString &match : models) { - if (match.startsWith(fingerprint)) { - std::cout << "NNFF model found for fingerprint: " << fingerprint.toStdString() << std::endl; - return true; - } - } - } - - return false; -} - -void StarPilotSettingsWindow::createPanelButtons(StarPilotListWidget *list) { - StarPilotDataPanel *starpilotDataPanel = new StarPilotDataPanel(this, !shownDescriptions.value("StarPilotDataPanel").toBool(false)); - StarPilotDevicePanel *starpilotDevicePanel = new StarPilotDevicePanel(this, !shownDescriptions.value("StarPilotDevicePanel").toBool(false)); - StarPilotLateralPanel *starpilotLateralPanel = new StarPilotLateralPanel(this, !shownDescriptions.value("StarPilotLateralPanel").toBool(false)); - StarPilotLongitudinalPanel *starpilotLongitudinalPanel = new StarPilotLongitudinalPanel(this, !shownDescriptions.value("StarPilotLongitudinalPanel").toBool(false)); - StarPilotMapsPanel *starpilotMapsPanel = new StarPilotMapsPanel(this, !shownDescriptions.value("StarPilotMapsPanel").toBool(false)); - StarPilotModelPanel *starpilotModelPanel = new StarPilotModelPanel(this); - StarPilotNavigationPanel *starpilotNavigationPanel = new StarPilotNavigationPanel(this, !shownDescriptions.value("StarPilotNavigationPanel").toBool(false)); - StarPilotSoundsPanel *starpilotSoundsPanel = new StarPilotSoundsPanel(this, !shownDescriptions.value("StarPilotSoundsPanel").toBool(false)); - StarPilotThemesPanel *starpilotThemesPanel = new StarPilotThemesPanel(this, !shownDescriptions.value("StarPilotThemesPanel").toBool(false)); - StarPilotUtilitiesPanel *starpilotUtilitiesPanel = new StarPilotUtilitiesPanel(this, !shownDescriptions.value("StarPilotUtilitiesPanel").toBool(false)); - StarPilotVehiclesPanel *starpilotVehiclesPanel = new StarPilotVehiclesPanel(this, !shownDescriptions.value("StarPilotVehiclesPanel").toBool(false)); - StarPilotVisualsPanel *starpilotVisualsPanel = new StarPilotVisualsPanel(this, !shownDescriptions.value("StarPilotVisualsPanel").toBool(false)); - StarPilotWheelPanel *starpilotWheelPanel = new StarPilotWheelPanel(this, !shownDescriptions.value("StarPilotWheelPanel").toBool(false)); - - std::vector>> panelButtons = { - {{tr("MANAGE"), starpilotSoundsPanel}}, - {{tr("DRIVING MODEL"), starpilotModelPanel}, {tr("GAS / BRAKE"), starpilotLongitudinalPanel}, {tr("STEERING"), starpilotLateralPanel}}, - {{tr("MAP DATA"), starpilotMapsPanel}, {tr("NAVIGATION"), starpilotNavigationPanel}}, - {{tr("DATA"), starpilotDataPanel}, {tr("DEVICE CONTROLS"), starpilotDevicePanel}, {tr("UTILITIES"), starpilotUtilitiesPanel}}, - {{tr("APPEARANCE"), starpilotVisualsPanel}, {tr("THEME"), starpilotThemesPanel}}, - {{tr("VEHICLE SETTINGS"), starpilotVehiclesPanel}, {tr("WHEEL CONTROLS"), starpilotWheelPanel}} - }; - - std::vector> panelInfo = { - {tr("Alerts and Sounds"), tr("Adjust alert volumes and enable custom notifications."), "../../starpilot/assets/toggle_icons/icon_sound.png"}, - {tr("Driving Controls"), tr("Fine-tune custom StarPilot acceleration, braking, and steering controls."), "../../starpilot/assets/toggle_icons/icon_steering.png"}, - {tr("Navigation"), tr("Download map data for the \"Speed Limit Controller\"."), "../../starpilot/assets/toggle_icons/icon_navigate.png"}, - {tr("System Settings"), tr("Manage backups, device settings, screen options, storage, and tools to keep StarPilot running smoothly."), "../../starpilot/assets/toggle_icons/icon_system.png"}, - {tr("Theme and Appearance"), tr("Customize the look of the driving screen and interface, including themes!"), "../../starpilot/assets/toggle_icons/icon_display.png"}, - {tr("Vehicle Settings"), tr("Configure car-specific options and steering wheel button mappings."), "../../starpilot/assets/toggle_icons/icon_vehicle.png"} - }; - - for (size_t i = 0; i < panelInfo.size(); ++i) { - const QString &title = std::get<0>(panelInfo[i]); - const QString &description = std::get<1>(panelInfo[i]); - const QString &icon = std::get<2>(panelInfo[i]); - - const std::vector> &widgetLabels = panelButtons[i]; - - std::vector labels; - std::vector widgets; - - for (size_t j = 0; j < widgetLabels.size(); ++j) { - labels.push_back(std::get<0>(widgetLabels[j])); - - QWidget *panel = std::get<1>(widgetLabels[j]); - panel->setContentsMargins(50, 25, 50, 25); - - ScrollView *panelFrame = new ScrollView(panel, this); - mainLayout->addWidget(panelFrame); - widgets.push_back(panelFrame); - } - - StarPilotButtonsControl *panelButton = new StarPilotButtonsControl(title, description, icon, labels); - if (title == tr("Alerts and Sounds")) soundPanelButtons = panelButton; - if (title == tr("Driving Controls")) drivingPanelButtons = panelButton; - if (title == tr("Navigation")) navigationPanelButtons = panelButton; - if (title == tr("System Settings")) systemPanelButtons = panelButton; - if (title == tr("Theme and Appearance")) themePanelButtons = panelButton; - if (title == tr("Vehicle Settings")) vehiclePanelButtons = panelButton; - - if (forceOpenDescriptions) { - panelButton->showDescription(); - } - - QObject::connect(panelButton, &StarPilotButtonsControl::buttonClicked, [widgets, this](int id) { - mainLayout->setCurrentWidget(widgets[id]); - - panelOpen = true; - - openPanel(); - - ScrollView *panelFrame = qobject_cast(widgets[id]); - if (panelFrame) { - QWidget *panel = panelFrame->widget(); - QString className = panel->metaObject()->className(); - - if (!shownDescriptions.value(className).toBool(false)) { - shownDescriptions.insert(className, true); - params.putNonBlocking("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); - } - } - }); - - list->addItem(panelButton); - } - - QObject::connect(starpilotDataPanel, &StarPilotDataPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotDevicePanel, &StarPilotDevicePanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotLateralPanel, &StarPilotLateralPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotLongitudinalPanel, &StarPilotLongitudinalPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotLongitudinalPanel, &StarPilotLongitudinalPanel::openSubSubPanel, this, &StarPilotSettingsWindow::openSubSubPanel); - QObject::connect(starpilotLongitudinalPanel, &StarPilotLongitudinalPanel::openSubSubSubPanel, this, &StarPilotSettingsWindow::openSubSubSubPanel); - QObject::connect(starpilotMapsPanel, &StarPilotMapsPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotModelPanel, &StarPilotModelPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotNavigationPanel, &StarPilotNavigationPanel::closeSubPanel, this, &StarPilotSettingsWindow::closeSubPanel); - QObject::connect(starpilotNavigationPanel, &StarPilotNavigationPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotSoundsPanel, &StarPilotSoundsPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotThemesPanel, &StarPilotThemesPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotVehiclesPanel, &StarPilotVehiclesPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotVisualsPanel, &StarPilotVisualsPanel::openSubPanel, this, &StarPilotSettingsWindow::openSubPanel); - QObject::connect(starpilotVisualsPanel, &StarPilotVisualsPanel::openSubSubPanel, this, &StarPilotSettingsWindow::openSubSubPanel); -} - -StarPilotSettingsWindow::StarPilotSettingsWindow(SettingsWindow *parent) : QFrame(parent) { - shownDescriptions = QJsonDocument::fromJson(QString::fromStdString(params.get("ShownToggleDescriptions")).toUtf8()).object(); - - QString className = this->metaObject()->className(); - QString legacyClassName = className; - legacyClassName.replace("StarPilot", "FrogPilot"); - - bool alreadyShown = shownDescriptions.value(className).toBool(false); - bool legacyShown = legacyClassName != className && shownDescriptions.value(legacyClassName).toBool(false); - if (legacyShown && !alreadyShown) { - shownDescriptions.insert(className, true); - params.putNonBlocking("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); - } else if (!alreadyShown) { - forceOpenDescriptions = true; - } - - mainLayout = new QStackedLayout(this); - - QWidget *starpilotWidget = new QWidget(this); - QVBoxLayout *starpilotLayout = new QVBoxLayout(starpilotWidget); - starpilotLayout->setContentsMargins(50, 25, 50, 25); - starpilotWidget->setLayout(starpilotLayout); - - starpilotPanel = new ScrollView(starpilotWidget, this); - mainLayout->addWidget(starpilotPanel); - starpilotPanel->setWidget(starpilotWidget); - - StarPilotListWidget *list = new StarPilotListWidget(this); - starpilotLayout->addWidget(list); - - std::vector togglePresets{tr("Minimal"), tr("Standard"), tr("Advanced"), tr("Developer")}; - togglePreset = new StarPilotButtonsControl(tr("Tuning Level"), - tr("Choose your tuning level. Lower levels keep it simple; higher levels unlock more toggles for finer control.\n\n" - "Minimal - Ideal for those who prefer simplicity or ease of use\n" - "Standard - Recommended for most users for a balanced experience\n" - "Advanced - Fine-tuning for experienced users\n" - "Developer - Highly customizable settings for seasoned enthusiasts"), - "../../starpilot/assets/toggle_icons/icon_tuning.png", togglePresets, true); - QObject::connect(togglePreset, &StarPilotButtonsControl::buttonClicked, [this](int id) { - tuningLevel = id; - - params.putIntNonBlocking("TuningLevel", tuningLevel); - - updateVariables(); - - emit tuningLevelChanged(tuningLevel); - - if (id == 3) { - ConfirmationDialog::alert(tr("WARNING: These settings are risky and can drastically change how openpilot drives. Only change if you fully understand what they do!"), this); - } - }); - togglePreset->setCheckedButton(params.getInt("TuningLevel")); - if (forceOpenDescriptions) { - togglePreset->showDescription(); - } - list->addItem(togglePreset, true); - - createPanelButtons(list); - - QObject::connect(parent, &SettingsWindow::closePanel, this, &StarPilotSettingsWindow::closePanel); - QObject::connect(parent, &SettingsWindow::closeSubPanel, this, &StarPilotSettingsWindow::closeSubPanel); - QObject::connect(parent, &SettingsWindow::closeSubSubPanel, this, &StarPilotSettingsWindow::closeSubSubPanel); - QObject::connect(parent, &SettingsWindow::closeSubSubSubPanel, this, &StarPilotSettingsWindow::closeSubSubSubPanel); - QObject::connect(parent, &SettingsWindow::updateMetric, this, &StarPilotSettingsWindow::updateMetric); - QObject::connect(parent, &SettingsWindow::updateTuningLevel, this, &StarPilotSettingsWindow::updateTuningLevel); - QObject::connect(uiState(), &UIState::offroadTransition, this, &StarPilotSettingsWindow::updateVariables); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotSettingsWindow::updateState); - - std::vector keys = params.allKeys(); - for (std::vector::const_iterator it = keys.begin(); it != keys.end(); ++it) { - const std::string &key = *it; - starpilotToggleLevels[QString::fromStdString(key)] = params.getTuningLevel(key); - } - tuningLevel = params.getInt("TuningLevel"); - - closeSubPanel(); - updateMetric(params.getBool("IsMetric"), true); - updateVariables(); -} - -void StarPilotSettingsWindow::updateTuningLevel() { - tuningLevel = params.getInt("TuningLevel"); - togglePreset->setCheckedButton(params.getInt("TuningLevel")); - - updateVariables(); - - emit tuningLevelChanged(tuningLevel); -} - -bool StarPilotSettingsWindow::showAllTogglesEnabled() { - return params.getBool("ShowAllToggles"); -} - -void StarPilotSettingsWindow::showEvent(QShowEvent *event) { - static bool alertShown = false; - - QString className = this->metaObject()->className(); - if (!shownDescriptions.value(className).toBool(false)) { - shownDescriptions.insert(className, true); - params.putNonBlocking("ShownToggleDescriptions", QJsonDocument(shownDescriptions).toJson(QJsonDocument::Compact).toStdString()); - } - - if (forceOpenDescriptions) { - togglePreset->showDescription(); - - drivingPanelButtons->showDescription(); - navigationPanelButtons->showDescription(); - soundPanelButtons->showDescription(); - systemPanelButtons->showDescription(); - themePanelButtons->showDescription(); - vehiclePanelButtons->showDescription(); - - if (!alertShown) { - ConfirmationDialog::alert(tr("All toggle descriptions are currently expanded. You can tap a toggle's name to open or close its description at any time!"), this); - alertShown = true; - } - } -} - -void StarPilotSettingsWindow::hideEvent(QHideEvent *event) { - closePanel(); -} - -void StarPilotSettingsWindow::closePanel() { - if (forceOpenDescriptions) { - togglePreset->showDescription(); - - drivingPanelButtons->showDescription(); - navigationPanelButtons->showDescription(); - soundPanelButtons->showDescription(); - systemPanelButtons->showDescription(); - themePanelButtons->showDescription(); - vehiclePanelButtons->showDescription(); - } - - mainLayout->setCurrentWidget(starpilotPanel); - - panelOpen = false; -} - -void StarPilotSettingsWindow::updateState() { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - starpilot_scene.starpilot_panel_active = panelOpen && keepScreenOn; -} - -void StarPilotSettingsWindow::updateVariables() { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const bool showAllToggles = showAllTogglesEnabled(); - - auto applyDesktopVehicleFallback = [&]() { - QString fallbackMake = starpilot_toggles.value("car_make").toString(); - QString fallbackModel = starpilot_toggles.value("car_model").toString(); - if (fallbackMake.isEmpty()) { - fallbackMake = "gm"; - } - if (fallbackModel.isEmpty()) { - fallbackModel = "CHEVROLET_BOLT_ACC_2022_2023"; - } - - carMake = fallbackMake.toStdString(); - std::string fallbackFingerprint = fallbackModel.toStdString(); - - hasPedal = starpilot_toggles.value("has_pedal").toBool(true); - hasModeStarButtons = starpilot_toggles.contains("has_canfd_media_buttons") && starpilot_toggles.value("has_canfd_media_buttons").toBool(); - hasSDSU = starpilot_toggles.value("has_sdsu").toBool(); - hasZSS = starpilot_toggles.value("has_zss").toBool(); - isBolt = fallbackFingerprint.rfind("CHEVROLET_BOLT", 0) == 0; - isGM = carMake == "gm"; - isHKG = carMake == "hyundai"; - isHKGCanFd = isHKG && hasModeStarButtons; - isJeep = fallbackFingerprint.rfind("JEEP_", 0) == 0; - isSubaru = carMake == "subaru"; - isToyota = carMake == "toyota"; - isVolt = fallbackFingerprint.rfind("CHEVROLET_VOLT", 0) == 0; - canUsePedal = hasPedal || isBolt; - canUseSDSU = hasSDSU; - }; - - isFrogsGoMoo = ::isFrogsGoMoo(); - - std::string carParams = params.get("CarParamsPersistent"); - if (!carParams.empty()) { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader cmsg(aligned_buf.align(carParams.data(), carParams.size())); - cereal::CarParams::Reader CP = cmsg.getRoot(); - cereal::CarParams::SafetyModel safetyModel = CP.getSafetyConfigs()[0].getSafetyModel(); - - std::string carFingerprint = CP.getCarFingerprint(); - carMake = CP.getBrand(); - - friction = CP.getLateralTuning().getTorque().getFriction(); - hasAlphaLongitudinal = CP.getAlphaLongitudinalAvailable(); - hasBSM = CP.getEnableBsm(); - hasDashSpeedLimits = carMake == "ford" || carMake == "hyundai" || carMake == "toyota" || carMake == "honda"; - hasNNFFLog = nnffLogFileExists(QString::fromStdString(carFingerprint)); - hasOpenpilotLongitudinal = hasLongitudinalControl(CP); - hasPCMCruise = CP.getPcmCruise(); - hasPedal = CP.getEnableGasInterceptorDEPRECATED(); - hasRadar = !CP.getRadarUnavailable(); - hasSDSU = starpilot_toggles.value("has_sdsu").toBool(); - hasSNG = CP.getAutoResumeSng(); - hasZSS = starpilot_toggles.value("has_zss").toBool(); - isAngleCar = CP.getSteerControlType() == cereal::CarParams::SteerControlType::ANGLE; - isBolt = carFingerprint.rfind("CHEVROLET_BOLT", 0) == 0; - isGM = carMake == "gm"; - isHKG = carMake == "hyundai"; - isHKGCanFd = isHKG && safetyModel == cereal::CarParams::SafetyModel::HYUNDAI_CANFD; - isJeep = carMake == "chrysler" && carFingerprint.rfind("JEEP_", 0) == 0; - isSubaru = carMake == "subaru"; - isTorqueCar = CP.getLateralTuning().which() == cereal::CarParams::LateralTuning::TORQUE; - isToyota = carMake == "toyota"; - isTSK = CP.getSecOcRequired(); - isVolt = carFingerprint.rfind("CHEVROLET_VOLT", 0) == 0; - latAccelFactor = CP.getLateralTuning().getTorque().getLatAccelFactor(); - hasModeStarButtons = starpilot_toggles.contains("has_canfd_media_buttons") ? starpilot_toggles.value("has_canfd_media_buttons").toBool() : isHKGCanFd; - lkasAllowedForAOL = starpilot_toggles.value("lkas_allowed_for_aol").toBool(); - longitudinalActuatorDelay = CP.getLongitudinalActuatorDelay(); - startAccel = CP.getStartAccel(); - steerActuatorDelay = CP.getSteerActuatorDelay(); - // Keep Qt stock-sync aligned with selfdrive/controls/lib/latcontrol_torque.py::KP. - steerKp = 0.6f; - steerRatio = CP.getSteerRatio(); - stopAccel = CP.getStopAccel(); - stoppingDecelRate = CP.getStoppingDecelRate(); - vEgoStarting = CP.getVEgoStarting(); - vEgoStopping = CP.getVEgoStopping(); - - float currentDelayStock = params.getFloat("SteerDelayStock"); - float currentFrictionStock = params.getFloat("SteerFrictionStock"); - float currentKPStock = params.getFloat("SteerKPStock"); - float currentLatAccelStock = params.getFloat("SteerLatAccelStock"); - float currentLongDelayStock = params.getFloat("LongitudinalActuatorDelayStock"); - float currentStartAccelStock = params.getFloat("StartAccelStock"); - float currentSteerRatioStock = params.getFloat("SteerRatioStock"); - float currentStopAccelStock = params.getFloat("StopAccelStock"); - float currentStoppingDecelRateStock = params.getFloat("StoppingDecelRateStock"); - float currentVEgoStartingStock = params.getFloat("VEgoStartingStock"); - float currentVEgoStoppingStock = params.getFloat("VEgoStoppingStock"); - - auto nearlyEqual = [](float a, float b) { - return std::fabs(a - b) <= 1e-6f; - }; - - auto syncStockParam = [&](const char *key, const char *stockKey, float currentStock, float liveValue) { - if (nearlyEqual(currentStock, liveValue) || nearlyEqual(liveValue, 0.0f)) { - return; - } - - float currentValue = params.getFloat(key); - bool shouldUpdateLiveValue = nearlyEqual(currentValue, currentStock) || nearlyEqual(currentValue, 0.0f); - if (shouldUpdateLiveValue) { - params.putFloatNonBlocking(key, liveValue); - } - - params.putFloatNonBlocking(stockKey, liveValue); - }; - - syncStockParam("SteerDelay", "SteerDelayStock", currentDelayStock, steerActuatorDelay); - syncStockParam("SteerFriction", "SteerFrictionStock", currentFrictionStock, friction); - syncStockParam("SteerKP", "SteerKPStock", currentKPStock, steerKp); - syncStockParam("SteerLatAccel", "SteerLatAccelStock", currentLatAccelStock, latAccelFactor); - syncStockParam("LongitudinalActuatorDelay", "LongitudinalActuatorDelayStock", currentLongDelayStock, longitudinalActuatorDelay); - syncStockParam("StartAccel", "StartAccelStock", currentStartAccelStock, startAccel); - syncStockParam("SteerRatio", "SteerRatioStock", currentSteerRatioStock, steerRatio); - syncStockParam("StopAccel", "StopAccelStock", currentStopAccelStock, stopAccel); - syncStockParam("StoppingDecelRate", "StoppingDecelRateStock", currentStoppingDecelRateStock, stoppingDecelRate); - syncStockParam("VEgoStarting", "VEgoStartingStock", currentVEgoStartingStock, vEgoStarting); - syncStockParam("VEgoStopping", "VEgoStoppingStock", currentVEgoStoppingStock, vEgoStopping); - - if (Hardware::PC() && (carMake == "mock" || carFingerprint == "MOCK")) { - applyDesktopVehicleFallback(); - } - } else if (Hardware::PC()) { - applyDesktopVehicleFallback(); - } - - std::string starpilotCarParams = params.get("StarPilotCarParamsPersistent"); - if (!starpilotCarParams.empty()) { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader fpcmsg(aligned_buf.align(starpilotCarParams.data(), starpilotCarParams.size())); - cereal::StarPilotCarParams::Reader FPCP = fpcmsg.getRoot(); - - canUsePedal = FPCP.getCanUsePedal(); - canUseSDSU = FPCP.getCanUseSDSU(); - openpilotLongitudinalControlDisabled = FPCP.getOpenpilotLongitudinalControlDisabled(); - } - - std::string liveTorqueParameters = params.get("LiveTorqueParameters"); - if (!liveTorqueParameters.empty()) { - AlignedBuffer aligned_buf; - capnp::FlatArrayMessageReader reader(aligned_buf.align(liveTorqueParameters.data(), liveTorqueParameters.size())); - cereal::Event::Reader event = reader.getRoot(); - cereal::LiveTorqueParametersData::Reader LTP = event.getLiveTorqueParameters(); - - hasAutoTune = LTP.getUseParams(); - } - - drivingPanelButtons->setVisibleButton(0, showAllToggles || tuningLevel >= starpilotToggleLevels.value("DrivingModel").toDouble()); - drivingPanelButtons->setVisibleButton(1, showAllToggles || hasOpenpilotLongitudinal); - - systemPanelButtons->setVisibleButton(1, showAllToggles || tuningLevel >= starpilotToggleLevels.value("DeviceManagement").toDouble() || tuningLevel >= starpilotToggleLevels.value("ScreenManagement").toDouble()); - - vehiclePanelButtons->setVisibleButton(1, showAllToggles || tuningLevel >= starpilotToggleLevels.value("WheelControls").toDouble()); - - update(); -} diff --git a/starpilot/ui/qt/offroad/starpilot_settings.h b/starpilot/ui/qt/offroad/starpilot_settings.h deleted file mode 100644 index a7e27109b..000000000 --- a/starpilot/ui/qt/offroad/starpilot_settings.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/offroad/settings.h" -#include "selfdrive/ui/qt/widgets/scrollview.h" - -#include "starpilot/ui/starpilot_ui.h" -#include "starpilot/ui/qt/widgets/starpilot_controls.h" - -class QNetworkAccessManager; - -class StarPilotSettingsWindow : public QFrame { - Q_OBJECT - -public: - explicit StarPilotSettingsWindow(SettingsWindow *parent); - - void updateVariables(); - bool showAllTogglesEnabled(); - - bool canUsePedal = false; - bool canUseSDSU = false; - bool forceOpenDescriptions = false; - bool hasAlphaLongitudinal = false; - bool hasAutoTune = true; - bool hasBSM = true; - bool hasDashSpeedLimits = true; - bool hasNNFFLog = true; - bool hasOpenpilotLongitudinal = true; - bool hasPCMCruise = false; - bool hasPedal = false; - bool hasRadar = true; - bool hasSDSU = false; - bool hasSNG = false; - bool hasModeStarButtons = false; - bool hasZSS = false; - bool isAngleCar = false; - bool isBolt = false; - bool isFrogsGoMoo = false; - bool isGM = true; - bool isHKG = true; - bool isHKGCanFd = true; - bool isJeep = false; - bool isSubaru = false; - bool isTorqueCar = false; - bool isToyota = true; - bool isTSK = false; - bool isVolt = true; - bool keepScreenOn = false; - bool lkasAllowedForAOL = false; - bool openpilotLongitudinalControlDisabled = false; - - float friction; - float latAccelFactor; - float longitudinalActuatorDelay; - float startAccel; - float steerActuatorDelay; - float steerKp; - float steerRatio; - float stopAccel; - float stoppingDecelRate; - float vEgoStarting; - float vEgoStopping; - - int tuningLevel; - - QJsonObject starpilotToggleLevels; - -signals: - void closeSubPanel(); - void closeSubSubPanel(); - void closeSubSubSubPanel(); - void openPanel(); - void openSubPanel(); - void openSubSubPanel(); - void openSubSubSubPanel(); - void tuningLevelChanged(int level); - void updateMetric(bool metric, bool bootRun=false); - -private: - void closePanel(); - void createPanelButtons(StarPilotListWidget *list); - void hideEvent(QHideEvent *event) override; - void showEvent(QShowEvent *event) override; - void updateState(); - void updateTuningLevel(); - - bool panelOpen; - - std::string carMake; - - StarPilotButtonsControl *drivingPanelButtons; - StarPilotButtonsControl *navigationPanelButtons; - StarPilotButtonsControl *soundPanelButtons; - StarPilotButtonsControl *systemPanelButtons; - StarPilotButtonsControl *themePanelButtons; - StarPilotButtonsControl *togglePreset; - StarPilotButtonsControl *vehiclePanelButtons; - - Params params; - - QJsonObject shownDescriptions; - - QStackedLayout *mainLayout; - - ScrollView *starpilotPanel; -}; diff --git a/starpilot/ui/qt/offroad/theme_settings.cc b/starpilot/ui/qt/offroad/theme_settings.cc deleted file mode 100644 index 9d2654c3c..000000000 --- a/starpilot/ui/qt/offroad/theme_settings.cc +++ /dev/null @@ -1,951 +0,0 @@ -#include "starpilot/ui/qt/offroad/theme_settings.h" -#include "system/hardware/hw.h" - -bool isUserCreatedTheme(const QString &themeName) { - return themeName.endsWith("-user_created"); -} - -void updateAssetParam(const QString &assetParam, Params ¶ms, const QString &value, bool add) { - QStringList assets = QString::fromStdString(params.get(assetParam.toStdString())).split(",", QString::SkipEmptyParts); - if (add) { - if (!assets.contains(value)) { - assets.append(value); - } - } else { - assets.removeAll(value); - } - assets.sort(); - - params.put(assetParam.toStdString(), assets.join(",").toStdString()); -} - -void deleteThemeAsset(QDir &directory, const QString &subFolder, const QString &assetParam, const QString &themeToDelete, Params ¶ms) { - bool useFiles = subFolder.isEmpty(); - - QString baseName = themeToDelete.toLower(); - baseName.replace("(", "-").replace(")", "").replace(" ", "-"); - baseName.remove(QRegularExpression("[^a-z0-9\\-]")); - while (baseName.endsWith("-")) { - baseName.chop(1); - } - - QString baseUnderscore = baseName; - baseUnderscore.replace("-", "_"); - - QStringList candidateNames = { - baseName, - baseName + "-user-created", - baseUnderscore, - baseUnderscore + "-user_created" - }; - - if (useFiles) { - QStringList files = directory.entryList(QDir::Files); - for (QString &file : files) { - QString normalizedFile = QFileInfo(file).baseName().toLower(); - normalizedFile.replace("_", "-"); - normalizedFile.remove(QRegularExpression("[^a-z0-9\\-~]")); - - if (candidateNames.contains(normalizedFile)) { - QFile::remove(directory.filePath(file)); - break; - } - } - } else { - for (QString &candidate : candidateNames) { - QString fullSubPath = QDir(candidate).filePath(subFolder); - QDir targetDir(directory.filePath(fullSubPath)); - - if (targetDir.exists()) { - targetDir.removeRecursively(); - break; - } - } - } - - updateAssetParam(assetParam, params, themeToDelete, true); -} - -void downloadThemeAsset(const QString &input, const std::string ¶mKey, const QString &assetParam, Params ¶ms, Params ¶ms_memory) { - if (paramKey == "BootLogoToDownload") { - params_memory.put(paramKey, input.trimmed().toStdString()); - return; - } - - QString output = input; - output.replace(" - by: ", "~"); - int tilde = output.indexOf("~"); - if (tilde >= 0) { - output = output.left(tilde).toLower() + "~" + output.mid(tilde + 1); - } else { - output = output.toLower(); - } - output.remove("(").remove(")"); - output.replace(" ", input.contains("(") ? "-" : "_"); - - params_memory.put(paramKey, output.toStdString()); -} - -QStringList getHolidayThemes() { - return QStringList() - << "New Year's" - << "Valentine's Day" - << "St. Patrick's Day" - << "World Frog Day" - << "April Fools" - << "Easter" - << "May the Fourth" - << "Cinco de Mayo" - << "Stitch Day" - << "Fourth of July" - << "Halloween" - << "Thanksgiving" - << "Christmas"; -} - -QStringList getThemeList(const bool &randomThemes, const QDir &themePacksDirectory, const QString &subFolder, const QString &assetParam, Params ¶ms) { - bool useFiles = subFolder.isEmpty(); - - QString currentAsset = randomThemes ? "" : QString::fromStdString(params.get(assetParam.toStdString())); - - QStringList themeList; - for (const QFileInfo &entry : themePacksDirectory.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { - if (entry.baseName() == currentAsset) { - continue; - } - - if (useFiles && entry.isDir()) { - continue; - } - - if (!useFiles) { - QString targetPath = QDir(entry.filePath()).filePath(subFolder); - if (!QFileInfo(targetPath).exists()) { - continue; - } - } - - QString baseName = entry.baseName(); - bool userCreated = isUserCreatedTheme(baseName); - if (userCreated) { - baseName = baseName.replace("-user_created", ""); - } - - int tildeIdx = baseName.indexOf("~"); - QString creator; - if (tildeIdx >= 0) { - creator = baseName.mid(tildeIdx + 1); - baseName = baseName.left(tildeIdx); - } - - QStringList parts = baseName.split(baseName.contains("-") ? "-" : "_", QString::SkipEmptyParts); - for (QString &part : parts) { - part[0] = part[0].toUpper(); - } - - QString displayName; - if (userCreated) { - displayName = parts.join(" "); - } else { - displayName = (parts.size() <= 1 || useFiles || !baseName.contains("-")) ? parts.join(" ") : QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" ")); - } - - if (userCreated) { - displayName += " 🌟"; - } - if (!creator.isEmpty()) { - displayName += " - by: " + creator; - } - - themeList.append(displayName); - } - - return themeList; -} - -QString getThemeName(const std::string ¶mKey, Params ¶ms) { - QString value = QString::fromStdString(params.get(paramKey)); - - QString baseName = value; - - int tildeIdx = baseName.indexOf("~"); - QString creator; - if (tildeIdx >= 0) { - creator = baseName.mid(tildeIdx + 1); - baseName = baseName.left(tildeIdx); - } - - QStringList parts = baseName.split(baseName.contains("-") ? "-" : "_", QString::SkipEmptyParts); - for (QString &part : parts) { - part[0] = part[0].toUpper(); - } - - QString displayName; - if (baseName.contains("-") && parts.size() > 1) { - displayName = QString("%1 (%2)").arg(parts[0], parts.mid(1).join(" ")); - } else { - displayName = parts.join(" "); - } - - if (isUserCreatedTheme(value)) { - displayName = displayName.split(" (")[0] + " 🌟"; - } - if (!creator.isEmpty()) { - displayName += " - by: " + creator; - } - - return displayName; -} - -QString storeThemeName(const QString &input, const std::string ¶mKey, Params ¶ms) { - QString output = input.toLower().remove("(").remove(")").remove("'").remove("."); - output.replace(" ", input.contains("(") ? "-" : "_"); - output.replace("_🌟", "-user_created"); - output = output.trimmed(); - - params.put(paramKey, output.toStdString()); - - return getThemeName(paramKey, params); -} - -StarPilotThemesPanel::StarPilotThemesPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - if (Hardware::PC()) { - const QString themesRoot = QString::fromStdString(Path::comma_home() + "/starpilot/data/themes/"); - bootLogosDirectory.setPath(themesRoot + "bootlogos/"); - themePacksDirectory.setPath(themesRoot + "theme_packs/"); - wheelsDirectory.setPath(themesRoot + "steering_wheels/"); - } - - QDir().mkpath(bootLogosDirectory.path()); - QDir().mkpath(themePacksDirectory.path()); - QDir().mkpath(wheelsDirectory.path()); - - QStackedLayout *themesLayout = new QStackedLayout(); - addItem(themesLayout); - - StarPilotListWidget *themesList = new StarPilotListWidget(this); - - ScrollView *themesPanel = new ScrollView(themesList, this); - - themesLayout->addWidget(themesPanel); - - StarPilotListWidget *customThemesList = new StarPilotListWidget(this); - - ScrollView *customThemesPanel = new ScrollView(customThemesList, this); - - themesLayout->addWidget(customThemesPanel); - - const std::vector> themeToggles { - {"CustomThemes", tr("Custom Themes"), tr("The overall look and feel of openpilot. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), "../../starpilot/assets/toggle_icons/icon_frog.png"}, - {"BootLogo", tr("Boot Logo"), tr("The boot logo shown while the device starts."), ""}, - {"ColorScheme", tr("Color Scheme"), tr("The color scheme used throughout openpilot. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"DistanceIconPack", tr("Distance Button"), tr("The distance button icons shown on the driving screen. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"IconPack", tr("Icon Pack"), tr("The icon style used across openpilot. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"SignalAnimation", tr("Turn Signal"), tr("Themed turn-signal animations. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"SoundPack", tr("Sound Pack"), tr("The sound pack used by openpilot. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"WheelIcon", tr("Steering Wheel"), tr("The steering-wheel icon shown at the top-right of the driving screen. Use the \"Theme Maker\" in \"The Galaxy\" to create and share your own themes!"), ""}, - {"DownloadStatusLabel", tr("Download Status"), "", ""}, - - {"HolidayThemes", tr("Holiday Themes"), tr("Themes based on U.S. holidays. Minor holidays last one day; major holidays (Christmas, Easter, Halloween) run for a full week."), "../../starpilot/assets/toggle_icons/icon_calendar.png"}, - {"RainbowPath", tr("Rainbow Path"), tr("Color the driving path like a Mario Kart–style \"Rainbow Road\"."), "../../starpilot/assets/toggle_icons/icon_rainbow.png"}, - {"RandomEvents", tr("Random Events"), tr("Occasional on-screen effects triggered by driving conditions. These are purely a visual and don't impact how openpilot drives!"), "../../starpilot/assets/toggle_icons/icon_random.png"}, - {"RandomThemes", tr("Random Themes"), tr("Pick a random theme between each drive from the themes you have downloaded. Great for variety without changing settings while driving."), "../../starpilot/assets/toggle_icons/icon_random_themes.png"}, - {"StartupAlert", tr("Startup Alert"), tr("Customize the \"Startup Alert\" message shown at the start of each drive."), "../../starpilot/assets/toggle_icons/icon_message.png"} - }; - - for (const auto &[param, title, desc, icon] : themeToggles) { - AbstractControl *themeToggle; - - if (param == "CustomThemes") { - StarPilotManageControl *personalizeOpenpilotToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(personalizeOpenpilotToggle, &StarPilotManageControl::manageButtonClicked, [customThemesPanel, themesLayout]() { - themesLayout->setCurrentWidget(customThemesPanel); - }); - themeToggle = personalizeOpenpilotToggle; - } else if (param == "BootLogo") { - manageBootLogosButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageBootLogosButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - // Show all downloaded boot logos, including the currently selected one. - QStringList bootLogos = getThemeList(true, QDir(bootLogosDirectory.path()), "", "BootLogo", params); - - if (id == 0) { - QString bootLogoToDelete = MultiOptionDialog::getSelection(tr("Select a boot logo to delete"), bootLogos, "", this); - if (!bootLogoToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" boot logo?").arg(bootLogoToDelete), tr("Delete"), this)) { - bootLogosDownloaded = false; - - deleteThemeAsset(bootLogosDirectory, "", "DownloadableBootLogos", bootLogoToDelete, params); - } - } else if (id == 1) { - if (bootLogoDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - bootLogoDownloading = false; - cancellingDownload = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableBootLogos = QString::fromStdString(params.get("DownloadableBootLogos")).split(","); - bootLogoToDownload = MultiOptionDialog::getSelection(tr("Select a boot logo to download"), downloadableBootLogos, "", this); - if (!bootLogoToDownload.isEmpty()) { - manageBootLogosButton->setValue(storeThemeName(bootLogoToDownload, "BootLogo", params)); - - bootLogoDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(bootLogoToDownload, "BootLogoToDownload", "DownloadableBootLogos", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - QString bootLogoToSelect = MultiOptionDialog::getSelection(tr("Select a boot logo"), bootLogos, getThemeName("BootLogo", params), this); - if (!bootLogoToSelect.isEmpty()) { - manageBootLogosButton->setValue(storeThemeName(bootLogoToSelect, "BootLogo", params)); - } - } - }); - manageBootLogosButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageBootLogosButton; - } else if (param == "ColorScheme") { - manageColorSchemeButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageColorSchemeButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList colorSchemes = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "colors", "ColorScheme", params); - - if (id == 0) { - QString colorSchemeToDelete = MultiOptionDialog::getSelection(tr("Select a color scheme to delete"), colorSchemes, "", this); - if (!colorSchemeToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" color scheme?").arg(colorSchemeToDelete), tr("Delete"), this)) { - colorsDownloaded = false; - - deleteThemeAsset(themePacksDirectory, "colors", "DownloadableColors", colorSchemeToDelete, params); - } - } else if (id == 1) { - if (colorDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - colorDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableColorSchemes = QString::fromStdString(params.get("DownloadableColors")).split(","); - colorSchemeToDownload = MultiOptionDialog::getSelection(tr("Select a color scheme to download"), downloadableColorSchemes, "", this); - if (!colorSchemeToDownload.isEmpty()) { - colorDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(colorSchemeToDownload, "ColorToDownload", "DownloadableColors", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - colorSchemes.append("Stock"); - colorSchemes.append(getHolidayThemes()); - colorSchemes.sort(); - - QString colorSchemeToSelect = MultiOptionDialog::getSelection(tr("Select a color scheme"), colorSchemes, getThemeName("ColorScheme", params), this); - if (!colorSchemeToSelect.isEmpty()) { - manageColorSchemeButton->setValue(storeThemeName(colorSchemeToSelect, "ColorScheme", params)); - } - } - }); - manageColorSchemeButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageColorSchemeButton; - } else if (param == "DistanceIconPack") { - manageDistanceIconPackButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageDistanceIconPackButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList distanceIconPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "distance_icons", "DistanceIconPack", params); - - if (id == 0) { - QString distanceIconPackToDelete = MultiOptionDialog::getSelection(tr("Select a distance icon pack to delete"), distanceIconPacks, "", this); - if (!distanceIconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" distance icon pack?").arg(distanceIconPackToDelete), tr("Delete"), this)) { - distanceIconsDownloaded = false; - - deleteThemeAsset(themePacksDirectory, "distance_icons", "DownloadableDistanceIcons", distanceIconPackToDelete, params); - } - } else if (id == 1) { - if (distanceIconDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - distanceIconDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableDistanceIconPacks = QString::fromStdString(params.get("DownloadableDistanceIcons")).split(","); - distanceIconPackToDownload = MultiOptionDialog::getSelection(tr("Select a distance icon pack to download"), downloadableDistanceIconPacks, "", this); - if (!distanceIconPackToDownload.isEmpty()) { - distanceIconDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(distanceIconPackToDownload, "DistanceIconToDownload", "DownloadableDistanceIcons", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - distanceIconPacks.append("Stock"); - distanceIconPacks.append(getHolidayThemes()); - distanceIconPacks.sort(); - - QString distanceIconPackToSelect = MultiOptionDialog::getSelection(tr("Select a distance icon pack"), distanceIconPacks, getThemeName("DistanceIconPack", params), this); - if (!distanceIconPackToSelect.isEmpty()) { - manageDistanceIconPackButton->setValue(storeThemeName(distanceIconPackToSelect, "DistanceIconPack", params)); - } - } - }); - manageDistanceIconPackButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageDistanceIconPackButton; - } else if (param == "IconPack") { - manageIconPackButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageIconPackButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList iconPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "icons", "IconPack", params); - - if (id == 0) { - QString iconPackToDelete = MultiOptionDialog::getSelection(tr("Select an icon pack to delete"), iconPacks, "", this); - if (!iconPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" icon pack?").arg(iconPackToDelete), tr("Delete"), this)) { - iconsDownloaded = false; - - deleteThemeAsset(themePacksDirectory, "icons", "DownloadableIcons", iconPackToDelete, params); - } - } else if (id == 1) { - if (iconDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - iconDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableIconPacks = QString::fromStdString(params.get("DownloadableIcons")).split(","); - iconPackToDownload = MultiOptionDialog::getSelection(tr("Select an icon pack to download"), downloadableIconPacks, "", this); - if (!iconPackToDownload.isEmpty()) { - iconDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(iconPackToDownload, "IconToDownload", "DownloadableIcons", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - iconPacks.append("Stock"); - iconPacks.append(getHolidayThemes()); - iconPacks.sort(); - - QString iconPackToSelect = MultiOptionDialog::getSelection(tr("Select an icon pack"), iconPacks, getThemeName("IconPack", params), this); - if (!iconPackToSelect.isEmpty()) { - manageIconPackButton->setValue(storeThemeName(iconPackToSelect, "IconPack", params)); - } - } - }); - manageIconPackButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageIconPackButton; - } else if (param == "SignalAnimation") { - manageSignalAnimationButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageSignalAnimationButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList signalAnimations = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "signals", "SignalAnimation", params); - - if (id == 0) { - QString signalAnimationToDelete = MultiOptionDialog::getSelection(tr("Select a signal animation to delete"), signalAnimations, "", this); - if (!signalAnimationToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" signal animation?").arg(signalAnimationToDelete), tr("Delete"), this)) { - signalsDownloaded = false; - - deleteThemeAsset(themePacksDirectory, "signals", "DownloadableSignals", signalAnimationToDelete, params); - } - } else if (id == 1) { - if (signalDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - signalDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableSignalAnimations = QString::fromStdString(params.get("DownloadableSignals")).split(","); - signalAnimationToDownload = MultiOptionDialog::getSelection(tr("Select a signal animation to download"), downloadableSignalAnimations, "", this); - if (!signalAnimationToDownload.isEmpty()) { - signalDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(signalAnimationToDownload, "SignalToDownload", "DownloadableSignals", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - signalAnimations.append("None"); - signalAnimations.append(getHolidayThemes()); - signalAnimations.sort(); - - QString signalAnimationToSelect = MultiOptionDialog::getSelection(tr("Select a signal animation"), signalAnimations, getThemeName("SignalAnimation", params), this); - if (!signalAnimationToSelect.isEmpty()) { - manageSignalAnimationButton->setValue(storeThemeName(signalAnimationToSelect, "SignalAnimation", params)); - } - } - }); - manageSignalAnimationButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageSignalAnimationButton; - } else if (param == "SoundPack") { - manageSoundPackButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageSoundPackButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList soundPacks = getThemeList(randomThemes, QDir(themePacksDirectory.path()), "sounds", "SoundPack", params); - - if (id == 0) { - QString soundPackToDelete = MultiOptionDialog::getSelection(tr("Select a sound pack to delete"), soundPacks, "", this); - if (!soundPackToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" sound pack?").arg(soundPackToDelete), tr("Delete"), this)) { - soundsDownloaded = false; - - deleteThemeAsset(themePacksDirectory, "sounds", "DownloadableSounds", soundPackToDelete, params); - } - } else if (id == 1) { - if (soundDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - soundDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableSoundPacks = QString::fromStdString(params.get("DownloadableSounds")).split(","); - soundPackToDownload = MultiOptionDialog::getSelection(tr("Select a sound pack to download"), downloadableSoundPacks, "", this); - if (!soundPackToDownload.isEmpty()) { - soundDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(soundPackToDownload, "SoundToDownload", "DownloadableSounds", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - soundPacks.append("Stock"); - soundPacks.append(getHolidayThemes()); - soundPacks.sort(); - - QString soundPackToSelect = MultiOptionDialog::getSelection(tr("Select a sound pack"), soundPacks, getThemeName("SoundPack", params), this); - if (!soundPackToSelect.isEmpty()) { - manageSoundPackButton->setValue(storeThemeName(soundPackToSelect, "SoundPack", params)); - } - } - }); - manageSoundPackButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageSoundPackButton; - } else if (param == "WheelIcon") { - manageWheelIconsButton = new StarPilotButtonsControl(title, desc, icon, {tr("DELETE"), tr("DOWNLOAD"), tr("SELECT")}); - QObject::connect(manageWheelIconsButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - QStringList wheelIcons = getThemeList(randomThemes, QDir(wheelsDirectory.path()), "", "WheelIcon", params); - - if (id == 0) { - QString wheelIconToDelete = MultiOptionDialog::getSelection(tr("Select a steering wheel to delete"), wheelIcons, "", this); - if (!wheelIconToDelete.isEmpty() && ConfirmationDialog::confirm(tr("Delete the \"%1\" steering wheel?").arg(wheelIconToDelete), tr("Delete"), this)) { - wheelsDownloaded = false; - - deleteThemeAsset(wheelsDirectory, "", "DownloadableWheels", wheelIconToDelete, params); - } - } else if (id == 1) { - if (wheelDownloading) { - cancellingDownload = true; - - params_memory.putBool("CancelThemeDownload", true); - - QTimer::singleShot(2500, [this]() { - cancellingDownload = false; - wheelDownloading = false; - themeDownloading = false; - - params_memory.putBool("CancelThemeDownload", false); - }); - } else { - QStringList downloadableWheels = QString::fromStdString(params.get("DownloadableWheels")).split(","); - wheelToDownload = MultiOptionDialog::getSelection(tr("Select a steering wheel to download"), downloadableWheels, "", this); - if (!wheelToDownload.isEmpty()) { - wheelDownloading = true; - themeDownloading = true; - - params_memory.put("ThemeDownloadProgress", "Downloading..."); - - downloadThemeAsset(wheelToDownload, "WheelToDownload", "DownloadableWheels", params, params_memory); - - downloadStatusLabel->setText(tr("Downloading...")); - } - } - } else if (id == 2) { - wheelIcons.append("None"); - wheelIcons.append("Stock"); - wheelIcons.append(getHolidayThemes()); - wheelIcons.sort(); - - QString steeringWheelToSelect = MultiOptionDialog::getSelection(tr("Select a steering wheel"), wheelIcons, getThemeName("WheelIcon", params), this); - if (!steeringWheelToSelect.isEmpty()) { - manageWheelIconsButton->setValue(storeThemeName(steeringWheelToSelect, "WheelIcon", params)); - } - } - }); - manageWheelIconsButton->setValue(getThemeName(param.toStdString(), params)); - themeToggle = manageWheelIconsButton; - } else if (param == "DownloadStatusLabel") { - downloadStatusLabel = new LabelControl(title, tr("Idle")); - themeToggle = downloadStatusLabel; - - } else if (param == "RandomThemes") { - std::vector randomThemesToggles{"RandomThemesHolidays"}; - std::vector randomThemesToggleNames{tr("Include Holiday Themes")}; - themeToggle = new StarPilotButtonToggleControl(param, title, desc, icon, randomThemesToggles, randomThemesToggleNames); - - } else if (param == "StartupAlert") { - StarPilotButtonsControl *startupAlertButton = new StarPilotButtonsControl(title, desc, icon, {tr("STOCK"), tr("STARPILOT"), tr("CUSTOM"), tr("CLEAR")}, true); - - QString currentTop = QString::fromStdString(params.get("StartupMessageTop")); - QString currentBottom = QString::fromStdString(params.get("StartupMessageBottom")); - - QString stockTop = "Be ready to take over at any time"; - QString stockBottom = "Always keep hands on wheel and eyes on road"; - - QString starpilotTop = "Hop in and buckle up!"; - QString starpilotBottom = "Human-tested, frog-approved ðŸ¸"; - - if (currentTop == stockTop && currentBottom == stockBottom) { - startupAlertButton->setCheckedButton(0); - } else if (currentTop == starpilotTop && currentBottom == starpilotBottom) { - startupAlertButton->setCheckedButton(1); - } else if (!currentTop.isEmpty() || !currentBottom.isEmpty()) { - startupAlertButton->setCheckedButton(2); - } - - QObject::connect(startupAlertButton, &StarPilotButtonsControl::buttonClicked, [=](int id) { - int maxLengthTop = 35; - int maxLengthBottom = 45; - - if (id == 0) { - params.put("StartupMessageTop", stockTop.toStdString()); - params.put("StartupMessageBottom", stockBottom.toStdString()); - } else if (id == 1) { - params.put("StartupMessageTop", starpilotTop.toStdString()); - params.put("StartupMessageBottom", starpilotBottom.toStdString()); - } else if (id == 2) { - QString currentTop = QString::fromStdString(params.get("StartupMessageTop")); - QString newTop = InputDialog::getText(tr("Enter the text for the top half"), this, tr("Characters: 0/%1").arg(maxLengthTop), false, 1, currentTop, maxLengthTop).trimmed(); - if (!newTop.isEmpty()) { - params.put("StartupMessageTop", newTop.toStdString()); - - QString currentBottom = QString::fromStdString(params.get("StartupMessageBottom")); - QString newBottom = InputDialog::getText(tr("Enter the text for the bottom half"), this, tr("Characters: 0/%1").arg(maxLengthBottom), false, 1, currentBottom, maxLengthBottom).trimmed(); - if (!newBottom.isEmpty()) { - params.put("StartupMessageBottom", newBottom.toStdString()); - } - } - } else if (id == 3) { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely reset your startup message?"), this)) { - params.remove("StartupMessageTop"); - params.remove("StartupMessageBottom"); - - startupAlertButton->clearCheckedButtons(); - } - } - }); - themeToggle = startupAlertButton; - - } else { - themeToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = themeToggle; - - if (customThemeKeys.contains(param)) { - customThemesList->addItem(themeToggle); - } else { - themesList->addItem(themeToggle); - - if (param == "CustomThemes") { - parentKeys.insert(param); - } - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(themeToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(themeToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(themeToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(static_cast(toggles["CustomThemes"]), &ToggleControl::toggleFlipped, this, &StarPilotThemesPanel::updateToggles); - QObject::connect(static_cast(toggles["RandomThemes"]), &ToggleControl::toggleFlipped, [this](bool state) { - if (state) { - ConfirmationDialog::alert(tr("\"Random Themes\" only works with downloaded themes, so make sure you download the themes you want it to use!"), this); - - manageColorSchemeButton->setValue(""); - manageColorSchemeButton->setVisibleButton(2, false); - - manageDistanceIconPackButton->setValue(""); - manageDistanceIconPackButton->setVisibleButton(2, false); - - manageIconPackButton->setValue(""); - manageIconPackButton->setVisibleButton(2, false); - - manageSignalAnimationButton->setValue(""); - manageSignalAnimationButton->setVisibleButton(2, false); - - manageSoundPackButton->setValue(""); - manageSoundPackButton->setVisibleButton(2, false); - - manageWheelIconsButton->setValue(""); - manageWheelIconsButton->setVisibleButton(2, false); - } else { - manageColorSchemeButton->setValue(getThemeName("ColorScheme", params)); - manageColorSchemeButton->setVisibleButton(2, true); - - manageDistanceIconPackButton->setValue(getThemeName("DistanceIconPack", params)); - manageDistanceIconPackButton->setVisibleButton(2, true); - - manageIconPackButton->setValue(getThemeName("IconPack", params)); - manageIconPackButton->setVisibleButton(2, true); - - manageSignalAnimationButton->setValue(getThemeName("SignalAnimation", params)); - manageSignalAnimationButton->setVisibleButton(2, true); - - manageSoundPackButton->setValue(getThemeName("SoundPack", params)); - manageSoundPackButton->setVisibleButton(2, true); - - manageWheelIconsButton->setValue(getThemeName("WheelIcon", params)); - manageWheelIconsButton->setVisibleButton(2, true); - } - - randomThemes = state; - }); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [themesLayout, themesPanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - themesLayout->setCurrentWidget(themesPanel); - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotThemesPanel::updateState); -} - -void StarPilotThemesPanel::showEvent(QShowEvent *event) { - bootLogosDownloaded = params.get("DownloadableBootLogos").empty(); - colorsDownloaded = params.get("DownloadableColors").empty(); - distanceIconsDownloaded = params.get("DownloadableDistanceIcons").empty(); - iconsDownloaded = params.get("DownloadableIcons").empty(); - signalsDownloaded = params.get("DownloadableSignals").empty(); - soundsDownloaded = params.get("DownloadableSounds").empty(); - wheelsDownloaded = params.get("DownloadableWheels").empty(); - - if (params.getBool("RandomThemes")) { - manageColorSchemeButton->setValue(""); - manageColorSchemeButton->setVisibleButton(2, false); - - manageDistanceIconPackButton->setValue(""); - manageDistanceIconPackButton->setVisibleButton(2, false); - - manageIconPackButton->setValue(""); - manageIconPackButton->setVisibleButton(2, false); - - manageSignalAnimationButton->setValue(""); - manageSignalAnimationButton->setVisibleButton(2, false); - - manageSoundPackButton->setValue(""); - manageSoundPackButton->setVisibleButton(2, false); - - manageWheelIconsButton->setValue(""); - manageWheelIconsButton->setVisibleButton(2, false); - - randomThemes = true; - } - - updateToggles(); -} - -void StarPilotThemesPanel::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible() || finalizingDownload) { - return; - } - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - - if (themeDownloading) { - QString progress = QString::fromStdString(params_memory.get("ThemeDownloadProgress")); - bool downloadFailed = progress.contains(QRegularExpression("cancelled|exists|failed|offline", QRegularExpression::CaseInsensitiveOption)); - - if (progress != "Downloading...") { - static const QMap progressTranslations = { - {"Download cancelled...", tr("Download cancelled...")}, - {"Download failed...", tr("Download failed...")}, - {"Downloaded!", tr("Downloaded!")}, - {"GitHub and GitLab are offline...", tr("GitHub and GitLab are offline...")}, - {"Repository unavailable", tr("Repository unavailable")}, - {"Unpacking theme...", tr("Unpacking theme...")}, - {"Verifying authenticity...", tr("Verifying authenticity...")} - }; - - if (progressTranslations.contains(progress)) { - downloadStatusLabel->setText(progressTranslations[progress]); - } else if (progress.endsWith("%")) { - downloadStatusLabel->setText(progress); - } else { - downloadStatusLabel->setText(tr("Idle")); - } - } - - if (progress == "Downloaded!" || downloadFailed) { - finalizingDownload = true; - - QTimer::singleShot(2500, [this]() { - bootLogoDownloading = false; - colorDownloading = false; - distanceIconDownloading = false; - finalizingDownload = false; - iconDownloading = false; - signalDownloading = false; - soundDownloading = false; - themeDownloading = false; - wheelDownloading = false; - - bootLogosDownloaded = params.get("DownloadableBootLogos").empty(); - colorsDownloaded = params.get("DownloadableColors").empty(); - distanceIconsDownloaded = params.get("DownloadableDistanceIcons").empty(); - iconsDownloaded = params.get("DownloadableIcons").empty(); - signalsDownloaded = params.get("DownloadableSignals").empty(); - soundsDownloaded = params.get("DownloadableSounds").empty(); - wheelsDownloaded = params.get("DownloadableWheels").empty(); - - params_memory.remove("CancelThemeDownload"); - params_memory.remove("ThemeDownloadProgress"); - - downloadStatusLabel->setText(tr("Idle")); - }); - } - } - - bool parked = !s.scene.started || starpilot_scene.parked || parent->isFrogsGoMoo; - - manageBootLogosButton->setText(1, bootLogoDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageBootLogosButton->setEnabledButtons(0, !themeDownloading); - manageBootLogosButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || bootLogoDownloading) && !cancellingDownload && !finalizingDownload && !bootLogosDownloaded && parked); - manageBootLogosButton->setEnabledButtons(2, !themeDownloading); - - manageColorSchemeButton->setText(1, colorDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageColorSchemeButton->setEnabledButtons(0, !themeDownloading); - manageColorSchemeButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || colorDownloading) && !cancellingDownload && !finalizingDownload && !colorsDownloaded && parked); - manageColorSchemeButton->setEnabledButtons(2, !themeDownloading); - - manageDistanceIconPackButton->setText(1, distanceIconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageDistanceIconPackButton->setEnabledButtons(0, !themeDownloading); - manageDistanceIconPackButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || distanceIconDownloading) && !cancellingDownload && !finalizingDownload && !distanceIconsDownloaded && parked); - manageDistanceIconPackButton->setEnabledButtons(2, !themeDownloading); - - manageIconPackButton->setText(1, iconDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageIconPackButton->setEnabledButtons(0, !themeDownloading); - manageIconPackButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || iconDownloading) && !cancellingDownload && !finalizingDownload && !iconsDownloaded && parked); - manageIconPackButton->setEnabledButtons(2, !themeDownloading); - - manageSignalAnimationButton->setText(1, signalDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageSignalAnimationButton->setEnabledButtons(0, !themeDownloading); - manageSignalAnimationButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || signalDownloading) && !cancellingDownload && !finalizingDownload && !signalsDownloaded && parked); - manageSignalAnimationButton->setEnabledButtons(2, !themeDownloading); - - manageSoundPackButton->setText(1, soundDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageSoundPackButton->setEnabledButtons(0, !themeDownloading); - manageSoundPackButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || soundDownloading) && !cancellingDownload && !finalizingDownload && !soundsDownloaded && parked); - manageSoundPackButton->setEnabledButtons(2, !themeDownloading); - - manageWheelIconsButton->setText(1, wheelDownloading ? tr("CANCEL") : tr("DOWNLOAD")); - manageWheelIconsButton->setEnabledButtons(0, !themeDownloading); - manageWheelIconsButton->setEnabledButtons(1, starpilot_scene.online && (!themeDownloading || wheelDownloading) && !cancellingDownload && !finalizingDownload && !wheelsDownloaded && parked); - manageWheelIconsButton->setEnabledButtons(2, !themeDownloading); - - parent->keepScreenOn = themeDownloading; -} - -void StarPilotThemesPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "DistanceIconPack") { - setVisible &= params.getBool("QOLVisuals") && params.getBool("OnroadDistanceButton"); - } - - else if (key == "RandomThemes") { - setVisible &= params.getBool("CustomThemes"); - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (customThemeKeys.contains(key)) { - toggles["CustomThemes"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/theme_settings.h b/starpilot/ui/qt/offroad/theme_settings.h deleted file mode 100644 index 966a56b93..000000000 --- a/starpilot/ui/qt/offroad/theme_settings.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotThemesPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotThemesPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -protected: - void showEvent(QShowEvent *event) override; - -signals: - void openSubPanel(); - -private: - void updateState(const UIState &s, const StarPilotUIState &fs); - void updateToggles(); - - bool bootLogoDownloading = false; - bool bootLogosDownloaded = false; - bool cancellingDownload = false; - bool colorDownloading = false; - bool colorsDownloaded = false; - bool distanceIconDownloading = false; - bool distanceIconsDownloaded = false; - bool finalizingDownload = false; - bool forceOpenDescriptions = false; - bool iconDownloading = false; - bool iconsDownloaded = false; - bool randomThemes = false; - bool signalDownloading = false; - bool signalsDownloaded = false; - bool soundDownloading = false; - bool soundsDownloaded = false; - bool themeDownloading = false; - bool wheelDownloading = false; - bool wheelsDownloaded = false; - - std::map toggles; - - QSet customThemeKeys = {"BootLogo", "ColorScheme", "DistanceIconPack", "DownloadStatusLabel", "IconPack", "SignalAnimation", "SoundPack", "WheelIcon"}; - - QSet parentKeys; - - StarPilotButtonsControl *manageBootLogosButton; - StarPilotButtonsControl *manageColorSchemeButton; - StarPilotButtonsControl *manageDistanceIconPackButton; - StarPilotButtonsControl *manageIconPackButton; - StarPilotButtonsControl *manageSignalAnimationButton; - StarPilotButtonsControl *manageSoundPackButton; - StarPilotButtonsControl *manageWheelIconsButton; - - StarPilotSettingsWindow *parent; - - LabelControl *downloadStatusLabel; - - QDir bootLogosDirectory{"/data/themes/bootlogos/"}; - QDir themePacksDirectory{"/data/themes/theme_packs/"}; - QDir wheelsDirectory{"/data/themes/steering_wheels/"}; - - QString bootLogoToDownload; - QString colorSchemeToDownload; - QString distanceIconPackToDownload; - QString iconPackToDownload; - QString signalAnimationToDownload; - QString soundPackToDownload; - QString wheelToDownload; - - Params params; - Params params_memory{"", true}; -}; diff --git a/starpilot/ui/qt/offroad/utilities.cc b/starpilot/ui/qt/offroad/utilities.cc deleted file mode 100644 index e40e3557b..000000000 --- a/starpilot/ui/qt/offroad/utilities.cc +++ /dev/null @@ -1,192 +0,0 @@ -#include "starpilot/ui/qt/offroad/utilities.h" - -StarPilotUtilitiesPanel::StarPilotUtilitiesPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - ParamControl *debugModeToggle = new ParamControl("DebugMode", tr("Debug Mode"), tr("Use all of StarPilot's developer metrics on your next drive to diagnose issues and improve bug reports."), ""); - if (forceOpenDescriptions) { - debugModeToggle->showDescription(); - } - addItem(debugModeToggle); - - ButtonControl *flashPandaButton = new ButtonControl(tr("Flash Panda"), tr("FLASH"), tr("Flash the latest, official firmware onto your Panda device to restore core functionality, fix bugs, or ensure you have the most up-to-date software.")); - QObject::connect(flashPandaButton, &ButtonControl::clicked, [parent, flashPandaButton, this]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to flash the Panda firmware?"), tr("Flash"), this)) { - std::thread([parent, flashPandaButton, this]() { - parent->keepScreenOn = true; - - flashPandaButton->setEnabled(false); - flashPandaButton->setValue(tr("Flashing...")); - - params_memory.putBool("FlashPanda", true); - while (params_memory.getBool("FlashPanda")) { - util::sleep_for(UI_FREQ); - } - - flashPandaButton->setValue(tr("Flashed!")); - - util::sleep_for(2500); - - flashPandaButton->setValue(tr("Rebooting...")); - - util::sleep_for(2500); - - Hardware::reboot(); - }).detach(); - } - }); - if (forceOpenDescriptions) { - flashPandaButton->showDescription(); - } - addItem(flashPandaButton); - - StarPilotButtonsControl *forceStartedButton = new StarPilotButtonsControl(tr("Force Drive State"), tr("Force openpilot to be offroad or onroad."), "", {tr("OFFROAD"), tr("ONROAD"), tr("OFF")}, true); - QObject::connect(forceStartedButton, &StarPilotButtonsControl::buttonClicked, [this](int id) { - if (id == 0) { - params.putBool("ForceOffroad", true); - params.putBool("ForceOnroad", false); - - updateStarPilotToggles(); - } else if (id == 1) { - params.put("CarParams", params.get("CarParamsPersistent")); - params.put("StarPilotCarParams", params.get("StarPilotCarParamsPersistent")); - - params.putBool("ForceOffroad", false); - params.putBool("ForceOnroad", true); - - updateStarPilotToggles(); - } else if (id == 2) { - params.putBool("ForceOffroad", false); - params.putBool("ForceOnroad", false); - - updateStarPilotToggles(); - } - }); - forceStartedButton->setCheckedButton(2); - if (forceOpenDescriptions) { - forceStartedButton->showDescription(); - } - addItem(forceStartedButton); - - ButtonControl *reportIssueButton = new ButtonControl(tr("Report a Bug or an Issue"), tr("REPORT"), tr("Send a bug report so we can help fix the problem!")); - QObject::connect(reportIssueButton, &ButtonControl::clicked, [this]() { - if (!starpilotUIState()->starpilot_scene.online) { - ConfirmationDialog::alert(tr("Please connect to the internet before sending a report!"), this); - return; - } - - QStringList report_messages = { - tr("Acceleration feels harsh or jerky"), - tr("An alert was unclear and I'm not sure what it meant"), - tr("Braking is too sudden or uncomfortable"), - tr("I'm not sure if this is normal or a bug:"), - tr("My steering wheel buttons aren't working"), - tr("openpilot disengages when I don't expect it"), - tr("openpilot feels sluggish or slow to respond"), - tr("Something else (please describe)") - }; - - if (QFile::exists("/data/error_logs/error.txt")) { - report_messages.prepend(tr("I saw an alert that said \"openpilot crashed\"")); - } - - QString selected_issue = MultiOptionDialog::getSelection(tr("What's going on?"), report_messages, "", this); - if (selected_issue.isEmpty()) { - return; - } - - if (selected_issue.contains("crashed") || selected_issue.contains("not sure") || selected_issue.contains("Something else")) { - QString extra_input = InputDialog::getText(tr("Please describe what's happening"), this, tr("Send Report"), false, 10, "", 300).trimmed(); - if (extra_input.isEmpty()) { - return; - } - selected_issue += " — " + extra_input; - } - - QString discord_user = InputDialog::getText(tr("What's your Discord username?"), this, tr("Send Report"), false, -1, QString::fromStdString(params.get("DiscordUsername"))).trimmed(); - - QJsonObject reportData; - reportData["DiscordUser"] = discord_user; - reportData["Issue"] = selected_issue; - - params.putNonBlocking("DiscordUsername", discord_user.toStdString()); - params_memory.put("IssueReported", QJsonDocument(reportData).toJson(QJsonDocument::Compact).toStdString()); - - ConfirmationDialog::alert(tr("Report Sent! Thanks for letting us know!"), this); - }); - if (forceOpenDescriptions) { - reportIssueButton->showDescription(); - } - addItem(reportIssueButton); - reportIssueButton->setVisible(true); - - ButtonControl *resetTogglesButton = new ButtonControl(tr("Reset Toggles to Default"), tr("RESET"), tr("Reset all toggles to their default values.")); - QObject::connect(resetTogglesButton, &ButtonControl::clicked, [parent, resetTogglesButton, this]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset all toggles to their default values?"), tr("Reset"), this)) { - std::thread([parent, resetTogglesButton, this]() { - parent->keepScreenOn = true; - - resetTogglesButton->setEnabled(false); - resetTogglesButton->setValue(tr("Resetting...")); - - std::vector all_keys = params.allKeys(); - for (const std::string &key : all_keys) { - if (excluded_keys.count(key)) { - continue; - } - std::optional default_value = params.getKeyDefaultValue(key); - if (default_value.has_value()) { - params.put(key, default_value.value()); - } - } - - updateStarPilotToggles(); - - resetTogglesButton->setValue(tr("Reset!")); - - util::sleep_for(2500); - - resetTogglesButton->setValue(""); - }).detach(); - } - }); - if (forceOpenDescriptions) { - resetTogglesButton->showDescription(); - } - addItem(resetTogglesButton); - - ButtonControl *resetTogglesButtonStock = new ButtonControl(tr("Reset Toggles to Stock openpilot"), tr("RESET"), tr("Reset all toggles to match stock openpilot.")); - QObject::connect(resetTogglesButtonStock, &ButtonControl::clicked, [parent, resetTogglesButtonStock, this]() { - if (ConfirmationDialog::confirm(tr("Are you sure you want to reset all toggles to match stock openpilot?"), tr("Reset"), this)) { - std::thread([parent, resetTogglesButtonStock, this]() { - parent->keepScreenOn = true; - - resetTogglesButtonStock->setEnabled(false); - resetTogglesButtonStock->setValue(tr("Resetting...")); - - std::vector all_keys = params.allKeys(); - for (const std::string &key : all_keys) { - if (excluded_keys.count(key)) { - continue; - } - std::optional stock_value = params.getStockValue(key); - if (stock_value.has_value()) { - params.put(key, stock_value.value()); - } - } - - updateStarPilotToggles(); - - resetTogglesButtonStock->setValue(tr("Reset!")); - - util::sleep_for(2500); - - resetTogglesButtonStock->setValue(""); - }).detach(); - } - }); - if (forceOpenDescriptions) { - resetTogglesButtonStock->showDescription(); - } - addItem(resetTogglesButtonStock); -} diff --git a/starpilot/ui/qt/offroad/utilities.h b/starpilot/ui/qt/offroad/utilities.h deleted file mode 100644 index 09e83d9af..000000000 --- a/starpilot/ui/qt/offroad/utilities.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotUtilitiesPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotUtilitiesPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -private: - bool forceOpenDescriptions; - - StarPilotSettingsWindow *parent; - - Params params; - Params params_memory{"", true}; - - std::set excluded_keys = { - "AvailableModels", "AvailableModelNames", "AvailableModelArtifactFormats", "StarPilotStats", - "GithubSshKeys", "GithubUsername", "MapBoxRequests", - "ModelDrivesAndScores", "ModelManifestVersion", "OverpassRequests", "SpeedLimits", - "SpeedLimitsFiltered", "UpdaterAvailableBranches", - }; -}; diff --git a/starpilot/ui/qt/offroad/vehicle_settings.cc b/starpilot/ui/qt/offroad/vehicle_settings.cc deleted file mode 100644 index 2eedb78a5..000000000 --- a/starpilot/ui/qt/offroad/vehicle_settings.cc +++ /dev/null @@ -1,497 +0,0 @@ -#include - -#include "starpilot/ui/qt/offroad/vehicle_settings.h" -#include "system/hardware/hw.h" - -QStringList getCarNames(const QString &carMake, QMap &carModels) { - static const QHash makeToFolder = { - {"acura", "honda"}, - {"audi", "volkswagen"}, - {"buick", "gm"}, - {"cadillac", "gm"}, - {"chevrolet", "gm"}, - {"chrysler", "chrysler"}, - {"cupra", "volkswagen"}, - {"dodge", "chrysler"}, - {"ford", "ford"}, - {"genesis", "hyundai"}, - {"gmc", "gm"}, - {"holden", "gm"}, - {"honda", "honda"}, - {"hyundai", "hyundai"}, - {"jeep", "chrysler"}, - {"kia", "hyundai"}, - {"lexus", "toyota"}, - {"lincoln", "ford"}, - {"man", "volkswagen"}, - {"mazda", "mazda"}, - {"nissan", "nissan"}, - {"peugeot", "psa"}, - {"ram", "chrysler"}, - {"rivian", "rivian"}, - {"seat", "volkswagen"}, - {"Å¡koda", "volkswagen"}, - {"subaru", "subaru"}, - {"tesla", "tesla"}, - {"toyota", "toyota"}, - {"volkswagen", "volkswagen"} - }; - - QStringList carNames; - - const QString folder = makeToFolder.value(carMake.toLower()); - if (folder.isEmpty()) { - return carNames; - } - - QFile file(QString("../../opendbc/car/%1/values.py").arg(folder)); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - return carNames; - } - - QString content = file.readAll(); - file.close(); - - static const QRegularExpression commentRe("#[^\\n]*"); - static const QRegularExpression footnoteRe("footnotes=\\[[^\\]]*\\],\\s*"); - content.remove(commentRe).remove(footnoteRe); - - static const QRegularExpression platformRe("(\\w+)\\s*=\\s*\\w+\\s*\\("); - QRegularExpressionMatchIterator platformIt = platformRe.globalMatch(content); - - QVector> platforms; - while (platformIt.hasNext()) { - QRegularExpressionMatch match = platformIt.next(); - platforms.append({match.capturedStart(), match.captured(1)}); - } - platforms.append({content.length(), QString()}); - - static const QRegularExpression carNameRe("CarDocs\\w*\\s*\\(\\s*\"([^\"]+)\""); - const QString lowerMake = carMake.toLower(); - - for (int i = 0; i < platforms.size() - 1; ++i) { - int start = platforms[i].first; - int end = platforms[i + 1].first; - const QString &platformName = platforms[i].second; - - QRegularExpressionMatchIterator carIt = carNameRe.globalMatch( - content.mid(start, end - start) - ); - - while (carIt.hasNext()) { - QString carName = carIt.next().captured(1); - if (carName.startsWith(carMake, Qt::CaseInsensitive)) { - carModels[carName] = platformName; - carNames.append(carName); - } - } - } - - carNames.sort(Qt::CaseInsensitive); - return carNames; -} - -StarPilotVehiclesPanel::StarPilotVehiclesPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *vehiclesLayout = new QStackedLayout(); - addItem(vehiclesLayout); - - StarPilotListWidget *settingsList = new StarPilotListWidget(this); - - ScrollView *vehiclesPanel = new ScrollView(settingsList, this); - - vehiclesLayout->addWidget(vehiclesPanel); - - QStringList makes = { - "Acura", "Audi", "Buick", "Cadillac", "Chevrolet", "Chrysler", "CUPRA", - "Dodge", "Ford", "Genesis", "GMC", "Holden", "Honda", "Hyundai", "Jeep", - "Kia", "Lexus", "Lincoln", "MAN", "Mazda", "Nissan", "Peugeot", "Ram", - "Rivian", "SEAT", "Å koda", "Subaru", "Tesla", "Toyota", "Volkswagen" - }; - - ButtonControl *selectMakeButton = new ButtonControl(tr("Car Make"), tr("SELECT")); - QObject::connect(selectMakeButton, &ButtonControl::clicked, [makes, selectMakeButton, this]() { - QString makeSelection = MultiOptionDialog::getSelection(tr("Choose your car make"), makes, "", this); - if (!makeSelection.isEmpty()) { - params.put("CarMake", makeSelection.toStdString()); - selectMakeButton->setValue(makeSelection); - } - }); - settingsList->addItem(selectMakeButton); - - ButtonControl *selectModelButton = new ButtonControl(tr("Car Model"), tr("SELECT")); - QObject::connect(selectModelButton, &ButtonControl::clicked, [selectModelButton, this]() { - QString modelSelection = MultiOptionDialog::getSelection(tr("Choose your car model"), getCarNames(QString::fromStdString(params.get("CarMake")).toLower(), carModels), "", this); - if (!modelSelection.isEmpty()) { - params.put("CarModel", carModels.value(modelSelection).toStdString()); - params.put("CarModelName", modelSelection.toStdString()); - selectModelButton->setValue(modelSelection); - } - }); - settingsList->addItem(selectModelButton); - - forceFingerprint = new ParamControl("ForceFingerprint", tr("Disable Automatic Fingerprint Detection"), tr("Force the selected fingerprint and prevent it from ever changing."), ""); - settingsList->addItem(forceFingerprint); - - disableOpenpilotLong = new ParamControl("DisableOpenpilotLongitudinal", tr("Disable openpilot Longitudinal Control"), tr("Disable openpilot longitudinal and use the car's stock ACC instead."), ""); - QObject::connect(disableOpenpilotLong, &ToggleControl::toggleFlipped, [parent, this](bool state) { - if (state) { - if (StarPilotConfirmationDialog::yesorno(tr("Are you sure you want to completely disable openpilot longitudinal control?"), this)) { - if (started) { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - } - } else { - params.putBool("DisableOpenpilotLongitudinal", false); - disableOpenpilotLong->refresh(); - } - } - - parent->updateVariables(); - updateToggles(); - }); - settingsList->addItem(disableOpenpilotLong); - - StarPilotListWidget *chryslerList = new StarPilotListWidget(this); - StarPilotListWidget *gmList = new StarPilotListWidget(this); - StarPilotListWidget *hkgList = new StarPilotListWidget(this); - StarPilotListWidget *subaruList = new StarPilotListWidget(this); - StarPilotListWidget *toyotaList = new StarPilotListWidget(this); - StarPilotListWidget *vehicleInfoList = new StarPilotListWidget(this); - - ScrollView *chryslerPanel = new ScrollView(chryslerList, this); - ScrollView *gmPanel = new ScrollView(gmList, this); - ScrollView *hkgPanel = new ScrollView(hkgList, this); - ScrollView *subaruPanel = new ScrollView(subaruList, this); - ScrollView *toyotaPanel = new ScrollView(toyotaList, this); - ScrollView *vehicleInfoPanel = new ScrollView(vehicleInfoList, this); - - vehiclesLayout->addWidget(chryslerPanel); - vehiclesLayout->addWidget(gmPanel); - vehiclesLayout->addWidget(hkgPanel); - vehiclesLayout->addWidget(subaruPanel); - vehiclesLayout->addWidget(toyotaPanel); - vehiclesLayout->addWidget(vehicleInfoPanel); - - std::vector> vehicleToggles { - {"ChryslerToggles", tr("Chrysler/Jeep Settings"), tr("StarPilot features for Chrysler and Jeep vehicles."), ""}, - {"JeepBrakeHold", tr("Brake Hold"), tr("Hold the brakes after Jeep ACC times out at a stop, then send resume when traffic moves again."), ""}, - - {"GMToggles", tr("General Motors Settings"), tr("StarPilot features for General Motors vehicles."), ""}, - {"GMPedalLongitudinal", tr("Use Pedal For Longitudinal"), tr("Use the pedal interceptor for full longitudinal control on supported GM vehicles."), ""}, - {"GMDashSpoofOffsets", tr("Apply Offsets To Dash Spoof"), tr("On GM pedal-long cars, add the configured set-speed offset to the spoofed dash set speed so it matches the on-screen set speed."), ""}, - {"IgnoreIgnitionLine", tr("Use CAN Ignition Only"), tr("Use CAN ignition only and ignore the physical ignition line in Panda firmware.

    Requires a Panda flash. Use this only on vehicles with reliable CAN ignition when the harness box reports false ignition."), ""}, - {"LongPitch", tr("Smooth Pedal Response on Hills"), tr("Smoothen acceleration and braking when driving downhill/uphill."), ""}, - {"RemoteStartBootsComma", tr("Remote Start Boots comma"), tr("Use the remote-start GM panda firmware at boot.

    Required for GM remote-start startup signal behavior."), ""}, - {"RemapCancelToDistance", tr("Remap Cancel Button"), tr("On pedal-interceptor Bolts, treat the steering-wheel CANCEL button as an extra mappable button."), ""}, - {"VoltSNG", tr("Stop-and-Go Hack"), tr("Force stop-and-go on the 2017 Chevy Volt."), ""}, - - {"HKGToggles", tr("Hyundai/Kia/Genesis Settings"), tr("StarPilot features for Hyundai/Kia/Genesis vehicles."), ""}, - {"HKGRemoteStartBootsComma", tr("EV Remote Climate"), tr("Use the remote-climate Hyundai/Kia/Genesis CAN-FD panda firmware at boot.

    Required for EV remote-climate startup signal behavior."), ""}, - - {"SubaruToggles", tr("Subaru Settings"), tr("StarPilot features for Subaru vehicles."), ""}, - {"SubaruSNG", tr("Stop and Go"), tr("Stop and go for supported Subaru vehicles."), ""}, - {"SubaruSNGManualParkingBrake", tr("Stop and Go for Manual Parking Brake"), tr("Use the manual-parking-brake Subaru stop-and-go strategy.

    Enable this for supported Subaru Global models with a manual handbrake. Keep it off on models with an electric parking brake."), ""}, - - {"ToyotaToggles", tr("Toyota/Lexus Settings"), tr("StarPilot features for Lexus and Toyota vehicles."), ""}, - {"ToyotaDoors", tr("Automatically Lock/Unlock Doors"), tr("Automatically lock/unlock doors when shifting in and out of drive."), ""}, - {"ClusterOffset", tr("Dashboard Speed Offset"), tr("The speed offset openpilot uses to match the speed on the dashboard display."), ""}, - {"LockDoorsTimer", tr("Lock Doors On Ignition Off After"), tr("Automatically lock the doors on ignition off when no one is detected in the front seats."), ""}, - {"SNGHack", tr("Stop-and-Go Hack"), tr("Force stop-and-go on Lexus/Toyota vehicles without stock stop-and-go functionality."), ""}, - - {"VehicleInfo", tr("Vehicle Info"), tr("Information about your vehicle in regards to openpilot support and functionality."), ""}, - {"HardwareDetected", tr("3rd Party Hardware Detected"), tr("Detected 3rd party hardware."), ""}, - {"BlindSpotSupport", tr("Blind Spot Support"), tr("Does openpilot use the vehicle's blind spot data?"), ""}, - {"PedalSupport", tr("comma Pedal Support"), tr("Does your vehicle support the \"comma pedal\"?"), ""}, - {"OpenpilotLongitudinal", tr("openpilot Longitudinal Support"), tr("Can openpilot control the vehicle's acceleration and braking?"), ""}, - {"RadarSupport", tr("Radar Support"), tr("Does openpilot use the vehicle's radar data alongside the device's camera for tracking lead vehicles?"), ""}, - {"SDSUSupport", tr("SDSU Support"), tr("Does your vehicle support \"SDSUs\"?"), ""}, - {"SNGSupport", tr("Stop-and-Go Support"), tr("Does your vehicle support stop-and-go driving?"), ""} - }; - - for (const auto &[param, title, desc, icon] : vehicleToggles) { - AbstractControl *vehicleToggle; - - if (param == "ChryslerToggles") { - ButtonControl *chryslerButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(chryslerButton, &ButtonControl::clicked, [vehiclesLayout, chryslerPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(chryslerPanel); - }); - vehicleToggle = chryslerButton; - - } else if (param == "GMToggles") { - ButtonControl *gmButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(gmButton, &ButtonControl::clicked, [vehiclesLayout, gmPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(gmPanel); - }); - vehicleToggle = gmButton; - - } else if (param == "HKGToggles") { - ButtonControl *hkgButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(hkgButton, &ButtonControl::clicked, [vehiclesLayout, hkgPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(hkgPanel); - }); - vehicleToggle = hkgButton; - - } else if (param == "SubaruToggles") { - ButtonControl *subaruButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(subaruButton, &ButtonControl::clicked, [vehiclesLayout, subaruPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(subaruPanel); - }); - vehicleToggle = subaruButton; - - } else if (param == "ToyotaToggles") { - ButtonControl *toyotaButton = new ButtonControl(title, tr("MANAGE"), desc); - QObject::connect(toyotaButton, &ButtonControl::clicked, [vehiclesLayout, toyotaPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(toyotaPanel); - }); - vehicleToggle = toyotaButton; - } else if (param == "ToyotaDoors") { - std::vector lockToggles{"LockDoors", "UnlockDoors"}; - std::vector lockToggleNames{tr("Lock"), tr("Unlock")}; - vehicleToggle = new StarPilotButtonToggleControl(param, title, desc, icon, lockToggles, lockToggleNames); - } else if (param == "LockDoorsTimer") { - std::map autoLockLabels; - for (int i = 0; i <= 300; ++i) { - autoLockLabels[i] = i == 0 ? tr("Never") : QString::number(i) + tr(" seconds"); - } - vehicleToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 300, QString(), autoLockLabels, 5); - } else if (param == "ClusterOffset") { - std::vector clusterOffsetButton{"Reset"}; - StarPilotParamValueButtonControl *clusterOffsetToggle = new StarPilotParamValueButtonControl(param, title, desc, icon, 1.000, 1.050, "x", std::map(), 0.001, false, {}, clusterOffsetButton, false, false); - QObject::connect(clusterOffsetToggle, &StarPilotParamValueButtonControl::buttonClicked, [clusterOffsetToggle, this]() { - params.putFloat("ClusterOffset", std::stof(params.getKeyDefaultValue("ClusterOffset").value())); - clusterOffsetToggle->refresh(); - }); - vehicleToggle = clusterOffsetToggle; - - } else if (param == "VehicleInfo") { - ButtonControl *VehicleInfoButton = new ButtonControl(title, tr("VIEW"), desc); - QObject::connect(VehicleInfoButton, &ButtonControl::clicked, [vehiclesLayout, vehicleInfoPanel, this]() { - openDescriptions(forceOpenDescriptions, toggles); - vehiclesLayout->setCurrentWidget(vehicleInfoPanel); - }); - vehicleToggle = VehicleInfoButton; - } else if (vehicleInfoKeys.contains(param)) { - vehicleToggle = new LabelControl(title, "", desc); - - } else { - vehicleToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = vehicleToggle; - - if (chryslerKeys.contains(param)) { - chryslerList->addItem(vehicleToggle); - } else if (gmKeys.contains(param)) { - gmList->addItem(vehicleToggle); - } else if (hkgKeys.contains(param)) { - hkgList->addItem(vehicleToggle); - } else if (subaruKeys.contains(param)) { - subaruList->addItem(vehicleToggle); - } else if (toyotaKeys.contains(param)) { - toyotaList->addItem(vehicleToggle); - } else if (vehicleInfoKeys.contains(param)) { - vehicleInfoList->addItem(vehicleToggle); - } else { - settingsList->addItem(vehicleToggle); - - parentKeys.insert(param); - } - - if (ButtonControl *buttonControl = qobject_cast(vehicleToggle)) { - QObject::connect(buttonControl, &ButtonControl::clicked, this, &StarPilotVehiclesPanel::openSubPanel); - } - - QObject::connect(vehicleToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(vehicleToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - static_cast(toggles["LockDoorsTimer"])->setWarning("Warning: openpilot can't detect if keys are still inside the car, so ensure you have a spare key to prevent accidental lockouts!"); - - QSet rebootKeys = {"RemapCancelToDistance"}; - for (const QString &key : rebootKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, [key, this](bool state) { - if (started) { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - } - }); - } - - auto connectPandaFlashToggle = [parent, this](const QString &key, const QString &prompt) { - ParamControl *toggle = static_cast(toggles[key]); - QObject::connect(toggle, &ToggleControl::toggleFlipped, [parent, key, prompt, toggle, this](bool state) { - if (!StarPilotConfirmationDialog::yesorno(prompt, this)) { - params.putBool(key.toStdString(), !state); - toggle->refresh(); - return; - } - - std::thread([parent, this]() { - parent->keepScreenOn = true; - params_memory.putBool("FlashPanda", true); - while (params_memory.getBool("FlashPanda")) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - Hardware::reboot(); - }).detach(); - }); - }; - - connectPandaFlashToggle("IgnoreIgnitionLine", tr("CAN Ignition Only requires a Panda firmware update. Flash the Panda now?")); - connectPandaFlashToggle("HKGRemoteStartBootsComma", tr("EV Remote Climate requires a Panda firmware update. Flash the Panda now?")); - connectPandaFlashToggle("RemoteStartBootsComma", tr("Remote Start requires a Panda firmware update. Flash the Panda now?")); - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(uiState(), &UIState::offroadTransition, [selectMakeButton, selectModelButton, this]() { - std::thread([selectMakeButton, selectModelButton, this]() { - selectMakeButton->setValue(QString::fromStdString(params.get("CarMake", true))); - selectModelButton->setValue(QString::fromStdString(params.get(params.get("CarModelName").empty() ? "CarModel" : "CarModelName", true))); - }).detach(); - }); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [vehiclesLayout, vehiclesPanel, this] { - if (forceOpenDescriptions) { - openDescriptions(forceOpenDescriptions, toggles); - disableOpenpilotLong->showDescription(); - forceFingerprint->showDescription(); - } - vehiclesLayout->setCurrentWidget(vehiclesPanel); - }); - QObject::connect(uiState(), &UIState::uiUpdate, this, &StarPilotVehiclesPanel::updateState); -} - -void StarPilotVehiclesPanel::showEvent(QShowEvent *event) { - if (forceOpenDescriptions) { - disableOpenpilotLong->showDescription(); - forceFingerprint->showDescription(); - } - - QStringList detected; - if (parent->hasPedal) detected << "comma Pedal"; - if (parent->hasSDSU) detected << "SDSU"; - if (parent->hasZSS) detected << "ZSS"; - static_cast(toggles["HardwareDetected"])->setText(detected.isEmpty() ? tr("None") : detected.join(", ")); - - static_cast(toggles["BlindSpotSupport"])->setText(parent->hasBSM ? tr("Yes") : tr("No")); - static_cast(toggles["OpenpilotLongitudinal"])->setText(parent->hasOpenpilotLongitudinal ? tr("Yes") : tr("No")); - static_cast(toggles["PedalSupport"])->setText(parent->canUsePedal ? tr("Yes") : tr("No")); - static_cast(toggles["RadarSupport"])->setText(parent->hasRadar ? tr("Yes") : tr("No")); - static_cast(toggles["SDSUSupport"])->setText(parent->canUseSDSU ? tr("Yes") : tr("No")); - static_cast(toggles["SNGSupport"])->setText(parent->hasSNG ? tr("Yes") : tr("No")); - - updateToggles(); -} - -void StarPilotVehiclesPanel::updateState(const UIState &s) { - if (!isVisible()) { - return; - } - - started = s.scene.started; -} - -void StarPilotVehiclesPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (chryslerKeys.contains(key)) { - setVisible &= parent->isJeep; - } else if (gmKeys.contains(key)) { - setVisible &= parent->isGM; - } else if (hkgKeys.contains(key)) { - setVisible &= parent->isHKGCanFd && parent->hasOpenpilotLongitudinal; - } else if (subaruKeys.contains(key)) { - setVisible &= parent->isSubaru; - } else if (toyotaKeys.contains(key)) { - setVisible &= parent->isToyota; - } else if (vehicleInfoKeys.contains(key)) { - setVisible = true; - } - - if (longitudinalKeys.contains(key)) { - setVisible &= parent->hasOpenpilotLongitudinal; - } - - if (key == "SNGHack") { - setVisible &= !parent->hasSNG; - } - - else if (key == "GMPedalLongitudinal") { - setVisible &= parent->hasPedal || (Hardware::PC() && parent->canUsePedal); - } - - else if (key == "GMDashSpoofOffsets") { - setVisible &= parent->hasPedal || (Hardware::PC() && parent->canUsePedal); - } - - else if (key == "RemapCancelToDistance") { - setVisible &= parent->isBolt && (parent->hasPedal || (Hardware::PC() && parent->canUsePedal)); - } - - else if (key == "SubaruSNG") { - setVisible &= parent->hasSNG; - } - - else if (key == "SubaruSNGManualParkingBrake") { - setVisible &= parent->hasSNG && params.getBool("SubaruSNG"); - } - - else if (key == "VoltSNG") { - setVisible &= parent->isVolt && !parent->hasSNG; - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (chryslerKeys.contains(key)) { - toggles["ChryslerToggles"]->setVisible(true); - } else if (gmKeys.contains(key)) { - toggles["GMToggles"]->setVisible(true); - } else if (hkgKeys.contains(key)) { - toggles["HKGToggles"]->setVisible(true); - } else if (subaruKeys.contains(key)) { - toggles["SubaruToggles"]->setVisible(true); - } else if (toyotaKeys.contains(key)) { - toggles["ToyotaToggles"]->setVisible(true); - } else if (vehicleInfoKeys.contains(key)) { - toggles["VehicleInfo"]->setVisible(true); - } - } - } - - disableOpenpilotLong->setVisible(showAllToggles || ((parent->hasOpenpilotLongitudinal || parent->openpilotLongitudinalControlDisabled) && !parent->hasAlphaLongitudinal && parent->tuningLevel >= parent->starpilotToggleLevels["DisableOpenpilotLongitudinal"].toDouble())); - forceFingerprint->setVisible(showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels["ForceFingerprint"].toDouble()); - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/vehicle_settings.h b/starpilot/ui/qt/offroad/vehicle_settings.h deleted file mode 100644 index 3ebb7f802..000000000 --- a/starpilot/ui/qt/offroad/vehicle_settings.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotVehiclesPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotVehiclesPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateState(const UIState &s); - void updateToggles(); - - bool forceOpenDescriptions; - bool started; - - std::map toggles; - - QSet chryslerKeys = {"JeepBrakeHold"}; - QSet gmKeys = {"GMPedalLongitudinal", "GMDashSpoofOffsets", "IgnoreIgnitionLine", "LongPitch", "RemoteStartBootsComma", "RemapCancelToDistance", "VoltSNG"}; - QSet hkgKeys = {"HKGRemoteStartBootsComma"}; - QSet longitudinalKeys = {"GMDashSpoofOffsets", "LongPitch", "RemapCancelToDistance", "SNGHack", "VoltSNG"}; - QSet subaruKeys = {"SubaruSNG", "SubaruSNGManualParkingBrake"}; - QSet toyotaKeys = {"ClusterOffset", "LockDoorsTimer", "SNGHack", "ToyotaDoors"}; - QSet vehicleInfoKeys = {"BlindSpotSupport", "HardwareDetected", "OpenpilotLongitudinal", "PedalSupport", "RadarSupport", "SDSUSupport", "SNGSupport"}; - - QSet parentKeys; - - StarPilotSettingsWindow *parent; - - ParamControl *disableOpenpilotLong; - ParamControl *forceFingerprint; - - Params params; - Params params_memory{"", true}; - - QMap carModels; -}; diff --git a/starpilot/ui/qt/offroad/visual_settings.cc b/starpilot/ui/qt/offroad/visual_settings.cc deleted file mode 100644 index af9b20ab4..000000000 --- a/starpilot/ui/qt/offroad/visual_settings.cc +++ /dev/null @@ -1,353 +0,0 @@ -#include "starpilot/ui/qt/offroad/visual_settings.h" - -StarPilotVisualsPanel::StarPilotVisualsPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - QStackedLayout *visualsLayout = new QStackedLayout(); - addItem(visualsLayout); - - StarPilotListWidget *visualsList = new StarPilotListWidget(this); - - ScrollView *visualsPanel = new ScrollView(visualsList, this); - - visualsLayout->addWidget(visualsPanel); - - StarPilotListWidget *advancedCustomList = new StarPilotListWidget(this); - StarPilotListWidget *customUIList = new StarPilotListWidget(this); - StarPilotListWidget *modelUIList = new StarPilotListWidget(this); - StarPilotListWidget *navigationUIList = new StarPilotListWidget(this); - StarPilotListWidget *qualityOfLifeList = new StarPilotListWidget(this); - - ScrollView *advancedCustomPanel = new ScrollView(advancedCustomList, this); - ScrollView *customUIPanel = new ScrollView(customUIList, this); - ScrollView *modelUIPanel = new ScrollView(modelUIList, this); - ScrollView *navigationUIPanel = new ScrollView(navigationUIList, this); - ScrollView *qualityOfLifePanel = new ScrollView(qualityOfLifeList, this); - - visualsLayout->addWidget(advancedCustomPanel); - visualsLayout->addWidget(customUIPanel); - visualsLayout->addWidget(modelUIPanel); - visualsLayout->addWidget(navigationUIPanel); - visualsLayout->addWidget(qualityOfLifePanel); - - const std::vector> visualToggles { - {"AdvancedCustomUI", tr("Advanced UI Controls"), tr("Advanced visual changes to fine-tune how the driving screen looks."), "../../starpilot/assets/toggle_icons/icon_advanced_device.png"}, - {"HideSpeed", tr("Hide Current Speed"), tr("Hide the current speed from the driving screen."), ""}, - {"HideLeadMarker", tr("Hide Lead Marker"), tr("Hide the lead-vehicle marker from the driving screen."), ""}, - {"HideMaxSpeed", tr("Hide Max Speed"), tr("Hide the max speed from the driving screen."), ""}, - {"HideAlerts", tr("Hide Non-Critical Alerts"), tr("Hide non-critical alerts from the driving screen."), ""}, - {"HideChangingLanesBanner", tr("Hide Changing Lanes Banner"), tr("Hide the 'Changing Lanes' banner from the driving screen."), ""}, - {"HideDistanceProfileBanner", tr("Hide Distance Profile Banner"), tr("Hide the driving personality banner when changing distance profiles."), ""}, - {"HideDMIcon", tr("Hide Driver Monitoring Icon"), tr("Hide the driver monitoring icon from the driving screen."), ""}, - {"HideTurningBanner", tr("Hide Turning Banner"), tr("Hide the 'Turning Left/Right' banner from the driving screen."), ""}, - {"HideSpeedLimit", tr("Hide Speed Limits"), tr("Hide posted speed limits from the driving screen."), ""}, - {"HideSteeringWheel", tr("Hide Steering Wheel"), tr("Hide the steering-wheel button from the top-right of the driving screen."), ""}, - {"WheelSpeed", tr("Use Wheel Speed"), tr("Use the vehicle's wheel speed instead of the cluster speed. This is purely a visual change and doesn't impact how openpilot drives!"), ""}, - - {"CustomUI", tr("Driving Screen Widgets"), tr("Custom StarPilot widgets for the driving screen."), "../assets/icons/calibration.png"}, - {"AccelerationPath", tr("Acceleration Path"), tr("Color the driving path by planned acceleration and braking."), ""}, - {"AdjacentPath", tr("Adjacent Lanes"), tr("Show the driving paths for the left and right lanes."), ""}, - {"BlindSpotPath", tr("Blind Spot Path"), tr("Show a red path when a vehicle is in that lane's blind spot."), ""}, - {"Compass", tr("Compass"), tr("Show the current driving direction with a simple on-screen compass."), ""}, - {"OnroadDistanceButton", tr("Driving Personality Button"), tr("Control and view the current driving personality via a driving screen widget."), ""}, - {"PedalsOnUI", tr("Gas / Brake Pedal Indicators"), tr("On-screen gas and brake indicators.

    Dynamic: Opacity changes according to how much openpilot is accelerating or braking
    Static: Full when active, dim when not"), ""}, - {"RotatingWheel", tr("Rotating Steering Wheel"), tr("Rotate the driving screen wheel with the physical steering wheel."), ""}, - - {"ModelUI", tr("Model UI"), tr("Model visualizations for the driving path, lane lines, path edges, and road edges."), "../../starpilot/assets/toggle_icons/icon_road.png"}, - {"DynamicPathWidth", tr("Dynamic Path Width"), tr("Change the path width based on engagement.

    Fully Engaged: 100%
    Always On Lateral: 75%
    Disengaged: 50%"), ""}, - {"LaneLinesWidth", tr("Lane Lines Width"), tr("Set the lane-line thickness.

    Default matches the MUTCD lane-line width standard of 4 inches."), ""}, - {"PathEdgeWidth", tr("Path Edges Width"), tr("Set the driving-path edge width that represents different driving modes and statuses.

    Default is 20% of the total path width.

    Color Guide:

    - Light Blue: Always On Lateral
    - Green: Default
    - Orange: Experimental Mode
    - Red: Traffic Mode
    - Yellow: Conditional Experimental Mode overridden"), ""}, - {"PathWidth", tr("Path Width"), tr("Set the driving-path width.

    Default (6.1 feet) matches the width of a 2019 Lexus ES 350."), ""}, - {"RoadEdgesWidth", tr("Road Edges Width"), tr("Set the road-edge thickness.

    Default matches half of the MUTCD lane-line width standard of 4 inches."), ""}, - - {"NavigationUI", tr("Navigation Widgets"), tr("Speed limits, and other navigation widgets."), "../../starpilot/assets/toggle_icons/icon_map.png"}, - {"ClearNavOnOffroad", tr("Clear Route When Offroad"), tr("Clear the active navigation destination when the device goes offroad."), ""}, - {"RoadNameUI", tr("Road Name"), tr("Display the road name at the bottom of the driving screen using data from \"OpenStreetMap (OSM)\"."), ""}, - {"ShowSpeedLimits", tr("Show Speed Limits"), tr("Show speed limits in the top-left corner of the driving screen. Uses data from the car's dashboard (if supported) and \"OpenStreetMap (OSM)\"."), ""}, - {"SLCMapboxFiller", tr("Show Speed Limits from Mapbox"), tr("Use Mapbox speed-limit data when no other source is available."), ""}, - {"UseVienna", tr("Use Vienna-Style Speed Signs"), tr("Show Vienna-style (EU) speed-limit signs instead of MUTCD (US)."), ""}, - - {"QOLVisuals", tr("Quality of Life"), tr("Miscellaneous visual changes to fine-tune how the driving screen looks."), "../../starpilot/assets/toggle_icons/icon_quality_of_life.png"}, - {"CameraView", tr("Camera View"), tr("Select the active camera view. This is purely a visual change and doesn't impact how openpilot drives!"), ""}, - {"DriverCamera", tr("Show Driver Camera When In Reverse"), tr("Show the driver camera feed when the vehicle is in reverse."), ""}, - {"StoppedTimer", tr("Stopped Timer"), tr("Show a timer when stopped in place of the current speed to indicate how long the vehicle has been stopped."), ""}, - {"StockConfidenceBallWidget", tr("Stock Confidence Ball Widget"), tr("Use the original moving confidence ball on the small comma 4 UI instead of the fixed confidence, CEM/CCM, and personality sidebar."), ""}, - - {"DisableWideRoad", tr("Disable Wide Road Camera"), QString("%1

    %2").arg(tr("Only enable this if the wide camera is broken or for development!")).arg(tr("Disabling the wide camera may degrade driving performance and cause instability.

    Requires a reboot to take effect.")), "../../starpilot/assets/toggle_icons/icon_advanced_device.png"} - }; - - for (const auto &[param, title, desc, icon] : visualToggles) { - AbstractControl *visualToggle; - - if (param == "AdvancedCustomUI") { - StarPilotManageControl *advancedCustomUIToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(advancedCustomUIToggle, &StarPilotManageControl::manageButtonClicked, [visualsLayout, advancedCustomPanel]() { - visualsLayout->setCurrentWidget(advancedCustomPanel); - }); - visualToggle = advancedCustomUIToggle; - - } else if (param == "CustomUI") { - StarPilotManageControl *customUIToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(customUIToggle, &StarPilotManageControl::manageButtonClicked, [visualsLayout, customUIPanel]() { - visualsLayout->setCurrentWidget(customUIPanel); - }); - visualToggle = customUIToggle; - } else if (param == "PedalsOnUI") { - std::vector pedalsToggles{"DynamicPedalsOnUI", "StaticPedalsOnUI"}; - std::vector pedalsToggleNames{tr("Dynamic"), tr("Static")}; - StarPilotButtonToggleControl *pedalsToggle = new StarPilotButtonToggleControl(param, title, desc, icon, pedalsToggles, pedalsToggleNames, true); - QObject::connect(pedalsToggle, &StarPilotButtonToggleControl::buttonClicked, [this](int id) { - if (id == 0) { - params.putBool("StaticPedalsOnUI", false); - } else if (id == 1) { - params.putBool("DynamicPedalsOnUI", false); - } - }); - visualToggle = pedalsToggle; - - } else if (param == "ModelUI") { - StarPilotManageControl *modelUIToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(modelUIToggle, &StarPilotManageControl::manageButtonClicked, [visualsLayout, modelUIPanel]() { - visualsLayout->setCurrentWidget(modelUIPanel); - }); - visualToggle = modelUIToggle; - } else if (param == "LaneLinesWidth" || param == "RoadEdgesWidth") { - visualToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 24, tr(" inches")); - } else if (param == "PathEdgeWidth") { - std::map pathEdgeLabels; - for (int i = 0; i <= 100; ++i) { - pathEdgeLabels[i] = i == 0 ? tr("Off") : QString::number(i) + "%"; - } - visualToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 100, QString(), pathEdgeLabels); - } else if (param == "PathWidth") { - visualToggle = new StarPilotParamValueControl(param, title, desc, icon, 0, 10, tr(" feet"), std::map(), 0.1); - - } else if (param == "NavigationUI") { - StarPilotManageControl *navigationUIToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(navigationUIToggle, &StarPilotManageControl::manageButtonClicked, [visualsLayout, navigationUIPanel]() { - visualsLayout->setCurrentWidget(navigationUIPanel); - }); - visualToggle = navigationUIToggle; - - } else if (param == "QOLVisuals") { - StarPilotManageControl *qolToggle = new StarPilotManageControl(param, title, desc, icon); - QObject::connect(qolToggle, &StarPilotManageControl::manageButtonClicked, [visualsLayout, qualityOfLifePanel]() { - visualsLayout->setCurrentWidget(qualityOfLifePanel); - }); - visualToggle = qolToggle; - } else if (param == "CameraView") { - std::vector cameraOptions{tr("Auto"), tr("Driver"), tr("Standard"), tr("Wide"), tr("None")}; - ButtonParamControl *cameraSelection = new ButtonParamControl(param, title, desc, icon, cameraOptions); - visualToggle = cameraSelection; - - } else { - visualToggle = new ParamControl(param, title, desc, icon); - } - - toggles[param] = visualToggle; - - if (advancedCustomOnroadUIKeys.contains(param)) { - advancedCustomList->addItem(visualToggle); - } else if (customOnroadUIKeys.contains(param)) { - customUIList->addItem(visualToggle); - } else if (modelUIKeys.contains(param)) { - modelUIList->addItem(visualToggle); - } else if (navigationUIKeys.contains(param)) { - navigationUIList->addItem(visualToggle); - } else if (qualityOfLifeKeys.contains(param)) { - qualityOfLifeList->addItem(visualToggle); - } else { - visualsList->addItem(visualToggle); - - parentKeys.insert(param); - } - - if (StarPilotManageControl *frogPilotManageToggle = qobject_cast(visualToggle)) { - QObject::connect(frogPilotManageToggle, &StarPilotManageControl::manageButtonClicked, [this]() { - emit openSubPanel(); - openDescriptions(forceOpenDescriptions, toggles); - }); - } - - QObject::connect(visualToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(visualToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - if (ToggleControl *toggle = qobject_cast(visualToggle)) { - QObject::connect(toggle, &ToggleControl::toggleFlipped, this, []() { - updateStarPilotToggles(); - }); - } - } - - QSet forceUpdateKeys = {"HideLeadMarker", "ShowSpeedLimits"}; - for (const QString &key : forceUpdateKeys) { - QObject::connect(static_cast(toggles[key]), &ToggleControl::toggleFlipped, this, &StarPilotVisualsPanel::updateToggles); - } - - static_cast(toggles["DisableWideRoad"])->setConfirmation(true, false); - QObject::connect(static_cast(toggles["DisableWideRoad"]), &ToggleControl::toggleFlipped, [this](bool state) { - if (StarPilotConfirmationDialog::toggleReboot(this)) { - Hardware::reboot(); - } - }); - - openDescriptions(forceOpenDescriptions, toggles); - - QObject::connect(parent, &StarPilotSettingsWindow::closeSubPanel, [visualsLayout, visualsPanel, this] { - openDescriptions(forceOpenDescriptions, toggles); - visualsLayout->setCurrentWidget(visualsPanel); - }); - QObject::connect(parent, &StarPilotSettingsWindow::closeSubSubPanel, [this]() { - openDescriptions(forceOpenDescriptions, toggles); - }); - QObject::connect(parent, &StarPilotSettingsWindow::updateMetric, this, &StarPilotVisualsPanel::updateMetric); -} - -void StarPilotVisualsPanel::showEvent(QShowEvent *event) { - updateToggles(); -} - -void StarPilotVisualsPanel::updateMetric(bool metric, bool bootRun) { - static bool previousMetric; - if (metric != previousMetric && !bootRun) { - double distanceConversion = metric ? FOOT_TO_METER : METER_TO_FOOT; - double smallDistanceConversion = metric ? INCH_TO_CM : CM_TO_INCH; - - params.putIntNonBlocking("LaneLinesWidth", params.getInt("LaneLinesWidth") * smallDistanceConversion); - params.putIntNonBlocking("RoadEdgesWidth", params.getInt("RoadEdgesWidth") * smallDistanceConversion); - - params.putFloatNonBlocking("PathWidth", params.getFloat("PathWidth") * distanceConversion); - } - previousMetric = metric; - - static std::map imperialDistanceLabels; - static std::map imperialSmallDistanceLabels; - static std::map metricDistanceLabels; - static std::map metricSmallDistanceLabels; - - static bool labelsInitialized = false; - if (!labelsInitialized) { - for (int i = 0; i <= 10; ++i) { - imperialDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" foot") : QString::number(i) + tr(" feet"); - } - - for (int i = 0; i <= 24; ++i) { - imperialSmallDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" inch") : QString::number(i) + tr(" inches"); - } - - for (float i = 0.0f; i <= 3.0f; i += 0.1f) { - metricDistanceLabels[i] = i == 0.0f ? tr("Off") : i == 1.0 ? QString::number(i) + tr(" meter") : QString::number(i, 'f', 1) + tr(" meters"); - } - - for (int i = 0; i <= 60; ++i) { - metricSmallDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" centimeter") : QString::number(i) + tr(" centimeters"); - } - - labelsInitialized = true; - } - - StarPilotParamValueControl *laneLinesWidthToggle = static_cast(toggles["LaneLinesWidth"]); - StarPilotParamValueControl *pathWidthToggle = static_cast(toggles["PathWidth"]); - StarPilotParamValueControl *roadEdgesWidthToggle = static_cast(toggles["RoadEdgesWidth"]); - - if (metric) { - laneLinesWidthToggle->setDescription(tr("Set the lane-line thickness.

    Default matches the MUTCD lane-line width standard of 10 centimeters.")); - pathWidthToggle->setDescription(tr("Set the driving-path width.

    Default (1.9 meters) matches the width of a 2019 Lexus ES 350.")); - roadEdgesWidthToggle->setDescription(tr("Set the road-edge thickness.

    Default matches half of the MUTCD lane-line width standard of 10 centimeters.")); - - laneLinesWidthToggle->updateControl(0, 60, metricSmallDistanceLabels); - roadEdgesWidthToggle->updateControl(0, 60, metricSmallDistanceLabels); - - pathWidthToggle->updateControl(0, 3, metricDistanceLabels); - } else { - laneLinesWidthToggle->setDescription(tr("Set the lane-line thickness.

    Default matches the MUTCD lane-line width standard of 4 inches.")); - pathWidthToggle->setDescription(tr("Set the driving-path width.

    Default (6.1 feet) matches the width of a 2019 Lexus ES 350.")); - roadEdgesWidthToggle->setDescription(tr("Set the road-edge thickness.

    Default matches half of the MUTCD lane-line width standard of 4 inches.")); - - laneLinesWidthToggle->updateControl(0, 24, imperialSmallDistanceLabels); - roadEdgesWidthToggle->updateControl(0, 24, imperialSmallDistanceLabels); - - pathWidthToggle->updateControl(0, 10, imperialDistanceLabels); - } -} - -void StarPilotVisualsPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - toggle->setVisible(showAllToggles); - } - } - - for (auto &[key, toggle] : toggles) { - if (parentKeys.contains(key)) { - continue; - } - - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles) { - if (key == "AccelerationPath") { - setVisible &= parent->hasOpenpilotLongitudinal; - } - - else if (key == "BlindSpotPath") { - setVisible &= parent->hasBSM; - } - - else if (key == "HideLeadMarker") { - setVisible &= parent->hasOpenpilotLongitudinal; - } - - else if (key == "HideSpeedLimit") { - setVisible &= parent->hasOpenpilotLongitudinal && params.getBool("SpeedLimitController"); - } - - else if (key == "OnroadDistanceButton") { - setVisible &= parent->hasOpenpilotLongitudinal; - } - - else if (key == "PedalsOnUI") { - setVisible &= parent->hasOpenpilotLongitudinal; - } - - else if (key == "ShowSpeedLimits") { - setVisible &= !params.getBool("SpeedLimitController") || !parent->hasOpenpilotLongitudinal; - } - - else if (key == "SLCMapboxFiller") { - setVisible &= params.getBool("ShowSpeedLimits"); - setVisible &= !params.getBool("SpeedLimitController") || !parent->hasOpenpilotLongitudinal; - setVisible &= !params.get("MapboxSecretKey").empty(); - } - - else if (key == "UseVienna") { - setVisible &= params.getBool("ShowSpeedLimits") || params.getBool("SpeedLimitController"); - } - } - - toggle->setVisible(setVisible); - - if (setVisible) { - if (advancedCustomOnroadUIKeys.contains(key)) { - toggles["AdvancedCustomUI"]->setVisible(true); - } else if (customOnroadUIKeys.contains(key)) { - toggles["CustomUI"]->setVisible(true); - } else if (modelUIKeys.contains(key)) { - toggles["ModelUI"]->setVisible(true); - } else if (navigationUIKeys.contains(key)) { - toggles["NavigationUI"]->setVisible(true); - } else if (qualityOfLifeKeys.contains(key)) { - toggles["QOLVisuals"]->setVisible(true); - } - } - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/visual_settings.h b/starpilot/ui/qt/offroad/visual_settings.h deleted file mode 100644 index 615b05bb3..000000000 --- a/starpilot/ui/qt/offroad/visual_settings.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotVisualsPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotVisualsPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -signals: - void openSubPanel(); - void openSubSubPanel(); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateMetric(bool metric, bool bootRun); - void updateToggles(); - - bool forceOpenDescriptions; - - std::map toggles; - - QSet advancedCustomOnroadUIKeys = {"HideAlerts", "HideChangingLanesBanner", "HideDistanceProfileBanner", "HideDMIcon", "HideLeadMarker", "HideMaxSpeed", "HideSpeed", "HideSpeedLimit", "HideSteeringWheel", "HideTurningBanner", "WheelSpeed"}; - QSet customOnroadUIKeys = {"AccelerationPath", "AdjacentPath", "BlindSpotPath", "Compass", "OnroadDistanceButton", "PedalsOnUI", "RotatingWheel"}; - QSet modelUIKeys = {"DynamicPathWidth", "LaneLinesWidth", "PathEdgeWidth", "PathWidth", "RoadEdgesWidth"}; - QSet navigationUIKeys = {"RoadNameUI", "ShowSpeedLimits", "SLCMapboxFiller", "UseVienna"}; - QSet qualityOfLifeKeys = {"CameraView", "DriverCamera", "StoppedTimer", "StockConfidenceBallWidget"}; - - QSet parentKeys; - - StarPilotSettingsWindow *parent; - - Params params; -}; diff --git a/starpilot/ui/qt/offroad/wheel_settings.cc b/starpilot/ui/qt/offroad/wheel_settings.cc deleted file mode 100644 index 4cd05de82..000000000 --- a/starpilot/ui/qt/offroad/wheel_settings.cc +++ /dev/null @@ -1,188 +0,0 @@ -#include "starpilot/ui/qt/offroad/wheel_settings.h" - -namespace { - -QMap getWheelFunctionsMap() { - return { - {0, QObject::tr("No Action")}, - {3, QObject::tr("Pause Steering")}, - {7, QObject::tr("Toggle \"Switchback Mode\" On/Off")}, - {8, QObject::tr("Create Bookmark")}, - {11, QObject::tr("Favorite #1")}, - {12, QObject::tr("Favorite #2")}, - {13, QObject::tr("Favorite #3")}, - }; -} - -QMap getLongitudinalWheelFunctionsMap() { - return { - {1, QObject::tr("Change \"Personality Profile\"")}, - {2, QObject::tr("Force openpilot to Coast")}, - {4, QObject::tr("Pause Acceleration/Braking")}, - {5, QObject::tr("Toggle \"Experimental Mode\" On/Off")}, - {6, QObject::tr("Toggle \"Traffic Mode\" On/Off")}, - }; -} - -QMap getMergedWheelFunctionsMap() { - QMap functionsMap = getWheelFunctionsMap(); - const QMap longitudinalFunctionsMap = getLongitudinalWheelFunctionsMap(); - for (auto it = longitudinalFunctionsMap.constBegin(); it != longitudinalFunctionsMap.constEnd(); ++it) { - functionsMap[it.key()] = it.value(); - } - return functionsMap; -} - -QMap getMainCruiseFunctionsMap() { - return { - {0, QObject::tr("No Action")}, - {9, QObject::tr("Toggle Always On Lateral")}, - {10, QObject::tr("Adopt Current Speed Limit")}, - {11, QObject::tr("Favorite #1")}, - {12, QObject::tr("Favorite #2")}, - {13, QObject::tr("Favorite #3")}, - }; -} - -QString getWheelFunctionLabel(Params ¶ms, const QString &key) { - QMap functionsMap; - if (key == "MainCruiseButtonControl") { - functionsMap = getMainCruiseFunctionsMap(); - } else { - functionsMap = getMergedWheelFunctionsMap(); - if (key == "LKASButtonControl") { - functionsMap[9] = QObject::tr("Toggle Always On Lateral"); - } - } - return functionsMap.value(params.getInt(key.toStdString()), QObject::tr("No Action")); -} - -} // namespace - -StarPilotWheelPanel::StarPilotWheelPanel(StarPilotSettingsWindow *parent, bool forceOpen) : StarPilotListWidget(parent), parent(parent) { - forceOpenDescriptions = forceOpen; - - ParamControl *nostalgiaModeToggle = new ParamControl( - "NostalgiaMode", - tr("Nostalgia Mode"), - tr("Use the left paddle to pause openpilot acceleration and braking while Always On Lateral stays active on supported Hyundai CAN-FD cars."), - "../../starpilot/assets/toggle_icons/icon_mute.png" - ); - toggles["NostalgiaMode"] = nostalgiaModeToggle; - addItem(nostalgiaModeToggle); - QObject::connect(nostalgiaModeToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(nostalgiaModeToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - - const std::vector> wheelToggles { - {"CancelButtonControl", tr("Cancel Button"), tr("Action performed when the remapped \"Cancel\" button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"DistanceButtonControl", tr("Distance Button"), tr("Action performed when the \"Distance\" button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"LongCancelButtonControl", tr("Cancel Button (Long Press)"), tr("Action performed when the remapped \"Cancel\" button is pressed for more than 0.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"LongDistanceButtonControl", tr("Distance Button (Long Press)"), tr("Action performed when the \"Distance\" button is pressed for more than 0.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"VeryLongCancelButtonControl", tr("Cancel Button (Very Long Press)"), tr("Action performed when the remapped \"Cancel\" button is pressed for more than 2.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"VeryLongDistanceButtonControl", tr("Distance Button (Very Long Press)"), tr("Action performed when the \"Distance\" button is pressed for more than 2.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"LKASButtonControl", tr("LKAS Button"), tr("Action performed when the \"LKAS\" button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"MainCruiseButtonControl", tr("CC Main Button"), tr("Action performed when the cruise control main button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"ModeButtonControl", tr("Mode Button"), tr("Action performed when the \"Mode\" button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"LongModeButtonControl", tr("Mode Button (Long Press)"), tr("Action performed when the \"Mode\" button is pressed for more than 0.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"VeryLongModeButtonControl", tr("Mode Button (Very Long Press)"), tr("Action performed when the \"Mode\" button is pressed for more than 2.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"StarButtonControl", tr("Star Button"), tr("Action performed when the \"Star\" button is pressed."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"LongStarButtonControl", tr("Star Button (Long Press)"), tr("Action performed when the \"Star\" button is pressed for more than 0.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"}, - {"VeryLongStarButtonControl", tr("Star Button (Very Long Press)"), tr("Action performed when the \"Star\" button is pressed for more than 2.5 seconds."), "../../starpilot/assets/toggle_icons/icon_mute.png"} - }; - - for (const auto &[param, title, desc, icon] : wheelToggles) { - ButtonControl *wheelToggle = new ButtonControl(title, tr("SELECT"), desc); - QObject::connect(wheelToggle, &ButtonControl::clicked, [key = param, parent, wheelToggle, this]() { - QMap functionsMap; - if (key == "MainCruiseButtonControl") { - functionsMap = getMainCruiseFunctionsMap(); - } else { - functionsMap = getWheelFunctionsMap(); - if (parent->hasOpenpilotLongitudinal) { - const QMap longitudinalFunctionsMap = getLongitudinalWheelFunctionsMap(); - for (auto it = longitudinalFunctionsMap.constBegin(); it != longitudinalFunctionsMap.constEnd(); ++it) { - functionsMap[it.key()] = it.value(); - } - } - if (key == "LKASButtonControl") { - functionsMap[9] = tr("Toggle Always On Lateral"); - } - } - - QString selection = MultiOptionDialog::getSelection(tr("Select a function to assign to this button"), functionsMap.values(), functionsMap[params.getInt(key.toStdString())], this); - if (!selection.isEmpty()) { - params.putInt(key.toStdString(), functionsMap.key(selection)); - wheelToggle->setValue(selection); - updateStarPilotToggles(); - } - }); - wheelToggle->setValue(getWheelFunctionLabel(params, param)); - - toggles[param] = wheelToggle; - - addItem(wheelToggle); - - QObject::connect(wheelToggle, &AbstractControl::hideDescriptionEvent, [this]() { - update(); - }); - QObject::connect(wheelToggle, &AbstractControl::showDescriptionEvent, [this]() { - update(); - }); - } - - openDescriptions(forceOpenDescriptions, toggles); -} - -void StarPilotWheelPanel::showEvent(QShowEvent *event) { - updateToggles(); -} - -void StarPilotWheelPanel::updateToggles() { - const bool showAllToggles = parent->showAllTogglesEnabled(); - - for (auto &[key, toggle] : toggles) { - bool setVisible = showAllToggles || parent->tuningLevel >= parent->starpilotToggleLevels[key].toDouble(); - - if (!showAllToggles && key == "LKASButtonControl") { - setVisible &= !parent->isSubaru; - } - - if (!showAllToggles && ( - key == "CancelButtonControl" || - key == "LongCancelButtonControl" || - key == "VeryLongCancelButtonControl")) { - setVisible &= parent->isBolt; - setVisible &= parent->hasPedal; - setVisible &= params.getBool("RemapCancelToDistance"); - } - - if (!showAllToggles && key == "NostalgiaMode") { - setVisible &= parent->isHKGCanFd; - setVisible &= parent->hasOpenpilotLongitudinal; - } - - if (!showAllToggles && ( - key == "ModeButtonControl" || - key == "LongModeButtonControl" || - key == "VeryLongModeButtonControl" || - key == "StarButtonControl" || - key == "LongStarButtonControl" || - key == "VeryLongStarButtonControl")) { - setVisible &= parent->hasModeStarButtons; - } - - if (ButtonControl *wheelToggle = qobject_cast(toggle)) { - wheelToggle->setValue(getWheelFunctionLabel(params, key)); - } - - toggle->setVisible(setVisible); - } - - openDescriptions(forceOpenDescriptions, toggles); - - update(); -} diff --git a/starpilot/ui/qt/offroad/wheel_settings.h b/starpilot/ui/qt/offroad/wheel_settings.h deleted file mode 100644 index a8995bcd1..000000000 --- a/starpilot/ui/qt/offroad/wheel_settings.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "starpilot/ui/qt/offroad/starpilot_settings.h" - -class StarPilotWheelPanel : public StarPilotListWidget { - Q_OBJECT - -public: - explicit StarPilotWheelPanel(StarPilotSettingsWindow *parent, bool forceOpen = false); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void updateToggles(); - - bool forceOpenDescriptions; - - std::map toggles; - - StarPilotSettingsWindow *parent; - - Params params; -}; diff --git a/starpilot/ui/qt/onroad/moc_starpilot_annotated_camera.cc b/starpilot/ui/qt/onroad/moc_starpilot_annotated_camera.cc deleted file mode 100644 index f48e05851..000000000 --- a/starpilot/ui/qt/onroad/moc_starpilot_annotated_camera.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_annotated_camera.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_annotated_camera.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_annotated_camera.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotAnnotatedCameraWidget_t { - QByteArrayData data[1]; - char stringdata0[31]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotAnnotatedCameraWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotAnnotatedCameraWidget_t qt_meta_stringdata_StarPilotAnnotatedCameraWidget = { - { -QT_MOC_LITERAL(0, 0, 30) // "StarPilotAnnotatedCameraWidget" - - }, - "StarPilotAnnotatedCameraWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotAnnotatedCameraWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotAnnotatedCameraWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotAnnotatedCameraWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_StarPilotAnnotatedCameraWidget.data, - qt_meta_data_StarPilotAnnotatedCameraWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotAnnotatedCameraWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotAnnotatedCameraWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotAnnotatedCameraWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int StarPilotAnnotatedCameraWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/onroad/moc_starpilot_buttons.cc b/starpilot/ui/qt/onroad/moc_starpilot_buttons.cc deleted file mode 100644 index 1ef1dcc5a..000000000 --- a/starpilot/ui/qt/onroad/moc_starpilot_buttons.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_buttons.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_buttons.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_buttons.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DrivingPersonalityButton_t { - QByteArrayData data[1]; - char stringdata0[25]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DrivingPersonalityButton_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DrivingPersonalityButton_t qt_meta_stringdata_DrivingPersonalityButton = { - { -QT_MOC_LITERAL(0, 0, 24) // "DrivingPersonalityButton" - - }, - "DrivingPersonalityButton" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DrivingPersonalityButton[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void DrivingPersonalityButton::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject DrivingPersonalityButton::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_DrivingPersonalityButton.data, - qt_meta_data_DrivingPersonalityButton, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DrivingPersonalityButton::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DrivingPersonalityButton::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DrivingPersonalityButton.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int DrivingPersonalityButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/onroad/moc_starpilot_onroad.cc b/starpilot/ui/qt/onroad/moc_starpilot_onroad.cc deleted file mode 100644 index e37db6a17..000000000 --- a/starpilot/ui/qt/onroad/moc_starpilot_onroad.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_onroad.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_onroad.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_onroad.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotOnroadWindow_t { - QByteArrayData data[1]; - char stringdata0[22]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotOnroadWindow_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotOnroadWindow_t qt_meta_stringdata_StarPilotOnroadWindow = { - { -QT_MOC_LITERAL(0, 0, 21) // "StarPilotOnroadWindow" - - }, - "StarPilotOnroadWindow" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotOnroadWindow[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotOnroadWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotOnroadWindow::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_StarPilotOnroadWindow.data, - qt_meta_data_StarPilotOnroadWindow, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotOnroadWindow::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotOnroadWindow::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotOnroadWindow.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int StarPilotOnroadWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/onroad/starpilot_annotated_camera.cc b/starpilot/ui/qt/onroad/starpilot_annotated_camera.cc deleted file mode 100644 index 9aaf00ae9..000000000 --- a/starpilot/ui/qt/onroad/starpilot_annotated_camera.cc +++ /dev/null @@ -1,1297 +0,0 @@ -#include - -#include "starpilot/ui/qt/onroad/starpilot_annotated_camera.h" - -StarPilotAnnotatedCameraWidget::StarPilotAnnotatedCameraWidget(QWidget *parent) : QWidget(parent) { - animationTimer = new QTimer(this); - - QSize iconSize(img_size / 4, img_size / 4); - - brakePedalImg = loadPixmap("../../starpilot/assets/other_images/brake_pedal.png", {btn_size, btn_size}); - curveSpeedIcon = loadPixmap("../../starpilot/assets/other_images/curve_speed.png", {btn_size, btn_size}); - curveSpeedIconFlipped = curveSpeedIcon.transformed(QTransform().scale(-1, 1)); - dashboardIcon = loadPixmap("../../starpilot/assets/other_images/dashboard_icon.png", {btn_size / 2, btn_size / 2}).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - gasPedalImg = loadPixmap("../../starpilot/assets/other_images/gas_pedal.png", {btn_size, btn_size}); - mapboxIcon = loadPixmap("../../starpilot/assets/other_images/mapbox_icon.png", {btn_size / 2, btn_size / 2}).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - mapDataIcon = loadPixmap("../../starpilot/assets/other_images/offline_maps_icon.png", {btn_size / 2, btn_size / 2}).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - nextMapsIcon = loadPixmap("../../starpilot/assets/other_images/next_maps_icon.png", {btn_size / 2, btn_size / 2}).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - pausedIcon = loadPixmap("../../starpilot/assets/other_images/paused_icon.png", {widget_size, widget_size}); - speedIcon = loadPixmap("../../starpilot/assets/other_images/speed_icon.png", {widget_size, widget_size}); - forceStopDashImg = loadPixmap("../../starpilot/assets/other_images/force_stop_dash.png", {btn_size, btn_size}); - forceStopImg = loadPixmap("../../starpilot/assets/other_images/force_stop.png", {btn_size, btn_size}); - stopSignImg = loadPixmap("../../starpilot/assets/other_images/stop_sign.png", {btn_size, btn_size}); - turnIcon = loadPixmap("../../starpilot/assets/other_images/turn_icon.png", {widget_size, widget_size}); - visionIcon = loadPixmap("../../starpilot/assets/other_images/speed_icon.png", {btn_size / 2, btn_size / 2}).scaled(iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - - loadGif("../../starpilot/assets/other_images/curve_icon.gif", cemCurveIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/lead_icon.gif", cemLeadIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/speed_icon.gif", cemSpeedIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/light_icon.gif", cemStopIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/turn_icon.gif", cemTurnIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/chill_mode_icon.gif", chillModeIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/experimental_mode_icon.gif", experimentalModeIcon, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/weather_clear_day.gif", weatherClearDay, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/weather_clear_night.gif", weatherClearNight, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/weather_low_visibility.gif", weatherLowVisibility, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/weather_rain.gif", weatherRain, QSize(widget_size, widget_size), this); - loadGif("../../starpilot/assets/other_images/weather_snow.gif", weatherSnow, QSize(widget_size, widget_size), this); - - QObject::connect(animationTimer, &QTimer::timeout, [this] { - animationFrameIndex = (animationFrameIndex + 1) % totalFrames; - }); - QObject::connect(starpilotUIState(), &StarPilotUIState::themeUpdated, this, &StarPilotAnnotatedCameraWidget::updateSignals); - QObject::connect(uiState(), &UIState::offroadTransition, [this] { - standstillTimer.invalidate(); - - QJsonObject stats = QJsonDocument::fromJson(QString::fromStdString(params.get("StarPilotStats")).toUtf8()).object(); - stats["FrogHops"] = stats.value("FrogHops").toInt(0) + frogHopCount; - params.putNonBlocking("StarPilotStats", QJsonDocument(stats).toJson(QJsonDocument::Compact).toStdString()); - - frogHopCount = 0; - }); -} - -void StarPilotAnnotatedCameraWidget::showEvent(QShowEvent *event) { - updateSignals(); -} - -void StarPilotAnnotatedCameraWidget::updateSignals() { - QVector().swap(blindspotImages); - QVector().swap(blindspotImagesRight); - QVector().swap(signalImages); - QVector().swap(signalImagesRight); - - bool isGif = false; - - QFileInfoList files = QDir("../../starpilot/assets/active_theme/signals/").entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::Name); - for (const QFileInfo &fileInfo : files) { - QString fileName = fileInfo.fileName(); - QString filePath = fileInfo.absoluteFilePath(); - - if (fileName.endsWith(".gif", Qt::CaseInsensitive)) { - isGif = true; - - QMovie movie(filePath); - movie.setCacheMode(QMovie::CacheNone); - movie.start(); - - int frameCount = movie.frameCount(); - signalImages.reserve(frameCount); - signalImagesRight.reserve(frameCount); - - for (int i = 0; i < frameCount; ++i) { - movie.jumpToFrame(i); - - QPixmap frame = movie.currentPixmap(); - signalImages.append(frame); - signalImagesRight.append(frame.transformed(QTransform().scale(-1, 1))); - } - - movie.stop(); - } else if (fileName.endsWith(".png", Qt::CaseInsensitive)) { - QPixmap img(filePath); - if (fileName.contains("blindspot", Qt::CaseInsensitive)) { - blindspotImages.append(img); - blindspotImagesRight.append(img.transformed(QTransform().scale(-1, 1))); - } else { - signalImages.append(img); - signalImagesRight.append(img.transformed(QTransform().scale(-1, 1))); - } - } else { - QStringList parts = fileName.split('_'); - if (parts.size() == 2) { - signalStyle = parts[0]; - signalAnimationLength = parts[1].toInt(); - } - } - } - - if (!signalImages.isEmpty()) { - QPixmap &firstImage = signalImages.front(); - signalHeight = firstImage.height(); - signalWidth = firstImage.width(); - totalFrames = signalImages.size(); - - if (isGif && signalStyle == "traditional") { - signalMovement = (width() + signalWidth * 2) / totalFrames; - signalStyle = "traditional_gif"; - } else { - signalMovement = 0; - } - } else { - signalAnimationLength = 0; - signalHeight = 0; - signalMovement = 0; - signalWidth = 0; - totalFrames = 0; - - signalStyle = "None"; - } -} - -void StarPilotAnnotatedCameraWidget::updateState(const UIState &s, const StarPilotUIState &fs) { - const UIScene &scene = s.scene; - - const SubMaster &sm = *(s.sm); - const SubMaster &fpsm = *(fs.sm); - - const cereal::CarState::Reader &carState = sm["carState"].getCarState(); - const cereal::StarPilotCarState::Reader &starpilotCarState = fpsm["starpilotCarState"].getStarpilotCarState(); - const cereal::StarPilotPlan::Reader &starpilotPlan = fpsm["starpilotPlan"].getStarpilotPlan(); - const cereal::StarPilotSelfdriveState::Reader &starpilotSelfdriveState = fpsm["starpilotSelfdriveState"].getStarpilotSelfdriveState(); - const cereal::MapdOut::Reader &mapdOut = fpsm["mapdOut"].getMapdOut(); - const cereal::ModelDataV2::Reader &modelV2 = sm["modelV2"].getModelV2(); - const cereal::SelfdriveState::Reader &selfdriveState = sm["selfdriveState"].getSelfdriveState(); - - // Cache toggle lookups once per frame — avoids 30+ QJsonObject tree-walks in paint code - const bool cachedUseSiMetrics = starpilot_toggles.value("use_si_metrics").toBool(); - cachedAdjacentPathMetrics = starpilot_toggles.value("adjacent_path_metrics").toBool(); - cachedBlindSpotPath = starpilot_toggles.value("blind_spot_path").toBool(); - cachedCemStatus = starpilot_toggles.value("cem_status").toBool(); - cachedColorScheme = starpilot_toggles.value("color_scheme").toString(); - cachedCompass = starpilot_toggles.value("compass").toBool(); - cachedCscStatus = starpilot_toggles.value("csc_status").toBool(); - cachedDynamicPedalsOnUi = starpilot_toggles.value("dynamic_pedals_on_ui").toBool(); - cachedHideSpeedLimit = starpilot_toggles.value("hide_speed_limit").toBool(); - cachedLaneDetectionWidth = starpilot_toggles.value("lane_detection_width").toDouble(); - cachedOpenpilotLongitudinal = starpilot_toggles.value("openpilot_longitudinal").toBool(); - cachedPathEdgesColor = starpilot_toggles.value("path_edges_color").toString(); - cachedPedalsOnUi = starpilot_toggles.value("pedals_on_ui").toBool(); - cachedRadarTracks = starpilot_toggles.value("radar_tracks").toBool(); - cachedRoadNameUi = starpilot_toggles.value("road_name_ui").toBool(); - cachedShowSpeedLimitOffset = starpilot_toggles.value("show_speed_limit_offset").toBool(); - cachedShowSpeedLimits = starpilot_toggles.value("show_speed_limits").toBool(); - cachedShowStoppingPoint = starpilot_toggles.value("show_stopping_point").toBool(); - cachedShowStoppingPointMetrics = starpilot_toggles.value("show_stopping_point_metrics").toBool(); - cachedSignalIcons = starpilot_toggles.value("signal_icons").toString(); - cachedSimpleMode = starpilot_toggles.value("simple_mode").toBool(); - cachedSpeedLimitController = starpilot_toggles.value("speed_limit_controller").toBool(); - cachedSpeedLimitSources = starpilot_toggles.value("speed_limit_sources").toBool(); - cachedSlcAbbreviatedSources = starpilot_toggles.value("slc_abbreviated_sources").toBool(); - cachedSlcActiveSourcesOnly = starpilot_toggles.value("slc_active_sources_only").toBool(); - cachedSpeedLimitVienna = starpilot_toggles.value("speed_limit_vienna").toBool(); - cachedStaticPedalsOnUi = starpilot_toggles.value("static_pedals_on_ui").toBool(); - cachedStoppedTimer = starpilot_toggles.value("stopped_timer").toBool(); - - if (scene.is_metric || cachedUseSiMetrics) { - leadDistanceUnit = tr(" meters"); - leadSpeedUnit = cachedUseSiMetrics ? tr(" m/s") : tr(" km/h"); - speedUnit = scene.is_metric ? tr("km/h") : tr("mph"); - - distanceConversion = 1.0f; - speedConversion = scene.is_metric ? MS_TO_KPH : MS_TO_MPH; - speedConversionMetrics = cachedUseSiMetrics ? 1.0f : MS_TO_KPH; - } else { - leadDistanceUnit = tr(" feet"); - leadSpeedUnit = tr(" mph"); - speedUnit = tr("mph"); - - distanceConversion = METER_TO_FOOT; - speedConversion = MS_TO_MPH; - speedConversionMetrics = MS_TO_MPH; - } - - accelerationEgo = carState.getAEgo(); - blindspotLeft = carState.getLeftBlindspot(); - blindspotRight = carState.getRightBlindspot(); - blinkerLeft = carState.getLeftBlinker(); - blinkerRight = carState.getRightBlinker(); - brakeLights = starpilotCarState.getBrakeLights(); - cscControllingSpeed = starpilotPlan.getCscControllingSpeed(); - cscSpeed = starpilotPlan.getCscSpeed(); - cscTraining = starpilotPlan.getCscTraining(); - dashboardSpeedLimit = starpilotCarState.getDashboardSpeedLimit(); - desiredFollowDistance = starpilotPlan.getDesiredFollowDistance(); - experimentalMode = selfdriveState.getExperimentalMode(); - forceCoast = starpilotCarState.getForceCoast(); - forcingStop = starpilotPlan.getForcingStop(); - forcingStopLength = starpilotPlan.getForcingStopLength(); - stopSignConfirmed = starpilotPlan.getStopSignConfirmed(); - laneWidthLeft = starpilotPlan.getLaneWidthLeft(); - laneWidthRight = starpilotPlan.getLaneWidthRight(); - lateralPaused = starpilotCarState.getPauseLateral(); - longitudinalPaused = starpilotCarState.getPauseLongitudinal(); - mapSpeedLimit = starpilotPlan.getSlcMapSpeedLimit(); - mapboxSpeedLimit = starpilotPlan.getSlcMapboxSpeedLimit(); - nextSpeedLimit = starpilotPlan.getSlcNextSpeedLimit(); - redLight = starpilotPlan.getRedLight(); - roadCurvature = starpilotPlan.getRoadCurvature(); - roadName = QString::fromStdString(mapdOut.getRoadName()); - slcOverriddenSpeed = starpilotPlan.getSlcOverriddenSpeed(); - speedLimit = slcOverriddenSpeed != 0 ? slcOverriddenSpeed : starpilotPlan.getSlcSpeedLimit(); - speedLimitChanged = starpilotPlan.getSpeedLimitChanged(); - unconfirmedSpeedLimitValid = starpilotPlan.getUnconfirmedSlcSpeedLimit() > 1; - speedLimitSource = starpilotPlan.getSlcSpeedLimitSource(); - stoppingDistance = modelV2.getPosition().getX().size() > 33 - 1 ? modelV2.getPosition().getX()[33 - 1] : 0.0; - unconfirmedSpeedLimit = starpilotPlan.getUnconfirmedSlcSpeedLimit(); - visionSpeedLimit = params.getBool("VisionSpeedLimitDetection") ? params_memory.getFloat("VisionSpeedLimit") : 0.0; - weatherDaytime = starpilotPlan.getWeatherDaytime(); - weatherId = starpilotPlan.getWeatherId(); - - hideBottomIcons = selfdriveState.getAlertSize() != cereal::SelfdriveState::AlertSize::NONE; - hideBottomIcons |= starpilotSelfdriveState.getAlertSize() != cereal::StarPilotSelfdriveState::AlertSize::NONE; - hideBottomIcons |= signalStyle.startsWith("traditional") && (blinkerLeft || blinkerRight); - - if (slcOverriddenSpeed == 0 && !cachedShowSpeedLimitOffset) { - speedLimit += starpilotPlan.getSlcSpeedLimitOffset(); - } - speedLimit *= (scene.is_metric ? MS_TO_KPH : MS_TO_MPH); - float speedLimitOffset = starpilotPlan.getSlcSpeedLimitOffset() * speedConversion; - speedLimitOffsetStr = (speedLimitOffset != 0) ? QString::number(speedLimitOffset, 'f', 0).prepend((speedLimitOffset > 0) ? "+" : "-") : "–"; - - static int lastFrameIndex; - if (lastFrameIndex > animationFrameIndex && cachedSignalIcons == "frog") { - frogHopCount++; - } - lastFrameIndex = animationFrameIndex; - - if ((blinkerLeft || blinkerRight) && signalStyle != "None") { - if (!animationTimer->isActive()) { - animationTimer->start(signalAnimationLength); - } - } else if (animationTimer->isActive()) { - animationFrameIndex = 0; - animationTimer->stop(); - } - - if (cscTraining) { - if (!glowTimer.isValid()) { - glowTimer.start(); - } - } else { - glowTimer.invalidate(); - } - - if (speedLimitChanged && unconfirmedSpeedLimitValid) { - if (!pendingLimitTimer.isValid()) { - pendingLimitTimer.start(); - } - } else { - pendingLimitTimer.invalidate(); - } - - if (starpilot_scene.standstill && cachedStoppedTimer) { - if (!standstillTimer.isValid()) { - standstillTimer.start(); - } else { - standstillDuration = starpilot_scene.started_timer / UI_FREQ < 60 ? 0 : standstillTimer.elapsed() / 1000; - } - } else { - standstillDuration = 0; - standstillTimer.invalidate(); - } -} - -void StarPilotAnnotatedCameraWidget::mousePressEvent(QMouseEvent *mouseEvent) { - if (starpilot_toggles.value("simple_mode").toBool()) { - mouseEvent->ignore(); - return; - } - - if (speedLimitChanged && speedLimitRect.contains(mouseEvent->pos())) { - params_memory.putBool("SpeedLimitAccepted", true); - mouseEvent->accept(); - return; - } - - mouseEvent->ignore(); -} - -void StarPilotAnnotatedCameraWidget::paintStarPilotWidgets(QPainter &p, UIState &s, bool hideCameraOverlays) { - if (cachedSimpleMode) { - cemStatusPosition = QPoint(0, 0); - compassPosition = QPoint(0, 0); - lateralPausedPosition = QPoint(0, 0); - speedLimitHeight = 0; - return; - } - - if (!hideBottomIcons && cachedCemStatus) { - paintCEMStatus(p); - } else { - cemStatusPosition.setX(0); - cemStatusPosition.setY(0); - } - - if (!hideBottomIcons && cachedCompass) { - paintCompass(p); - } else { - compassPosition.setX(0); - compassPosition.setY(0); - } - - if (forcingStop) { - paintForceStop(p); - } else if (!speedLimitChanged && !(signalStyle == "static" && blinkerLeft) && cachedCscStatus) { - if (cscTraining) { - paintCurveSpeedControlTraining(p); - } else if (isCruiseSet && cscControllingSpeed) { - paintCurveSpeedControl(p); - } - } - - if (!hideBottomIcons && lateralPaused) { - paintLateralPaused(p); - } else { - lateralPausedPosition.setX(0); - lateralPausedPosition.setY(0); - } - - if (!hideBottomIcons && (forceCoast || longitudinalPaused)) { - paintLongitudinalPaused(p); - } - - if (cachedPedalsOnUi) { - paintPedalIcons(p); - } - - if (!hideCameraOverlays && cachedRadarTracks) { - paintRadarTracks(p); - } - - if (cachedRoadNameUi) { - paintRoadName(p); - } - - bool hideSpeedLimit = !(speedLimitChanged && unconfirmedSpeedLimitValid) && cachedHideSpeedLimit; - if (!hideSpeedLimit && (cachedShowSpeedLimits || cachedSpeedLimitController)) { - paintSpeedLimit(p); - } else { - speedLimitHeight = 0; - } - - if (cachedSpeedLimitSources) { - paintSpeedLimitSources(p); - } - - if (standstillDuration != 0) { - paintStandstillTimer(p); - } - - if (!hideCameraOverlays && track_vertices.length() >= 1 && redLight && cachedShowStoppingPoint) { - paintStoppingPoint(p); - } - - if ((blinkerLeft || blinkerRight) && signalStyle != "None" && (standstillDuration == 0 || signalStyle != "static")) { - paintTurnSignals(p); - } - - if (!hideBottomIcons) { - paintWeather(p); - } -} - -void StarPilotAnnotatedCameraWidget::paintAdjacentPaths(QPainter &p) { - std::function paintPath = [&](const QPolygonF &path, bool isLeft, bool isBlindSpot, float laneWidth) { - if (laneWidth == 0.0f) { - return; - } - - p.save(); - - QLinearGradient gradient(0, height(), 0, 0); - if (isBlindSpot && cachedBlindSpotPath) { - gradient.setColorAt(0.0f, QColor::fromHslF(0.0f, 0.75f, 0.5f, 0.4f)); - gradient.setColorAt(0.5f, QColor::fromHslF(0.0f, 0.75f, 0.5f, 0.35f)); - gradient.setColorAt(1.0f, QColor::fromHslF(0.0f, 0.75f, 0.5f, 0.0f)); - } else { - float ratio = std::clamp(laneWidth / cachedLaneDetectionWidth, 0.0, 1.0); - float hue = (ratio * ratio) * (120.0f / 360.0f); - - gradient.setColorAt(0.0f, QColor::fromHslF(hue, 0.75f, 0.5f, 0.4f)); - gradient.setColorAt(0.5f, QColor::fromHslF(hue, 0.75f, 0.5f, 0.35f)); - gradient.setColorAt(1.0f, QColor::fromHslF(hue, 0.75f, 0.5f, 0.0f)); - } - - p.setBrush(gradient); - p.drawPolygon(path); - - if (cachedAdjacentPathMetrics) { - QString text; - if (isBlindSpot && cachedBlindSpotPath) { - text = tr("Vehicle in blind spot"); - } else { - text = QString::number(laneWidth * distanceConversion, 'f', 2) + leadDistanceUnit; - } - - int midIndex = path.size() / 2; - QPointF anchorPoint = isLeft ? path[midIndex / 2] : path[midIndex + (path.size() - midIndex) / 2]; - - p.setFont(InterFont(45, QFont::DemiBold)); - QFontMetrics metrics(p.font()); - - int textXPosition = isLeft ? anchorPoint.x() - metrics.horizontalAdvance(text) : anchorPoint.x(); - int textYPosition = anchorPoint.y() - metrics.height() / 2 + metrics.ascent(); - - QPainterPath textPath; - textPath.addText(textXPosition, textYPosition, p.font(), text); - p.strokePath(textPath, QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - - p.setPen(whiteColor()); - p.drawText(textXPosition, textYPosition, text); - } - - p.restore(); - }; - - paintPath(track_adjacent_vertices[0], true, blindspotLeft, laneWidthLeft); - paintPath(track_adjacent_vertices[1], false, blindspotRight, laneWidthRight); -} - -void StarPilotAnnotatedCameraWidget::paintBlindSpotPath(QPainter &p) { - p.save(); - - QLinearGradient bs(0, height(), 0, 0); - bs.setColorAt(0.0f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.4f)); - bs.setColorAt(0.5f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.35f)); - bs.setColorAt(1.0f, QColor::fromHslF(0 / 360.0f, 0.75f, 0.5f, 0.0f)); - p.setBrush(bs); - - if (track_adjacent_vertices[0].boundingRect().width() > 0 && blindspotLeft) { - p.drawPolygon(track_adjacent_vertices[0]); - } - if (track_adjacent_vertices[1].boundingRect().width() > 0 && blindspotRight) { - p.drawPolygon(track_adjacent_vertices[1]); - } - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintCEMStatus(QPainter &p) { - if (dmIconPosition == QPoint(0, 0)) { - return; - } - - p.save(); - - cemStatusPosition.setX(dmIconPosition.x() + (rightHandDM ? -img_size - widget_size : widget_size)); - cemStatusPosition.setY(dmIconPosition.y() - widget_size / 2); - - QRect cemWidget(cemStatusPosition, QSize(widget_size, widget_size)); - const bool conditionalExperimentalMode = starpilot_toggles.value("conditional_experimental_mode").toBool(); - const bool conditionalChillMode = starpilot_toggles.value("conditional_chill_mode").toBool(); - const bool manualOverride = - (conditionalExperimentalMode && starpilot_scene.conditional_status == 1) || - (conditionalChillMode && (starpilot_scene.conditional_status == 1 || starpilot_scene.conditional_status == 2)); - - p.setBrush(blackColor(166)); - if (manualOverride) { - p.setPen(QPen(QColor(bg_colors[STATUS_CEM_DISABLED]), 10)); - } else if (experimentalMode) { - p.setPen(QPen(QColor(bg_colors[STATUS_EXPERIMENTAL_MODE_ENABLED]), 10)); - } else { - p.setPen(QPen(blackColor(), 10)); - } - p.drawRoundedRect(cemWidget, 24, 24); - - QSharedPointer icon = chillModeIcon; - if (conditionalChillMode && !conditionalExperimentalMode) { - if (starpilot_scene.conditional_status == 1) { - icon = experimentalModeIcon; - } else if (starpilot_scene.conditional_status == 2) { - icon = chillModeIcon; - } else if (starpilot_scene.conditional_status == 4) { - icon = cemLeadIcon; - } else if (starpilot_scene.conditional_status == 6) { - icon = cemSpeedIcon; - } else { - icon = experimentalMode ? experimentalModeIcon : chillModeIcon; - } - } else if (experimentalMode) { - if (starpilot_scene.conditional_status == 1) { - icon = chillModeIcon; - } else if (starpilot_scene.conditional_status == 2) { - icon = experimentalModeIcon; - } else if (starpilot_scene.conditional_status == 3) { - icon = cemCurveIcon; - } else if (starpilot_scene.conditional_status == 4) { - icon = cemLeadIcon; - } else if (starpilot_scene.conditional_status == 5) { - icon = cemTurnIcon; - } else if (starpilot_scene.conditional_status == 6 || starpilot_scene.conditional_status == 7) { - icon = cemSpeedIcon; - } else if (starpilot_scene.conditional_status == 8) { - icon = cemStopIcon; - } else { - icon = experimentalModeIcon; - } - } - p.drawPixmap(cemWidget, icon->currentPixmap()); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintCompass(QPainter &p) { - if (dmIconPosition == QPoint(0, 0)) { - return; - } - - p.save(); - - constexpr double PIXELS_PER_DEGREE = 2.5; - - constexpr int BASE_RIBBON_WIDTH = static_cast(360 * PIXELS_PER_DEGREE); - constexpr int BORDER_WIDTH = 10; - constexpr int MARGIN = 5; - constexpr int TRIANGLE_SIZE = 40; - - static QPixmap compassRibbon = [&]() { - QPixmap ribbon(BASE_RIBBON_WIDTH * 2, widget_size); - ribbon.fill(Qt::transparent); - - QPainter ribbonPainter(&ribbon); - ribbonPainter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); - - QFont font = InterFont(65, QFont::Bold); - ribbonPainter.setFont(font); - QFontMetrics fm(font); - - QMap directionLabels = {{0, "N"}, {45, "NE"}, {90, "E"}, {135, "SE"}, {180, "S"}, {225, "SW"}, {270, "W"}, {315, "NW"}, {360, "N"}}; - - for (int cycle = 0; cycle < 2; ++cycle) { - int xOffset = cycle * 360; - - for (int degree = 0; degree < 360; ++degree) { - int x = qRound((xOffset + degree) * PIXELS_PER_DEGREE); - - if (directionLabels.contains(degree)) { - QString label = directionLabels[degree]; - ribbonPainter.setPen(whiteColor()); - ribbonPainter.drawText(x - fm.horizontalAdvance(label) / 2, fm.ascent(), label); - } - - int notchHeight = (degree % 45 == 0) ? 35 : (degree % 15 == 0) ? 25 : 15; - int notchWidth = (degree % 45 == 0) ? 5 : (degree % 15 == 0) ? 4 : 3; - - ribbonPainter.setPen(QPen(whiteColor(), notchWidth)); - ribbonPainter.drawLine(x, widget_size - notchHeight - MARGIN, x, widget_size); - } - } - - return ribbon; - }(); - - compassPosition.rx() = rightHandDM ? UI_BORDER_SIZE + widget_size / 2 : width() - UI_BORDER_SIZE - btn_size; - compassPosition.ry() = dmIconPosition.y() - widget_size / 2; - - QRect compassWidget(compassPosition, QSize(widget_size, widget_size)); - - p.setBrush(blackColor(166)); - p.setPen(QPen(blackColor(), BORDER_WIDTH)); - p.drawRoundedRect(compassWidget, 24, 24); - - QPainterPath clipPath; - clipPath.addRoundedRect(compassWidget.adjusted(MARGIN, MARGIN, -MARGIN, -MARGIN), 24, 24); - p.setClipPath(clipPath); - - double rawBearing = QJsonDocument::fromJson(QByteArray::fromStdString(params_memory.get("LastGPSPosition"))).object().value("bearing").toDouble(0.0); - int bearing = qRound(fmod(rawBearing + 360.0, 360.0)); - int offset = qRound(bearing * PIXELS_PER_DEGREE) % BASE_RIBBON_WIDTH; - int drawX = compassWidget.center().x() - offset; - - p.drawPixmap(drawX - BASE_RIBBON_WIDTH, compassWidget.top() + MARGIN, compassRibbon); - p.drawPixmap(drawX, compassWidget.top() + MARGIN, compassRibbon); - - int triangleX = compassWidget.center().x(); - int triangleY = compassWidget.bottom() - TRIANGLE_SIZE; - QPolygon triangle({ - QPoint(triangleX, triangleY - TRIANGLE_SIZE), - QPoint(triangleX - TRIANGLE_SIZE / 1.5, triangleY), - QPoint(triangleX + TRIANGLE_SIZE / 1.5, triangleY) - }); - - p.setBrush(whiteColor()); - p.setPen(Qt::NoPen); - p.drawPolygon(triangle); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintCurveSpeedControl(QPainter &p) { - p.save(); - - QRect curveSpeedRect(QPoint(setSpeedRect.right() + UI_BORDER_SIZE, setSpeedRect.top()), QSize(defaultSize.width() * 1.25, defaultSize.width() * 1.25)); - - QPixmap &curveSpeedImage = roadCurvature < 0 ? curveSpeedIcon : curveSpeedIconFlipped; - QSize curveSpeedSize = curveSpeedImage.size(); - QPoint curveSpeedPoint = QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, curveSpeedSize, curveSpeedRect).topLeft(); - - p.setOpacity(1.0); - - QRect cscRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), 100)); - p.setBrush(blueColor(166)); - p.setFont(InterFont(45, QFont::Bold)); - p.setPen(QPen(blueColor(), 10)); - p.drawRoundedRect(cscRect, 24, 24); - p.setPen(QPen(whiteColor(), 6)); - p.drawText(cscRect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, QString::number(std::nearbyint(fmin(speed, cscSpeed * speedConversion))) + speedUnit); - p.drawPixmap(curveSpeedPoint, curveSpeedImage); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintCurveSpeedControlTraining(QPainter &p) { - p.save(); - - qreal phase = (glowTimer.elapsed() % 2000) / 2000.0 * 2 * M_PI; - qreal alphaFactor = 0.5 + 0.5 * sin(phase); - - QColor glowColor = blueColor(); - glowColor.setAlphaF(0.3 + 0.7 * alphaFactor); - - int glowWidth = 8 + static_cast(2 * alphaFactor); - - QRect curveSpeedRect(QPoint(setSpeedRect.right() + UI_BORDER_SIZE, setSpeedRect.top()), QSize(defaultSize.width() * 1.25, defaultSize.width() * 1.25)); - - QPixmap &curveSpeedImage = roadCurvature < 0 ? curveSpeedIcon : curveSpeedIconFlipped; - QSize curveSpeedSize = curveSpeedImage.size(); - QPoint curveSpeedPoint = QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, curveSpeedSize, curveSpeedRect).topLeft(); - - p.setOpacity(1.0); - - p.setBrush(blackColor(166)); - p.setPen(QPen(glowColor, glowWidth)); - p.drawRoundedRect(curveSpeedRect, 24, 24); - p.drawPixmap(curveSpeedPoint, curveSpeedImage); - p.setBrush(blackColor(166)); - p.setFont(InterFont(35, QFont::Bold)); - p.setPen(QPen(blackColor(), 10)); - - QRect textRect(curveSpeedRect.topLeft() + QPoint(0, curveSpeedRect.height() + 10), QSize(curveSpeedRect.width(), 50)); - p.drawRoundedRect(textRect, 24, 24); - p.setPen(QPen(whiteColor(), 6)); - p.drawText(textRect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, "Training..."); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintLateralPaused(QPainter &p) { - if (dmIconPosition == QPoint(0, 0)) { - return; - } - - p.save(); - - if (cemStatusPosition != QPoint(0, 0)) { - lateralPausedPosition = cemStatusPosition; - } else { - lateralPausedPosition.rx() = dmIconPosition.x(); - lateralPausedPosition.ry() = dmIconPosition.y() - widget_size / 2; - } - lateralPausedPosition.rx() += rightHandDM ? -UI_BORDER_SIZE - widget_size - UI_BORDER_SIZE : UI_BORDER_SIZE + widget_size + UI_BORDER_SIZE; - - QRect lateralWidget(lateralPausedPosition, QSize(widget_size, widget_size)); - - p.setBrush(blackColor(166)); - p.setPen(QPen(QColor(bg_colors[STATUS_TRAFFIC_MODE_ENABLED]), 10)); - p.drawRoundedRect(lateralWidget, 24, 24); - - p.setOpacity(0.5); - p.drawPixmap(lateralWidget, turnIcon); - p.setOpacity(0.75); - p.drawPixmap(lateralWidget, pausedIcon); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintLeadMetrics(QPainter &p, bool adjacent, QPointF *chevron, const cereal::RadarState::LeadData::Reader &lead_data) { - float leadDistance = lead_data.getDRel() + (adjacent ? std::abs(lead_data.getYRel()) : 0.0f); - float leadSpeed = std::max(lead_data.getVLead(), 0.0f); - - QString distanceString = QString::number(qRound(leadDistance * distanceConversion)); - QString speedString = QString::number(qRound(leadSpeed * speedConversionMetrics)); - - QVector textLines; - textLines.reserve(3); - if (adjacent) { - textLines.append(QString("%1 %2").arg(distanceString, leadDistanceUnit)); - textLines.append(QString("%1 %2").arg(speedString, leadSpeedUnit)); - } else { - if (cachedOpenpilotLongitudinal) { - int desiredDistance = std::max(0, qRound(desiredFollowDistance * distanceConversion)); - textLines.append(QString("%1 %2 (%3)").arg(distanceString, leadDistanceUnit, tr("Desired: %1").arg(desiredDistance))); - } else { - textLines.append(QString("%1 %2").arg(distanceString, leadDistanceUnit)); - } - textLines.append(QString("%1 %2").arg(speedString, leadSpeedUnit)); - - float timeGap = leadDistance / std::max(speed / speedConversion, 1.0f); - textLines.append(QString("%1 %2").arg(QString::number(timeGap, 'f', 2), tr("seconds"))); - } - - p.setFont(InterFont(45, QFont::DemiBold)); - p.setPen(whiteColor()); - - QFontMetrics metrics(p.font()); - int lineHeight = metrics.lineSpacing(); - - int maxTextWidth = 0; - for (QString &line : textLines) { - maxTextWidth = std::max(maxTextWidth, metrics.horizontalAdvance(line)); - } - - int centerX = (chevron[2].x() + chevron[0].x()) / 2; - int startY = chevron[0].y() + lineHeight + 5; - - int xMargin = maxTextWidth * 0.1; - int yMargin = lineHeight * 0.1; - - QRect textRect(centerX - maxTextWidth / 2, startY - lineHeight, maxTextWidth, textLines.size() * lineHeight); - textRect.adjust(-xMargin, -yMargin, xMargin, yMargin); - - if (adjacent) { - if (textRect.intersects(adjacentLeadTextRect) || textRect.intersects(leadTextRect)) { - return; - } - adjacentLeadTextRect = textRect; - } else { - leadTextRect = textRect; - } - - for (int i = 0; i < textLines.size(); ++i) { - int lineX = centerX - metrics.horizontalAdvance(textLines[i]) / 2; - int lineY = startY + (i * lineHeight); - - QPainterPath path; - path.addText(lineX, lineY, p.font(), textLines[i]); - p.strokePath(path, QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - - p.setPen(whiteColor()); - p.drawText(lineX, lineY, textLines[i]); - } -} - -void StarPilotAnnotatedCameraWidget::paintLongitudinalPaused(QPainter &p) { - if (dmIconPosition == QPoint(0, 0)) { - return; - } - - p.save(); - - QPoint longitudinalIconPosition; - if (lateralPausedPosition != QPoint(0, 0)) { - longitudinalIconPosition = lateralPausedPosition; - } else if (cemStatusPosition != QPoint(0, 0)) { - longitudinalIconPosition = cemStatusPosition; - } else { - longitudinalIconPosition.rx() = dmIconPosition.x(); - longitudinalIconPosition.ry() = dmIconPosition.y() - widget_size / 2; - } - longitudinalIconPosition.rx() += rightHandDM ? -UI_BORDER_SIZE - widget_size - UI_BORDER_SIZE : UI_BORDER_SIZE + widget_size + UI_BORDER_SIZE; - - QRect longitudinalWidget(longitudinalIconPosition, QSize(widget_size, widget_size)); - - p.setBrush(blackColor(166)); - p.setPen(QPen(QColor(bg_colors[STATUS_TRAFFIC_MODE_ENABLED]), 10)); - p.drawRoundedRect(longitudinalWidget, 24, 24); - - p.setOpacity(0.5); - p.drawPixmap(longitudinalWidget, speedIcon); - p.setOpacity(0.75); - p.drawPixmap(longitudinalWidget, pausedIcon); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintPathEdges(QPainter &p, int height) { - p.save(); - - QLinearGradient gradient(0, height, 0, 0); - - std::function setPathEdgeColors = [&gradient](const QColor &baseColor) { - gradient.setColorAt(0.0f, QColor(baseColor.red(), baseColor.green(), baseColor.blue(), 255.0f * 0.4f)); - gradient.setColorAt(0.5f, QColor(baseColor.red(), baseColor.green(), baseColor.blue(), 255.0f * 0.35f)); - gradient.setColorAt(1.0f, QColor(baseColor.red(), baseColor.green(), baseColor.blue(), 255.0f * 0.0f)); - }; - const bool conditionalExperimentalMode = starpilot_toggles.value("conditional_experimental_mode").toBool(); - const bool conditionalChillMode = starpilot_toggles.value("conditional_chill_mode").toBool(); - const bool highlightOverride = - (conditionalExperimentalMode && starpilot_scene.conditional_status == 1) || - (conditionalChillMode && (starpilot_scene.conditional_status == 1 || starpilot_scene.conditional_status == 2)); - - if (starpilot_scene.switchback_mode_enabled) { - setPathEdgeColors(bg_colors[STATUS_SWITCHBACK_MODE_ENABLED]); - } else if (starpilot_scene.always_on_lateral_active) { - setPathEdgeColors(bg_colors[STATUS_ALWAYS_ON_LATERAL_ACTIVE]); - } else if (highlightOverride) { - setPathEdgeColors(bg_colors[STATUS_CEM_DISABLED]); - } else if (experimentalMode) { - setPathEdgeColors(bg_colors[STATUS_EXPERIMENTAL_MODE_ENABLED]); - } else if (starpilot_scene.traffic_mode_enabled) { - setPathEdgeColors(bg_colors[STATUS_TRAFFIC_MODE_ENABLED]); - } else if (cachedColorScheme != "stock") { - setPathEdgeColors(QColor(cachedPathEdgesColor)); - } else { - gradient.setColorAt(0.0f, QColor::fromHslF(148.0f / 360.0f, 0.94f, 0.41f, 0.4f)); - gradient.setColorAt(0.5f, QColor::fromHslF(112.0f / 360.0f, 1.0f, 0.54f, 0.35f)); - gradient.setColorAt(1.0f, QColor::fromHslF(112.0f / 360.0f, 1.0f, 0.54f, 0.0f)); - } - - p.setBrush(gradient); - - QPainterPath path; - path.addPolygon(track_vertices); - path.addPolygon(track_edge_vertices); - p.drawPath(path); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintPedalIcons(QPainter &p) { - p.save(); - - float brakeOpacity = 1.0f; - float gasOpacity = 1.0f; - - if (cachedDynamicPedalsOnUi) { - brakeOpacity = starpilot_scene.standstill ? 1.0f : accelerationEgo < -0.25f ? std::max(0.25f, std::abs(accelerationEgo)) : 0.25f; - gasOpacity = std::max(0.25f, accelerationEgo); - } else if (cachedStaticPedalsOnUi) { - brakeOpacity = starpilot_scene.standstill || brakeLights || accelerationEgo < -0.25f ? 1.0f : 0.25f; - gasOpacity = accelerationEgo > 0.25 ? 1.0f : 0.25f; - } - - int startX = experimentalButtonPosition.x(); - int startY = experimentalButtonPosition.y() + btn_size + UI_BORDER_SIZE; - - p.setOpacity(brakeOpacity); - p.drawPixmap(startX, startY, brakePedalImg); - - p.setOpacity(gasOpacity); - p.drawPixmap(startX + btn_size / 2, startY, gasPedalImg); - - p.restore(); -} - - -void StarPilotAnnotatedCameraWidget::paintRainbowPath(QPainter &p, QLinearGradient &bg, float lin_grad_point) { - p.save(); - - static float hueOffset = 0.0f; - if (speed > 0) { - hueOffset += speed / speedConversion * 0.02f; - - if (hueOffset >= 360.0f) { - hueOffset = fmodf(hueOffset, 360.0f); - } - } - - float alpha = util::map_val(lin_grad_point, 0.0f, 1.0f, 0.5f, 0.1f); - float pathHue = fmodf(lin_grad_point * 120.0f + hueOffset, 360.0f); - - bg.setColorAt(lin_grad_point, QColor::fromHslF(pathHue / 360.0f, 1.0f, 0.5f, alpha)); - bg.setSpread(QGradient::RepeatSpread); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintRadarTracks(QPainter &p) { - if (radar_tracks.empty()) { - return; - } - - p.save(); - - int diameter = 25; - - float radius = diameter / 2.0f; - float track_x = p.viewport().width() - diameter; - float track_y = p.viewport().height() - diameter; - - p.setBrush(redColor()); - - for (const QPointF &track : radar_tracks) { - float x = std::clamp(static_cast(track.x()), 0.0f, track_x); - float y = std::clamp(static_cast(track.y()), 0.0f, track_y); - - p.drawEllipse(QPointF(x + radius, y + radius), radius, radius); - } - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintRoadName(QPainter &p) { - if (roadName.isEmpty()) { - return; - } - - p.save(); - - QFont font = InterFont(40, QFont::DemiBold); - - int textWidth = QFontMetrics(font).horizontalAdvance(roadName); - - QSize size(textWidth + 100, 50); - QRect roadNameRect = QStyle::alignedRect(Qt::LeftToRight, Qt::AlignHCenter | Qt::AlignBottom, size, rect().adjusted(0, 0, 0, -5)); - - p.setBrush(blackColor(166)); - p.setOpacity(1.0); - p.setPen(QPen(blackColor(), 10)); - p.drawRoundedRect(roadNameRect, 24, 24); - - p.setFont(font); - p.setPen(QPen(whiteColor(), 6)); - p.drawText(roadNameRect, Qt::AlignCenter, roadName); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintSpeedLimit(QPainter &p) { - if (setSpeedRect.isEmpty()) { - return; - } - - p.save(); - - bool isFlashingPending = speedLimitChanged && unconfirmedSpeedLimitValid; - bool flashOn = isFlashingPending && (pendingLimitTimer.elapsed() % 1000 < 500); - QString displaySpeedLimitStr = isFlashingPending - ? QString::number(std::nearbyint(unconfirmedSpeedLimit * speedConversion)) - : ((speedLimit > 1) ? QString::number(std::nearbyint(speedLimit)) : "–"); - QString speedLimitStr = displaySpeedLimitStr; - - bool hasUsSpeedLimit = !cachedSpeedLimitVienna; - bool hasEuSpeedLimit = !hasUsSpeedLimit; - - int euSignSize = 176; - int usSignHeight = 186; - int signMargin = 12; - - if (hasUsSpeedLimit) { - speedLimitHeight = usSignHeight + signMargin; - } else if (hasEuSpeedLimit) { - speedLimitHeight = euSignSize + signMargin; - } - - QRect signRect; - if (hasUsSpeedLimit) { - signRect = QRect(setSpeedRect.x() + signMargin, setSpeedRect.bottom() - speedLimitHeight, setSpeedRect.width() - 2 * signMargin, usSignHeight); - } else if (hasEuSpeedLimit) { - signRect = QRect(setSpeedRect.x() + signMargin, setSpeedRect.bottom() - speedLimitHeight, setSpeedRect.width() - 2 * signMargin, euSignSize); - } - speedLimitRect = signRect; - - if (hasUsSpeedLimit) { - QColor borderColor = flashOn ? redColor() : blackColor(); - QColor textColor = flashOn ? redColor() : blackColor(); - - p.setPen(Qt::NoPen); - p.setBrush(whiteColor()); - p.drawRoundedRect(signRect, 24, 24); - p.setPen(QPen(borderColor, 6)); - p.drawRoundedRect(signRect.adjusted(9, 9, -9, -9), 16, 16); - - p.setOpacity(slcOverriddenSpeed == 0 ? 1.0 : 0.25); - p.setPen(textColor); - if (isFlashingPending) { - p.setFont(InterFont(28, QFont::DemiBold)); - p.drawText(signRect.adjusted(0, 22, 0, 0), Qt::AlignTop | Qt::AlignHCenter, tr("PENDING")); - p.setFont(InterFont(70, QFont::Bold)); - p.drawText(signRect.adjusted(0, 51, 0, 0), Qt::AlignTop | Qt::AlignHCenter, speedLimitStr); - } else if (slcOverriddenSpeed == 0 && cachedShowSpeedLimitOffset) { - p.setFont(InterFont(28, QFont::DemiBold)); - p.drawText(signRect.adjusted(0, 22, 0, 0), Qt::AlignTop | Qt::AlignHCenter, tr("LIMIT")); - p.setFont(InterFont(70, QFont::Bold)); - p.drawText(signRect.adjusted(0, 51, 0, 0), Qt::AlignTop | Qt::AlignHCenter, speedLimitStr); - p.setFont(InterFont(50, QFont::DemiBold)); - p.drawText(signRect.adjusted(0, 120, 0, 0), Qt::AlignTop | Qt::AlignHCenter, speedLimitOffsetStr); - } else { - p.setFont(InterFont(28, QFont::DemiBold)); - p.drawText(signRect.adjusted(0, 22, 0, 0), Qt::AlignTop | Qt::AlignHCenter, tr("SPEED")); - p.drawText(signRect.adjusted(0, 51, 0, 0), Qt::AlignTop | Qt::AlignHCenter, tr("LIMIT")); - p.setFont(InterFont(70, QFont::Bold)); - p.drawText(signRect.adjusted(0, 85, 0, 0), Qt::AlignTop | Qt::AlignHCenter, speedLimitStr); - } - } - - if (hasEuSpeedLimit) { - QColor textColor = flashOn ? redColor() : blackColor(); - - p.setPen(Qt::NoPen); - p.setBrush(whiteColor()); - p.drawEllipse(signRect); - p.setPen(QPen(Qt::red, 20)); - p.drawEllipse(signRect.adjusted(16, 16, -16, -16)); - - p.setOpacity(slcOverriddenSpeed == 0 ? 1.0 : 0.25); - p.setPen(textColor); - if (isFlashingPending) { - p.setFont(InterFont((speedLimitStr.size() >= 3) ? 60 : 70, QFont::Bold)); - p.drawText(signRect, Qt::AlignCenter, speedLimitStr); - } else if (cachedShowSpeedLimitOffset) { - p.setFont(InterFont((speedLimitStr.size() >= 3) ? 60 : 70, QFont::Bold)); - p.drawText(signRect.adjusted(0, -25, 0, 0), Qt::AlignCenter, speedLimitStr); - p.setFont(InterFont(40, QFont::DemiBold)); - p.drawText(signRect.adjusted(0, 100, 0, 0), Qt::AlignTop | Qt::AlignHCenter, speedLimitOffsetStr); - } else { - p.setFont(InterFont((speedLimitStr.size() >= 3) ? 60 : 70, QFont::Bold)); - p.drawText(signRect, Qt::AlignCenter, speedLimitStr); - } - } - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintSpeedLimitSources(QPainter &p) { - p.save(); - - const bool abbreviated = cachedSlcAbbreviatedSources; - const bool activeOnly = cachedSlcActiveSourcesOnly; - - std::function drawSource = - [&](QRect &rect, QPixmap &icon, const QString &title, const QString &abbrev, double speedLimitValue) { - bool isActive = QString::fromUtf8(speedLimitSource.c_str()) == title && speedLimitValue != 0; - - if (isActive) { - p.setBrush(redColor(166)); - p.setFont(InterFont(35, QFont::Bold)); - p.setPen(QPen(redColor(), 10)); - } else { - p.setBrush(blackColor(166)); - p.setFont(InterFont(35, QFont::DemiBold)); - p.setPen(QPen(blackColor(), 10)); - } - - QString fullText; - if (abbreviated) { - if (speedLimitValue != 0) { - fullText = abbrev + "-" + QString::number(std::nearbyint(speedLimitValue)); - } else { - fullText = abbrev + "-X"; - } - } else { - QString speedText = (speedLimitValue != 0) - ? QString::number(std::nearbyint(speedLimitValue)) + speedUnit - : "N/A"; - fullText = tr(title.toUtf8().constData()) + " - " + speedText; - } - - p.setOpacity(1.0); - p.drawRoundedRect(rect, 24, 24); - - QRect textRect; - if (abbreviated) { - textRect = QRect(rect.x() + 20, rect.y(), rect.width() - 40, rect.height()); - } else { - QSize size(img_size / 4, img_size / 4); - QRect iconRect = QStyle::alignedRect(Qt::LeftToRight, Qt::AlignLeft | Qt::AlignVCenter, size, rect.adjusted(20, 0, 0, 0)); - p.drawPixmap(iconRect, icon); - textRect = QRect(iconRect.right() + 10, rect.y(), rect.width() - iconRect.width() - 30, rect.height()); - } - - p.setPen(QPen(whiteColor(), 6)); - - if (isActive) { - QFontMetrics fm(p.font()); - int textYPosition = textRect.y() + (textRect.height() - fm.height()) / 2 + fm.ascent(); - QPainterPath path; - path.addText(textRect.x(), textYPosition, p.font(), fullText); - p.strokePath(path, QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - p.drawText(textRect.x(), textYPosition, fullText); - } else { - p.drawText(textRect, Qt::AlignVCenter | Qt::AlignLeft, fullText); - } - }; - - struct SrcEntry { QPixmap *icon; QString title; QString abbrev; double value; }; - std::vector sources = { - {&dashboardIcon, "Dashboard", "Dash", dashboardSpeedLimit * speedConversion}, - {&mapDataIcon, "Map Data", "MapD", mapSpeedLimit * speedConversion}, - {&visionIcon, "Vision", "Vision", visionSpeedLimit * speedConversion}, - {&mapboxIcon, "Mapbox", "MapB", mapboxSpeedLimit * speedConversion}, - {&nextMapsIcon, "Upcoming", "Next", nextSpeedLimit * speedConversion}, - }; - - const int signMargin = 12; - const int rectH = 60; - const int gap = UI_BORDER_SIZE / 2; - const int xPos = abbreviated ? speedLimitRect.x() : speedLimitRect.x() - signMargin; - int yPos = speedLimitRect.y() + speedLimitRect.height() + UI_BORDER_SIZE; - - int rectW = abbreviated ? speedLimitRect.width() : 450; - if (abbreviated) { - // Pre-compute the widest label across all visible rows so every box is the same width. - QFontMetrics fm(InterFont(35, QFont::DemiBold)); - for (auto &s : sources) { - if (activeOnly && s.value == 0) continue; - QString label = s.value != 0 - ? s.abbrev + "-" + QString::number(std::nearbyint(s.value)) - : s.abbrev + "-na"; - int needed = fm.horizontalAdvance(label) + 40; - if (needed > rectW) rectW = needed; - } - } - - for (auto &s : sources) { - if (activeOnly && s.value == 0) continue; - QRect rect(xPos, yPos, rectW, rectH); - drawSource(rect, *s.icon, s.title, s.abbrev, s.value); - yPos += rectH + gap; - } - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintStandstillTimer(QPainter &p) { - p.save(); - - float transition = 0.0f; - - QColor startColor, endColor; - if (standstillDuration < 60) { - startColor = endColor = bg_colors[STATUS_ENGAGED]; - } else if (standstillDuration < 150) { - startColor = bg_colors[STATUS_ENGAGED]; - endColor = bg_colors[STATUS_CEM_DISABLED]; - transition = (standstillDuration - 60) / 90.0f; - } else if (standstillDuration < 300) { - startColor = bg_colors[STATUS_CEM_DISABLED]; - endColor = bg_colors[STATUS_TRAFFIC_MODE_ENABLED]; - transition = (standstillDuration - 150) / 150.0f; - } else { - startColor = endColor = bg_colors[STATUS_TRAFFIC_MODE_ENABLED]; - } - - QColor blendedColor( - startColor.red() + transition * (endColor.red() - startColor.red()), - startColor.green() + transition * (endColor.green() - startColor.green()), - startColor.blue() + transition * (endColor.blue() - startColor.blue()) - ); - - std::function drawText = [&](const QString &text, int y, const QFont &font, const QColor &color) { - p.setFont(font); - p.setPen(color); - - QRect standstillRect = p.fontMetrics().boundingRect(text); - standstillRect.moveCenter({rect().center().x(), y - standstillRect.height() / 2}); - p.drawText(standstillRect.x(), standstillRect.bottom(), text); - }; - - int minutes = standstillDuration / 60; - QString minuteStr = minutes == 1 ? tr("1 minute") : tr("%1 minutes").arg(minutes); - drawText(minuteStr, 210, InterFont(176, QFont::Bold), blendedColor); - - int seconds = standstillDuration % 60; - QString secondStr = seconds == 1 ? tr("1 second") : tr("%1 seconds").arg(seconds); - drawText(secondStr, 290, InterFont(66), whiteColor()); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintForceStop(QPainter &p) { - p.save(); - - QRect forceStopRect(QPoint(setSpeedRect.right() + UI_BORDER_SIZE, setSpeedRect.top()), QSize(defaultSize.width() * 1.25, defaultSize.width() * 1.25)); - - p.setOpacity(1.0); - - QRect cscRect(forceStopRect.topLeft() + QPoint(0, forceStopRect.height() + 10), QSize(forceStopRect.width(), 100)); - p.setBrush(redColor(166)); - p.setFont(InterFont(45, QFont::Bold)); - p.setPen(QPen(QColor(255, 150, 150), 10)); - p.drawRoundedRect(cscRect, 24, 24); - p.setPen(QPen(whiteColor(), 6)); - p.drawText(cscRect.adjusted(20, 0, 0, 0), Qt::AlignVCenter | Qt::AlignLeft, - QString::number(std::nearbyint(forcingStopLength * distanceConversion)) + leadDistanceUnit); - - QPixmap &activeIcon = stopSignConfirmed ? forceStopDashImg : forceStopImg; - QSize imgSize = activeIcon.size(); - QPoint imgPoint(forceStopRect.x() + (forceStopRect.width() - imgSize.width()) / 2, - forceStopRect.y() + (forceStopRect.height() - imgSize.height()) / 2); - p.drawPixmap(imgPoint, activeIcon); - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintStoppingPoint(QPainter &p) { - p.save(); - - QPointF centerPoint = (track_vertices.first() + track_vertices.last()) / 2.0f; - QPointF stopSignPosition = centerPoint - QPointF(stopSignImg.width() / 2.0f, stopSignImg.height()); - p.drawPixmap(stopSignPosition, stopSignImg); - - if (cachedShowStoppingPointMetrics) { - float distance = stoppingDistance * distanceConversion; - QString distanceText = QString::number(std::nearbyint(distance)) + leadDistanceUnit; - - QFont font = InterFont(45, QFont::DemiBold); - QFontMetrics fm(font); - - QPointF textPosition(centerPoint.x() - fm.horizontalAdvance(distanceText) / 2.0f, centerPoint.y() - stopSignImg.height() - fm.ascent()); - - QPainterPath path; - path.addText(textPosition, font, distanceText); - p.strokePath(path, QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); - - p.setFont(font); - p.setPen(whiteColor()); - p.drawText(textPosition, distanceText); - } - - p.restore(); -} - -void StarPilotAnnotatedCameraWidget::paintTurnSignals(QPainter &p) { - int frameIndex = qBound(0, animationFrameIndex, totalFrames - 1); - - bool blindspotActive = blinkerLeft ? blindspotLeft : blindspotRight; - - int signalXPosition = 0; - int signalYPosition = 0; - - if (signalStyle == "static") { - signalXPosition = blinkerLeft ? (rect().center().x() * 0.75) - signalWidth : rect().center().x() * 1.25; - signalYPosition = signalHeight / 2; - } else { - if (signalStyle == "traditional_gif") { - signalXPosition = blinkerLeft ? width() - (frameIndex * signalMovement) + signalWidth : (frameIndex * signalMovement) - signalWidth; - } else { - signalXPosition = blinkerLeft ? width() - ((frameIndex + 1) * signalWidth) : frameIndex * signalWidth; - } - signalYPosition = height() - signalHeight - alertHeight; - } - - if (blinkerLeft) { - QPixmap &imgToDraw = (blindspotActive && !blindspotImages.empty()) ? blindspotImages[0] : signalImages[frameIndex]; - p.drawPixmap(signalXPosition, signalYPosition, signalWidth, signalHeight, imgToDraw); - } else { - QPixmap &imgToDraw = (blindspotActive && !blindspotImagesRight.empty()) ? blindspotImagesRight[0] : signalImagesRight[frameIndex]; - p.drawPixmap(signalXPosition, signalYPosition, signalWidth, signalHeight, imgToDraw); - } -} - -void StarPilotAnnotatedCameraWidget::paintWeather(QPainter &p) { - if (weatherId == 0) { - return; - } - - p.save(); - - QPoint weatherIconPosition; - if (compassPosition != QPoint(0, 0)) { - weatherIconPosition = compassPosition; - weatherIconPosition.rx() += (rightHandDM ? UI_BORDER_SIZE + widget_size + UI_BORDER_SIZE : -UI_BORDER_SIZE - widget_size - UI_BORDER_SIZE); - } else { - weatherIconPosition.rx() = rightHandDM ? UI_BORDER_SIZE + widget_size / 2 : width() - UI_BORDER_SIZE - btn_size; - weatherIconPosition.ry() = dmIconPosition.y() - widget_size / 2; - } - - QRect weatherRect(weatherIconPosition, QSize(widget_size, widget_size)); - - p.setBrush(blackColor(166)); - p.setPen(QPen(blackColor(), 10)); - p.drawRoundedRect(weatherRect, 24, 24); - - QSharedPointer icon = weatherDaytime ? weatherClearDay : weatherClearNight; - if ((weatherId >= 200 && weatherId <= 232) || (weatherId >= 300 && weatherId <= 321) || (weatherId >= 500 && weatherId <= 531)) { - icon = weatherRain; - } else if (weatherId >= 600 && weatherId <= 622) { - icon = weatherSnow; - } else if (weatherId >= 701 && weatherId <= 762) { - icon = weatherLowVisibility; - } - - p.drawPixmap(weatherRect, icon->currentPixmap()); - - p.restore(); -} diff --git a/starpilot/ui/qt/onroad/starpilot_annotated_camera.h b/starpilot/ui/qt/onroad/starpilot_annotated_camera.h deleted file mode 100644 index 4d779c301..000000000 --- a/starpilot/ui/qt/onroad/starpilot_annotated_camera.h +++ /dev/null @@ -1,216 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/onroad/buttons.h" -#include "selfdrive/ui/qt/widgets/cameraview.h" - -const int widget_size = img_size + (UI_BORDER_SIZE / 2); - -class StarPilotAnnotatedCameraWidget : public QWidget { - Q_OBJECT - -public: - explicit StarPilotAnnotatedCameraWidget(QWidget *parent = 0); - - void mousePressEvent(QMouseEvent *mouseEvent) override; - void paintAdjacentPaths(QPainter &p); - void paintBlindSpotPath(QPainter &p); - void paintStarPilotWidgets(QPainter &p, UIState &s, bool hideCameraOverlays = false); - void paintLeadMetrics(QPainter &p, bool adjacent, QPointF *chevron, const cereal::RadarState::LeadData::Reader &lead_data); - void paintPathEdges(QPainter &p, int height); - void paintRainbowPath(QPainter &p, QLinearGradient &bg, float lin_grad_point); - void updateState(const UIState &s, const StarPilotUIState &fs); - - bool hideBottomIcons; - bool isCruiseSet; - bool rightHandDM; - - int alertHeight; - int speedLimitHeight; - int standstillDuration; - - float speed; - - std::vector radar_tracks; - - StarPilotUIScene starpilot_scene; - - QColor blueColor(int alpha = 255) { return QColor(0, 0, 255, alpha); } - QColor purpleColor(int alpha = 255) { return QColor(128, 0, 128, alpha); } - QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } - - QJsonObject starpilot_toggles; - - QPoint dmIconPosition; - QPoint experimentalButtonPosition; - - QPolygonF track_adjacent_vertices[2]; - QPolygonF track_edge_vertices; - QPolygonF track_vertices; - - QRect adjacentLeadTextRect; - QRect leadTextRect; - QRect setSpeedRect; - - QSize defaultSize; - - QString signalStyle; - -protected: - void showEvent(QShowEvent *event) override; - -private: - void paintCEMStatus(QPainter &p); - void paintCompass(QPainter &p); - void paintCurveSpeedControl(QPainter &p); - void paintCurveSpeedControlTraining(QPainter &p); - void paintLateralPaused(QPainter &p); - void paintLongitudinalPaused(QPainter &p); - void paintPedalIcons(QPainter &p); - void paintRadarTracks(QPainter &p); - void paintRoadName(QPainter &p); - void paintSpeedLimit(QPainter &p); - void paintSpeedLimitSources(QPainter &p); - void paintStandstillTimer(QPainter &p); - void paintForceStop(QPainter &p); - void paintStoppingPoint(QPainter &p); - void paintTurnSignals(QPainter &p); - void paintWeather(QPainter &p); - void updateSignals(); - - bool blindspotLeft; - bool blindspotRight; - bool blinkerLeft; - bool blinkerRight; - bool brakeLights; - bool cscControllingSpeed; - bool forcingStop; - bool stopSignConfirmed; - bool cscTraining; - bool experimentalMode; - bool forceCoast; - bool lateralPaused; - bool longitudinalPaused; - bool redLight; - bool speedLimitChanged; - bool unconfirmedSpeedLimitValid = false; - bool weatherDaytime; - - // Cached toggle values — refreshed once per updateState(), used in paint code - bool cachedAdjacentPathMetrics = false; - bool cachedBlindSpotPath = false; - bool cachedCemStatus = false; - bool cachedCompass = false; - bool cachedCscStatus = false; - bool cachedDynamicPedalsOnUi = false; - bool cachedHideSpeedLimit = false; - bool cachedOpenpilotLongitudinal = false; - bool cachedPedalsOnUi = false; - bool cachedRadarTracks = false; - bool cachedRoadNameUi = false; - bool cachedShowSpeedLimitOffset = false; - bool cachedShowSpeedLimits = false; - bool cachedShowStoppingPoint = false; - bool cachedShowStoppingPointMetrics = false; - bool cachedSimpleMode = false; - bool cachedSpeedLimitController = false; - bool cachedSpeedLimitSources = false; - bool cachedSlcAbbreviatedSources = false; - bool cachedSlcActiveSourcesOnly = false; - bool cachedSpeedLimitVienna = false; - bool cachedStaticPedalsOnUi = false; - bool cachedStoppedTimer = false; - double cachedLaneDetectionWidth = 3.7; - QString cachedColorScheme; - QString cachedPathEdgesColor; - QString cachedSignalIcons; - - int animationFrameIndex; - int desiredFollowDistance; - int frogHopCount; - int signalAnimationLength; - int signalHeight; - int signalMovement; - int signalWidth; - int totalFrames; - int weatherId; - - float accelerationEgo; - float cscSpeed; - float forcingStopLength; - float dashboardSpeedLimit; - float distanceConversion; - float laneWidthLeft; - float laneWidthRight; - float mapSpeedLimit; - float mapboxSpeedLimit; - float nextSpeedLimit; - float roadCurvature; - float setSpeed; - float slcOverriddenSpeed; - float speedConversion; - float speedConversionMetrics; - float speedLimit; - float stoppingDistance; - float unconfirmedSpeedLimit; - float visionSpeedLimit; - - std::string speedLimitSource; - - Params params; - Params params_memory{"", true}; - - QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } - QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } - - QElapsedTimer glowTimer; - QElapsedTimer pendingLimitTimer; - QElapsedTimer standstillTimer; - - QPixmap brakePedalImg; - QPixmap curveSpeedIcon; - QPixmap curveSpeedIconFlipped; - QPixmap dashboardIcon; - QPixmap gasPedalImg; - QPixmap mapboxIcon; - QPixmap mapDataIcon; - QPixmap nextMapsIcon; - QPixmap pausedIcon; - QPixmap speedIcon; - QPixmap forceStopDashImg; - QPixmap forceStopImg; - QPixmap stopSignImg; - QPixmap turnIcon; - QPixmap visionIcon; - - QPoint cemStatusPosition; - QPoint compassPosition; - QPoint lateralPausedPosition; - - QRect speedLimitRect; - - QSharedPointer cemCurveIcon; - QSharedPointer cemLeadIcon; - QSharedPointer cemSpeedIcon; - QSharedPointer cemStopIcon; - QSharedPointer cemTurnIcon; - QSharedPointer chillModeIcon; - QSharedPointer experimentalModeIcon; - QSharedPointer weatherClearDay; - QSharedPointer weatherClearNight; - QSharedPointer weatherLowVisibility; - QSharedPointer weatherRain; - QSharedPointer weatherSnow; - - QString leadDistanceUnit; - QString leadSpeedUnit; - QString roadName; - QString speedLimitOffsetStr; - QString speedUnit; - - QTimer *animationTimer; - - QVector blindspotImages; - QVector blindspotImagesRight; - QVector signalImages; - QVector signalImagesRight; -}; diff --git a/starpilot/ui/qt/onroad/starpilot_buttons.cc b/starpilot/ui/qt/onroad/starpilot_buttons.cc deleted file mode 100644 index e69415de5..000000000 --- a/starpilot/ui/qt/onroad/starpilot_buttons.cc +++ /dev/null @@ -1,241 +0,0 @@ -#include "starpilot/ui/qt/onroad/starpilot_buttons.h" - -#include -#include -#include -#include -#include -#include - -namespace { -constexpr int favorite_btn_size = btn_size; -constexpr int favorite_indicator_size = 22; -constexpr int favorite_slots_count = 3; -const QString favorite_action_decrease = "__starpilot_favorite_action__:distance_decrease"; -const QString favorite_action_increase = "__starpilot_favorite_action__:distance_increase"; -const std::string favorite_action_decel_counter = "FavoriteVirtualDecelCruiseCounter"; -const std::string favorite_action_accel_counter = "FavoriteVirtualAccelCruiseCounter"; - -QJsonArray parseFavoriteSlots(const std::string &raw_slots) { - QJsonParseError error; - const QJsonDocument doc = QJsonDocument::fromJson(QByteArray::fromStdString(raw_slots), &error); - if (error.error != QJsonParseError::NoError || !doc.isArray()) { - return QJsonArray(); - } - return doc.array(); -} -} // namespace - -DrivingPersonalityButton::DrivingPersonalityButton(QWidget *parent) : QPushButton(parent) { - setFixedSize(btn_size + UI_BORDER_SIZE, btn_size); - - QObject::connect(starpilotUIState(), &StarPilotUIState::themeUpdated, this, &DrivingPersonalityButton::updateTheme); - QObject::connect(this, &QPushButton::pressed, [this] {params_memory.putBool("OnroadDistanceButtonPressed", true);}); - QObject::connect(this, &QPushButton::released, [this] {params_memory.putBool("OnroadDistanceButtonPressed", false);}); -} - -void DrivingPersonalityButton::showEvent(QShowEvent *event) { - updateTheme(); -} - -void DrivingPersonalityButton::updateTheme() { - for (QMap>>::iterator it = icon_map.begin(); it != icon_map.end(); ++it) { - QSharedPointer &movie = it.value().second; - if (!movie.isNull()) { - QObject::disconnect(movie.data(), nullptr, this, nullptr); - movie->stop(); - } - } - - icon_map.clear(); - - QPixmap traffic_img, aggressive_img, standard_img, relaxed_img; - QSharedPointer traffic_gif, aggressive_gif, standard_gif, relaxed_gif; - - loadImage("../../starpilot/assets/active_theme/distance_icons/traffic", traffic_img, traffic_gif, QSize(btn_size, btn_size), this); - loadImage("../../starpilot/assets/active_theme/distance_icons/aggressive", aggressive_img, aggressive_gif, QSize(btn_size, btn_size), this); - loadImage("../../starpilot/assets/active_theme/distance_icons/standard", standard_img, standard_gif, QSize(btn_size, btn_size), this); - loadImage("../../starpilot/assets/active_theme/distance_icons/relaxed", relaxed_img, relaxed_gif, QSize(btn_size, btn_size), this); - - icon_map.insert(0, qMakePair(traffic_img, traffic_gif)); - icon_map.insert(1, qMakePair(aggressive_img, aggressive_gif)); - icon_map.insert(2, qMakePair(standard_img, standard_gif)); - icon_map.insert(3, qMakePair(relaxed_img, relaxed_gif)); - - theme_updated = true; -} - -void DrivingPersonalityButton::updateState(const UIState &s, const StarPilotUIState &fs) { - const UIScene &scene = s.scene; - - const SubMaster &fpsm = *(fs.sm); - - const cereal::StarPilotCarState::Reader &starpilotCarState = fpsm["starpilotCarState"].getStarpilotCarState(); - - bool new_traffic_mode_active = starpilotCarState.getTrafficModeEnabled(); - - int new_personality = static_cast(scene.personality) + 1; - - bool state_changed = (traffic_mode_active != new_traffic_mode_active) || - (personality != new_personality && !new_traffic_mode_active); - - if (!state_changed && !theme_updated) { - return; - } - - traffic_mode_active = new_traffic_mode_active; - - personality = new_personality; - - theme_updated = false; - - QPair> icon = icon_map.value(traffic_mode_active ? 0 : personality); - currentImg = icon.first; - currentGif = icon.second.data(); -} - -void DrivingPersonalityButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - drawIcon(p, rect().center() + QPoint(UI_BORDER_SIZE / 2, 0), currentGif ? currentGif->currentPixmap() : currentImg, Qt::transparent, 1.0); -} - -FavoriteButton::FavoriteButton(int slot_index, QWidget *parent) : QPushButton(parent), slot_index(slot_index) { - setFixedSize(favorite_btn_size, favorite_btn_size); - QObject::connect(this, &QPushButton::clicked, this, &FavoriteButton::toggleFavorite); -} - -FavoriteSlotState FavoriteButton::currentSlot() { - FavoriteSlotState next_slot; - if (slot_index < 0 || slot_index >= favorite_slots_count) { - return next_slot; - } - - const QJsonArray favorite_slots = parseFavoriteSlots(params.get("StarPilotFavoriteSlots")); - if (slot_index >= favorite_slots.size() || !favorite_slots.at(slot_index).isObject()) { - return next_slot; - } - - const QJsonObject slot_obj = favorite_slots.at(slot_index).toObject(); - next_slot.enabled = slot_obj.value("enabled").toBool(false); - next_slot.show_onroad = slot_obj.value("show_onroad").toBool(false); - next_slot.key = slot_obj.value("key").toString().trimmed(); - next_slot.label = slot_obj.value("label").toString().trimmed(); - next_slot.action = next_slot.key == favorite_action_decrease || next_slot.key == favorite_action_increase; - - if (!next_slot.action && - (next_slot.key.isEmpty() || !params.checkKey(next_slot.key.toStdString()) || params.getKeyType(next_slot.key.toStdString()) != ParamKeyType::BOOL)) { - next_slot.enabled = false; - next_slot.show_onroad = false; - next_slot.key.clear(); - next_slot.label.clear(); - return next_slot; - } - - if (next_slot.label.isEmpty() && next_slot.action) { - next_slot.label = next_slot.key == favorite_action_increase ? "Distance + / RES" : "Distance - / SET"; - } else if (next_slot.label.isEmpty()) { - next_slot.label = next_slot.key; - } - next_slot.value = !next_slot.action && params.getBool(next_slot.key.toStdString()); - return next_slot; -} - -void FavoriteButton::updateState() { - const FavoriteSlotState next_slot = currentSlot(); - const bool changed = next_slot.enabled != slot.enabled || - next_slot.show_onroad != slot.show_onroad || - next_slot.action != slot.action || - next_slot.value != slot.value || - next_slot.key != slot.key || - next_slot.label != slot.label; - slot = next_slot; - setVisible(shouldShow()); - if (changed) { - update(); - } -} - -bool FavoriteButton::shouldShow() const { - return slot.enabled && slot.show_onroad && !slot.key.isEmpty(); -} - -void FavoriteButton::toggleFavorite() { - slot = currentSlot(); - if (!slot.enabled || slot.key.isEmpty()) { - return; - } - - if (slot.action) { - const std::string counter_key = slot.key == favorite_action_increase ? favorite_action_accel_counter : favorite_action_decel_counter; - params_memory.putInt(counter_key, params_memory.getInt(counter_key) + 1); - update(); - return; - } - - const bool next_value = !params.getBool(slot.key.toStdString()); - params.putBool(slot.key.toStdString(), next_value); - params_memory.putBool("StarPilotTogglesUpdated", true); - slot.value = next_value; - update(); -} - -QFont FavoriteButton::fittedLabelFont(QPainter &p, const QString &label, const QRect &text_rect) const { - QFont font = p.font(); - font.setWeight(QFont::DemiBold); - font.setLetterSpacing(QFont::AbsoluteSpacing, 0); - - for (int font_size = 28; font_size >= 18; --font_size) { - font.setPixelSize(font_size); - const QFontMetrics metrics(font); - const QRect bounds = metrics.boundingRect(text_rect, Qt::AlignCenter | Qt::TextWordWrap, label); - if (bounds.width() <= text_rect.width() && bounds.height() <= text_rect.height()) { - return font; - } - } - - font.setPixelSize(18); - return font; -} - -void FavoriteButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - const QRectF bg_rect = rect().adjusted(0, 0, -1, -1); - QPainterPath bg_path; - bg_path.addRoundedRect(bg_rect, 12, 12); - p.fillPath(bg_path, QColor(0, 0, 0, isDown() ? 190 : 166)); - p.setPen(QPen(QColor(255, 255, 255, isDown() ? 130 : 95), 2)); - p.drawPath(bg_path); - - const QColor indicator_color = slot.action ? QColor(139, 108, 197) : (slot.value ? QColor(48, 255, 156) : QColor(135, 135, 135)); - const int indicator_x = width() - 20 - favorite_indicator_size; - const int indicator_y = 20; - p.setPen(Qt::NoPen); - p.setBrush(indicator_color); - p.drawEllipse(indicator_x, indicator_y, favorite_indicator_size, favorite_indicator_size); - if (slot.action) { - QFont action_font = p.font(); - action_font.setPixelSize(20); - action_font.setWeight(QFont::DemiBold); - p.setFont(action_font); - p.setPen(QColor(255, 255, 255, 230)); - p.drawText(QRect(indicator_x, indicator_y - 1, favorite_indicator_size, favorite_indicator_size), Qt::AlignCenter, slot.key == favorite_action_increase ? "+" : "-"); - } - - QFont slot_font = p.font(); - slot_font.setPixelSize(20); - slot_font.setWeight(QFont::DemiBold); - slot_font.setLetterSpacing(QFont::AbsoluteSpacing, 0); - p.setFont(slot_font); - p.setPen(QColor(255, 255, 255, 175)); - p.drawText(QRect(18, 14, 54, 32), Qt::AlignLeft | Qt::AlignVCenter, QString("#%1").arg(slot_index + 1)); - - const QString label = slot.label.isEmpty() ? QStringLiteral("Favorite") : slot.label; - const QRect text_rect(14, 50, width() - 28, height() - 64); - p.setFont(fittedLabelFont(p, label, text_rect)); - p.setPen(QColor(255, 255, 255, 245)); - p.drawText(text_rect, Qt::AlignCenter | Qt::TextWordWrap, label); -} diff --git a/starpilot/ui/qt/onroad/starpilot_buttons.h b/starpilot/ui/qt/onroad/starpilot_buttons.h deleted file mode 100644 index f6bacd9c8..000000000 --- a/starpilot/ui/qt/onroad/starpilot_buttons.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include - -#include "selfdrive/ui/qt/onroad/buttons.h" - -struct FavoriteSlotState { - bool enabled = false; - bool show_onroad = false; - bool action = false; - bool value = false; - QString key; - QString label; -}; - -class DrivingPersonalityButton : public QPushButton { - Q_OBJECT - -public: - explicit DrivingPersonalityButton(QWidget *parent = 0); - - void updateState(const UIState &s, const StarPilotUIState &fs); - -private: - void paintEvent(QPaintEvent *event) override; - void showEvent(QShowEvent *event) override; - void updateTheme(); - - bool theme_updated; - bool traffic_mode_active; - - int personality; - - Params params_memory{"", true}; - - QMap>> icon_map; - - QMovie *currentGif; - - QPixmap currentImg; -}; - -class FavoriteButton : public QPushButton { -public: - explicit FavoriteButton(int slot_index, QWidget *parent = 0); - - void updateState(); - bool shouldShow() const; - -private: - void paintEvent(QPaintEvent *event) override; - void toggleFavorite(); - - FavoriteSlotState currentSlot(); - QFont fittedLabelFont(QPainter &p, const QString &label, const QRect &text_rect) const; - - int slot_index; - FavoriteSlotState slot; - - Params params; - Params params_memory{"", true}; -}; diff --git a/starpilot/ui/qt/onroad/starpilot_onroad.cc b/starpilot/ui/qt/onroad/starpilot_onroad.cc deleted file mode 100644 index 745ca155b..000000000 --- a/starpilot/ui/qt/onroad/starpilot_onroad.cc +++ /dev/null @@ -1,155 +0,0 @@ -#include "starpilot/ui/qt/onroad/starpilot_onroad.h" - -StarPilotOnroadWindow::StarPilotOnroadWindow(QWidget *parent) : QWidget(parent) { - signalTimer = new QTimer(this); - QObject::connect(signalTimer, &QTimer::timeout, [this] { - flickerActive = !flickerActive; - }); -} - -void StarPilotOnroadWindow::resizeEvent(QResizeEvent *event) { - rect = QWidget::rect(); - marginRegion = QRegion(rect) - QRegion(rect.marginsRemoved(QMargins(UI_BORDER_SIZE, UI_BORDER_SIZE, UI_BORDER_SIZE, UI_BORDER_SIZE))); - - steeringGradient = QLinearGradient(rect.topLeft(), rect.bottomLeft()); - QColor bottomGreen = bg_colors[STATUS_ENGAGED].lighter(120); - bottomGreen.setAlpha(bg_colors[STATUS_ENGAGED].alpha()); - steeringGradient.setColorAt(0.0, bg_colors[STATUS_TRAFFIC_MODE_ENABLED]); - steeringGradient.setColorAt(0.25, bg_colors[STATUS_EXPERIMENTAL_MODE_ENABLED]); - steeringGradient.setColorAt(0.5, bg_colors[STATUS_CEM_DISABLED]); - steeringGradient.setColorAt(0.75, bg_colors[STATUS_ENGAGED]); - steeringGradient.setColorAt(1.0, bottomGreen); -} - -void StarPilotOnroadWindow::updateState(const UIState &s, const StarPilotUIState &fs) { - const SubMaster &sm = *(s.sm); - const SubMaster &fpsm = *(fs.sm); - - const cereal::CarState::Reader &carState = sm["carState"].getCarState(); - const cereal::CarControl::Reader &carControl = fpsm["carControl"].getCarControl(); - - blindSpotLeft = carState.getLeftBlindspot(); - blindSpotRight = carState.getRightBlindspot(); - torque = -carControl.getActuators().getTorque(); - turnSignalLeft = carState.getLeftBlinker(); - turnSignalRight = carState.getRightBlinker(); - - showBlindspot = (blindSpotLeft || blindSpotRight) && starpilot_toggles.value("blind_spot_metrics").toBool(); - showFPS = starpilot_toggles.value("show_fps").toBool(); - showSignal = (turnSignalLeft || turnSignalRight) && starpilot_toggles.value("signal_metrics").toBool(); - showSteering = starpilot_toggles.value("steering_metrics").toBool(); - - if (showSteering) { - float absTorque = std::abs(torque); - smoothedSteer = 0.25f * absTorque + 0.75f * smoothedSteer; - if (std::abs(smoothedSteer - absTorque) < 0.01f) { - smoothedSteer = absTorque; - } - } - - if (showBlindspot || showSignal) { - std::function getBorderColor = [&](bool blindSpot, bool turnSignal) { - if (turnSignal && showSignal) { - if (blindSpot) { - return flickerActive ? bg_colors[STATUS_TRAFFIC_MODE_ENABLED] : bg_colors[STATUS_CEM_DISABLED]; - } else { - return flickerActive ? bg_colors[STATUS_CEM_DISABLED] : bg; - } - } else if (blindSpot && showBlindspot) { - return bg_colors[STATUS_TRAFFIC_MODE_ENABLED]; - } else { - return bg; - } - }; - - leftBorderColor = getBorderColor(blindSpotLeft, turnSignalLeft); - rightBorderColor = getBorderColor(blindSpotRight, turnSignalRight); - - int interval = showBlindspot ? 250 : 500; - if (!signalTimer->isActive() || signalTimer->interval() != interval) { - signalTimer->start(interval); - } - } else if (signalTimer->isActive()) { - signalTimer->stop(); - } - - if (showFPS) { - static float avgFPS = 0.0f; - static float maxFPS = 0.0f; - static float minFPS = 99.9f; - - if (avgFPS == 0.0f) { - avgFPS = fps; - } - - static float alpha = 1.0f / (UI_FREQ * 60.0f); - avgFPS = alpha * fps + (1.0f - alpha) * avgFPS; - - minFPS = std::min(minFPS, fps); - maxFPS = std::max(maxFPS, fps); - - fpsDisplayString = QString("FPS: %1 | Min: %2 | Max: %3 | Avg: %4") - .arg(qRound(fps)) - .arg(qRound(minFPS)) - .arg(qRound(maxFPS)) - .arg(qRound(avgFPS)); - } - - if (showBlindspot || showSignal || showSteering || showFPS) { - update(); - } -} - -void StarPilotOnroadWindow::paintEvent(QPaintEvent *event) { - QPainter p(this); - - p.setClipRegion(marginRegion); - p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); - - if (showSteering) { - paintSteeringTorqueBorder(p); - } - - if (showBlindspot || showSignal) { - paintTurnSignalBorder(p); - } - - if (showFPS) { - paintFPS(p); - } -} - -void StarPilotOnroadWindow::paintFPS(QPainter &p) { - p.save(); - - p.setFont(InterFont(28, QFont::DemiBold)); - p.setPen(Qt::white); - - int xPos = (rect.width() - p.fontMetrics().horizontalAdvance(fpsDisplayString)) / 2; - int yPos = rect.bottom() - 5; - - p.drawText(xPos, yPos, fpsDisplayString); - - p.restore(); -} - -void StarPilotOnroadWindow::paintSteeringTorqueBorder(QPainter &p) { - p.save(); - - int visibleHeight = rect.height() * smoothedSteer; - int xPos = (torque < 0) ? rect.x() : (rect.x() + rect.width() - UI_BORDER_SIZE); - int yPos = rect.y() + rect.height() - visibleHeight; - - p.fillRect(QRect(xPos, yPos, UI_BORDER_SIZE, visibleHeight), steeringGradient); - - p.restore(); -} - -void StarPilotOnroadWindow::paintTurnSignalBorder(QPainter &p) { - p.save(); - - p.fillRect(rect.x(), rect.y(), rect.width() / 2, rect.height(), leftBorderColor); - p.fillRect(rect.x() + rect.width() / 2, rect.y(), rect.width() / 2, rect.height(), rightBorderColor); - - p.restore(); -} diff --git a/starpilot/ui/qt/onroad/starpilot_onroad.h b/starpilot/ui/qt/onroad/starpilot_onroad.h deleted file mode 100644 index 541f09d89..000000000 --- a/starpilot/ui/qt/onroad/starpilot_onroad.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/onroad/annotated_camera.h" - -class StarPilotOnroadWindow : public QWidget { - Q_OBJECT - -public: - StarPilotOnroadWindow(QWidget* parent = 0); - - void updateState(const UIState &s, const StarPilotUIState &fs); - - float fps; - - StarPilotUIScene starpilot_scene; - - QColor bg; - - QJsonObject starpilot_toggles; - -private: - void paintEvent(QPaintEvent *event); - void paintFPS(QPainter &p); - void paintSteeringTorqueBorder(QPainter &p); - void paintTurnSignalBorder(QPainter &p); - void resizeEvent(QResizeEvent *event); - - bool blindSpotLeft; - bool blindSpotRight; - bool flickerActive; - bool showBlindspot; - bool showFPS; - bool showSignal; - bool showSteering; - bool turnSignalLeft; - bool turnSignalRight; - - float smoothedSteer; - float torque; - - QColor leftBorderColor; - QColor rightBorderColor; - - QRect rect; - QLinearGradient steeringGradient; - - QRegion marginRegion; - - QString fpsDisplayString; - - QTimer *signalTimer; -}; diff --git a/starpilot/ui/qt/widgets/developer_sidebar.cc b/starpilot/ui/qt/widgets/developer_sidebar.cc deleted file mode 100644 index 91f112000..000000000 --- a/starpilot/ui/qt/widgets/developer_sidebar.cc +++ /dev/null @@ -1,338 +0,0 @@ -#include "starpilot/ui/qt/widgets/developer_sidebar.h" - -#include -#include - -#include -#include -#include -#include - -namespace { - -const QColor LOCKED_VALUE_COLOR = QColor(34, 197, 94); -const QColor AUTO_TUNE_COLOR = QColor(59, 130, 246); -const QColor FLM_OVERRIDE_COLOR = QColor(239, 68, 68); - -bool settingChanged(float value, float reference) { - return std::round(value * 100.0f) != std::round(reference * 100.0f); -} - -bool toggleBool(const QJsonObject &toggles, const QString &key, bool fallback = false) { - return toggles.contains(key) ? toggles.value(key).toBool(fallback) : fallback; -} - -float toggleFloat(const QJsonObject &toggles, const QString &key, float fallback = 0.0f) { - return toggles.contains(key) ? static_cast(toggles.value(key).toDouble(fallback)) : fallback; -} - -float resolveEffectiveTorqueValue(bool customEnabled, float customValue, - bool liveEnabled, float liveValue, - float stockValue, float configuredValue) { - if (customEnabled) { - return customValue; - } - if (liveEnabled) { - return liveValue; - } - return stockValue != 0.0f ? stockValue : configuredValue; -} - -QSet readFlmGenericParamKeys(Params ¶ms) { - QSet keys; - const std::string raw = params.get("FLMTrialBaseline"); - if (raw.empty()) { - return keys; - } - - QJsonParseError error; - const QJsonDocument doc = QJsonDocument::fromJson(QByteArray::fromStdString(raw), &error); - if (error.error != QJsonParseError::NoError || !doc.isObject()) { - return keys; - } - - const QJsonObject appliedParams = doc.object().value("appliedGenericParams").toObject(); - for (const QString &key : appliedParams.keys()) { - keys.insert(key); - } - return keys; -} - -bool flmChanged(const QSet &keys, std::initializer_list names) { - for (const char *name : names) { - if (keys.contains(QString::fromUtf8(name))) { - return true; - } - } - return false; -} - -QColor tuningColor(bool autoTune, bool flm) { - if (flm) { - return FLM_OVERRIDE_COLOR; - } - return autoTune ? AUTO_TUNE_COLOR : LOCKED_VALUE_COLOR; -} - -} // namespace - -void DeveloperSidebar::drawMetric(QPainter &p, const QPair &label, QColor c, int y) { - const QRect rect = {12, y, 275, 126}; - - p.setPen(Qt::NoPen); - p.setBrush(QBrush(c)); - p.setClipRect(rect.x() + rect.width() - 4 - 18, rect.y(), 18, rect.height(), Qt::ClipOperation::ReplaceClip); - p.drawRoundedRect(QRect(rect.x() + rect.width() - 4 - 100, rect.y() + 4, 100, 118), 18, 18); - p.setClipping(false); - - QPen pen = QPen(QColor(0xff, 0xff, 0xff, 0x55)); - pen.setWidth(2); - p.setPen(pen); - p.setBrush(Qt::NoBrush); - p.drawRoundedRect(rect, 20, 20); - - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setFont(InterFont(35, QFont::DemiBold)); - if (label.second.isEmpty()) { - p.drawText(rect.adjusted(8, 8, -22, -8), Qt::AlignCenter | Qt::TextWordWrap, label.first); - } else { - p.drawText(rect.adjusted(8, 8, -22, -8), Qt::AlignCenter, label.first + "\n" + label.second); - } -} - -DeveloperSidebar::DeveloperSidebar(QWidget *parent) : QFrame(parent) { - setAttribute(Qt::WA_OpaquePaintEvent); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - setFixedWidth(300); - - QObject::connect(starpilotUIState(), &StarPilotUIState::themeUpdated, this, &DeveloperSidebar::updateToggles); - QObject::connect(uiState(), &UIState::offroadTransition, this, &DeveloperSidebar::resetVariables); - QObject::connect(uiState(), &UIState::uiUpdate, this, &DeveloperSidebar::updateState); -} - -void DeveloperSidebar::showEvent(QShowEvent *event) { - updateToggles(); -} - -void DeveloperSidebar::updateToggles() { - StarPilotUIState &fs = *starpilotUIState(); - StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - - metricAssignments.clear(); - for (int i = 1; i <= 7; ++i) { - QString key = QString("developer_sidebar_metric%1").arg(i); - int metricId = starpilot_toggles.value(key).toInt(); - metricAssignments.push_back(metricId); - } - - metricColor = QColor(starpilot_toggles.value("sidebar_color1").toString()); -} - -void DeveloperSidebar::resetVariables() { - lateralEngagementTime = 0; - longitudinalEngagementTime = 0; - maxAcceleration = 0; - totalEngagementTime = 0; -} - -void DeveloperSidebar::updateState(const UIState &s, const StarPilotUIState &fs) { - if (!isVisible()) { - return; - } - - const SubMaster &sm = *(s.sm); - - const StarPilotUIScene &starpilot_scene = fs.starpilot_scene; - const QJsonObject &starpilot_toggles = starpilot_scene.starpilot_toggles; - const SubMaster &fpsm = *(fs.sm); - - const cereal::CarControl::Reader &carControl = fpsm["carControl"].getCarControl(); - const cereal::CarState::Reader &carState = sm["carState"].getCarState(); - const cereal::StarPilotPlan::Reader &starpilotPlan = fpsm["starpilotPlan"].getStarpilotPlan(); - const cereal::LiveDelayData::Reader &liveDelay = fpsm["liveDelay"].getLiveDelay(); - const cereal::LiveParametersData::Reader &liveParameters = fpsm["liveParameters"].getLiveParameters(); - const cereal::LiveTorqueParametersData::Reader &liveTorqueParameters = fpsm["liveTorqueParameters"].getLiveTorqueParameters(); - const bool forceAutoTuneOff = toggleBool(starpilot_toggles, "force_auto_tune_off", params.getBool("ForceAutoTuneOff")); - const bool forceAutoTune = toggleBool(starpilot_toggles, "force_auto_tune", params.getBool("ForceAutoTune")); - const bool usingLiveTorqueTune = !forceAutoTuneOff && (liveTorqueParameters.getUseParams() || forceAutoTune); - - const bool is_metric = s.scene.is_metric; - const bool use_si = starpilot_toggles.value("use_si_metrics").toBool(); - - const QString accelerationUnit = (is_metric || use_si) ? tr(" m/s²") : tr(" ft/s²"); - const float accelerationConversion = (is_metric || use_si) ? 1.0f : METER_TO_FOOT; - - double acceleration = carState.getAEgo() * accelerationConversion; - if (!carState.getGasPressed()) { - maxAcceleration = std::max(maxAcceleration, acceleration); - } - - lateralEngagementTime += carControl.getLatActive() && !starpilot_scene.reverse && !starpilot_scene.standstill ? 1 : 0; - longitudinalEngagementTime += carControl.getLongActive() && !starpilot_scene.reverse && !starpilot_scene.standstill ? 1 : 0; - totalEngagementTime += !(starpilot_scene.reverse || starpilot_scene.standstill) || totalEngagementTime == 0 ? 1 : 0; - - static int maxSteerAngle = 0; - int currentSteerAngle = fabs(carState.getSteeringAngleDeg()); - - static int maxTorque = 0; - int currentTorque = fabs(carControl.getActuators().getTorque() * 100); - - static QElapsedTimer torqueTimer; - - if (currentTorque >= 50) { - maxSteerAngle = std::max(maxSteerAngle, currentSteerAngle); - maxTorque = std::max(maxTorque, currentTorque); - - torqueTimer.start(); - } else if (torqueTimer.elapsed() >= 10000) { - maxTorque = 0; - maxSteerAngle = 0; - - torqueTimer.invalidate(); - } - - QString steerLabel = QString::number(currentSteerAngle) + "°"; - QString torqueLabel = QString::number(currentTorque) + "%"; - - if (currentTorque >= 50 || torqueTimer.isValid()) { - steerLabel += QString(" - (%1°)").arg(maxSteerAngle); - torqueLabel += QString(" - (%1%)").arg(maxTorque); - } - - const float frictionStock = params.getFloat("SteerFrictionStock"); - const float frictionConfigured = params.getFloat("SteerFriction"); - const float latAccelStock = params.getFloat("SteerLatAccelStock"); - const float latAccelConfigured = params.getFloat("SteerLatAccel"); - const float steerRatioStock = params.getFloat("SteerRatioStock"); - const float steerRatioConfigured = params.getFloat("SteerRatio"); - - const float customFriction = toggleFloat(starpilot_toggles, "friction", frictionConfigured); - const float customLatAccel = toggleFloat(starpilot_toggles, "latAccelFactor", latAccelConfigured); - const bool useCustomFriction = toggleBool(starpilot_toggles, "use_custom_friction", - forceAutoTuneOff || (settingChanged(frictionConfigured, frictionStock) && !forceAutoTune)); - const bool useCustomLatAccel = toggleBool(starpilot_toggles, "use_custom_latAccelFactor", - forceAutoTuneOff || (settingChanged(latAccelConfigured, latAccelStock) && !forceAutoTune)); - - const float displayedFriction = resolveEffectiveTorqueValue( - useCustomFriction, - customFriction, - usingLiveTorqueTune, - liveTorqueParameters.getFrictionCoefficientFiltered(), - frictionStock, - frictionConfigured - ); - const float displayedLatAccel = resolveEffectiveTorqueValue( - useCustomLatAccel, - customLatAccel, - usingLiveTorqueTune, - liveTorqueParameters.getLatAccelFactorFiltered(), - latAccelStock, - latAccelConfigured - ); - - const bool cachedUseAutoDelay = params.get("UseAutoSteerDelay").empty() ? true : params.getBool("UseAutoSteerDelay"); - const bool useAutoSteerDelay = toggleBool(starpilot_toggles, "use_auto_steer_delay", cachedUseAutoDelay); - const bool useCustomDelay = toggleBool(starpilot_toggles, "use_custom_steerActuatorDelay", !useAutoSteerDelay); - const float customDelay = toggleFloat(starpilot_toggles, "steerActuatorDelay", params.getFloat("SteerDelay")); - const float displayedDelay = useCustomDelay ? customDelay : liveDelay.getLateralDelay(); - - const bool useCustomSteerRatio = toggleBool(starpilot_toggles, "use_custom_steerRatio", - forceAutoTuneOff || (settingChanged(steerRatioConfigured, steerRatioStock) && !forceAutoTune)); - const QSet flmGenericParamKeys = params.getBool("FLMTrialApplied") ? readFlmGenericParamKeys(params) : QSet(); - const bool forceAutoTuneFlm = flmChanged(flmGenericParamKeys, {"ForceAutoTune", "ForceAutoTuneOff"}); - const QColor delayColor = tuningColor(!useCustomDelay, flmChanged(flmGenericParamKeys, {"SteerDelay", "UseAutoSteerDelay"})); - const QColor frictionColor = tuningColor( - usingLiveTorqueTune && !useCustomFriction, - flmChanged(flmGenericParamKeys, {"SteerFriction"}) || (forceAutoTuneFlm && (usingLiveTorqueTune || useCustomFriction)) - ); - const QColor latAccelColor = tuningColor( - usingLiveTorqueTune && !useCustomLatAccel, - flmChanged(flmGenericParamKeys, {"SteerLatAccel"}) || (forceAutoTuneFlm && (usingLiveTorqueTune || useCustomLatAccel)) - ); - const QColor steerRatioColor = tuningColor( - !useCustomSteerRatio, - flmChanged(flmGenericParamKeys, {"SteerRatio"}) || (forceAutoTuneFlm && useCustomSteerRatio) - ); - - accelerationStatus = ItemStatus(QPair(tr("ACCEL"), QString::number(acceleration, 'f', 2) + accelerationUnit), metricColor); - accelerationJerkStatus = ItemStatus(QPair(tr("ACCEL JERK"), QString::number(starpilotPlan.getAccelerationJerk())), metricColor); - actuatorAccelerationStatus = ItemStatus(QPair(tr("ACT ACCEL"), QString::number(carControl.getActuators().getAccel() * accelerationConversion, 'f', 2) + accelerationUnit), metricColor); - dangerFactorStatus = ItemStatus(QPair(tr("DANGER %"), QString::number(starpilotPlan.getDangerFactor() * 100.0f, 'f', 2) + "%"), metricColor); - dangerJerkStatus = ItemStatus(QPair(tr("DANGER JERK"), QString::number(starpilotPlan.getDangerJerk())), metricColor); - delayStatus = ItemStatus(QPair(tr("STEER DELAY"), QString::number(displayedDelay, 'f', 5)), delayColor); - frictionStatus = ItemStatus(QPair(tr("FRICTION"), QString::number(displayedFriction, 'f', 5)), frictionColor); - latAccelStatus = ItemStatus(QPair(tr("LAT ACCEL"), QString::number(displayedLatAccel, 'f', 5)), latAccelColor); - lateralEngagementStatus = ItemStatus(QPair(tr("LATERAL %"), QString::number((lateralEngagementTime / totalEngagementTime) * 100.0f, 'f', 2) + "%"), metricColor); - longitudinalEngagementStatus = ItemStatus(QPair(tr("LONG %"), QString::number((longitudinalEngagementTime / totalEngagementTime) * 100.0f, 'f', 2) + "%"), metricColor); - maxAccelerationStatus = ItemStatus(QPair(tr("MAX ACCEL"), QString::number(maxAcceleration, 'f', 2) + accelerationUnit), metricColor); - speedJerkStatus = ItemStatus(QPair(tr("SPEED JERK"), QString::number(starpilotPlan.getSpeedJerk())), metricColor); - steerAngleStatus = ItemStatus(QPair(tr("STEER ANGLE"), steerLabel), metricColor); - steerRatioStatus = ItemStatus(QPair(tr("STEER RATIO"), QString::number(liveParameters.getSteerRatio(), 'f', 5)), steerRatioColor); - stiffnessFactorStatus = ItemStatus(QPair(tr("STEER STIFF"), QString::number(liveParameters.getStiffnessFactor(), 'f', 5)), AUTO_TUNE_COLOR); - torqueStatus = ItemStatus(QPair(tr("TORQUE %"), torqueLabel), metricColor); - - QString modelName = starpilot_toggles.value("model_name").toString(); - modelName.remove(QRegularExpression("\\(.*\\)")); - modelName.remove(QRegularExpression("[^a-zA-Z0-9 \\-\\.:]")); - modelNameStatus = ItemStatus(QPair(modelName.trimmed(), ""), metricColor); - - update(); -} - -void DeveloperSidebar::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setPen(Qt::NoPen); - p.setRenderHint(QPainter::Antialiasing); - - p.fillRect(rect(), QColor(57, 57, 57)); - - QMap metricMap; - metricMap.insert(1, &accelerationStatus); - metricMap.insert(2, &maxAccelerationStatus); - metricMap.insert(3, &delayStatus); - metricMap.insert(4, &frictionStatus); - metricMap.insert(5, &latAccelStatus); - metricMap.insert(6, &steerRatioStatus); - metricMap.insert(7, &stiffnessFactorStatus); - metricMap.insert(8, &lateralEngagementStatus); - metricMap.insert(9, &longitudinalEngagementStatus); - metricMap.insert(10, &steerAngleStatus); - metricMap.insert(11, &torqueStatus); - metricMap.insert(12, &actuatorAccelerationStatus); - metricMap.insert(13, &dangerFactorStatus); - metricMap.insert(14, &accelerationJerkStatus); - metricMap.insert(15, &dangerJerkStatus); - metricMap.insert(16, &speedJerkStatus); - metricMap.insert(17, &modelNameStatus); - - int count = 0; - for (size_t i = 0; i < metricAssignments.size(); ++i) { - if (metricAssignments[i] > 0 && metricMap.contains(metricAssignments[i])) { - count++; - } - } - if (count == 0) { - return; - } - - int metricHeight = 126; - int spacing = (height() - (count * metricHeight)) / (count + 1); - int y = spacing; - - for (size_t i = 0; i < metricAssignments.size(); ++i) { - int metricId = metricAssignments[i]; - - if (metricId == 0) { - continue; - } - - if (!metricMap.contains(metricId)) { - continue; - } - - ItemStatus *status = metricMap[metricId]; - drawMetric(p, status->first, status->second, y); - y += metricHeight + spacing; - } -} diff --git a/starpilot/ui/qt/widgets/developer_sidebar.h b/starpilot/ui/qt/widgets/developer_sidebar.h deleted file mode 100644 index bb588ecc8..000000000 --- a/starpilot/ui/qt/widgets/developer_sidebar.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include "selfdrive/ui/qt/sidebar.h" - -class DeveloperSidebar : public QFrame { - Q_OBJECT - -public: - explicit DeveloperSidebar(QWidget* parent = 0); - -private: - void drawMetric(QPainter &p, const QPair &label, QColor c, int y); - void paintEvent(QPaintEvent *event) override; - void resetVariables(); - void showEvent(QShowEvent *event); - void updateState(const UIState &s, const StarPilotUIState &fs); - void updateToggles(); - - double lateralEngagementTime; - double longitudinalEngagementTime; - double maxAcceleration; - double totalEngagementTime; - - std::vector metricAssignments; - - QColor metricColor; - Params params; - - ItemStatus accelerationJerkStatus; - ItemStatus accelerationStatus; - ItemStatus actuatorAccelerationStatus; - ItemStatus dangerFactorStatus; - ItemStatus dangerJerkStatus; - ItemStatus delayStatus; - ItemStatus frictionStatus; - ItemStatus latAccelStatus; - ItemStatus lateralEngagementStatus; - ItemStatus longitudinalEngagementStatus; - ItemStatus maxAccelerationStatus; - ItemStatus modelNameStatus; - ItemStatus speedJerkStatus; - ItemStatus steerAngleStatus; - ItemStatus steerRatioStatus; - ItemStatus stiffnessFactorStatus; - ItemStatus torqueStatus; -}; diff --git a/starpilot/ui/qt/widgets/drive_stats.cc b/starpilot/ui/qt/widgets/drive_stats.cc deleted file mode 100644 index aaa5032fe..000000000 --- a/starpilot/ui/qt/widgets/drive_stats.cc +++ /dev/null @@ -1,108 +0,0 @@ -#include "selfdrive/ui/qt/request_repeater.h" - -#include "starpilot/ui/qt/widgets/drive_stats.h" - -static QLabel *newLabel(const QString &text, const QString &type) { - QLabel *label = new QLabel(text); - label->setProperty("type", type); - return label; -} - -DriveStats::DriveStats(QWidget *parent) : QFrame(parent) { - isMetric = params.getBool("IsMetric"); - konik = useKonikServer(); - - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(50, 25, 50, 20); - - addStatsLayouts(konik ? tr("ALL TIME (KONIK)") : tr("ALL TIME"), all); - addStatsLayouts(konik ? tr("PAST WEEK (KONIK)") : tr("PAST WEEK"), week); - addStatsLayouts(tr("STARPILOT"), frogPilot, true); - - std::optional dongleId = getDongleId(); - if (dongleId.has_value()) { - QString url = CommaApi::BASE_URL + "/v1.1/devices/" + dongleId.value() + "/stats"; - RequestRepeater *repeater = new RequestRepeater(this, url, "ApiCache_DriveStats", 30); - QObject::connect(repeater, &RequestRepeater::requestDone, this, &DriveStats::parseResponse); - } - - setStyleSheet(R"( - DriveStats { - background-color: #333333; - border-radius: 10px; - } - - QLabel[type="starpilot_title"] { font-size: 50px; font-weight: 500; color: #178643; } - QLabel[type="number"] { font-size: 65px; font-weight: 400; } - QLabel[type="title"] { font-size: 50px; font-weight: 500; } - QLabel[type="unit"] { font-size: 50px; font-weight: 300; color: #A0A0A0; } - )"); -} - -void DriveStats::showEvent(QShowEvent *event) { - isMetric = params.getBool("IsMetric"); - - updateStats(); -} - -void DriveStats::addStatsLayouts(const QString &title, StatsLabels &labels, bool StarPilot) { - QGridLayout *grid_layout = new QGridLayout; - grid_layout->setVerticalSpacing(10); - grid_layout->setContentsMargins(0, 10, 0, 10); - - int row = 0; - grid_layout->addWidget(newLabel(title, StarPilot ? "starpilot_title" : "title"), row++, 0, 1, 3); - grid_layout->addItem(new QSpacerItem(0, 10), row++, 0, 1, 1); - - grid_layout->addWidget(labels.routes = newLabel("0", "number"), row, 0, Qt::AlignLeft); - grid_layout->addWidget(labels.distance = newLabel("0", "number"), row, 1, Qt::AlignLeft); - grid_layout->addWidget(labels.hours = newLabel("0", "number"), row, 2, Qt::AlignLeft); - - grid_layout->addWidget(newLabel(tr("Drives"), "unit"), row + 1, 0, Qt::AlignLeft); - grid_layout->addWidget(labels.distance_unit = newLabel(isMetric ? tr("KM") : tr("Miles"), "unit"), row + 1, 1, Qt::AlignLeft); - grid_layout->addWidget(newLabel(tr("Hours"), "unit"), row + 1, 2, Qt::AlignLeft); - - QVBoxLayout *main_layout = static_cast(layout()); - main_layout->addLayout(grid_layout); - main_layout->addStretch(1); -} - -void DriveStats::parseResponse(const QString &response, bool success) { - if (!success) { - return; - } - - QJsonDocument doc = QJsonDocument::fromJson(response.trimmed().toUtf8()); - if (doc.isNull()) { - qDebug() << "JSON Parse failed on getting past drives statistics"; - return; - } - stats = doc; - updateStats(); -} - -void DriveStats::updateStatsForLabel(const QJsonObject &obj, StatsLabels &labels) { - labels.distance->setText(QString::number(int(obj["distance"].toDouble() * (isMetric ? MILE_TO_KM : 1)))); - labels.distance_unit->setText(isMetric ? tr("KM") : tr("Miles")); - labels.hours->setText(QString::number((int)(obj["minutes"].toDouble() / 60))); - labels.routes->setText(QString::number((int)obj["routes"].toDouble())); -} - -void DriveStats::updateStarPilotStatsForLabel(StatsLabels &labels) { - QJsonObject starpilot_stats = QJsonDocument::fromJson(QByteArray::fromStdString(params.get("StarPilotStats"))).object(); - - labels.distance->setText(QString::number(int(starpilot_stats.value("StarPilotMeters").toDouble() * (isMetric ? 0.001 : METER_TO_MILE)))); - labels.distance_unit->setText(isMetric ? tr("KM") : tr("Miles")); - labels.hours->setText(QString::number(int(starpilot_stats.value("StarPilotSeconds").toDouble() / (60 * 60)))); - labels.routes->setText(QString::number(starpilot_stats.value("StarPilotDrives").toInt())); -} - -void DriveStats::updateStats() { - QJsonObject json = stats.object(); - - updateStatsForLabel(json["all"].toObject(), all); - updateStatsForLabel(json["week"].toObject(), week); - updateStarPilotStatsForLabel(frogPilot); - - params.putIntNonBlocking(konik ? "KonikMinutes" : "openpilotMinutes", json["all"].toObject()["minutes"].toDouble()); -} diff --git a/starpilot/ui/qt/widgets/drive_stats.h b/starpilot/ui/qt/widgets/drive_stats.h deleted file mode 100644 index 9daba33aa..000000000 --- a/starpilot/ui/qt/widgets/drive_stats.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include "selfdrive/ui/ui.h" - -struct StatsLabels { - QLabel *distance; - QLabel *distance_unit; - QLabel *hours; - QLabel *routes; -}; - -class DriveStats : public QFrame { - Q_OBJECT - -public: - explicit DriveStats(QWidget *parent = 0); - -private: - void addStatsLayouts(const QString &title, StatsLabels &labels, bool StarPilot = false); - void showEvent(QShowEvent *event) override; - void updateStarPilotStatsForLabel(StatsLabels &labels); - void updateStats(); - void updateStatsForLabel(const QJsonObject &obj, StatsLabels &labels); - - bool isMetric; - bool konik; - - Params params; - - QJsonDocument stats; - - StatsLabels all; - StatsLabels frogPilot; - StatsLabels week; - -private slots: - void parseResponse(const QString &response, bool success); -}; diff --git a/starpilot/ui/qt/widgets/drive_summary.cc b/starpilot/ui/qt/widgets/drive_summary.cc deleted file mode 100644 index c1844f139..000000000 --- a/starpilot/ui/qt/widgets/drive_summary.cc +++ /dev/null @@ -1,225 +0,0 @@ -#include "selfdrive/ui/qt/widgets/scrollview.h" - -#include "starpilot/ui/qt/widgets/drive_summary.h" - -StarPilotDriveSummary::StarPilotDriveSummary(QWidget *parent, bool randomEvents) : QFrame(parent), displayRandomEvents(randomEvents) { - QVBoxLayout *mainLayout = new QVBoxLayout(this); - mainLayout->setContentsMargins(20, 20, 20, 20); - mainLayout->setSpacing(15); - - titleLabel = new QLabel(randomEvents ? tr("Random Events Summary") : tr("Drive Summary"), this); - titleLabel->setAlignment(Qt::AlignCenter); - titleLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - titleLabel->setStyleSheet(R"( - QLabel { - background-color: #444444; - border-radius: 12px; - color: #FFFFFF; - font-size: 50px; - font-weight: bold; - padding: 12px 28px; - } - )"); - titleLabel->setMaximumHeight(titleLabel->sizeHint().height()); - - mainLayout->addWidget(titleLabel); - mainLayout->addSpacing(10); - - QWidget *containerWidget = new QWidget(this); - QVBoxLayout *listLayout = new QVBoxLayout(containerWidget); - listLayout->setAlignment(Qt::AlignTop); - listLayout->setSpacing(20); - - if (displayRandomEvents) { - randomEventsMap.insert("accel30", tr("UwUs")); - randomEventsMap.insert("accel35", tr("Loch Ness Encounters")); - randomEventsMap.insert("accel40", tr("Visits to 1955")); - randomEventsMap.insert("dejaVuCurve", tr("Deja Vu Moments")); - randomEventsMap.insert("firefoxSteerSaturated", tr("Internet Explorer Weeeeeeees")); - randomEventsMap.insert("hal9000", tr("HAL 9000 Denials")); - randomEventsMap.insert("openpilotCrashedRandomEvent", tr("openpilot Crashes")); - randomEventsMap.insert("thisIsFineSteerSaturated", tr("This Is Fine Moments")); - randomEventsMap.insert("toBeContinued", tr("To Be Continued Moments")); - randomEventsMap.insert("vCruise69", tr("Noices")); - randomEventsMap.insert("yourFrogTriedToKillMe", tr("Attempted Frog Murders")); - randomEventsMap.insert("youveGotMail", tr("Total Mail Received")); - } else { - listLayout->addWidget(createStatBox(tr("% of Drive With openpilot Engaged"), &engagementValue, this)); - listLayout->addWidget(createStatBox(tr("Drive Distance"), &frogPilotMetersValue, this)); - listLayout->addWidget(createStatBox(tr("Drive Time"), &trackedTimeValue, this)); - listLayout->addWidget(createStatBox(tr("% of Drive In \"Experimental Mode\""), &experimentalModeTimeValue, this)); - } - - if (displayRandomEvents) { - eventsListLayout = listLayout; - mainLayout->addWidget(new ScrollView(containerWidget, this), 1); - } else { - mainLayout->addWidget(containerWidget, 1); - } - - setLayout(mainLayout); - - setStyleSheet(R"( - QFrame { - background-color: #333333; - } - )"); - - QObject::connect(device(), &Device::interactiveTimeout, [this]() { - emit panelClosed(); - }); - QObject::connect(uiState(), &UIState::offroadTransition, [this](bool offroad) { - if (!offroad) { - previousStats = QJsonDocument::fromJson(QString::fromStdString(params.get("StarPilotStats")).toUtf8()).object(); - } - }); -} - -void StarPilotDriveSummary::mousePressEvent(QMouseEvent *e) { - emit panelClosed(); -} - -void StarPilotDriveSummary::showEvent(QShowEvent *event) { - bool isMetric = params.getBool("IsMetric"); - - QJsonObject currentStats = QJsonDocument::fromJson(QString::fromStdString(params.get("StarPilotStats")).toUtf8()).object(); - - if (displayRandomEvents) { - QJsonObject currentRandomEvents = currentStats.value("RandomEvents").toObject(); - QJsonObject previousRandomEvents = previousStats.value("RandomEvents").toObject(); - - QList> eventsList; - for (QMap::const_iterator it = randomEventsMap.constBegin(); it != randomEventsMap.constEnd(); ++it) { - int currentValue = currentRandomEvents.value(it.key()).toInt(); - int previousValue = previousRandomEvents.value(it.key()).toInt(); - int diffValue = currentValue - previousValue; - - if (diffValue > 0) { - eventsList.append(qMakePair(it.value(), diffValue)); - } - } - - std::sort(eventsList.begin(), eventsList.end(), [](const QPair &a, const QPair &b) { - if (a.second != b.second) { - return a.second > b.second; - } else { - return a.first.localeAwareCompare(b.first) < 0; - } - }); - - QLayoutItem *child; - while ((child = eventsListLayout->takeAt(0)) != nullptr) { - if (QWidget *widget = child->widget()) { - widget->deleteLater(); - } - delete child; - } - randomEventLabels.clear(); - - if (eventsList.isEmpty()) { - eventsListLayout->setAlignment(Qt::AlignCenter); - - QLabel *noEventsLabel = new QLabel(tr("No Random Events Played!"), this); - noEventsLabel->setAlignment(Qt::AlignCenter); - noEventsLabel->setStyleSheet(R"( - QLabel { - font-size: 50px; - font-weight: bold; - color: #FFFFFF; - } - )"); - eventsListLayout->addWidget(noEventsLabel); - } else { - eventsListLayout->setAlignment(Qt::AlignTop); - - for (QList>::const_iterator it = eventsList.constBegin(); it != eventsList.constEnd(); ++it) { - QLabel *valueLabel = nullptr; - eventsListLayout->addWidget(createStatBox(it->first, &valueLabel, this)); - randomEventLabels.insert(it->first, valueLabel); - valueLabel->setText(QLocale().toString(it->second)); - } - } - } else { - std::function diffDouble = [currentStats, this](const QString &key) -> double { - return currentStats.value(key).toDouble() - previousStats.value(key).toDouble(); - }; - - std::function formatDistance = [&](double meters) { - double value; - QString unit; - if (isMetric) { - value = meters / 1000.0; - unit = (qRound(value) == 1) ? tr(" kilometer") : tr(" kilometers"); - } else { - value = meters * METER_TO_MILE; - unit = (qRound(value) == 1) ? tr(" mile") : tr(" miles"); - } - return QLocale().toString(qRound(value)) + unit; - }; - - std::function formatTime = [&](int seconds) { - static int secondsInDay = 60 * 60 * 24; - static int secondsInHour = 60 * 60; - - int days = seconds / secondsInDay; - int hours = (seconds % secondsInDay) / secondsInHour; - int minutes = (seconds % secondsInHour) / 60; - - QString result; - if (days > 0) result += QLocale().toString(days) + (days == 1 ? tr(" day ") : tr(" days ")); - if (hours > 0 || days > 0) result += QLocale().toString(hours) + (hours == 1 ? tr(" hour ") : tr(" hours ")); - result += QLocale().toString(minutes) + (minutes == 1 ? tr(" minute") : tr(" minutes")); - return result.trimmed(); - }; - - int engagedTime = diffDouble("AOLTime") + diffDouble("LongitudinalTime"); - int experimentalTime = diffDouble("ExperimentalModeTime"); - int trackedTime = diffDouble("TrackedTime"); - - engagementValue->setText(QLocale().toString((trackedTime > 0) ? (engagedTime * 100 / trackedTime) : 0) + "%"); - experimentalModeTimeValue->setText(QLocale().toString((trackedTime > 0) ? (experimentalTime * 100 / trackedTime) : 0) + "%"); - frogPilotMetersValue->setText(formatDistance(diffDouble("StarPilotMeters"))); - trackedTimeValue->setText(formatTime(trackedTime)); - } -} - -void StarPilotDriveSummary::hideEvent(QHideEvent *event) { - emit panelClosed(); -} - -QWidget *StarPilotDriveSummary::createStatBox(const QString &title, QLabel **valueLabel, QWidget *parent) { - QWidget *box = new QWidget(parent); - - QVBoxLayout *layout = new QVBoxLayout(box); - layout->setAlignment(Qt::AlignCenter); - layout->setContentsMargins(10, 10, 10, 10); - layout->setSpacing(8); - - QLabel *statTitleLabel = new QLabel(title, box); - statTitleLabel->setAlignment(Qt::AlignCenter); - statTitleLabel->setStyleSheet(R"( - QLabel { - color: #AAAAAA; - font-size: 40px; - font-weight: bold; - } - )"); - - QLabel *value = new QLabel("-", box); - value->setAlignment(Qt::AlignCenter); - value->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); - value->setStyleSheet(R"( - QLabel { - color: #FFFFFF; - font-size: 75px; - font-weight: bold; - } - )"); - - *valueLabel = value; - - layout->addWidget(statTitleLabel); - layout->addWidget(value); - - return box; -} diff --git a/starpilot/ui/qt/widgets/drive_summary.h b/starpilot/ui/qt/widgets/drive_summary.h deleted file mode 100644 index ca0b36e3e..000000000 --- a/starpilot/ui/qt/widgets/drive_summary.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "selfdrive/ui/ui.h" - -class StarPilotDriveSummary : public QFrame { - Q_OBJECT - -public: - explicit StarPilotDriveSummary(QWidget *parent = nullptr, bool random_events = false); - -signals: - void panelClosed(); - -protected: - void showEvent(QShowEvent *event) override; - void hideEvent(QHideEvent *event) override; - void mousePressEvent(QMouseEvent *e); - -private: - QWidget *createStatBox(const QString &title, QLabel **valueLabel, QWidget *parent); - - bool displayRandomEvents; - - Params params; - - QJsonObject previousStats; - - QLabel *experimentalModeTimeValue; - QLabel *frogPilotMetersValue; - QLabel *engagementValue; - QLabel *titleLabel; - QLabel *trackedTimeValue; - - QMap randomEventLabels; - - QMap randomEventsMap; - - QVBoxLayout *eventsListLayout; -}; diff --git a/starpilot/ui/qt/widgets/moc_developer_sidebar.cc b/starpilot/ui/qt/widgets/moc_developer_sidebar.cc deleted file mode 100644 index 0527ac9b6..000000000 --- a/starpilot/ui/qt/widgets/moc_developer_sidebar.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'developer_sidebar.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "developer_sidebar.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'developer_sidebar.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DeveloperSidebar_t { - QByteArrayData data[1]; - char stringdata0[17]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DeveloperSidebar_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DeveloperSidebar_t qt_meta_stringdata_DeveloperSidebar = { - { -QT_MOC_LITERAL(0, 0, 16) // "DeveloperSidebar" - - }, - "DeveloperSidebar" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DeveloperSidebar[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void DeveloperSidebar::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject DeveloperSidebar::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_DeveloperSidebar.data, - qt_meta_data_DeveloperSidebar, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DeveloperSidebar::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DeveloperSidebar::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DeveloperSidebar.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int DeveloperSidebar::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/widgets/moc_drive_stats.cc b/starpilot/ui/qt/widgets/moc_drive_stats.cc deleted file mode 100644 index 7a4891266..000000000 --- a/starpilot/ui/qt/widgets/moc_drive_stats.cc +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'drive_stats.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "drive_stats.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'drive_stats.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_DriveStats_t { - QByteArrayData data[5]; - char stringdata0[43]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_DriveStats_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_DriveStats_t qt_meta_stringdata_DriveStats = { - { -QT_MOC_LITERAL(0, 0, 10), // "DriveStats" -QT_MOC_LITERAL(1, 11, 13), // "parseResponse" -QT_MOC_LITERAL(2, 25, 0), // "" -QT_MOC_LITERAL(3, 26, 8), // "response" -QT_MOC_LITERAL(4, 35, 7) // "success" - - }, - "DriveStats\0parseResponse\0\0response\0" - "success" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_DriveStats[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 2, 19, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, QMetaType::QString, QMetaType::Bool, 3, 4, - - 0 // eod -}; - -void DriveStats::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->parseResponse((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; - default: ; - } - } -} - -QT_INIT_METAOBJECT const QMetaObject DriveStats::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_DriveStats.data, - qt_meta_data_DriveStats, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *DriveStats::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *DriveStats::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_DriveStats.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int DriveStats::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/widgets/moc_drive_summary.cc b/starpilot/ui/qt/widgets/moc_drive_summary.cc deleted file mode 100644 index 052e9ef38..000000000 --- a/starpilot/ui/qt/widgets/moc_drive_summary.cc +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'drive_summary.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "drive_summary.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'drive_summary.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotDriveSummary_t { - QByteArrayData data[3]; - char stringdata0[35]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotDriveSummary_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotDriveSummary_t qt_meta_stringdata_StarPilotDriveSummary = { - { -QT_MOC_LITERAL(0, 0, 21), // "StarPilotDriveSummary" -QT_MOC_LITERAL(1, 22, 11), // "panelClosed" -QT_MOC_LITERAL(2, 34, 0) // "" - - }, - "StarPilotDriveSummary\0panelClosed\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotDriveSummary[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotDriveSummary::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->panelClosed(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotDriveSummary::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotDriveSummary::panelClosed)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotDriveSummary::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_StarPilotDriveSummary.data, - qt_meta_data_StarPilotDriveSummary, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotDriveSummary::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotDriveSummary::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotDriveSummary.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int StarPilotDriveSummary::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotDriveSummary::panelClosed() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/widgets/moc_navigation_functions.cc b/starpilot/ui/qt/widgets/moc_navigation_functions.cc deleted file mode 100644 index 7613f70e5..000000000 --- a/starpilot/ui/qt/widgets/moc_navigation_functions.cc +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'navigation_functions.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "navigation_functions.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'navigation_functions.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_MapSelectionControl_t { - QByteArrayData data[1]; - char stringdata0[20]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_MapSelectionControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_MapSelectionControl_t qt_meta_stringdata_MapSelectionControl = { - { -QT_MOC_LITERAL(0, 0, 19) // "MapSelectionControl" - - }, - "MapSelectionControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_MapSelectionControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void MapSelectionControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject MapSelectionControl::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_MapSelectionControl.data, - qt_meta_data_MapSelectionControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *MapSelectionControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *MapSelectionControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_MapSelectionControl.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int MapSelectionControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/widgets/moc_starpilot_controls.cc b/starpilot/ui/qt/widgets/moc_starpilot_controls.cc deleted file mode 100644 index 1551ecad8..000000000 --- a/starpilot/ui/qt/widgets/moc_starpilot_controls.cc +++ /dev/null @@ -1,876 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'starpilot_controls.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "starpilot_controls.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'starpilot_controls.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_StarPilotConfirmationDialog_t { - QByteArrayData data[1]; - char stringdata0[28]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotConfirmationDialog_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotConfirmationDialog_t qt_meta_stringdata_StarPilotConfirmationDialog = { - { -QT_MOC_LITERAL(0, 0, 27) // "StarPilotConfirmationDialog" - - }, - "StarPilotConfirmationDialog" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotConfirmationDialog[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotConfirmationDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotConfirmationDialog::staticMetaObject = { { - &ConfirmationDialog::staticMetaObject, - qt_meta_stringdata_StarPilotConfirmationDialog.data, - qt_meta_data_StarPilotConfirmationDialog, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotConfirmationDialog::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotConfirmationDialog::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotConfirmationDialog.stringdata0)) - return static_cast(this); - return ConfirmationDialog::qt_metacast(_clname); -} - -int StarPilotConfirmationDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ConfirmationDialog::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_StarPilotListWidget_t { - QByteArrayData data[1]; - char stringdata0[20]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotListWidget_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotListWidget_t qt_meta_stringdata_StarPilotListWidget = { - { -QT_MOC_LITERAL(0, 0, 19) // "StarPilotListWidget" - - }, - "StarPilotListWidget" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotListWidget[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotListWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotListWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_StarPilotListWidget.data, - qt_meta_data_StarPilotListWidget, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotListWidget::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotListWidget::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotListWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); -} - -int StarPilotListWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_StarPilotButtonControl_t { - QByteArrayData data[4]; - char stringdata0[41]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotButtonControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotButtonControl_t qt_meta_stringdata_StarPilotButtonControl = { - { -QT_MOC_LITERAL(0, 0, 22), // "StarPilotButtonControl" -QT_MOC_LITERAL(1, 23, 13), // "buttonClicked" -QT_MOC_LITERAL(2, 37, 0), // "" -QT_MOC_LITERAL(3, 38, 2) // "id" - - }, - "StarPilotButtonControl\0buttonClicked\0" - "\0id" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotButtonControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, 3, - - 0 // eod -}; - -void StarPilotButtonControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->buttonClicked((*reinterpret_cast< int(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotButtonControl::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotButtonControl::buttonClicked)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotButtonControl::staticMetaObject = { { - &ParamControl::staticMetaObject, - qt_meta_stringdata_StarPilotButtonControl.data, - qt_meta_data_StarPilotButtonControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotButtonControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotButtonControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotButtonControl.stringdata0)) - return static_cast(this); - return ParamControl::qt_metacast(_clname); -} - -int StarPilotButtonControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ParamControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotButtonControl::buttonClicked(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_StarPilotButtonsControl_t { - QByteArrayData data[5]; - char stringdata0[64]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotButtonsControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotButtonsControl_t qt_meta_stringdata_StarPilotButtonsControl = { - { -QT_MOC_LITERAL(0, 0, 23), // "StarPilotButtonsControl" -QT_MOC_LITERAL(1, 24, 13), // "buttonClicked" -QT_MOC_LITERAL(2, 38, 0), // "" -QT_MOC_LITERAL(3, 39, 2), // "id" -QT_MOC_LITERAL(4, 42, 21) // "disabledButtonClicked" - - }, - "StarPilotButtonsControl\0buttonClicked\0" - "\0id\0disabledButtonClicked" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotButtonsControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 2, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 2, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 24, 2, 0x06 /* Public */, - 4, 1, 27, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, 3, - QMetaType::Void, QMetaType::Int, 3, - - 0 // eod -}; - -void StarPilotButtonsControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->buttonClicked((*reinterpret_cast< int(*)>(_a[1]))); break; - case 1: _t->disabledButtonClicked((*reinterpret_cast< int(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotButtonsControl::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotButtonsControl::buttonClicked)) { - *result = 0; - return; - } - } - { - using _t = void (StarPilotButtonsControl::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotButtonsControl::disabledButtonClicked)) { - *result = 1; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotButtonsControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_StarPilotButtonsControl.data, - qt_meta_data_StarPilotButtonsControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotButtonsControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotButtonsControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotButtonsControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int StarPilotButtonsControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 2) - qt_static_metacall(this, _c, _id, _a); - _id -= 2; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 2) - *reinterpret_cast(_a[0]) = -1; - _id -= 2; - } - return _id; -} - -// SIGNAL 0 -void StarPilotButtonsControl::buttonClicked(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} - -// SIGNAL 1 -void StarPilotButtonsControl::disabledButtonClicked(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 1, _a); -} -struct qt_meta_stringdata_StarPilotButtonToggleControl_t { - QByteArrayData data[1]; - char stringdata0[29]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotButtonToggleControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotButtonToggleControl_t qt_meta_stringdata_StarPilotButtonToggleControl = { - { -QT_MOC_LITERAL(0, 0, 28) // "StarPilotButtonToggleControl" - - }, - "StarPilotButtonToggleControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotButtonToggleControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotButtonToggleControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotButtonToggleControl::staticMetaObject = { { - &StarPilotButtonControl::staticMetaObject, - qt_meta_stringdata_StarPilotButtonToggleControl.data, - qt_meta_data_StarPilotButtonToggleControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotButtonToggleControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotButtonToggleControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotButtonToggleControl.stringdata0)) - return static_cast(this); - return StarPilotButtonControl::qt_metacast(_clname); -} - -int StarPilotButtonToggleControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotButtonControl::qt_metacall(_c, _id, _a); - return _id; -} -struct qt_meta_stringdata_StarPilotManageControl_t { - QByteArrayData data[3]; - char stringdata0[44]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotManageControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotManageControl_t qt_meta_stringdata_StarPilotManageControl = { - { -QT_MOC_LITERAL(0, 0, 22), // "StarPilotManageControl" -QT_MOC_LITERAL(1, 23, 19), // "manageButtonClicked" -QT_MOC_LITERAL(2, 43, 0) // "" - - }, - "StarPilotManageControl\0manageButtonClicked\0" - "" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotManageControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, - - 0 // eod -}; - -void StarPilotManageControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->manageButtonClicked(); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotManageControl::*)(); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotManageControl::manageButtonClicked)) { - *result = 0; - return; - } - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotManageControl::staticMetaObject = { { - &ParamControl::staticMetaObject, - qt_meta_stringdata_StarPilotManageControl.data, - qt_meta_data_StarPilotManageControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotManageControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotManageControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotManageControl.stringdata0)) - return static_cast(this); - return ParamControl::qt_metacast(_clname); -} - -int StarPilotManageControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = ParamControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotManageControl::manageButtonClicked() -{ - QMetaObject::activate(this, &staticMetaObject, 0, nullptr); -} -struct qt_meta_stringdata_StarPilotParamValueControl_t { - QByteArrayData data[4]; - char stringdata0[47]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotParamValueControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotParamValueControl_t qt_meta_stringdata_StarPilotParamValueControl = { - { -QT_MOC_LITERAL(0, 0, 26), // "StarPilotParamValueControl" -QT_MOC_LITERAL(1, 27, 12), // "valueChanged" -QT_MOC_LITERAL(2, 40, 0), // "" -QT_MOC_LITERAL(3, 41, 5) // "value" - - }, - "StarPilotParamValueControl\0valueChanged\0" - "\0value" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotParamValueControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Float, 3, - - 0 // eod -}; - -void StarPilotParamValueControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->valueChanged((*reinterpret_cast< float(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotParamValueControl::*)(float ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotParamValueControl::valueChanged)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotParamValueControl::staticMetaObject = { { - &AbstractControl::staticMetaObject, - qt_meta_stringdata_StarPilotParamValueControl.data, - qt_meta_data_StarPilotParamValueControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotParamValueControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotParamValueControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotParamValueControl.stringdata0)) - return static_cast(this); - return AbstractControl::qt_metacast(_clname); -} - -int StarPilotParamValueControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = AbstractControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotParamValueControl::valueChanged(float _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_StarPilotParamValueButtonControl_t { - QByteArrayData data[4]; - char stringdata0[51]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotParamValueButtonControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotParamValueButtonControl_t qt_meta_stringdata_StarPilotParamValueButtonControl = { - { -QT_MOC_LITERAL(0, 0, 32), // "StarPilotParamValueButtonControl" -QT_MOC_LITERAL(1, 33, 13), // "buttonClicked" -QT_MOC_LITERAL(2, 47, 0), // "" -QT_MOC_LITERAL(3, 48, 2) // "id" - - }, - "StarPilotParamValueButtonControl\0" - "buttonClicked\0\0id" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotParamValueButtonControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 1, // signalCount - - // signals: name, argc, parameters, tag, flags - 1, 1, 19, 2, 0x06 /* Public */, - - // signals: parameters - QMetaType::Void, QMetaType::Int, 3, - - 0 // eod -}; - -void StarPilotParamValueButtonControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->buttonClicked((*reinterpret_cast< int(*)>(_a[1]))); break; - default: ; - } - } else if (_c == QMetaObject::IndexOfMethod) { - int *result = reinterpret_cast(_a[0]); - { - using _t = void (StarPilotParamValueButtonControl::*)(int ); - if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&StarPilotParamValueButtonControl::buttonClicked)) { - *result = 0; - return; - } - } - } -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotParamValueButtonControl::staticMetaObject = { { - &StarPilotParamValueControl::staticMetaObject, - qt_meta_stringdata_StarPilotParamValueButtonControl.data, - qt_meta_data_StarPilotParamValueButtonControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotParamValueButtonControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotParamValueButtonControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotParamValueButtonControl.stringdata0)) - return static_cast(this); - return StarPilotParamValueControl::qt_metacast(_clname); -} - -int StarPilotParamValueButtonControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = StarPilotParamValueControl::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} - -// SIGNAL 0 -void StarPilotParamValueButtonControl::buttonClicked(int _t1) -{ - void *_a[] = { nullptr, const_cast(reinterpret_cast(&_t1)) }; - QMetaObject::activate(this, &staticMetaObject, 0, _a); -} -struct qt_meta_stringdata_StarPilotDualParamValueControl_t { - QByteArrayData data[1]; - char stringdata0[31]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_StarPilotDualParamValueControl_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_StarPilotDualParamValueControl_t qt_meta_stringdata_StarPilotDualParamValueControl = { - { -QT_MOC_LITERAL(0, 0, 30) // "StarPilotDualParamValueControl" - - }, - "StarPilotDualParamValueControl" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_StarPilotDualParamValueControl[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - 0 // eod -}; - -void StarPilotDualParamValueControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject StarPilotDualParamValueControl::staticMetaObject = { { - &QFrame::staticMetaObject, - qt_meta_stringdata_StarPilotDualParamValueControl.data, - qt_meta_data_StarPilotDualParamValueControl, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *StarPilotDualParamValueControl::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *StarPilotDualParamValueControl::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_StarPilotDualParamValueControl.stringdata0)) - return static_cast(this); - return QFrame::qt_metacast(_clname); -} - -int StarPilotDualParamValueControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QFrame::qt_metacall(_c, _id, _a); - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/qt/widgets/navigation_functions.cc b/starpilot/ui/qt/widgets/navigation_functions.cc deleted file mode 100644 index e1744e81b..000000000 --- a/starpilot/ui/qt/widgets/navigation_functions.cc +++ /dev/null @@ -1,63 +0,0 @@ -#include "starpilot/ui/qt/widgets/navigation_functions.h" - -MapSelectionControl::MapSelectionControl(const QMap &map, bool isCountry) : selectionType(isCountry ? "nations" : "states") { - mapButtons = new QButtonGroup(this); - mapButtons->setExclusive(false); - - QGridLayout *mapLayout = new QGridLayout(this); - - QList keys = map.keys(); - for (int i = 0; i < keys.size(); ++i) { - QPushButton *button = new QPushButton(map[keys[i]], this); - button->setCheckable(true); - button->setProperty("mapKey", keys[i]); - button->setStyleSheet(buttonStyle); - - mapButtons->addButton(button, i); - - mapLayout->addWidget(button, i / 3, i % 3); - - QObject::connect(button, &QPushButton::toggled, this, &MapSelectionControl::updateSelectedMaps); - } - - loadSelectedMaps(); -} - -void MapSelectionControl::loadSelectedMaps() { - QString mapsSelected = QString::fromStdString(params.get("MapsSelected")); - QStringList mapList = mapsSelected.split(",", QString::SkipEmptyParts); - QString prefix = (selectionType == "nations") ? "nation." : "us_state."; - - QSet selectedMaps; - for (const QString &map : mapList) { - if (map.startsWith(prefix)) { - selectedMaps.insert(map.mid(prefix.length())); - } - } - - for (QAbstractButton *button : mapButtons->buttons()) { - button->setChecked(selectedMaps.contains(button->property("mapKey").toString())); - } -} - -void MapSelectionControl::updateSelectedMaps() { - QString mapsSelected = QString::fromStdString(params.get("MapsSelected")); - QStringList mapList = mapsSelected.split(",", QString::SkipEmptyParts); - QString prefix = (selectionType == "nations") ? "nation." : "us_state."; - - QStringList newMapList; - for (const QString &map : mapList) { - if (!map.startsWith(prefix)) { - newMapList.append(map); - } - } - - for (QAbstractButton *button : mapButtons->buttons()) { - if (button->isChecked()) { - newMapList.append(prefix + button->property("mapKey").toString()); - } - } - - newMapList.sort(); - params.putNonBlocking("MapsSelected", newMapList.join(",").toStdString()); -} diff --git a/starpilot/ui/qt/widgets/navigation_functions.h b/starpilot/ui/qt/widgets/navigation_functions.h deleted file mode 100644 index 8cfad8e2c..000000000 --- a/starpilot/ui/qt/widgets/navigation_functions.h +++ /dev/null @@ -1,214 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "starpilot/ui/qt/widgets/starpilot_controls.h" - -inline QMap midwestMap = { - {"IL", "Illinois"}, {"IN", "Indiana"}, {"IA", "Iowa"}, - {"KS", "Kansas"}, {"MI", "Michigan"}, {"MN", "Minnesota"}, - {"MO", "Missouri"}, {"NE", "Nebraska"}, {"ND", "North Dakota"}, - {"OH", "Ohio"}, {"SD", "South Dakota"}, {"WI", "Wisconsin"} -}; - -inline QMap northeastMap = { - {"CT", "Connecticut"}, {"ME", "Maine"}, {"MA", "Massachusetts"}, - {"NH", "New Hampshire"}, {"NJ", "New Jersey"}, {"NY", "New York"}, - {"PA", "Pennsylvania"}, {"RI", "Rhode Island"}, {"VT", "Vermont"} -}; - -inline QMap southMap = { - {"AL", "Alabama"}, {"AR", "Arkansas"}, {"DE", "Delaware"}, - {"DC", "District of Columbia"}, {"FL", "Florida"}, {"GA", "Georgia"}, - {"KY", "Kentucky"}, {"LA", "Louisiana"}, {"MD", "Maryland"}, - {"MS", "Mississippi"}, {"NC", "North Carolina"}, {"OK", "Oklahoma"}, - {"SC", "South Carolina"}, {"TN", "Tennessee"}, {"TX", "Texas"}, - {"VA", "Virginia"}, {"WV", "West Virginia"} -}; - -inline QMap westMap = { - {"AK", "Alaska"}, {"AZ", "Arizona"}, {"CA", "California"}, - {"CO", "Colorado"}, {"HI", "Hawaii"}, {"ID", "Idaho"}, - {"MT", "Montana"}, {"NV", "Nevada"}, {"NM", "New Mexico"}, - {"OR", "Oregon"}, {"UT", "Utah"}, {"WA", "Washington"}, - {"WY", "Wyoming"} -}; - -inline QMap territoriesMap = { - {"AS", "American Samoa"}, {"GU", "Guam"}, {"MP", "Northern Mariana Islands"}, - {"PR", "Puerto Rico"}, {"VI", "Virgin Islands"} -}; - -inline QMap africaMap = { - {"DZ", "Algeria"}, {"AO", "Angola"}, {"BJ", "Benin"}, - {"BW", "Botswana"}, {"BF", "Burkina Faso"}, {"BI", "Burundi"}, - {"CM", "Cameroon"}, {"CF", "Central African Republic"}, {"TD", "Chad"}, - {"KM", "Comoros"}, {"CG", "Congo (Brazzaville)"}, {"CD", "Congo (Kinshasa)"}, - {"DJ", "Djibouti"}, {"EG", "Egypt"}, {"GQ", "Equatorial Guinea"}, - {"ER", "Eritrea"}, {"ET", "Ethiopia"}, {"GA", "Gabon"}, - {"GM", "Gambia"}, {"GH", "Ghana"}, {"GN", "Guinea"}, - {"GW", "Guinea-Bissau"}, {"CI", "Ivory Coast"}, {"KE", "Kenya"}, - {"LS", "Lesotho"}, {"LR", "Liberia"}, {"LY", "Libya"}, - {"MG", "Madagascar"}, {"MW", "Malawi"}, {"ML", "Mali"}, - {"MR", "Mauritania"}, {"MA", "Morocco"}, {"MZ", "Mozambique"}, - {"NA", "Namibia"}, {"NE", "Niger"}, {"NG", "Nigeria"}, - {"RW", "Rwanda"}, {"SN", "Senegal"}, {"SL", "Sierra Leone"}, - {"SO", "Somalia"}, {"ZA", "South Africa"}, {"SS", "South Sudan"}, - {"SD", "Sudan"}, {"SZ", "Swaziland"}, {"TZ", "Tanzania"}, - {"TG", "Togo"}, {"TN", "Tunisia"}, {"UG", "Uganda"}, - {"ZM", "Zambia"}, {"ZW", "Zimbabwe"} -}; - -inline QMap antarcticaMap = { - {"AQ", "Antarctica"} -}; - -inline QMap asiaMap = { - {"AF", "Afghanistan"}, {"AM", "Armenia"}, {"AZ", "Azerbaijan"}, - {"BH", "Bahrain"}, {"BD", "Bangladesh"}, {"BT", "Bhutan"}, - {"BN", "Brunei"}, {"KH", "Cambodia"}, {"CN", "China"}, - {"CY", "Cyprus"}, {"TL", "East Timor"}, {"HK", "Hong Kong"}, - {"IN", "India"}, {"ID", "Indonesia"}, {"IR", "Iran"}, - {"IQ", "Iraq"}, {"IL", "Israel"}, {"JP", "Japan"}, - {"JO", "Jordan"}, {"KZ", "Kazakhstan"}, {"KW", "Kuwait"}, - {"KG", "Kyrgyzstan"}, {"LA", "Laos"}, {"LB", "Lebanon"}, - {"MY", "Malaysia"}, {"MV", "Maldives"}, {"MO", "Macao"}, - {"MN", "Mongolia"}, {"MM", "Myanmar"}, {"NP", "Nepal"}, - {"KP", "North Korea"}, {"OM", "Oman"}, {"PK", "Pakistan"}, - {"PS", "Palestine"}, {"PH", "Philippines"}, {"QA", "Qatar"}, - {"RU", "Russia"}, {"SA", "Saudi Arabia"}, {"SG", "Singapore"}, - {"KR", "South Korea"}, {"LK", "Sri Lanka"}, {"SY", "Syria"}, - {"TW", "Taiwan"}, {"TJ", "Tajikistan"}, {"TH", "Thailand"}, - {"TR", "Turkey"}, {"TM", "Turkmenistan"}, {"AE", "United Arab Emirates"}, - {"UZ", "Uzbekistan"}, {"VN", "Vietnam"}, {"YE", "Yemen"} -}; - -inline QMap europeMap = { - {"AL", "Albania"}, {"AT", "Austria"}, {"BY", "Belarus"}, - {"BE", "Belgium"}, {"BA", "Bosnia and Herzegovina"}, {"BG", "Bulgaria"}, - {"HR", "Croatia"}, {"CZ", "Czech Republic"}, {"DK", "Denmark"}, - {"EE", "Estonia"}, {"FI", "Finland"}, {"FR", "France"}, - {"GE", "Georgia"}, {"DE", "Germany"}, {"GR", "Greece"}, - {"HU", "Hungary"}, {"IS", "Iceland"}, {"IE", "Ireland"}, - {"IT", "Italy"}, {"KZ", "Kazakhstan"}, {"LV", "Latvia"}, - {"LT", "Lithuania"}, {"LU", "Luxembourg"}, {"MK", "Macedonia"}, - {"MD", "Moldova"}, {"ME", "Montenegro"}, {"NL", "Netherlands"}, - {"NO", "Norway"}, {"PL", "Poland"}, {"PT", "Portugal"}, - {"RO", "Romania"}, {"RS", "Serbia"}, {"SK", "Slovakia"}, - {"SI", "Slovenia"}, {"ES", "Spain"}, {"SE", "Sweden"}, - {"CH", "Switzerland"}, {"TR", "Turkey"}, {"UA", "Ukraine"}, - {"GB", "United Kingdom"} -}; - -inline QMap northAmericaMap = { - {"BS", "Bahamas"}, {"BZ", "Belize"}, {"CA", "Canada"}, - {"CR", "Costa Rica"}, {"CU", "Cuba"}, {"DO", "Dominican Republic"}, - {"SV", "El Salvador"}, {"GL", "Greenland"}, {"GD", "Grenada"}, - {"GT", "Guatemala"}, {"HT", "Haiti"}, {"HN", "Honduras"}, - {"JM", "Jamaica"}, {"MX", "Mexico"}, {"NI", "Nicaragua"}, - {"PA", "Panama"}, {"TT", "Trinidad and Tobago"}, {"US", "United States"} -}; - -inline QMap oceaniaMap = { - {"AU", "Australia"}, {"FJ", "Fiji"}, {"TF", "French Southern Territories"}, - {"NC", "New Caledonia"}, {"NZ", "New Zealand"}, {"PG", "Papua New Guinea"}, - {"SB", "Solomon Islands"}, {"VU", "Vanuatu"} -}; - -inline QMap southAmericaMap = { - {"AR", "Argentina"}, {"BO", "Bolivia"}, {"BR", "Brazil"}, - {"CL", "Chile"}, {"CO", "Colombia"}, {"EC", "Ecuador"}, - {"FK", "Falkland Islands"}, {"GY", "Guyana"}, {"PY", "Paraguay"}, - {"PE", "Peru"}, {"SR", "Suriname"}, {"UY", "Uruguay"}, - {"VE", "Venezuela"} -}; - -inline QString calculateDirectorySize(const QDir &directory) { - constexpr double MB = 1024.0 * 1024.0; - constexpr double GB = 1024.0 * MB; - - if (!directory.exists()) { - return QObject::tr("0 MB"); - } - - double totalSize = 0; - QDirIterator it(directory.absolutePath(), QDir::Files, QDirIterator::Subdirectories); - while (it.hasNext()) { - it.next(); - totalSize += it.fileInfo().size(); - } - - if (totalSize >= GB) { - return QString::number(totalSize / GB, 'f', 2) + QObject::tr(" GB"); - } - return QString::number(totalSize / MB, 'f', 2) + QObject::tr(" MB"); -} - -inline QString daySuffix(int day) { - if (day % 10 == 1 && day != 11) return "st"; - if (day % 10 == 2 && day != 12) return "nd"; - if (day % 10 == 3 && day != 13) return "rd"; - return "th"; -} - -inline QString formatCurrentDate() { - QDate currentDate = QDate::currentDate(); - return currentDate.toString("MMMM d'") + daySuffix(currentDate.day()) + QString(", %1").arg(currentDate.year()); -} - -inline QString formatElapsedTime(float elapsedMilliseconds) { - int totalSeconds = elapsedMilliseconds / 1000; - int hours = totalSeconds / 3600; - int minutes = (totalSeconds % 3600) / 60; - int seconds = totalSeconds % 60; - - QString formattedTime; - if (hours > 0) { - formattedTime += QString::number(hours) + (hours == 1 ? QObject::tr(" hour ") : QObject::tr(" hours ")); - } - if (minutes > 0) { - formattedTime += QString::number(minutes) + (minutes == 1 ? QObject::tr(" minute ") : QObject::tr(" minutes ")); - } - formattedTime += QString::number(seconds) + (seconds == 1 ? QObject::tr(" second") : QObject::tr(" seconds")); - - return formattedTime.trimmed(); -} - -inline QString formatETA(float elapsedTime, int downloadedFiles, int previousDownloadedFiles, int totalFiles, QDateTime &startTime) { - static QDateTime estimatedFinishTime; - - static float previousElapsedTime; - - if (downloadedFiles != previousDownloadedFiles) { - estimatedFinishTime = startTime.addMSecs((elapsedTime * totalFiles) / downloadedFiles); - } else { - estimatedFinishTime = estimatedFinishTime.addSecs((previousElapsedTime - elapsedTime) / 1000); - } - previousElapsedTime = elapsedTime; - - int remainingTime = QDateTime::currentDateTime().secsTo(estimatedFinishTime); - - QString estimatedFinishTimeStr = estimatedFinishTime.toString("h:mm AP"); - QString remainingTimeStr = formatElapsedTime(remainingTime * 1000); - - return QString("%1 (%2)").arg(remainingTimeStr).arg(estimatedFinishTimeStr); -} - -class MapSelectionControl : public QWidget { - Q_OBJECT - -public: - MapSelectionControl(const QMap &map, bool isCountry = false); - -private: - void loadSelectedMaps(); - void updateSelectedMaps(); - - Params params; - - QButtonGroup *mapButtons; - - QString selectionType; -}; diff --git a/starpilot/ui/qt/widgets/starpilot_controls.cc b/starpilot/ui/qt/widgets/starpilot_controls.cc deleted file mode 100644 index 01b340b72..000000000 --- a/starpilot/ui/qt/widgets/starpilot_controls.cc +++ /dev/null @@ -1,145 +0,0 @@ -#include "selfdrive/ui/ui.h" - -#include "starpilot/ui/starpilot_ui.h" - -bool StarPilotConfirmationDialog::toggleReboot(QWidget *parent) { - ConfirmationDialog d(tr("Reboot required to take effect."), tr("Reboot Now"), tr("Reboot Later"), false, parent); - return d.exec(); -} - -bool StarPilotConfirmationDialog::yesorno(const QString &prompt_text, QWidget *parent) { - ConfirmationDialog d(prompt_text, tr("Yes"), tr("No"), false, parent); - return d.exec(); -} - -bool isFrogsGoMoo() { - static bool is_FrogsGoMoo = QFile::exists("/persist/frogsgomoo.py"); - return is_FrogsGoMoo; -} - -bool useKonikServer() { - static bool use_konik = QFile::exists("/cache/use_konik"); - return use_konik; -} - -void clearMovie(QSharedPointer &movie, QWidget *parent) { - if (!movie) { - return; - } - - QObject::disconnect(movie.data(), nullptr, parent, nullptr); - movie->stop(); - movie.reset(); -} - -void loadGif(const QString &gifPath, QSharedPointer &movie, const QSize &size, QWidget *parent) { - if (!parent || gifPath.isEmpty()) { - return; - } - - if (movie && movie->fileName() == gifPath && movie->state() == QMovie::Running) { - if (movie->scaledSize() != size) { - movie->setScaledSize(size); - } - return; - } - - if (!QFileInfo::exists(gifPath)) { - clearMovie(movie, parent); - return; - } - - clearMovie(movie, parent); - - movie = QSharedPointer::create(gifPath); - movie->setCacheMode(QMovie::CacheAll); - movie->setScaledSize(size); - - QPointer safeParent(parent); - QObject::connect(movie.data(), &QMovie::frameChanged, parent, [safeParent]() { - if (safeParent && safeParent->isVisible()) { - safeParent->update(); - } - }, Qt::UniqueConnection); - - movie->start(); -} - -static QString resolveImagePath(const QString &basePath, const QStringList &extensions) { - for (const QString &extension : extensions) { - const QString candidate = basePath + "." + extension; - if (QFileInfo::exists(candidate)) { - return candidate; - } - } - - return {}; -} - -void loadImage(const QString &basePath, QPixmap &pixmap, QSharedPointer &movie, const QSize &size, QWidget *parent) { - if (!parent || basePath.isEmpty()) { - return; - } - - static QHash pixmapCache; - const QString gifPath = resolveImagePath(basePath, {"gif"}); - if (!gifPath.isEmpty()) { - loadGif(gifPath, movie, size, parent); - if (!pixmap.isNull()) { - pixmap = QPixmap(); - } - return; - } - - clearMovie(movie, parent); - - const QString imagePath = resolveImagePath(basePath, {"png", "webp", "jpg", "jpeg"}); - if (imagePath.isEmpty()) { - if (!pixmap.isNull()) { - pixmap = QPixmap(); - parent->update(); - } - return; - } - - const QFileInfo imageInfo(imagePath); - const QString cacheKey = imagePath + QString("_%1x%2_%3").arg(size.width()).arg(size.height()).arg(imageInfo.lastModified().toMSecsSinceEpoch()); - - if (pixmapCache.contains(cacheKey)) { - QPixmap &cached = pixmapCache[cacheKey]; - if (pixmap.cacheKey() != cached.cacheKey()) { - pixmap = cached; - parent->update(); - } - return; - } - - QPixmap loadedPixmap(imagePath); - if (!loadedPixmap.isNull()) { - pixmap = loadedPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation); - pixmapCache.insert(cacheKey, pixmap); - } else { - pixmap = QPixmap(); - } - - parent->update(); -} - -void openDescriptions(bool forceOpenDescriptions, std::map toggles) { - if (forceOpenDescriptions) { - for (auto &[key, toggle] : toggles) { - if (key != "CESpeed" && key != "CCMSpeed") { - toggle->showDescription(); - } - } - } -} - -void updateStarPilotToggles() { - static Params params_memory{"", true}; - params_memory.putBool("StarPilotTogglesUpdated", true); -} - -QString cleanModelName(QString modelName) { - return modelName.remove("_default").remove("(Default)"); -} diff --git a/starpilot/ui/qt/widgets/starpilot_controls.h b/starpilot/ui/qt/widgets/starpilot_controls.h deleted file mode 100644 index ed6321afb..000000000 --- a/starpilot/ui/qt/widgets/starpilot_controls.h +++ /dev/null @@ -1,644 +0,0 @@ -#pragma once - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/widgets/controls.h" - -bool isFrogsGoMoo(); -bool useKonikServer(); - -void loadGif(const QString &gifPath, QSharedPointer &movie, const QSize &size, QWidget *parent); -void loadImage(const QString &basePath, QPixmap &pixmap, QSharedPointer &movie, const QSize &size, QWidget *parent); -void openDescriptions(bool forceOpenDescriptions, std::map toggles); -void updateStarPilotToggles(); - -QString cleanModelName(QString modelName); - -const QString buttonStyle = R"( - QPushButton { - padding: 0px 25px 0px 25px; - border-radius: 50px; - font-size: 35px; - font-weight: 500; - height: 100px; - color: #E4E4E4; - background-color: #393939; - } - QPushButton:pressed { - background-color: #4a4a4a; - } - QPushButton:checked:enabled { - background-color: #33Ab4C; - } - QPushButton:disabled { - color: #33E4E4E4; - } -)"; - -class StarPilotConfirmationDialog : public ConfirmationDialog { - Q_OBJECT - -public: - explicit StarPilotConfirmationDialog(const QString &prompt_text, const QString &confirm_text, - const QString &cancel_text, const bool rich, QWidget *parent); - static bool toggleReboot(QWidget *parent); - static bool yesorno(const QString &prompt_text, QWidget *parent); -}; - -class StarPilotListWidget : public QWidget { - Q_OBJECT - public: - explicit StarPilotListWidget(QWidget *parent = 0) : QWidget(parent), outer_layout(this) { - outer_layout.setMargin(0); - outer_layout.setSpacing(0); - outer_layout.addLayout(&inner_layout); - inner_layout.setMargin(0); - inner_layout.setSpacing(25); // default spacing is 25 - outer_layout.addStretch(); - } - inline void addItem(QWidget *w, bool expanding = false) { - w->setSizePolicy(QSizePolicy::Preferred, expanding ? QSizePolicy::Expanding : QSizePolicy::Maximum); - inner_layout.addWidget(w); - } - inline void addItem(QLayout *layout) { inner_layout.addLayout(layout); } - inline void insertItem(int index, QWidget *w, bool expanding = false) { - w->setSizePolicy(QSizePolicy::Preferred, expanding ? QSizePolicy::Expanding : QSizePolicy::Fixed); - inner_layout.insertWidget(index, w); - } - inline void setSpacing(int spacing) { inner_layout.setSpacing(spacing); } - - void clear() { - while (QLayoutItem *child = inner_layout.takeAt(0)) { - if (child->widget()) { - child->widget()->deleteLater(); - } - delete child; - } - outer_layout.addStretch(); - } - -private: - void paintEvent(QPaintEvent *) override { - QPainter p(this); - p.setPen(Qt::gray); - for (int i = 0; i < inner_layout.count() - 1; ++i) { - QWidget *widget = inner_layout.itemAt(i)->widget(); - - QWidget *nextWidget = nullptr; - for (int j = i + 1; j < inner_layout.count(); ++j) { - nextWidget = inner_layout.itemAt(j)->widget(); - if (nextWidget != nullptr && nextWidget->isVisible()) { - break; - } - } - - if (widget == nullptr || (widget->isVisible() && nextWidget->isVisible())) { - QRect r = inner_layout.itemAt(i)->geometry(); - int bottom = r.bottom() + inner_layout.spacing() / 2; - p.drawLine(r.left() + 40, bottom, r.right() - 40, bottom); - } - } - } - QVBoxLayout outer_layout; - QVBoxLayout inner_layout; -}; - -class StarPilotButtonControl : public ParamControl { - Q_OBJECT -public: - StarPilotButtonControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, - const std::vector &button_texts, bool checkable = false, - bool exclusive = false, int minimum_button_width = 225) : ParamControl(param, title, desc, icon) { - key = param.toStdString(); - - button_group = new QButtonGroup(this); - button_group->setExclusive(exclusive); - for (int i = 0; i < button_texts.size(); i++) { - QPushButton *button = new QPushButton(button_texts[i], this); - button->setCheckable(checkable); - button->setStyleSheet(buttonStyle); - button->setMinimumWidth(minimum_button_width); - hlayout->addWidget(button); - button_group->addButton(button, i); - } - - hlayout->addWidget(&toggle); - - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { - emit buttonClicked(id); - }); - - QObject::connect(this, &ToggleControl::toggleFlipped, this, &StarPilotButtonControl::refresh); - - refresh(); - } - - virtual void refresh() { - bool state = params.getBool(key); - if (state != toggle.on) { - toggle.togglePosition(); - } - - for (QAbstractButton *button : button_group->buttons()) { - button->setEnabled(state); - } - } - - void clearCheckedButtons() { - bool original_exclusive = button_group->exclusive(); - - button_group->setExclusive(false); - - for (QAbstractButton *button : button_group->buttons()) { - button->setChecked(false); - } - - button_group->setExclusive(original_exclusive); - } - - void setCheckedButton(int id) { - if (QAbstractButton *button = button_group->button(id)) { - button->setChecked(true); - } - } - - void setEnabledButton(int id, bool enable) { - if (QAbstractButton *button = button_group->button(id)) { - button->setEnabled(enable); - } - } - - void setVisibleButton(int id, bool visible) { - if (QAbstractButton *button = button_group->button(id)) { - button->setVisible(visible); - } - } - -signals: - void buttonClicked(int id); - -protected: - std::string key; - - Params params; - - QButtonGroup *button_group; -}; - -class StarPilotButtonsControl : public AbstractControl { - Q_OBJECT -public: - StarPilotButtonsControl(const QString &title, const QString &desc, const QString &icon, - const std::vector &button_texts, const bool &checkable = false, const bool &exclusive = true, - const int minimum_button_width = 225) : AbstractControl(title, desc, icon) { - button_group = new QButtonGroup(this); - button_group->setExclusive(exclusive); - for (int i = 0; i < button_texts.size(); i++) { - QPushButton *button = new QPushButton(button_texts[i], this); - button->installEventFilter(this); - button->setCheckable(checkable); - button->setStyleSheet(buttonStyle); - button->setMinimumWidth(minimum_button_width); - hlayout->addWidget(button); - button_group->addButton(button, i); - } - - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { - emit buttonClicked(id); - }); - } - - void clearCheckedButtons() { - bool original_exclusive = button_group->exclusive(); - - button_group->setExclusive(false); - - for (QAbstractButton *button : button_group->buttons()) { - button->setChecked(false); - } - - button_group->setExclusive(original_exclusive); - } - - void setCheckedButton(int id) { - if (QAbstractButton *button = button_group->button(id)) { - button->setChecked(true); - } - } - - void setEnabled(bool enable) { - for (QAbstractButton *button : button_group->buttons()) { - button->setEnabled(enable); - } - } - - void setEnabledButtons(int id, bool enable) { - if (QAbstractButton *button = button_group->button(id)) { - button->setEnabled(enable); - } - } - - void setText(int id, const QString &text) { - if (QAbstractButton *button = button_group->button(id)) { - button->setText(text); - } - } - - void setVisibleButton(int id, bool visible) { - if (QAbstractButton *button = button_group->button(id)) { - button->setVisible(visible); - } - } - -signals: - void buttonClicked(int id); - void disabledButtonClicked(int id); - -protected: - bool eventFilter(QObject *obj, QEvent *event) override { - if (event->type() == QEvent::MouseButtonPress) { - QPushButton *button = qobject_cast(obj); - if (button && !button->isEnabled()) { - emit disabledButtonClicked(button_group->id(button)); - } - } - return AbstractControl::eventFilter(obj, event); - } - -private: - QButtonGroup *button_group; -}; - -class StarPilotButtonToggleControl : public StarPilotButtonControl { - Q_OBJECT -public: - StarPilotButtonToggleControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, - const std::vector &button_params, const std::vector &button_texts, - bool exclusive = false, int minimum_button_width = 225) - : StarPilotButtonControl(param, title, desc, icon, button_texts, true, exclusive, minimum_button_width), button_params(button_params) { - - for (int i = 0; i < button_texts.size(); i++) { - button_group->buttons()[i]->setChecked(params.getBool(button_params[i].toStdString())); - } - - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { - params.putBool(button_params[id].toStdString(), button_group->button(id)->isChecked()); - emit buttonClicked(id); - }); - } - - void refresh() override { - StarPilotButtonControl::refresh(); - - for (int i = 0; i < button_group->buttons().size(); i++) { - QAbstractButton *button = button_group->button(i); - button->setChecked(params.getBool(button_params[i].toStdString())); - } - } - -private: - std::vector button_params; -}; - -class StarPilotManageControl : public ParamControl { - Q_OBJECT -public: - StarPilotManageControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon) : ParamControl(param, title, desc, icon) { - key = param.toStdString(); - - manageButton = new ButtonControl("", tr("MANAGE"), "", this); - - hlayout->insertWidget(hlayout->indexOf(&toggle) - 1, manageButton); - - QObject::connect(manageButton, &ButtonControl::clicked, this, &StarPilotManageControl::manageButtonClicked); - QObject::connect(this, &ToggleControl::toggleFlipped, this, &StarPilotManageControl::refresh); - } - - void refresh() { - manageButton->setEnabled(params.getBool(key)); - } - - void setManageVisibility(bool visible) { - manageButton->setVisible(visible); - } - - void showEvent(QShowEvent *event) override { - refresh(); - ParamControl::showEvent(event); - } - -signals: - void manageButtonClicked(); - -private: - std::string key; - - ButtonControl *manageButton; - - Params params; -}; - -class StarPilotParamValueControl : public AbstractControl { - Q_OBJECT -public: - StarPilotParamValueControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, - float min_value, float max_value, const QString &label, const std::map &value_labels = {}, - float interval = 1.0f, bool fast_increase = false, int label_width = 350) - : AbstractControl(title, desc, icon), - fast_increase(fast_increase), interval(interval), label(label), min_value(min_value), max_value(max_value), value_labels(value_labels) { - factor = std::pow(10, std::ceil(-std::log10(interval))); - key = param.toStdString(); - key_type = params.getKeyType(key); - - setupButton(decrement_button, "-"); - setupButton(increment_button, "+"); - - value_label = new QLabel(this); - value_label->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - value_label->setFixedSize(QSize(label_width, 100)); - value_label->setStyleSheet("QLabel {color: #E0E879;}"); - - hlayout->addWidget(value_label); - hlayout->addWidget(&decrement_button); - hlayout->addWidget(&increment_button); - - QObject::connect(&decrement_button, &QPushButton::pressed, this, &StarPilotParamValueControl::decrementPressed); - QObject::connect(&increment_button, &QPushButton::pressed, this, &StarPilotParamValueControl::incrementPressed); - - last_action_timer.start(); - } - - void decrementPressed() { - if (display_warning && !warning_shown) { - showWarning(); - } - - if (last_action_timer.isValid() && last_action_timer.elapsed() > decrement_button.autoRepeatInterval() + 50) { - decrement_repeating = false; - } - - float delta = decrement_repeating && fast_increase ? interval * 5 : interval; - value = std::max(value - delta, min_value); - - updateValue(); - - if (std::lround(value / interval) % 5 == 0) { - decrement_repeating = true; - } - - last_action_timer.restart(); - } - - void hideEvent(QHideEvent *event) override { - AbstractControl::hideEvent(event); - - warning_shown = false; - - updateParam(); - } - - void incrementPressed() { - if (display_warning && !warning_shown) { - showWarning(); - } - - if (last_action_timer.isValid() && last_action_timer.elapsed() > increment_button.autoRepeatInterval() + 50) { - increment_repeating = false; - } - - float delta = increment_repeating && fast_increase ? interval * 5 : interval; - value = std::min(value + delta, max_value); - - updateValue(); - - if (std::lround(value / interval) % 5 == 0) { - increment_repeating = true; - } - - last_action_timer.restart(); - } - - void refresh() { - if (key_type == ParamKeyType::INT) { - value = std::clamp(std::round(params.getInt(key) * factor) / factor, min_value, max_value); - } else { - value = std::clamp(std::round(params.getFloat(key) * factor) / factor, min_value, max_value); - } - previous_value = value; - - updateDisplay(); - updateParam(); - } - - void setWarning(const QString &newWarning) { - display_warning = true; - - warning = newWarning; - } - - void setupButton(QPushButton &button, const QString &text) { - button.setAutoRepeat(true); - button.setAutoRepeatDelay(500); - button.setAutoRepeatInterval(150); - button.setFixedSize(150, 100); - button.setStyleSheet(buttonStyle); - if (text == "+" || text == "-") { - button.setStyleSheet(button.styleSheet() + " QPushButton { font-size: 50px; }"); - } - button.setText(text); - } - - void showEvent(QShowEvent *event) override { - refresh(); - } - - void showWarning() { - ConfirmationDialog::alert(warning, this); - - warning_shown = true; - } - - void updateControl(const float &newMinValue, const float &newMaxValue, const std::map &newValueLabels = {}) { - min_value = newMinValue; - max_value = newMaxValue; - - value_labels = newValueLabels; - - refresh(); - } - - void updateDisplay() { - QString displayText = QString::number(value) + label; - - for (const std::pair &entry : value_labels) { - if (std::lround(entry.first * factor) == std::lround(value * factor)) { - displayText = entry.second; - break; - } - } - - decrement_button.setEnabled(value > min_value); - increment_button.setEnabled(value < max_value); - - value_label->setText(displayText); - } - - void updateParam() { - if (value == previous_value) { - return; - } - - if (key_type == ParamKeyType::INT) { - params.putInt(key, value); - } else { - params.putFloat(key, value); - } - } - - void updateValue() { - value = std::round(value * factor) / factor; - - emit valueChanged(value); - - updateDisplay(); - } - -signals: - void valueChanged(float value); - -protected: - QLabel *value_label; - -private: - bool decrement_repeating; - bool display_warning; - bool fast_increase; - bool increment_repeating; - bool warning_shown; - - float interval; - float factor; - float max_value; - float min_value; - float previous_value; - float value; - - std::map value_labels; - - std::string key; - - ParamKeyType key_type; - - Params params; - - QElapsedTimer last_action_timer; - - QPushButton decrement_button; - QPushButton increment_button; - - QString label; - QString warning; -}; - -class StarPilotParamValueButtonControl : public StarPilotParamValueControl { - Q_OBJECT -public: - StarPilotParamValueButtonControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, - float min_value, float max_value, const QString &label, const std::map &value_labels, - float interval, bool fast_increase, const std::vector &button_params, const std::vector &button_texts, - bool left_button = false, bool checkable = true, int minimum_button_width = 225) - : StarPilotParamValueControl(param, title, desc, icon, min_value, max_value, label, value_labels, interval, fast_increase, 200), - button_params(button_params), checkable(checkable) { - button_group = new QButtonGroup(this); - button_group->setExclusive(false); - for (int i = 0; i < button_texts.size(); i++) { - QPushButton *button = new QPushButton(button_texts[i], this); - button->setCheckable(checkable); - button->setChecked(checkable && params.getBool(button_params[i].toStdString())); - button->setStyleSheet(buttonStyle); - button->setMinimumWidth(minimum_button_width); - if (left_button) { - hlayout->insertWidget(hlayout->indexOf(value_label) - 1, button); - } else { - hlayout->addWidget(button); - } - button_group->addButton(button, i); - } - - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { - if (checkable) { - params.putBool(button_params[id].toStdString(), button_group->button(id)->isChecked()); - } - emit buttonClicked(id); - }); - } - - void refresh() { - if (checkable) { - for (int i = 0; i < button_group->buttons().size(); i++) { - QAbstractButton *button = button_group->button(i); - button->setChecked(params.getBool(button_params[i].toStdString())); - } - } - StarPilotParamValueControl::refresh(); - } - - void showEvent(QShowEvent *event) override { - refresh(); - StarPilotParamValueControl::showEvent(event); - } - -public: - void setEnabledButtons(int id, bool enable) { - if (QAbstractButton *button = button_group->button(id)) { - button->setEnabled(enable); - } - } - -signals: - void buttonClicked(int id); - -private: - bool checkable; - - std::vector button_params; - - Params params; - - QButtonGroup *button_group; -}; - -class StarPilotDualParamValueControl : public QFrame { - Q_OBJECT -public: - StarPilotDualParamValueControl(StarPilotParamValueControl *control1, StarPilotParamValueControl *control2, QWidget *parent = nullptr) : QFrame(parent), control1(control1), control2(control2) { - QHBoxLayout *hlayout = new QHBoxLayout(this); - hlayout->addWidget(control1); - hlayout->addWidget(control2); - } - - void updateControl(const float &newMinValue, const float &newMaxValue, const std::map &newValueLabels = {}) { - control1->updateControl(newMinValue, newMaxValue, newValueLabels); - control2->updateControl(newMinValue, newMaxValue, newValueLabels); - } - - void refresh() { - control1->refresh(); - control2->refresh(); - } - -private: - StarPilotParamValueControl *control1; - StarPilotParamValueControl *control2; -}; diff --git a/starpilot/ui/screenrecorder/blocking_queue.h b/starpilot/ui/screenrecorder/blocking_queue.h deleted file mode 100644 index a9cb23e83..000000000 --- a/starpilot/ui/screenrecorder/blocking_queue.h +++ /dev/null @@ -1,70 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include - -template -class BlockingQueue { -public: - BlockingQueue(size_t capacity) : capacity(capacity) {} - - void push(T &&item) { - std::unique_lock lk(mutex); - not_full.wait(lk, [this]() { return content.size() < capacity; }); - content.push_back(std::move(item)); - not_empty.notify_one(); - } - - bool try_push(T &&item) { - std::unique_lock lk(mutex); - if (content.size() == capacity) return false; - content.push_back(std::move(item)); - not_empty.notify_one(); - return true; - } - - T pop() { - std::unique_lock lk(mutex); - not_empty.wait(lk, [this]() { return !content.empty(); }); - T item = std::move(content.front()); - content.pop_front(); - not_full.notify_one(); - return item; - } - - bool pop_wait_for(T &item, std::chrono::milliseconds duration) { - std::unique_lock lk(mutex); - if (!not_empty.wait_for(lk, duration, [this]() { return !content.empty(); })) { - return false; - } - item = std::move(content.front()); - content.pop_front(); - not_full.notify_one(); - return true; - } - - bool try_pop(T &item) { - std::unique_lock lk(mutex); - if (content.empty()) return false; - item = std::move(content.front()); - content.pop_front(); - not_full.notify_one(); - return true; - } - - void clear() { - std::unique_lock lk(mutex); - content.clear(); - not_full.notify_all(); - } - -private: - size_t capacity; - std::deque content; - std::mutex mutex; - std::condition_variable not_empty; - std::condition_variable not_full; -}; diff --git a/starpilot/ui/screenrecorder/moc_screenrecorder.cc b/starpilot/ui/screenrecorder/moc_screenrecorder.cc deleted file mode 100644 index bb5d2f5a6..000000000 --- a/starpilot/ui/screenrecorder/moc_screenrecorder.cc +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** Meta object code from reading C++ file 'screenrecorder.h' -** -** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8) -** -** WARNING! All changes made in this file will be lost! -*****************************************************************************/ - -#include "screenrecorder.h" -#include -#include -#if !defined(Q_MOC_OUTPUT_REVISION) -#error "The header file 'screenrecorder.h' doesn't include ." -#elif Q_MOC_OUTPUT_REVISION != 67 -#error "This file was generated using the moc from 5.12.8. It" -#error "cannot be used with the include files from this version of Qt." -#error "(The moc has changed too much.)" -#endif - -QT_BEGIN_MOC_NAMESPACE -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -struct qt_meta_stringdata_ScreenRecorder_t { - QByteArrayData data[3]; - char stringdata0[32]; -}; -#define QT_MOC_LITERAL(idx, ofs, len) \ - Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ - qptrdiff(offsetof(qt_meta_stringdata_ScreenRecorder_t, stringdata0) + ofs \ - - idx * sizeof(QByteArrayData)) \ - ) -static const qt_meta_stringdata_ScreenRecorder_t qt_meta_stringdata_ScreenRecorder = { - { -QT_MOC_LITERAL(0, 0, 14), // "ScreenRecorder" -QT_MOC_LITERAL(1, 15, 15), // "toggleRecording" -QT_MOC_LITERAL(2, 31, 0) // "" - - }, - "ScreenRecorder\0toggleRecording\0" -}; -#undef QT_MOC_LITERAL - -static const uint qt_meta_data_ScreenRecorder[] = { - - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 1, 14, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount - - // slots: name, argc, parameters, tag, flags - 1, 0, 19, 2, 0x08 /* Private */, - - // slots: parameters - QMetaType::Void, - - 0 // eod -}; - -void ScreenRecorder::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) -{ - if (_c == QMetaObject::InvokeMetaMethod) { - auto *_t = static_cast(_o); - Q_UNUSED(_t) - switch (_id) { - case 0: _t->toggleRecording(); break; - default: ; - } - } - Q_UNUSED(_a); -} - -QT_INIT_METAOBJECT const QMetaObject ScreenRecorder::staticMetaObject = { { - &QPushButton::staticMetaObject, - qt_meta_stringdata_ScreenRecorder.data, - qt_meta_data_ScreenRecorder, - qt_static_metacall, - nullptr, - nullptr -} }; - - -const QMetaObject *ScreenRecorder::metaObject() const -{ - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; -} - -void *ScreenRecorder::qt_metacast(const char *_clname) -{ - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_ScreenRecorder.stringdata0)) - return static_cast(this); - return QPushButton::qt_metacast(_clname); -} - -int ScreenRecorder::qt_metacall(QMetaObject::Call _c, int _id, void **_a) -{ - _id = QPushButton::qt_metacall(_c, _id, _a); - if (_id < 0) - return _id; - if (_c == QMetaObject::InvokeMetaMethod) { - if (_id < 1) - qt_static_metacall(this, _c, _id, _a); - _id -= 1; - } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { - if (_id < 1) - *reinterpret_cast(_a[0]) = -1; - _id -= 1; - } - return _id; -} -QT_WARNING_POP -QT_END_MOC_NAMESPACE diff --git a/starpilot/ui/screenrecorder/omx_encoder.cc b/starpilot/ui/screenrecorder/omx_encoder.cc deleted file mode 100644 index b0222cc8b..000000000 --- a/starpilot/ui/screenrecorder/omx_encoder.cc +++ /dev/null @@ -1,432 +0,0 @@ -#include "starpilot/ui/screenrecorder/omx_encoder.h" - -#if defined(QCOM2) && !defined(__APPLE__) - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -extern "C" { -#include -} - -#include "libyuv.h" -#include "msm_media_info.h" - -#include "common/swaglog.h" -#include "common/util.h" - -#define OMX_CHECK(_expr) assert(OMX_ErrorNone == (_expr)) -#define PORT_INDEX_IN 0 -#define PORT_INDEX_OUT 1 - -using namespace libyuv; - -LIBYUV_API -int ABGRToNV12(const uint8_t* src_abgr, int src_stride_abgr, - uint8_t* dst_y, int dst_stride_y, - uint8_t* dst_uv, int dst_stride_uv, - int width, int height) { - int y; - int halfwidth = (width + 1) >> 1; - - void (*ABGRToUVRow)(const uint8_t* src_abgr0, int src_stride_abgr, - uint8_t* dst_u, uint8_t* dst_v, int width) = ABGRToUVRow_NEON; - void (*ABGRToYRow)(const uint8_t* src_abgr, uint8_t* dst_y, int width) = ABGRToYRow_NEON; - void (*MergeUVRow_)(const uint8_t* src_u, const uint8_t* src_v, - uint8_t* dst_uv, int width) = MergeUVRow_NEON; - - if (!src_abgr || !dst_y || !dst_uv || width <= 0 || height == 0) { - return -1; - } - - if (height < 0) { - height = -height; - src_abgr = src_abgr + (height - 1) * src_stride_abgr; - src_stride_abgr = -src_stride_abgr; - } - - align_buffer_64(row_u, ((halfwidth + 31) & ~31) * 2); - uint8_t* row_v = row_u + ((halfwidth + 31) & ~31); - - for (y = 0; y < height - 1; y += 2) { - ABGRToUVRow(src_abgr, src_stride_abgr, row_u, row_v, width); - MergeUVRow_(row_u, row_v, dst_uv, halfwidth); - ABGRToYRow(src_abgr, dst_y, width); - ABGRToYRow(src_abgr + src_stride_abgr, dst_y + dst_stride_y, width); - src_abgr += src_stride_abgr * 2; - dst_y += dst_stride_y * 2; - dst_uv += dst_stride_uv; - } - - if (height & 1) { - ABGRToUVRow(src_abgr, 0, row_u, row_v, width); - MergeUVRow_(row_u, row_v, dst_uv, halfwidth); - ABGRToYRow(src_abgr, dst_y, width); - } - - free_aligned_buffer_64(row_u); - return 0; -} - -void OmxEncoder::wait_for_state(OMX_STATETYPE state_) { - std::unique_lock lk(state_lock); - state_cv.wait(lk, [&]{ return state == state_; }); -} - -static OMX_CALLBACKTYPE omx_callbacks = { - .EventHandler = OmxEncoder::event_handler, - .EmptyBufferDone = OmxEncoder::empty_buffer_done, - .FillBufferDone = OmxEncoder::fill_buffer_done, -}; - -OMX_ERRORTYPE OmxEncoder::event_handler(OMX_HANDLETYPE component, OMX_PTR app_data, OMX_EVENTTYPE event, - OMX_U32 data1, OMX_U32 data2, OMX_PTR event_data) { - OmxEncoder *e = (OmxEncoder*)app_data; - if (event == OMX_EventCmdComplete) { - assert(data1 == OMX_CommandStateSet); - { - std::lock_guard lk(e->state_lock); - e->state = (OMX_STATETYPE)data2; - } - e->state_cv.notify_all(); - } else if (event == OMX_EventError) { - LOGE("OMX error 0x%08x", data1); - } - return OMX_ErrorNone; -} - -OMX_ERRORTYPE OmxEncoder::empty_buffer_done(OMX_HANDLETYPE component, OMX_PTR app_data, - OMX_BUFFERHEADERTYPE *buffer) { - OmxEncoder *e = (OmxEncoder*)app_data; - e->free_in->push(std::move(buffer)); - return OMX_ErrorNone; -} - -OMX_ERRORTYPE OmxEncoder::fill_buffer_done(OMX_HANDLETYPE component, OMX_PTR app_data, - OMX_BUFFERHEADERTYPE *buffer) { - OmxEncoder *e = (OmxEncoder*)app_data; - e->done_out->push(std::move(buffer)); - return OMX_ErrorNone; -} - -OmxEncoder::OmxEncoder(const char* path, int width, int height, int fps, int bitrate) - : path(path), width(width), height(height), fps(fps) { - - OMX_ERRORTYPE err = OMX_Init(); - if (err != OMX_ErrorNone) { - LOGE("OMX_Init failed: %x", err); - return; - } - - OMX_STRING component = (OMX_STRING)("OMX.qcom.video.encoder.avc"); - err = OMX_GetHandle(&handle, component, this, &omx_callbacks); - if (err != OMX_ErrorNone) { - LOGE("Error getting codec: %x", err); - OMX_Deinit(); - return; - } - - // Input Port Configuration - OMX_PARAM_PORTDEFINITIONTYPE in_port = {0}; - in_port.nSize = sizeof(in_port); - in_port.nPortIndex = (OMX_U32) PORT_INDEX_IN; - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR) &in_port)); - - in_port.format.video.nFrameWidth = width; - in_port.format.video.nFrameHeight = height; - in_port.format.video.nStride = VENUS_Y_STRIDE(COLOR_FMT_NV12, width); - in_port.format.video.nSliceHeight = height; - in_port.nBufferSize = VENUS_BUFFER_SIZE(COLOR_FMT_NV12, width, height); - in_port.format.video.xFramerate = (fps * 65536); - in_port.format.video.eCompressionFormat = OMX_VIDEO_CodingUnused; - in_port.format.video.eColorFormat = (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m; - - OMX_CHECK(OMX_SetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR) &in_port)); - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR) &in_port)); - - in_buf_headers.resize(in_port.nBufferCountActual); - free_in = std::make_unique>(in_port.nBufferCountActual); - - // Output Port Configuration - OMX_PARAM_PORTDEFINITIONTYPE out_port = {0}; - out_port.nSize = sizeof(out_port); - out_port.nPortIndex = (OMX_U32) PORT_INDEX_OUT; - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR)&out_port)); - - out_port.format.video.nFrameWidth = width; - out_port.format.video.nFrameHeight = height; - out_port.format.video.nBitrate = bitrate; - out_port.format.video.eCompressionFormat = OMX_VIDEO_CodingAVC; - out_port.format.video.eColorFormat = OMX_COLOR_FormatUnused; - - OMX_CHECK(OMX_SetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR) &out_port)); - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamPortDefinition, (OMX_PTR) &out_port)); - - out_buf_headers.resize(out_port.nBufferCountActual); - done_out = std::make_unique>(out_port.nBufferCountActual); - - // Bitrate Control - OMX_VIDEO_PARAM_BITRATETYPE bitrate_type = {0}; - bitrate_type.nSize = sizeof(bitrate_type); - bitrate_type.nPortIndex = (OMX_U32) PORT_INDEX_OUT; - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamVideoBitrate, (OMX_PTR) &bitrate_type)); - bitrate_type.eControlRate = OMX_Video_ControlRateVariable; - bitrate_type.nTargetBitrate = bitrate; - OMX_CHECK(OMX_SetParameter(handle, OMX_IndexParamVideoBitrate, (OMX_PTR) &bitrate_type)); - - // AVC Parameters - OMX_VIDEO_PARAM_AVCTYPE avc = {0}; - avc.nSize = sizeof(avc); - avc.nPortIndex = (OMX_U32) PORT_INDEX_OUT; - OMX_CHECK(OMX_GetParameter(handle, OMX_IndexParamVideoAvc, &avc)); - avc.nBFrames = 0; - avc.nPFrames = 15; - avc.eProfile = OMX_VIDEO_AVCProfileHigh; - avc.eLevel = OMX_VIDEO_AVCLevel31; - avc.nAllowedPictureTypes |= OMX_VIDEO_PictureTypeB; - avc.eLoopFilterMode = OMX_VIDEO_AVCLoopFilterEnable; - avc.nRefFrames = 1; - avc.bUseHadamard = OMX_TRUE; - avc.bEntropyCodingCABAC = OMX_TRUE; - avc.bWeightedPPrediction = OMX_TRUE; - avc.bconstIpred = OMX_TRUE; - OMX_CHECK(OMX_SetParameter(handle, OMX_IndexParamVideoAvc, &avc)); - - OMX_CHECK(OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateIdle, NULL)); - - for (OMX_BUFFERHEADERTYPE* &buf : in_buf_headers) { - OMX_CHECK(OMX_AllocateBuffer(handle, &buf, PORT_INDEX_IN, this, in_port.nBufferSize)); - } - for (OMX_BUFFERHEADERTYPE* &buf : out_buf_headers) { - OMX_CHECK(OMX_AllocateBuffer(handle, &buf, PORT_INDEX_OUT, this, out_port.nBufferSize)); - } - - wait_for_state(OMX_StateIdle); - OMX_CHECK(OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateExecuting, NULL)); - wait_for_state(OMX_StateExecuting); - - for (OMX_BUFFERHEADERTYPE* &buf : out_buf_headers) { - OMX_CHECK(OMX_FillThisBuffer(handle, buf)); - } - for (OMX_BUFFERHEADERTYPE* &buf : in_buf_headers) { - free_in->push(std::move(buf)); - } -} - -void OmxEncoder::handle_out_buf(OmxEncoder *encoder, OMX_BUFFERHEADERTYPE *out_buf) { - uint8_t *buf_data = out_buf->pBuffer + out_buf->nOffset; - - if (out_buf->nFlags & OMX_BUFFERFLAG_CODECCONFIG) { - if (encoder->codec_config.size() < out_buf->nFilledLen) { - encoder->codec_config.resize(out_buf->nFilledLen); - } - memcpy(encoder->codec_config.data(), buf_data, out_buf->nFilledLen); -#ifdef QCOM2 - out_buf->nTimeStamp = 0; -#endif - } - - if (encoder->of) { - fwrite(buf_data, out_buf->nFilledLen, 1, encoder->of); - } - - if (!encoder->wrote_codec_config && !encoder->codec_config.empty()) { - encoder->out_stream->codecpar->extradata = (uint8_t*)av_mallocz(encoder->codec_config.size() + AV_INPUT_BUFFER_PADDING_SIZE); - encoder->out_stream->codecpar->extradata_size = encoder->codec_config.size(); - memcpy(encoder->out_stream->codecpar->extradata, encoder->codec_config.data(), encoder->codec_config.size()); - - int err = avformat_write_header(encoder->ofmt_ctx, NULL); - assert(err >= 0); - encoder->wrote_codec_config = true; - } - - if (out_buf->nTimeStamp > 0) { - AVRational in_timebase = {1, 1000000}; - AVPacket pkt; - av_init_packet(&pkt); - pkt.data = buf_data; - pkt.size = out_buf->nFilledLen; - - enum AVRounding rnd = static_cast(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX); - pkt.pts = pkt.dts = av_rescale_q_rnd(out_buf->nTimeStamp, in_timebase, encoder->out_stream->time_base, rnd); - pkt.duration = av_rescale_q(1, AVRational{1, encoder->fps}, encoder->out_stream->time_base); - - if (out_buf->nFlags & OMX_BUFFERFLAG_SYNCFRAME) { - pkt.flags |= AV_PKT_FLAG_KEY; - } - - if (av_write_frame(encoder->ofmt_ctx, &pkt) < 0) { - LOGW("ts encoder write issue"); - } - av_packet_unref(&pkt); - } - -#ifdef QCOM2 - if (out_buf->nFlags & OMX_BUFFERFLAG_EOS) { - out_buf->nTimeStamp = 0; - } -#endif - OMX_CHECK(OMX_FillThisBuffer(encoder->handle, out_buf)); -} - -int OmxEncoder::encode_frame_rgba(const uint8_t *ptr, int in_width, int in_height, uint64_t ts) { - if (!is_open) return -1; - - OMX_BUFFERHEADERTYPE* in_buf = nullptr; - if (!free_in->pop_wait_for(in_buf, std::chrono::milliseconds(50))) { - LOGW("OmxEncoder: dropped frame, input queue full"); - return -1; - } - - int ret = counter; - uint8_t *in_buf_ptr = in_buf->pBuffer; - - int in_y_stride = VENUS_Y_STRIDE(COLOR_FMT_NV12, width); - int in_uv_stride = VENUS_UV_STRIDE(COLOR_FMT_NV12, width); - uint8_t *in_uv_ptr = in_buf_ptr + (in_y_stride * VENUS_Y_SCANLINES(COLOR_FMT_NV12, height)); - - int err = ABGRToNV12(ptr, width * 4, in_buf_ptr, in_y_stride, in_uv_ptr, in_uv_stride, width, height); - assert(err == 0); - - in_buf->nFilledLen = VENUS_BUFFER_SIZE(COLOR_FMT_NV12, width, height); - in_buf->nFlags = OMX_BUFFERFLAG_ENDOFFRAME; - in_buf->nOffset = 0; - in_buf->nTimeStamp = ts / 1000LL; - last_t = in_buf->nTimeStamp; - - OMX_CHECK(OMX_EmptyThisBuffer(handle, in_buf)); - - OMX_BUFFERHEADERTYPE *out_buf; - while (done_out->try_pop(out_buf)) { - handle_out_buf(this, out_buf); - } - - dirty = true; - counter++; - return ret; -} - -void OmxEncoder::encoder_open(const char* filename) { - if (!filename || strlen(filename) == 0) return; - - std::filesystem::path p(path); - std::error_code ec; - std::filesystem::create_directories(p, ec); - if (ec) { - LOGE("Failed to create directories: %s", ec.message().c_str()); - return; - } - - vid_path = (p / filename).string(); - - if (avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, vid_path.c_str()) < 0 || !ofmt_ctx) { - LOGE("Failed to allocate output context"); - return; - } - - out_stream = avformat_new_stream(ofmt_ctx, NULL); - if (!out_stream) { - avformat_free_context(ofmt_ctx); - ofmt_ctx = nullptr; - return; - } - - out_stream->time_base = AVRational{1, fps}; - out_stream->codecpar->codec_id = AV_CODEC_ID_H264; - out_stream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; - out_stream->codecpar->width = width; - out_stream->codecpar->height = height; - - if (ofmt_ctx->oformat && ofmt_ctx->oformat->priv_class) { - av_opt_set(ofmt_ctx->priv_data, "movflags", "faststart", 0); - } - - if (avio_open(&ofmt_ctx->pb, vid_path.c_str(), AVIO_FLAG_WRITE) < 0) { - avformat_free_context(ofmt_ctx); - ofmt_ctx = nullptr; - LOGE("Failed to open output file"); - return; - } - - wrote_codec_config = false; - - lock_path = (p / (std::string(filename) + ".lock")).string(); - int lock_fd = HANDLE_EINTR(open(lock_path.c_str(), O_RDWR | O_CREAT, 0664)); - if (lock_fd >= 0) close(lock_fd); - - is_open = true; - counter = 0; -} - -void OmxEncoder::encoder_close() { - if (!is_open) return; - - if (dirty) { - OMX_BUFFERHEADERTYPE* in_buf = nullptr; - if(free_in->pop_wait_for(in_buf, std::chrono::milliseconds(100))) { - in_buf->nFilledLen = 0; - in_buf->nOffset = 0; - in_buf->nFlags = OMX_BUFFERFLAG_EOS; - in_buf->nTimeStamp = last_t + 1000000LL / fps; - OMX_CHECK(OMX_EmptyThisBuffer(handle, in_buf)); - - int retries = 0; - while (retries++ < 100) { - OMX_BUFFERHEADERTYPE *out_buf; - if(done_out->pop_wait_for(out_buf, std::chrono::milliseconds(10))) { - handle_out_buf(this, out_buf); - if (out_buf->nFlags & OMX_BUFFERFLAG_EOS) break; - } - } - } - dirty = false; - } - - if (out_stream) { - out_stream->nb_frames = counter; - out_stream->duration = av_rescale_q(counter, AVRational{1, fps}, out_stream->time_base); - } - - if (ofmt_ctx) { - av_write_trailer(ofmt_ctx); - avio_closep(&ofmt_ctx->pb); - avformat_free_context(ofmt_ctx); - ofmt_ctx = nullptr; - } - - if (!lock_path.empty()) { - unlink(lock_path.c_str()); - } - - is_open = false; -} - -OmxEncoder::~OmxEncoder() { - if (is_open) encoder_close(); - - if (!handle) return; - - OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateIdle, NULL); - wait_for_state(OMX_StateIdle); - OMX_SendCommand(handle, OMX_CommandStateSet, OMX_StateLoaded, NULL); - - for (auto buf : in_buf_headers) OMX_FreeBuffer(handle, PORT_INDEX_IN, buf); - for (auto buf : out_buf_headers) OMX_FreeBuffer(handle, PORT_INDEX_OUT, buf); - - wait_for_state(OMX_StateLoaded); - OMX_FreeHandle(handle); - OMX_Deinit(); -} - -#endif diff --git a/starpilot/ui/screenrecorder/omx_encoder.h b/starpilot/ui/screenrecorder/omx_encoder.h deleted file mode 100644 index 4068ec2a3..000000000 --- a/starpilot/ui/screenrecorder/omx_encoder.h +++ /dev/null @@ -1,92 +0,0 @@ -#pragma once - -#include -#include -#include - -#if defined(__APPLE__) || !defined(QCOM2) -// Qualcomm OpenMAX is unavailable on macOS. Keep a no-op encoder so UI builds. -class OmxEncoder { -public: - OmxEncoder(const char* path, int width, int height, int fps, int bitrate) { (void)path; (void)width; (void)height; (void)fps; (void)bitrate; } - ~OmxEncoder() = default; - - int encode_frame_rgba(const uint8_t *ptr, int in_width, int in_height, uint64_t ts) { - (void)ptr; - (void)in_width; - (void)in_height; - (void)ts; - return -1; - } - void encoder_open(const char* filename) { (void)filename; is_open = false; } - void encoder_close() {} - - std::atomic is_open{false}; -}; -#else -#include -#include -#include -#include -#include -#include - -#include - -extern "C" { -#include -} - -#include "blocking_queue.h" - -class OmxEncoder { -public: - OmxEncoder(const char* path, int width, int height, int fps, int bitrate); - ~OmxEncoder(); - - int encode_frame_rgba(const uint8_t *ptr, int in_width, int in_height, uint64_t ts); - void encoder_open(const char* filename); - void encoder_close(); - - static OMX_ERRORTYPE event_handler(OMX_HANDLETYPE component, OMX_PTR app_data, OMX_EVENTTYPE event, - OMX_U32 data1, OMX_U32 data2, OMX_PTR event_data); - static OMX_ERRORTYPE empty_buffer_done(OMX_HANDLETYPE component, OMX_PTR app_data, - OMX_BUFFERHEADERTYPE *buffer); - static OMX_ERRORTYPE fill_buffer_done(OMX_HANDLETYPE component, OMX_PTR app_data, - OMX_BUFFERHEADERTYPE *buffer); - - std::atomic is_open{false}; - -private: - void wait_for_state(OMX_STATETYPE state); - static void handle_out_buf(OmxEncoder *e, OMX_BUFFERHEADERTYPE *out_buf); - - int width, height, fps; - std::string path; - std::string vid_path; - std::string lock_path; - - bool dirty = false; - int counter = 0; - - FILE *of = nullptr; - AVFormatContext *ofmt_ctx = nullptr; - AVStream *out_stream = nullptr; - - std::vector codec_config; - bool wrote_codec_config = false; - - std::mutex state_lock; - std::condition_variable state_cv; - OMX_STATETYPE state = OMX_StateLoaded; - OMX_HANDLETYPE handle = nullptr; - - std::vector in_buf_headers; - std::vector out_buf_headers; - - uint64_t last_t = 0; - - std::unique_ptr> free_in; - std::unique_ptr> done_out; -}; -#endif diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Audio.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Audio.h deleted file mode 100644 index 0d455766c..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Audio.h +++ /dev/null @@ -1,1312 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** @file OMX_Audio.h - OpenMax IL version 1.1.2 - * The structures needed by Audio components to exchange - * parameters and configuration data with the componenmilts. - */ - -#ifndef OMX_Audio_h -#define OMX_Audio_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - -/** @defgroup midi MIDI - * @ingroup audio - */ - -/** @defgroup effects Audio effects - * @ingroup audio - */ - -/** @defgroup audio OpenMAX IL Audio Domain - * Structures for OpenMAX IL Audio domain - * @{ - */ - -/** Enumeration used to define the possible audio codings. - * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must - * be done in a vendor specific way. Since this is for an audio - * processing element this enum is relevant. However, for another - * type of component other enums would be in this area. - */ -typedef enum OMX_AUDIO_CODINGTYPE { - OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */ - OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */ - OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */ - OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */ - OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */ - OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */ - OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/ - OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */ - OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */ - OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */ - OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */ - OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */ - OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */ - OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */ - OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */ - OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */ - OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */ - OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */ - OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */ - OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */ - OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */ - OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */ - OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */ - OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */ - OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */ - OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */ - OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */ - OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */ - OMX_AUDIO_CodingAC3, /**< Any variant of AC3 encoded data */ - OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_CodingMax = 0x7FFFFFFF -} OMX_AUDIO_CODINGTYPE; - - -/** The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output audio - * path. If additional information is needed to define the parameters of the - * port (such as frequency), additional structures must be sent such as the - * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port. - */ -typedef struct OMX_AUDIO_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; /**< MIME type of data for the port */ - OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference - for an output device, - otherwise this field is 0 */ - OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is - supported by the OMX component */ - OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this - port (e.g. PCM, AMR, MP3, etc) */ -} OMX_AUDIO_PORTDEFINITIONTYPE; - - -/** Port format parameter. This structure is used to enumerate - * the various data input/output format supported by the port. - */ -typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Indicates which port to set */ - OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ - OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */ -} OMX_AUDIO_PARAM_PORTFORMATTYPE; - - -/** PCM mode type */ -typedef enum OMX_AUDIO_PCMMODETYPE { - OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */ - OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */ - OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */ - OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_PCMModeMax = 0x7FFFFFFF -} OMX_AUDIO_PCMMODETYPE; - - -typedef enum OMX_AUDIO_CHANNELTYPE { - OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */ - OMX_AUDIO_ChannelLF = 0x1, /**< Left front */ - OMX_AUDIO_ChannelRF = 0x2, /**< Right front */ - OMX_AUDIO_ChannelCF = 0x3, /**< Center front */ - OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */ - OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */ - OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */ - OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */ - OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */ - OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */ - OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_ChannelMax = 0x7FFFFFFF -} OMX_AUDIO_CHANNELTYPE; - -#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */ -#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */ - -/** PCM format description */ -typedef struct OMX_AUDIO_PARAM_PCMMODETYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */ - OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */ - OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */ - OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for - non-interleaved data (e.g. block data) */ - OMX_U32 nBitPerSample; /**< Bit per sample */ - OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */ - OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */ - -} OMX_AUDIO_PARAM_PCMMODETYPE; - - -/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate - * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC. - */ -typedef enum OMX_AUDIO_CHANNELMODETYPE { - OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those - two channels changes accordingly to each channel information */ - OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between - 2 channels for higher compression gain */ - OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half - the bitrate of the overall bitrate */ - OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */ - OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF -} OMX_AUDIO_CHANNELMODETYPE; - - -typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE { - OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF -} OMX_AUDIO_MP3STREAMFORMATTYPE; - -/** MP3 params */ -typedef struct OMX_AUDIO_PARAM_MP3TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ - OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */ -} OMX_AUDIO_PARAM_MP3TYPE; - - -typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE { - OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */ - OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */ - OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */ - OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */ - OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */ - OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */ - OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */ - OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF -} OMX_AUDIO_AACSTREAMFORMATTYPE; - - -/** AAC mode type. Note that the term profile is used with the MPEG-2 - * standard and the term object type and profile is used with MPEG-4 */ -typedef enum OMX_AUDIO_AACPROFILETYPE{ - OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */ - OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */ - OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */ - OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */ - OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */ - OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */ - OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */ - OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */ - OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */ - OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */ - OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AACObjectMax = 0x7FFFFFFF -} OMX_AUDIO_AACPROFILETYPE; - - -/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE). - * Required for encoder configuration and optional as decoder info output. - * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */ -#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */ -#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */ -#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */ -#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */ -#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */ -#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */ -#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/ - -/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE). - * Required for ER encoder configuration and optional as decoder info output */ -#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */ -#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */ -#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */ -#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */ -#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */ - - -/** AAC params */ -typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec. - Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD). - Use 0 to let encoder decide */ - OMX_U32 nAACtools; /**< AAC tool usage */ - OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */ - OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */ - OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ -} OMX_AUDIO_PARAM_AACPROFILETYPE; - - -/** VORBIS params */ -typedef struct OMX_AUDIO_PARAM_VORBISTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable - rate or unknown bit rates. Encoding is set to the - bitrate closest to specified value (in bps) */ - OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */ - OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */ - - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high). - In the default mode of operation, teh quality level is 3. - Normal quality range is 0 - 10. */ - OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the - normal VBR encoding, but allows hard or soft bitrate - constraints to be enforced by the encoder. This mode can - be slower, and may also be lower quality. It is - primarily useful for streaming. */ - OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on - non-stereo streams). Useful for lower-bitrate encoding. */ -} OMX_AUDIO_PARAM_VORBISTYPE; - - -/** WMA Version */ -typedef enum OMX_AUDIO_WMAFORMATTYPE { - OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */ - OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */ - OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */ - OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */ - OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF -} OMX_AUDIO_WMAFORMATTYPE; - - -/** WMA Profile */ -typedef enum OMX_AUDIO_WMAPROFILETYPE { - OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */ - OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */ - OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */ - OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */ - OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF -} OMX_AUDIO_WMAPROFILETYPE; - - -/** WMA params */ -typedef struct OMX_AUDIO_PARAM_WMATYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U16 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */ - OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */ - OMX_U32 nSamplingRate; /**< Sampling rate of the source data */ - OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */ - OMX_U16 nEncodeOptions; /**< WMA Type-specific data */ - OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */ -} OMX_AUDIO_PARAM_WMATYPE; - -/** - * RealAudio format - */ -typedef enum OMX_AUDIO_RAFORMATTYPE { - OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */ - OMX_AUDIO_RA8, /**< RealAudio 8 codec */ - OMX_AUDIO_RA9, /**< RealAudio 9 codec */ - OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */ - OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */ - OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */ - OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */ - OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */ - OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_RAFormatMax = 0x7FFFFFFF -} OMX_AUDIO_RAFORMATTYPE; - -/** RA (Real Audio) params */ -typedef struct OMX_AUDIO_PARAM_RATYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */ - OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */ - OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */ - OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */ - OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */ - OMX_U32 nNumRegions; /**< is the number of regions value */ - OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */ -} OMX_AUDIO_PARAM_RATYPE; - - -/** SBC Allocation Method Type */ -typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE { - OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */ - OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */ - OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF -} OMX_AUDIO_SBCALLOCMETHODTYPE; - - -/** SBC params */ -typedef struct OMX_AUDIO_PARAM_SBCTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nBlocks; /**< Number of blocks */ - OMX_U32 nSubbands; /**< Number of subbands */ - OMX_U32 nBitPool; /**< Bitpool value */ - OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ - OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */ -} OMX_AUDIO_PARAM_SBCTYPE; - - -/** ADPCM stream format parameters */ -typedef struct OMX_AUDIO_PARAM_ADPCMTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_U32 nBitsPerSample; /**< Number of bits in each sample */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ -} OMX_AUDIO_PARAM_ADPCMTYPE; - - -/** G723 rate */ -typedef enum OMX_AUDIO_G723RATE { - OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */ - OMX_AUDIO_G723ModeLow, /**< 5300 bps */ - OMX_AUDIO_G723ModeHigh, /**< 6300 bps */ - OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G723ModeMax = 0x7FFFFFFF -} OMX_AUDIO_G723RATE; - - -/** G723 - Sample rate must be 8 KHz */ -typedef struct OMX_AUDIO_PARAM_G723TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ - OMX_BOOL bPostFilter; /**< Enable Post Filter */ -} OMX_AUDIO_PARAM_G723TYPE; - - -/** ITU G726 (ADPCM) rate */ -typedef enum OMX_AUDIO_G726MODE { - OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */ - OMX_AUDIO_G726Mode16, /**< 16 kbps */ - OMX_AUDIO_G726Mode24, /**< 24 kbps */ - OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */ - OMX_AUDIO_G726Mode40, /**< 40 kbps */ - OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G726ModeMax = 0x7FFFFFFF -} OMX_AUDIO_G726MODE; - - -/** G.726 stream format parameters - must be at 8KHz */ -typedef struct OMX_AUDIO_PARAM_G726TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_G726MODE eG726Mode; -} OMX_AUDIO_PARAM_G726TYPE; - - -/** G729 coder type */ -typedef enum OMX_AUDIO_G729TYPE { - OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */ - OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */ - OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */ - OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */ - OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G729Max = 0x7FFFFFFF -} OMX_AUDIO_G729TYPE; - - -/** G729 stream format parameters - fixed 6KHz sample rate */ -typedef struct OMX_AUDIO_PARAM_G729TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_AUDIO_G729TYPE eBitType; -} OMX_AUDIO_PARAM_G729TYPE; - - -/** AMR Frame format */ -typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE { - OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance - (Standard) Format */ - OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface - Format 1 */ - OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface - Format 2*/ - OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage - Format */ - OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time - Transport Protocol Payload Format */ - OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */ - OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF -} OMX_AUDIO_AMRFRAMEFORMATTYPE; - - -/** AMR band mode */ -typedef enum OMX_AUDIO_AMRBANDMODETYPE { - OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */ - OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */ - OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */ - OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */ - OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */ - OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */ - OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */ - OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */ - OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */ - OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */ - OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */ - OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */ - OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */ - OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */ - OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */ - OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */ - OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */ - OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */ - OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF -} OMX_AUDIO_AMRBANDMODETYPE; - - -/** AMR Discontinuous Transmission mode */ -typedef enum OMX_AUDIO_AMRDTXMODETYPE { - OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */ - OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using - Voice Activity Detector 1 (VAD1) is enabled */ - OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using - Voice Activity Detector 2 (VAD2) is enabled */ - OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between - Off, VAD1 or VAD2 modes */ - - OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */ - - OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF -} OMX_AUDIO_AMRDTXMODETYPE; - - -/** AMR params */ -typedef struct OMX_AUDIO_PARAM_AMRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate read only field */ - OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */ - OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */ - OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */ -} OMX_AUDIO_PARAM_AMRTYPE; - - -/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMFRTYPE; - - -/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMHRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMHRTYPE; - - -/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMEFRTYPE; - - -/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_TDMAFRTYPE; - - -/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_TDMAEFRTYPE; - - -/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCFRTYPE; - - -/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCEFRTYPE; - -/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCHRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCHRTYPE; - - -/** CDMA Rate types */ -typedef enum OMX_AUDIO_CDMARATETYPE { - OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */ - OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */ - OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */ - OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */ - OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/ - OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */ - OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_CDMARateMax = 0x7FFFFFFF -} OMX_AUDIO_CDMARATETYPE; - - -/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_QCELP8TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ -} OMX_AUDIO_PARAM_QCELP8TYPE; - - -/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_QCELP13TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ -} OMX_AUDIO_PARAM_QCELP13TYPE; - - -/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_EVRCTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */ - OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ - OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */ - OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ - OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */ -} OMX_AUDIO_PARAM_EVRCTYPE; - - -/** SMV ( up to 8.55kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_SMVTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/ - OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/ - OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ - OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/ -} OMX_AUDIO_PARAM_SMVTYPE; - - -/** MIDI Format - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDIFORMATTYPE -{ - OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */ - OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */ - OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */ - OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */ - OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */ - OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */ - OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */ - OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */ - OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF -} OMX_AUDIO_MIDIFORMATTYPE; - - -/** MIDI params - * @ingroup midi - */ -typedef struct OMX_AUDIO_PARAM_MIDITYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire - MIDI file passed in, otherwise if 0x0, the MIDI data - is merged and streamed (instead of passed as an - entire MIDI file) */ - OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic - voices. A value of zero indicates that the default - polyphony of the device is used */ - OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound - bank at initialization */ - OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */ -} OMX_AUDIO_PARAM_MIDITYPE; - - -/** Type of the MIDI sound bank - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE { - OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */ - OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */ - OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */ - OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */ - OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */ - OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF -} OMX_AUDIO_MIDISOUNDBANKTYPE; - - -/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE { - OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */ - OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */ - OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */ - OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */ - OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF -} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE; - - -/** MIDI params to load/unload user soundbank - * @ingroup midi - */ -typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nDLSIndex; /**< DLS file index to be loaded */ - OMX_U32 nDLSSize; /**< Size in bytes */ - OMX_PTR pDLSData; /**< Pointer to DLS file data */ - OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */ - OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */ -} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE; - - -/** Structure for Live MIDI events and MIP messages. - * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.) - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */ - OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an - array for the MIP message buffer, where the size is - indicated by nMidiEventSize */ -} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE; - - -/** MIDI sound bank/ program pair in a given channel - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */ - OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */ - OMX_U16 nIDSoundBank; /**< Sound bank ID */ - OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks - by index if multiple banks are present */ -} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE; - - -/** MIDI control - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10 - format based on JAVA MMAPI (JSR-135) requirement */ - OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point - number based on JSR-135 requirement */ - OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10 - fixed-point number based on JSR-135 requirement */ - OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic - voices. A value of zero indicates that the default - polyphony of the device is used */ - OMX_U32 nNumRepeat; /**< Number of times to repeat playback */ - OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback - will stop automatically. Set to zero if not used */ - OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */ - OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */ - OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */ - OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */ - OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */ - OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */ - -} OMX_AUDIO_CONFIG_MIDICONTROLTYPE; - - -/** MIDI Playback States - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE { - OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to - other defined states */ - OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open. - The MIDI engine is currently processing - MIDI events. */ - OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being - primed. The MIDI engine is currently - processing MIDI events. */ - OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but - not playing. The MIDI engine is currently - processing MIDI events. The transition to - this state is only possible from the - OMX_AUDIO_MIDIPlayBackStatePlaying state, - when the 'playback head' reaches the end - of media data or the playback stops due - to stop time set.*/ - OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently - playing. The MIDI engine is currently - processing MIDI events.*/ - OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS - resource constraints */ - OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and - SP-MIDI content constraints, there is - no audible MIDI content during playback - currently. The situation may change if - resources are freed later.*/ - OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF -} OMX_AUDIO_MIDIPLAYBACKSTATETYPE; - - -/** MIDI status - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field. - NOTE: May not return a meaningful value until the entire - file is parsed and buffered. */ - OMX_U32 nDuration; /**< The length of the currently open MIDI resource - in milliseconds. NOTE: May not return a meaningful value - until the entire file is parsed and buffered. */ - OMX_U32 nPosition; /**< Current Position of the MIDI resource being played - in milliseconds */ - OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful - value until the entire file is parsed and buffered. */ - OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently - open MIDI resource. NOTE: May not return a meaningful value - until the entire file is parsed and buffered. */ - OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing - MIDI resource. NOTE: May not return a meaningful value until - the entire file is parsed and buffered. */ - OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */ -} OMX_AUDIO_CONFIG_MIDISTATUSTYPE; - - -/** MIDI Meta Event structure one per Meta Event. - * MIDI Meta Events are like audio metadata, except that they are interspersed - * with the MIDI content throughout the file and are not localized in the header. - * As such, it is necessary to retrieve information about these Meta Events from - * the engine, as it encounters these Meta Events within the MIDI content. - * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright, - * author, default tempo, etc.) scattered throughout the file. - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nIndex; /**< Index of Meta Event */ - OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */ - OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ - OMX_U32 nTrack; /**< track number for the meta event */ - OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */ -} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE; - - -/** MIDI Meta Event Data structure - one per Meta Event. - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nIndex; /**< Index of Meta Event */ - OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ - OMX_U8 nData[1]; /**< array of one or more bytes of meta data - as indicated by the nMetaEventSize field */ -} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE; - - -/** Audio Volume adjustment for a port */ -typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's volume. Select the - output port to adjust the master - volume. */ - OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) - or logarithmic scale (mB) */ - OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR - Volume logarithmic setting for this port. The values - for volume are in mB (millibels = 1/100 dB) relative - to a gain of 1 (e.g. the output is the same as the - input level). Values are in mB from nMax - (maximum volume) to nMin mB (typically negative). - Since the volume is "voltage" - and not a "power", it takes a setting of - -600 mB to decrease the volume by 1/2. If - a component cannot accurately set the - volume to the requested value, it must - set the volume to the closest value BELOW - the requested value. When getting the - volume setting, the current actual volume - must be returned. */ -} OMX_AUDIO_CONFIG_VOLUMETYPE; - - -/** Audio Volume adjustment for a channel */ -typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's volume. Select the - output port to adjust the master - volume. */ - OMX_U32 nChannel; /**< channel to select from 0 to N-1, - using OMX_ALL to apply volume settings - to all channels */ - OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or - logarithmic scale (mB) */ - OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR - Volume logarithmic setting for this port. - The values for volume are in mB - (millibels = 1/100 dB) relative to a gain - of 1 (e.g. the output is the same as the - input level). Values are in mB from nMax - (maximum volume) to nMin mB (typically negative). - Since the volume is "voltage" - and not a "power", it takes a setting of - -600 mB to decrease the volume by 1/2. If - a component cannot accurately set the - volume to the requested value, it must - set the volume to the closest value BELOW - the requested value. When getting the - volume setting, the current actual volume - must be returned. */ - OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, - FALSE otherwise */ -} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE; - - -/** Audio balance setting */ -typedef struct OMX_AUDIO_CONFIG_BALANCETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's balance. Select the - output port to adjust the master - balance. */ - OMX_S32 nBalance; /**< balance setting for this port - (-100 to 100, where -100 indicates - all left, and no right */ -} OMX_AUDIO_CONFIG_BALANCETYPE; - - -/** Audio Port mute */ -typedef struct OMX_AUDIO_CONFIG_MUTETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's mute. Select the - output port to adjust the master - mute. */ - OMX_BOOL bMute; /**< Mute setting for this port */ -} OMX_AUDIO_CONFIG_MUTETYPE; - - -/** Audio Channel mute */ -typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannel; /**< channel to select from 0 to N-1, - using OMX_ALL to apply mute settings - to all channels */ - OMX_BOOL bMute; /**< Mute setting for this channel */ - OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, - FALSE otherwise */ -} OMX_AUDIO_CONFIG_CHANNELMUTETYPE; - - - -/** Enable / Disable for loudness control, which boosts bass and to a - * smaller extent high end frequencies to compensate for hearing - * ability at the extreme ends of the audio spectrum - */ -typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bLoudness; /**< Enable/disable for loudness */ -} OMX_AUDIO_CONFIG_LOUDNESSTYPE; - - -/** Enable / Disable for bass, which controls low frequencies - */ -typedef struct OMX_AUDIO_CONFIG_BASSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for bass control */ - OMX_S32 nBass; /**< bass setting for the port, as a - continuous value from -100 to 100 - (0 means no change in bass level)*/ -} OMX_AUDIO_CONFIG_BASSTYPE; - - -/** Enable / Disable for treble, which controls high frequencies tones - */ -typedef struct OMX_AUDIO_CONFIG_TREBLETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for treble control */ - OMX_S32 nTreble; /**< treble setting for the port, as a - continuous value from -100 to 100 - (0 means no change in treble level) */ -} OMX_AUDIO_CONFIG_TREBLETYPE; - - -/** An equalizer is typically used for two reasons: to compensate for an - * sub-optimal frequency response of a system to make it sound more natural - * or to create intentionally some unnatural coloring to the sound to create - * an effect. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for equalizer */ - OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is - N-1, where N is the number of bands, lower limit is 0 */ - OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a - read only element and is used to determine - the lower, center and upper frequency of - this band. */ - OMX_BS32 sBandLevel; /**< band level in millibels */ -} OMX_AUDIO_CONFIG_EQUALIZERTYPE; - - -/** Stereo widening mode type - * @ingroup effects - */ -typedef enum OMX_AUDIO_STEREOWIDENINGTYPE { - OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */ - OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */ - OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF -} OMX_AUDIO_STEREOWIDENINGTYPE; - - -/** Control for stereo widening, which is a special 2-channel - * case of the audio virtualizer effect. For example, for 5.1-channel - * output, it translates to virtual surround sound. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */ - OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */ - OMX_U32 nStereoWidening; /**< stereo widening setting for the port, - as a continuous value from 0 to 100 */ -} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE; - - -/** The chorus effect (or ``choralizer'') is any signal processor which makes - * one sound source (such as a voice) sound like many such sources singing - * (or playing) in unison. Since performance in unison is never exact, chorus - * effects simulate this by making independently modified copies of the input - * signal. Modifications may include (1) delay, (2) frequency shift, and - * (3) amplitude modulation. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for chorus */ - OMX_BU32 sDelay; /**< average delay in milliseconds */ - OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */ - OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of - delay (i.e. 0 to 100) */ - OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */ -} OMX_AUDIO_CONFIG_CHORUSTYPE; - - -/** Reverberation is part of the reflected sound that follows the early - * reflections. In a typical room, this consists of a dense succession of - * echoes whose energy decays exponentially. The reverberation effect structure - * as defined here includes both (early) reflections as well as (late) reverberations. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for reverberation control */ - OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect - (i.e. both early reflections and late - reverberation) in millibels */ - OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies - relative to the intensity at low - frequencies in millibels */ - OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections - (relative to room value), in millibels */ - OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative - to the direct path, in milliseconds */ - OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation - relative to room level, in millibels */ - OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection - to the beginning of the late reverberation - section, in milliseconds */ - OMX_BU32 sDecayTime; /**< Late reverberation decay time at low - frequencies, in milliseconds */ - OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative - to low frequency decay time in percent */ - OMX_U32 nDensity; /**< Modal density in the late reverberation decay, - in percent (i.e. 0 - 100) */ - OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay, - in percent (i.e. 0 - 100) */ - OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is - the frequency used as the reference for all - the high-frequency settings above */ - -} OMX_AUDIO_CONFIG_REVERBERATIONTYPE; - - -/** Possible settings for the Echo Cancelation structure to use - * @ingroup effects - */ -typedef enum OMX_AUDIO_ECHOCANTYPE { - OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */ - OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation - - echo from plastics and face */ - OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for - Hands Free operation */ - OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for - Car Kit (longer echo) */ - OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_EchoCanMax = 0x7FFFFFFF -} OMX_AUDIO_ECHOCANTYPE; - - -/** Enable / Disable for echo cancelation, which removes undesired echo's - * from the audio - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */ -} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE; - - -/** Enable / Disable for noise reduction, which undesired noise from - * the audio - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */ -} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE; - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Component.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Component.h deleted file mode 100644 index d5956405e..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Component.h +++ /dev/null @@ -1,579 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Component.h - OpenMax IL version 1.1.2 - * The OMX_Component header file contains the definitions used to define - * the public interface of a component. This header file is intended to - * be used by both the application and the component. - */ - -#ifndef OMX_Component_h -#define OMX_Component_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include -#include -#include -#include - -/** @ingroup comp */ -typedef enum OMX_PORTDOMAINTYPE { - OMX_PortDomainAudio, - OMX_PortDomainVideo, - OMX_PortDomainImage, - OMX_PortDomainOther, - OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_PortDomainMax = 0x7ffffff -} OMX_PORTDOMAINTYPE; - -/** @ingroup comp */ -typedef struct OMX_PARAM_PORTDEFINITIONTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port number the structure applies to */ - OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ - OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ - OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ - OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ - OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by - OMX_CommandPortEnable/OMX_CommandPortDisable. - When disabled a port is unpopulated. A disabled port - is not populated with buffers on a transition to IDLE. */ - OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by - nBufferCountActual. A disabled port is always unpopulated. - An enabled port is populated on a transition to OMX_StateIdle - and unpopulated on a transition to loaded. */ - OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ - union { - OMX_AUDIO_PORTDEFINITIONTYPE audio; - OMX_VIDEO_PORTDEFINITIONTYPE video; - OMX_IMAGE_PORTDEFINITIONTYPE image; - OMX_OTHER_PORTDEFINITIONTYPE other; - } format; - OMX_BOOL bBuffersContiguous; - OMX_U32 nBufferAlignment; -} OMX_PARAM_PORTDEFINITIONTYPE; - -/** @ingroup comp */ -typedef struct OMX_PARAM_U32TYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nU32; /**< U32 value */ -} OMX_PARAM_U32TYPE; - -/** @ingroup rpm */ -typedef enum OMX_SUSPENSIONPOLICYTYPE { - OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ - OMX_SuspensionEnabled, /**< Suspension allowed */ - OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_SuspensionPolicyMax = 0x7fffffff -} OMX_SUSPENSIONPOLICYTYPE; - -/** @ingroup rpm */ -typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_SUSPENSIONPOLICYTYPE ePolicy; -} OMX_PARAM_SUSPENSIONPOLICYTYPE; - -/** @ingroup rpm */ -typedef enum OMX_SUSPENSIONTYPE { - OMX_NotSuspended, /**< component is not suspended */ - OMX_Suspended, /**< component is suspended */ - OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_SuspendMax = 0x7FFFFFFF -} OMX_SUSPENSIONTYPE; - -/** @ingroup rpm */ -typedef struct OMX_PARAM_SUSPENSIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_SUSPENSIONTYPE eType; -} OMX_PARAM_SUSPENSIONTYPE ; - -typedef struct OMX_CONFIG_BOOLEANTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bEnabled; -} OMX_CONFIG_BOOLEANTYPE; - -/* Parameter specifying the content uri to use. */ -/** @ingroup cp */ -typedef struct OMX_PARAM_CONTENTURITYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes, including - actual URI name */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8 contentURI[1]; /**< The URI name */ -} OMX_PARAM_CONTENTURITYPE; - -/* Parameter specifying the pipe to use. */ -/** @ingroup cp */ -typedef struct OMX_PARAM_CONTENTPIPETYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_HANDLETYPE hPipe; /**< The pipe handle*/ -} OMX_PARAM_CONTENTPIPETYPE; - -/** @ingroup rpm */ -typedef struct OMX_RESOURCECONCEALMENTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment - methods (like degrading algorithm quality to - lower resource consumption or functional bypass) - on a component as a resolution to resource conflicts. */ -} OMX_RESOURCECONCEALMENTTYPE; - - -/** @ingroup metadata */ -typedef enum OMX_METADATACHARSETTYPE { - OMX_MetadataCharsetUnknown = 0, - OMX_MetadataCharsetASCII, - OMX_MetadataCharsetBinary, - OMX_MetadataCharsetCodePage1252, - OMX_MetadataCharsetUTF8, - OMX_MetadataCharsetJavaConformantUTF8, - OMX_MetadataCharsetUTF7, - OMX_MetadataCharsetImapUTF7, - OMX_MetadataCharsetUTF16LE, - OMX_MetadataCharsetUTF16BE, - OMX_MetadataCharsetGB12345, - OMX_MetadataCharsetHZGB2312, - OMX_MetadataCharsetGB2312, - OMX_MetadataCharsetGB18030, - OMX_MetadataCharsetGBK, - OMX_MetadataCharsetBig5, - OMX_MetadataCharsetISO88591, - OMX_MetadataCharsetISO88592, - OMX_MetadataCharsetISO88593, - OMX_MetadataCharsetISO88594, - OMX_MetadataCharsetISO88595, - OMX_MetadataCharsetISO88596, - OMX_MetadataCharsetISO88597, - OMX_MetadataCharsetISO88598, - OMX_MetadataCharsetISO88599, - OMX_MetadataCharsetISO885910, - OMX_MetadataCharsetISO885913, - OMX_MetadataCharsetISO885914, - OMX_MetadataCharsetISO885915, - OMX_MetadataCharsetShiftJIS, - OMX_MetadataCharsetISO2022JP, - OMX_MetadataCharsetISO2022JP1, - OMX_MetadataCharsetISOEUCJP, - OMX_MetadataCharsetSMS7Bit, - OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataCharsetTypeMax= 0x7FFFFFFF -} OMX_METADATACHARSETTYPE; - -/** @ingroup metadata */ -typedef enum OMX_METADATASCOPETYPE -{ - OMX_MetadataScopeAllLevels, - OMX_MetadataScopeTopLevel, - OMX_MetadataScopePortLevel, - OMX_MetadataScopeNodeLevel, - OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataScopeTypeMax = 0x7fffffff -} OMX_METADATASCOPETYPE; - -/** @ingroup metadata */ -typedef enum OMX_METADATASEARCHMODETYPE -{ - OMX_MetadataSearchValueSizeByIndex, - OMX_MetadataSearchItemByIndex, - OMX_MetadataSearchNextItemByKey, - OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataSearchTypeMax = 0x7fffffff -} OMX_METADATASEARCHMODETYPE; -/** @ingroup metadata */ -typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_METADATASCOPETYPE eScopeMode; - OMX_U32 nScopeSpecifier; - OMX_U32 nMetadataItemCount; -} OMX_CONFIG_METADATAITEMCOUNTTYPE; - -/** @ingroup metadata */ -typedef struct OMX_CONFIG_METADATAITEMTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_METADATASCOPETYPE eScopeMode; - OMX_U32 nScopeSpecifier; - OMX_U32 nMetadataItemIndex; - OMX_METADATASEARCHMODETYPE eSearchMode; - OMX_METADATACHARSETTYPE eKeyCharset; - OMX_U8 nKeySizeUsed; - OMX_U8 nKey[128]; - OMX_METADATACHARSETTYPE eValueCharset; - OMX_STRING sLanguageCountry; - OMX_U32 nValueMaxSize; - OMX_U32 nValueSizeUsed; - OMX_U8 nValue[1]; -} OMX_CONFIG_METADATAITEMTYPE; - -/* @ingroup metadata */ -typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; - OMX_U32 nParentNodeID; - OMX_U32 nNumNodes; -} OMX_CONFIG_CONTAINERNODECOUNTTYPE; - -/** @ingroup metadata */ -typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; - OMX_U32 nParentNodeID; - OMX_U32 nNodeIndex; - OMX_U32 nNodeID; - OMX_STRING cNodeName; - OMX_BOOL bIsLeafType; -} OMX_CONFIG_CONTAINERNODEIDTYPE; - -/** @ingroup metadata */ -typedef struct OMX_PARAM_METADATAFILTERTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and - * the three key fields below are ignored */ - OMX_METADATACHARSETTYPE eKeyCharset; - OMX_U32 nKeySizeUsed; - OMX_U8 nKey [128]; - OMX_U32 nLanguageCountrySizeUsed; - OMX_U8 nLanguageCountry[128]; - OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. - * retained for query later). If false then - * key is not part of filter */ -} OMX_PARAM_METADATAFILTERTYPE; - -/** The OMX_HANDLETYPE structure defines the component handle. The component - * handle is used to access all of the component's public methods and also - * contains pointers to the component's private data area. The component - * handle is initialized by the OMX core (with help from the component) - * during the process of loading the component. After the component is - * successfully loaded, the application can safely access any of the - * component's public functions (although some may return an error because - * the state is inappropriate for the access). - * - * @ingroup comp - */ -typedef struct OMX_COMPONENTTYPE -{ - /** The size of this structure, in bytes. It is the responsibility - of the allocator of this structure to fill in this value. Since - this structure is allocated by the GetHandle function, this - function will fill in this value. */ - OMX_U32 nSize; - - /** nVersion is the version of the OMX specification that the structure - is built against. It is the responsibility of the creator of this - structure to initialize this value and every user of this structure - should verify that it knows how to use the exact version of - this structure found herein. */ - OMX_VERSIONTYPE nVersion; - - /** pComponentPrivate is a pointer to the component private data area. - This member is allocated and initialized by the component when the - component is first loaded. The application should not access this - data area. */ - OMX_PTR pComponentPrivate; - - /** pApplicationPrivate is a pointer that is a parameter to the - OMX_GetHandle method, and contains an application private value - provided by the IL client. This application private data is - returned to the IL Client by OMX in all callbacks */ - OMX_PTR pApplicationPrivate; - - /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL - specification for details on the GetComponentVersion method. - */ - OMX_ERRORTYPE (*GetComponentVersion)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STRING pComponentName, - OMX_OUT OMX_VERSIONTYPE* pComponentVersion, - OMX_OUT OMX_VERSIONTYPE* pSpecVersion, - OMX_OUT OMX_UUIDTYPE* pComponentUUID); - - /** refer to OMX_SendCommand in OMX_core.h or the OMX IL - specification for details on the SendCommand method. - */ - OMX_ERRORTYPE (*SendCommand)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_COMMANDTYPE Cmd, - OMX_IN OMX_U32 nParam1, - OMX_IN OMX_PTR pCmdData); - - /** refer to OMX_GetParameter in OMX_core.h or the OMX IL - specification for details on the GetParameter method. - */ - OMX_ERRORTYPE (*GetParameter)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nParamIndex, - OMX_INOUT OMX_PTR pComponentParameterStructure); - - - /** refer to OMX_SetParameter in OMX_core.h or the OMX IL - specification for details on the SetParameter method. - */ - OMX_ERRORTYPE (*SetParameter)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR pComponentParameterStructure); - - - /** refer to OMX_GetConfig in OMX_core.h or the OMX IL - specification for details on the GetConfig method. - */ - OMX_ERRORTYPE (*GetConfig)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_INOUT OMX_PTR pComponentConfigStructure); - - - /** refer to OMX_SetConfig in OMX_core.h or the OMX IL - specification for details on the SetConfig method. - */ - OMX_ERRORTYPE (*SetConfig)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR pComponentConfigStructure); - - - /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL - specification for details on the GetExtensionIndex method. - */ - OMX_ERRORTYPE (*GetExtensionIndex)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_STRING cParameterName, - OMX_OUT OMX_INDEXTYPE* pIndexType); - - - /** refer to OMX_GetState in OMX_core.h or the OMX IL - specification for details on the GetState method. - */ - OMX_ERRORTYPE (*GetState)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STATETYPE* pState); - - - /** The ComponentTunnelRequest method will interact with another OMX - component to determine if tunneling is possible and to setup the - tunneling. The return codes for this method can be used to - determine if tunneling is not possible, or if tunneling is not - supported. - - Base profile components (i.e. non-interop) do not support this - method and should return OMX_ErrorNotImplemented - - The interop profile component MUST support tunneling to another - interop profile component with a compatible port parameters. - A component may also support proprietary communication. - - If proprietary communication is supported the negotiation of - proprietary communication is done outside of OMX in a vendor - specific way. It is only required that the proper result be - returned and the details of how the setup is done is left - to the component implementation. - - When this method is invoked when nPort in an output port, the - component will: - 1. Populate the pTunnelSetup structure with the output port's - requirements and constraints for the tunnel. - - When this method is invoked when nPort in an input port, the - component will: - 1. Query the necessary parameters from the output port to - determine if the ports are compatible for tunneling - 2. If the ports are compatible, the component should store - the tunnel step provided by the output port - 3. Determine which port (either input or output) is the buffer - supplier, and call OMX_SetParameter on the output port to - indicate this selection. - - The component will return from this call within 5 msec. - - @param [in] hComp - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle method. - @param [in] nPort - nPort is used to select the port on the component to be used - for tunneling. - @param [in] hTunneledComp - Handle of the component to tunnel with. This is the component - handle returned by the call to the OMX_GetHandle method. When - this parameter is 0x0 the component should setup the port for - communication with the application / IL Client. - @param [in] nPortOutput - nPortOutput is used indicate the port the component should - tunnel with. - @param [in] pTunnelSetup - Pointer to the tunnel setup structure. When nPort is an output port - the component should populate the fields of this structure. When - When nPort is an input port the component should review the setup - provided by the component with the output port. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup tun - */ - - OMX_ERRORTYPE (*ComponentTunnelRequest)( - OMX_IN OMX_HANDLETYPE hComp, - OMX_IN OMX_U32 nPort, - OMX_IN OMX_HANDLETYPE hTunneledComp, - OMX_IN OMX_U32 nTunneledPort, - OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); - - /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL - specification for details on the UseBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*UseBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes, - OMX_IN OMX_U8* pBuffer); - - /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL - specification for details on the AllocateBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*AllocateBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes); - - /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL - specification for details on the FreeBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*FreeBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL - specification for details on the EmptyThisBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*EmptyThisBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL - specification for details on the FillThisBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*FillThisBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** The SetCallbacks method is used by the core to specify the callback - structure from the application to the component. This is a blocking - call. The component will return from this call within 5 msec. - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @param [in] pCallbacks - pointer to an OMX_CALLBACKTYPE structure used to provide the - callback information to the component - @param [in] pAppData - pointer to an application defined value. It is anticipated that - the application will pass a pointer to a data structure or a "this - pointer" in this area to allow the callback (in the application) - to determine the context of the call - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - */ - OMX_ERRORTYPE (*SetCallbacks)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_CALLBACKTYPE* pCallbacks, - OMX_IN OMX_PTR pAppData); - - /** ComponentDeInit method is used to deinitialize the component - providing a means to free any resources allocated at component - initialization. NOTE: After this call the component handle is - not valid for further use. - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - */ - OMX_ERRORTYPE (*ComponentDeInit)( - OMX_IN OMX_HANDLETYPE hComponent); - - /** @ingroup buf */ - OMX_ERRORTYPE (*UseEGLImage)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN void* eglImage); - - OMX_ERRORTYPE (*ComponentRoleEnum)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex); - -} OMX_COMPONENTTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_ContentPipe.h b/starpilot/ui/screenrecorder/openmax/include/OMX_ContentPipe.h deleted file mode 100644 index 5f6310c28..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_ContentPipe.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_ContentPipe.h - OpenMax IL version 1.1.2 - * The OMX_ContentPipe header file contains the definitions used to define - * the public interface for content piples. This header file is intended to - * be used by the component. - */ - -#ifndef OMX_CONTENTPIPE_H -#define OMX_CONTENTPIPE_H - -#ifndef KD_EACCES -/* OpenKODE error codes. CPResult values may be zero (indicating success - or one of the following values) */ -#define KD_EACCES (1) -#define KD_EADDRINUSE (2) -#define KD_EAGAIN (5) -#define KD_EBADF (7) -#define KD_EBUSY (8) -#define KD_ECONNREFUSED (9) -#define KD_ECONNRESET (10) -#define KD_EDEADLK (11) -#define KD_EDESTADDRREQ (12) -#define KD_ERANGE (35) -#define KD_EEXIST (13) -#define KD_EFBIG (14) -#define KD_EHOSTUNREACH (15) -#define KD_EINVAL (17) -#define KD_EIO (18) -#define KD_EISCONN (20) -#define KD_EISDIR (21) -#define KD_EMFILE (22) -#define KD_ENAMETOOLONG (23) -#define KD_ENOENT (24) -#define KD_ENOMEM (25) -#define KD_ENOSPC (26) -#define KD_ENOSYS (27) -#define KD_ENOTCONN (28) -#define KD_EPERM (33) -#define KD_ETIMEDOUT (36) -#define KD_EILSEQ (19) -#endif - -/** Map types from OMX standard types only here so interface is as generic as possible. */ -typedef OMX_U32 CPresult; -typedef char * CPstring; -typedef void * CPhandle; -typedef OMX_U32 CPuint; -typedef OMX_S32 CPint; -typedef char CPbyte; -typedef OMX_BOOL CPbool; - -/** enumeration of origin types used in the CP_PIPETYPE's Seek function - * @ingroup cp - */ -typedef enum CP_ORIGINTYPE { - CP_OriginBegin, - CP_OriginCur, - CP_OriginEnd, - CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_OriginMax = 0X7FFFFFFF -} CP_ORIGINTYPE; - -/** enumeration of contact access types used in the CP_PIPETYPE's Open function - * @ingroup cp - */ -typedef enum CP_ACCESSTYPE { - CP_AccessRead, - CP_AccessWrite, - CP_AccessReadWrite , - CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_AccessMax = 0X7FFFFFFF -} CP_ACCESSTYPE; - -/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function - * @ingroup cp - */ -typedef enum CP_CHECKBYTESRESULTTYPE -{ - CP_CheckBytesOk, /**< There are at least the request number - of bytes available */ - CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes - and presently lacks sufficient bytes. - Client will be called when they are - sufficient bytes are available. */ - CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes - but those available are less than those - requested */ - CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream - and no more bytes are available. */ - CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */ - CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_CheckBytesMax = 0X7FFFFFFF -} CP_CHECKBYTESRESULTTYPE; - -/** enumeration of content pipe events sent to the client callback. - * @ingroup cp - */ -typedef enum CP_EVENTTYPE{ - CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/ - CP_Overflow, /** enumeration of content pipe events sent to the client callback*/ - CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/ - CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_EventMax = 0X7FFFFFFF -} CP_EVENTTYPE; - -/** content pipe definition - * @ingroup cp - */ -typedef struct CP_PIPETYPE -{ - /** Open a content stream for reading or writing. */ - CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess ); - - /** Close a content stream. */ - CPresult (*Close)( CPhandle hContent ); - - /** Create a content source and open it for writing. */ - CPresult (*Create)( CPhandle *hContent, CPstring szURI ); - - /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/ - CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult ); - - /** Seek to certain position in the content relative to the specified origin. */ - CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin); - - /** Retrieve the current position relative to the start of the content. */ - CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition); - - /** Retrieve data of the specified size from the content stream (advance content pointer by size of data). - Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */ - CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize); - - /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes. - Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also - returns the size of the block actually read. Content pointer advances the by the returned size. - Note: pipe provides pointer. This function is appropriate for large reads. The client must call - ReleaseReadBuffer when done with buffer. - - In some cases the requested block may not reside in contiguous memory within the - pipe implementation. For instance if the pipe leverages a circular buffer then the requested - block may straddle the boundary of the circular buffer. By default a pipe implementation - performs a copy in this case to provide the block to the pipe client in one contiguous buffer. - If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory - boundary. Here the client may retrieve the data in segments over successive calls. */ - CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy); - - /** Release a buffer obtained by ReadBuffer back to the pipe. */ - CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer); - - /** Write data of the specified size to the content (advance content pointer by size of data). - Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */ - CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize); - - /** Retrieve a buffer allocated by the pipe used to write data to the content. - Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate - for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/ - CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize); - - /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the - the contents of the buffer to content and advance content pointer by the size of the buffer */ - CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize); - - /** Register a per-handle client callback with the content pipe. */ - CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)); - -} CP_PIPETYPE; - -#endif - diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Core.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Core.h deleted file mode 100644 index 52d211f0d..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Core.h +++ /dev/null @@ -1,1440 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Core.h - OpenMax IL version 1.1.2 - * The OMX_Core header file contains the definitions used by both the - * application and the component to access common items. - */ - -#ifndef OMX_Core_h -#define OMX_Core_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header shall include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - - -/** The OMX_COMMANDTYPE enumeration is used to specify the action in the - * OMX_SendCommand macro. - * @ingroup core - */ -typedef enum OMX_COMMANDTYPE -{ - OMX_CommandStateSet, /**< Change the component state */ - OMX_CommandFlush, /**< Flush the data queue(s) of a component */ - OMX_CommandPortDisable, /**< Disable a port on a component. */ - OMX_CommandPortEnable, /**< Enable a port on a component. */ - OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */ - OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_CommandMax = 0X7FFFFFFF -} OMX_COMMANDTYPE; - - - -/** The OMX_STATETYPE enumeration is used to indicate or change the component - * state. This enumeration reflects the current state of the component when - * used with the OMX_GetState macro or becomes the parameter in a state change - * command when used with the OMX_SendCommand macro. - * - * The component will be in the Loaded state after the component is initially - * loaded into memory. In the Loaded state, the component is not allowed to - * allocate or hold resources other than to build it's internal parameter - * and configuration tables. The application will send one or more - * SetParameters/GetParameters and SetConfig/GetConfig commands to the - * component and the component will record each of these parameter and - * configuration changes for use later. When the application sends the - * Idle command, the component will acquire the resources needed for the - * specified configuration and will transition to the idle state if the - * allocation is successful. If the component cannot successfully - * transition to the idle state for any reason, the state of the component - * shall be fully rolled back to the Loaded state (e.g. all allocated - * resources shall be released). When the component receives the command - * to go to the Executing state, it shall begin processing buffers by - * sending all input buffers it holds to the application. While - * the component is in the Idle state, the application may also send the - * Pause command. If the component receives the pause command while in the - * Idle state, the component shall send all input buffers it holds to the - * application, but shall not begin processing buffers. This will allow the - * application to prefill buffers. - * - * @ingroup comp - */ - -typedef enum OMX_STATETYPE -{ - OMX_StateInvalid, /**< component has detected that it's internal data - structures are corrupted to the point that - it cannot determine it's state properly */ - OMX_StateLoaded, /**< component has been loaded but has not completed - initialization. The OMX_SetParameter macro - and the OMX_GetParameter macro are the only - valid macros allowed to be sent to the - component in this state. */ - OMX_StateIdle, /**< component initialization has been completed - successfully and the component is ready to - to start. */ - OMX_StateExecuting, /**< component has accepted the start command and - is processing data (if data is available) */ - OMX_StatePause, /**< component has received pause command */ - OMX_StateWaitForResources, /**< component is waiting for resources, either after - preemption or before it gets the resources requested. - See specification for complete details. */ - OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_StateMax = 0X7FFFFFFF -} OMX_STATETYPE; - -/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These - * errors should cover most of the common failure cases. However, - * vendors are free to add additional error messages of their own as - * long as they follow these rules: - * 1. Vendor error messages shall be in the range of 0x90000000 to - * 0x9000FFFF. - * 2. Vendor error messages shall be defined in a header file provided - * with the component. No error messages are allowed that are - * not defined. - */ -typedef enum OMX_ERRORTYPE -{ - OMX_ErrorNone = 0, - - /** There were insufficient resources to perform the requested operation */ - OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000, - - /** There was an error, but the cause of the error could not be determined */ - OMX_ErrorUndefined = (OMX_S32) 0x80001001, - - /** The component name string was not valid */ - OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002, - - /** No component with the specified name string was found */ - OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003, - - /** The component specified did not have a "OMX_ComponentInit" or - "OMX_ComponentDeInit entry point */ - OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004, - - /** One or more parameters were not valid */ - OMX_ErrorBadParameter = (OMX_S32) 0x80001005, - - /** The requested function is not implemented */ - OMX_ErrorNotImplemented = (OMX_S32) 0x80001006, - - /** The buffer was emptied before the next buffer was ready */ - OMX_ErrorUnderflow = (OMX_S32) 0x80001007, - - /** The buffer was not available when it was needed */ - OMX_ErrorOverflow = (OMX_S32) 0x80001008, - - /** The hardware failed to respond as expected */ - OMX_ErrorHardware = (OMX_S32) 0x80001009, - - /** The component is in the state OMX_StateInvalid */ - OMX_ErrorInvalidState = (OMX_S32) 0x8000100A, - - /** Stream is found to be corrupt */ - OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B, - - /** Ports being connected are not compatible */ - OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C, - - /** Resources allocated to an idle component have been - lost resulting in the component returning to the loaded state */ - OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D, - - /** No more indicies can be enumerated */ - OMX_ErrorNoMore = (OMX_S32) 0x8000100E, - - /** The component detected a version mismatch */ - OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F, - - /** The component is not ready to return data at this time */ - OMX_ErrorNotReady = (OMX_S32) 0x80001010, - - /** There was a timeout that occurred */ - OMX_ErrorTimeout = (OMX_S32) 0x80001011, - - /** This error occurs when trying to transition into the state you are already in */ - OMX_ErrorSameState = (OMX_S32) 0x80001012, - - /** Resources allocated to an executing or paused component have been - preempted, causing the component to return to the idle state */ - OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013, - - /** A non-supplier port sends this error to the IL client (via the EventHandler callback) - during the allocation of buffers (on a transition from the LOADED to the IDLE state or - on a port restart) when it deems that it has waited an unusually long time for the supplier - to send it an allocated buffer via a UseBuffer call. */ - OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014, - - /** A non-supplier port sends this error to the IL client (via the EventHandler callback) - during the deallocation of buffers (on a transition from the IDLE to LOADED state or - on a port stop) when it deems that it has waited an unusually long time for the supplier - to request the deallocation of a buffer header via a FreeBuffer call. */ - OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015, - - /** A supplier port sends this error to the IL client (via the EventHandler callback) - during the stopping of a port (either on a transition from the IDLE to LOADED - state or a port stop) when it deems that it has waited an unusually long time for - the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */ - OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016, - - /** Attempting a state transtion that is not allowed */ - OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017, - - /* Attempting a command that is not allowed during the present state. */ - OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018, - - /** The values encapsulated in the parameter or config structure are not supported. */ - OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019, - - /** The parameter or config indicated by the given index is not supported. */ - OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A, - - /** The port index supplied is incorrect. */ - OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B, - - /** The port has lost one or more of its buffers and it thus unpopulated. */ - OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C, - - /** Component suspended due to temporary loss of resources */ - OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D, - - /** Component suspended due to an inability to acquire dynamic resources */ - OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E, - - /** When the macroblock error reporting is enabled the component returns new error - for every frame that has errors */ - OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F, - - /** A component reports this error when it cannot parse or determine the format of an input stream. */ - OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020, - - /** The content open operation failed. */ - OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021, - - /** The content creation operation failed. */ - OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022, - - /** Separate table information is being used */ - OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023, - - /** Tunneling is unsupported by the component*/ - OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024, - - OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ErrorMax = 0x7FFFFFFF -} OMX_ERRORTYPE; - -/** @ingroup core */ -typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent); - -/** @ingroup core */ -typedef struct OMX_COMPONENTREGISTERTYPE -{ - const char * pName; /* Component name, 128 byte limit (including '\0') applies */ - OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */ -} OMX_COMPONENTREGISTERTYPE; - -/** @ingroup core */ -extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[]; - -/** @ingroup rpm */ -typedef struct OMX_PRIORITYMGMTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nGroupPriority; /**< Priority of the component group */ - OMX_U32 nGroupID; /**< ID of the component group */ -} OMX_PRIORITYMGMTTYPE; - -/* Component name and Role names are limited to 128 characters including the terminating '\0'. */ -#define OMX_MAX_STRINGNAME_SIZE 128 - -/** @ingroup comp */ -typedef struct OMX_PARAM_COMPONENTROLETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */ -} OMX_PARAM_COMPONENTROLETYPE; - -/** End of Stream Buffer Flag: - * - * A component sets EOS when it has no more data to emit on a particular - * output port. Thus an output port shall set EOS on the last buffer it - * emits. A component's determination of when an output port should - * cease sending data is implemenation specific. - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_EOS 0x00000001 - -/** Start Time Buffer Flag: - * - * The source of a stream (e.g. a demux component) sets the STARTTIME - * flag on the buffer that contains the starting timestamp for the - * stream. The starting timestamp corresponds to the first data that - * should be displayed at startup or after a seek. - * The first timestamp of the stream is not necessarily the start time. - * For instance, in the case of a seek to a particular video frame, - * the target frame may be an interframe. Thus the first buffer of - * the stream will be the intra-frame preceding the target frame and - * the starttime will occur with the target frame (with any other - * required frames required to reconstruct the target intervening). - * - * The STARTTIME flag is directly associated with the buffer's - * timestamp ' thus its association to buffer data and its - * propagation is identical to the timestamp's. - * - * When a Sync Component client receives a buffer with the - * STARTTIME flag it shall perform a SetConfig on its sync port - * using OMX_ConfigTimeClientStartTime and passing the buffer's - * timestamp. - * - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_STARTTIME 0x00000002 - - - -/** Decode Only Buffer Flag: - * - * The source of a stream (e.g. a demux component) sets the DECODEONLY - * flag on any buffer that should shall be decoded but should not be - * displayed. This flag is used, for instance, when a source seeks to - * a target interframe that requires the decode of frames preceding the - * target to facilitate the target's reconstruction. In this case the - * source would emit the frames preceding the target downstream - * but mark them as decode only. - * - * The DECODEONLY is associated with buffer data and propagated in a - * manner identical to the buffer timestamp. - * - * A component that renders data should ignore all buffers with - * the DECODEONLY flag set. - * - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_DECODEONLY 0x00000004 - - -/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008 - -/* End of Frame: The buffer contains exactly one end of frame and no data - * occurs after the end of frame. This flag is an optional hint. The absence - * of this flag does not imply the absence of an end of frame within the buffer. - * @ingroup buf -*/ -#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010 - -/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame ' - * a frame that has no dependency on any other frame information - * @ingroup buf - */ -#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 - -/* Extra data present flag: there is extra data appended to the data stream - * residing in the buffer - * @ingroup buf - */ -#define OMX_BUFFERFLAG_EXTRADATA 0x00000040 - -/** Codec Config Buffer Flag: -* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an -* output port when all bytes in the buffer form part or all of a set of -* codec specific configuration data. Examples include SPS/PPS nal units -* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for -* OMX_AUDIO_CodingAAC. Any component that for a given stream sets -* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes -* with frame data in the same buffer, and shall send all buffers -* containing codec configuration bytes before any buffers containing -* frame data that those configurations bytes describe. -* If the stream format for a particular codec has a frame specific -* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or -* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as -* normal without setting OMX_BUFFERFLAG_CODECCONFIG. - * @ingroup buf - */ -#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 - -/* -* OMX_BUFFERFLAG_READONLY: This flag is set when a component emitting the -* buffer on an output port or the IL client wishes to identify the buffer -* payload contents to be read-only. An IL client or an input port -* shall not alter the contents of the buffer. This flag shall only be -* cleared by the originator of the buffer when the buffer is returned. -* For tunneled ports, the usage of this flag shall be allowed only if the -* components negotiated a read-only tunnel -*/ -#define OMX_BUFFERFLAG_READONLY 0x00000200 - -/** @ingroup buf */ -typedef struct OMX_BUFFERHEADERTYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8* pBuffer; /**< Pointer to actual block of memory - that is acting as the buffer */ - OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */ - OMX_U32 nFilledLen; /**< number of bytes currently in the - buffer */ - OMX_U32 nOffset; /**< start offset of valid data in bytes from - the start of the buffer */ - OMX_PTR pAppPrivate; /**< pointer to any data the application - wants to associate with this buffer */ - OMX_PTR pPlatformPrivate; /**< pointer to any data the platform - wants to associate with this buffer */ - OMX_PTR pInputPortPrivate; /**< pointer to any data the input port - wants to associate with this buffer */ - OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port - wants to associate with this buffer */ - OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a - mark event upon processing this buffer. */ - OMX_PTR pMarkData; /**< Application specific data associated with - the mark sent on a mark event to disambiguate - this mark from others. */ - OMX_U32 nTickCount; /**< Optional entry that the component and - application can update with a tick count - when they access the component. This - value should be in microseconds. Since - this is a value relative to an arbitrary - starting point, this value cannot be used - to determine absolute time. This is an - optional entry and not all components - will update it.*/ - OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample - starting at the first logical sample - boundary in the buffer. Timestamps of - successive samples within the buffer may - be inferred by adding the duration of the - of the preceding buffer to the timestamp - of the preceding buffer.*/ - OMX_U32 nFlags; /**< buffer specific flags */ - OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using - this buffer */ - OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using - this buffer */ -} OMX_BUFFERHEADERTYPE; - -/** The OMX_EXTRADATATYPE enumeration is used to define the - * possible extra data payload types. - * NB: this enum is binary backwards compatible with the previous - * OMX_EXTRADATA_QUANT define. This should be replaced with - * OMX_ExtraDataQuantization. - */ -typedef enum OMX_EXTRADATATYPE -{ - OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */ - OMX_ExtraDataQuantization, /**< The data payload contains quantization data */ - OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ExtraDataMax = 0x7FFFFFFF -} OMX_EXTRADATATYPE; - - -typedef struct OMX_OTHER_EXTRADATATYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_EXTRADATATYPE eType; /* Extra Data type */ - OMX_U32 nDataSize; /* Size of the supporting data to follow */ - OMX_U8 data[1]; /* Supporting data hint */ -} OMX_OTHER_EXTRADATATYPE; - -/** @ingroup comp */ -typedef struct OMX_PORT_PARAM_TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPorts; /**< The number of ports for this component */ - OMX_U32 nStartPortNumber; /** first port number for this type of port */ -} OMX_PORT_PARAM_TYPE; - -/** @ingroup comp */ -typedef enum OMX_EVENTTYPE -{ - OMX_EventCmdComplete, /**< component has sucessfully completed a command */ - OMX_EventError, /**< component has detected an error condition */ - OMX_EventMark, /**< component has detected a buffer mark */ - OMX_EventPortSettingsChanged, /**< component is reported a port settings change */ - OMX_EventBufferFlag, /**< component has detected an EOS */ - OMX_EventResourcesAcquired, /**< component has been granted resources and is - automatically starting the state change from - OMX_StateWaitForResources to OMX_StateIdle. */ - OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */ - OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */ - OMX_EventPortFormatDetected, /**< Component has detected a supported format. */ - OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_EventMax = 0x7FFFFFFF -} OMX_EVENTTYPE; - -typedef struct OMX_CALLBACKTYPE -{ - /** The EventHandler method is used to notify the application when an - event of interest occurs. Events are defined in the OMX_EVENTTYPE - enumeration. Please see that enumeration for details of what will - be returned for each type of event. Callbacks should not return - an error to the component, so if an error occurs, the application - shall handle it internally. This is a blocking call. - - The application should return from this call within 5 msec to avoid - blocking the component for an excessively long period of time. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param eEvent - Event that the component wants to notify the application about. - @param nData1 - nData will be the OMX_ERRORTYPE for an error event and will be - an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event. - @param nData2 - nData2 will hold further information related to the event. Can be OMX_STATETYPE for - a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event. - Default value is 0 if not used. ) - @param pEventData - Pointer to additional event-specific data (see spec for meaning). - */ - - OMX_ERRORTYPE (*EventHandler)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_EVENTTYPE eEvent, - OMX_IN OMX_U32 nData1, - OMX_IN OMX_U32 nData2, - OMX_IN OMX_PTR pEventData); - - /** The EmptyBufferDone method is used to return emptied buffers from an - input port back to the application for reuse. This is a blocking call - so the application should not attempt to refill the buffers during this - call, but should queue them and refill them in another thread. There - is no error return, so the application shall handle any errors generated - internally. - - The application should return from this call within 5 msec. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer indicating the buffer that was emptied. - @ingroup buf - */ - OMX_ERRORTYPE (*EmptyBufferDone)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** The FillBufferDone method is used to return filled buffers from an - output port back to the application for emptying and then reuse. - This is a blocking call so the application should not attempt to - empty the buffers during this call, but should queue the buffers - and empty them in another thread. There is no error return, so - the application shall handle any errors generated internally. The - application shall also update the buffer header to indicate the - number of bytes placed into the buffer. - - The application should return from this call within 5 msec. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer indicating the buffer that was filled. - @ingroup buf - */ - OMX_ERRORTYPE (*FillBufferDone)( - OMX_OUT OMX_HANDLETYPE hComponent, - OMX_OUT OMX_PTR pAppData, - OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); - -} OMX_CALLBACKTYPE; - -/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier - preference when tunneling between two ports. - @ingroup tun buf -*/ -typedef enum OMX_BUFFERSUPPLIERTYPE -{ - OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified, - or don't care */ - OMX_BufferSupplyInput, /**< input port supplies the buffers */ - OMX_BufferSupplyOutput, /**< output port supplies the buffers */ - OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_BufferSupplyMax = 0x7FFFFFFF -} OMX_BUFFERSUPPLIERTYPE; - - -/** buffer supplier parameter - * @ingroup tun - */ -typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */ -} OMX_PARAM_BUFFERSUPPLIERTYPE; - - -/**< indicates that buffers received by an input port of a tunnel - may not modify the data in the buffers - @ingroup tun - */ -#define OMX_PORTTUNNELFLAG_READONLY 0x00000001 - - -/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output - port to an input port as part the two ComponentTunnelRequest calls - resulting from a OMX_SetupTunnel call from the IL Client. - @ingroup tun - */ -typedef struct OMX_TUNNELSETUPTYPE -{ - OMX_U32 nTunnelFlags; /**< bit flags for tunneling */ - OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */ -} OMX_TUNNELSETUPTYPE; - -/* OMX Component headers is included to enable the core to use - macros for functions into the component for OMX release 1.0. - Developers should not access any structures or data from within - the component header directly */ -/* TO BE REMOVED - #include */ - -/** GetComponentVersion will return information about the component. - This is a blocking call. This macro will go directly from the - application to the component (via a core macro). The - component will return from this call within 5 msec. - @param [in] hComponent - handle of component to execute the command - @param [out] pComponentName - pointer to an empty string of length 128 bytes. The component - will write its name into this string. The name will be - terminated by a single zero byte. The name of a component will - be 127 bytes or less to leave room for the trailing zero byte. - An example of a valid component name is "OMX.ABC.ChannelMixer\0". - @param [out] pComponentVersion - pointer to an OMX Version structure that the component will fill - in. The component will fill in a value that indicates the - component version. NOTE: the component version is NOT the same - as the OMX Specification version (found in all structures). The - component version is defined by the vendor of the component and - its value is entirely up to the component vendor. - @param [out] pSpecVersion - pointer to an OMX Version structure that the component will fill - in. The SpecVersion is the version of the specification that the - component was built against. Please note that this value may or - may not match the structure's version. For example, if the - component was built against the 2.0 specification, but the - application (which creates the structure is built against the - 1.0 specification the versions would be different. - @param [out] pComponentUUID - pointer to the UUID of the component which will be filled in by - the component. The UUID is a unique identifier that is set at - RUN time for the component and is unique to each instantion of - the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetComponentVersion( \ - hComponent, \ - pComponentName, \ - pComponentVersion, \ - pSpecVersion, \ - pComponentUUID) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \ - hComponent, \ - pComponentName, \ - pComponentVersion, \ - pSpecVersion, \ - pComponentUUID) /* Macro End */ - - -/** Send a command to the component. This call is a non-blocking call. - The component should check the parameters and then queue the command - to the component thread to be executed. The component thread shall - send the EventHandler() callback at the conclusion of the command. - This macro will go directly from the application to the component (via - a core macro). The component will return from this call within 5 msec. - - When the command is "OMX_CommandStateSet" the component will queue a - state transition to the new state idenfied in nParam. - - When the command is "OMX_CommandFlush", to flush a port's buffer queues, - the command will force the component to return all buffers NOT CURRENTLY - BEING PROCESSED to the application, in the order in which the buffers - were received. - - When the command is "OMX_CommandPortDisable" or - "OMX_CommandPortEnable", the component's port (given by the value of - nParam) will be stopped or restarted. - - When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the - pCmdData will point to a OMX_MARKTYPE structure containing the component - handle of the component to examine the buffer chain for the mark. nParam1 - contains the index of the port on which the buffer mark is applied. - - Specification text for more details. - - @param [in] hComponent - handle of component to execute the command - @param [in] Cmd - Command for the component to execute - @param [in] nParam - Parameter for the command to be executed. When Cmd has the value - OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has - the value OMX_CommandFlush, value of nParam indicates which port(s) - to flush. -1 is used to flush all ports a single port index will - only flush that port. When Cmd has the value "OMX_CommandPortDisable" - or "OMX_CommandPortEnable", the component's port is given by - the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer" - the components pot is given by the value of nParam. - @param [in] pCmdData - Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value - "OMX_CommandMarkBuffer". - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SendCommand( \ - hComponent, \ - Cmd, \ - nParam, \ - pCmdData) \ - ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \ - hComponent, \ - Cmd, \ - nParam, \ - pCmdData) /* Macro End */ - - -/** The OMX_GetParameter macro will get one of the current parameter - settings from the component. This macro cannot only be invoked when - the component is in the OMX_StateInvalid state. The nParamIndex - parameter is used to indicate which structure is being requested from - the component. The application shall allocate the correct structure - and shall fill in the structure size and version information before - invoking this macro. When the parameter applies to a port, the - caller shall fill in the appropriate nPortIndex value indicating the - port on which the parameter applies. If the component has not had - any settings changed, then the component should return a set of - valid DEFAULT parameters for the component. This is a blocking - call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nParamIndex - Index of the structure to be filled. This value is from the - OMX_INDEXTYPE enumeration. - @param [in,out] pComponentParameterStructure - Pointer to application allocated structure to be filled by the - component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) /* Macro End */ - - -/** The OMX_SetParameter macro will send an initialization parameter - structure to a component. Each structure shall be sent one at a time, - in a separate invocation of the macro. This macro can only be - invoked when the component is in the OMX_StateLoaded state, or the - port is disabled (when the parameter applies to a port). The - nParamIndex parameter is used to indicate which structure is being - passed to the component. The application shall allocate the - correct structure and shall fill in the structure size and version - information (as well as the actual data) before invoking this macro. - The application is free to dispose of this structure after the call - as the component is required to copy any data it shall retain. This - is a blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nIndex - Index of the structure to be sent. This value is from the - OMX_INDEXTYPE enumeration. - @param [in] pComponentParameterStructure - pointer to application allocated structure to be used for - initialization by the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) /* Macro End */ - - -/** The OMX_GetConfig macro will get one of the configuration structures - from a component. This macro can be invoked anytime after the - component has been loaded. The nParamIndex call parameter is used to - indicate which structure is being requested from the component. The - application shall allocate the correct structure and shall fill in the - structure size and version information before invoking this macro. - If the component has not had this configuration parameter sent before, - then the component should return a set of valid DEFAULT values for the - component. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nIndex - Index of the structure to be filled. This value is from the - OMX_INDEXTYPE enumeration. - @param [in,out] pComponentConfigStructure - pointer to application allocated structure to be filled by the - component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp -*/ -#define OMX_GetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) /* Macro End */ - - -/** The OMX_SetConfig macro will send one of the configuration - structures to a component. Each structure shall be sent one at a time, - each in a separate invocation of the macro. This macro can be invoked - anytime after the component has been loaded. The application shall - allocate the correct structure and shall fill in the structure size - and version information (as well as the actual data) before invoking - this macro. The application is free to dispose of this structure after - the call as the component is required to copy any data it shall retain. - This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nConfigIndex - Index of the structure to be sent. This value is from the - OMX_INDEXTYPE enumeration above. - @param [in] pComponentConfigStructure - pointer to application allocated structure to be used for - initialization by the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) /* Macro End */ - - -/** The OMX_GetExtensionIndex macro will invoke a component to translate - a vendor specific configuration or parameter string into an OMX - structure index. There is no requirement for the vendor to support - this command for the indexes already found in the OMX_INDEXTYPE - enumeration (this is done to save space in small components). The - component shall support all vendor supplied extension indexes not found - in the master OMX_INDEXTYPE enumeration. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @param [in] cParameterName - OMX_STRING that shall be less than 128 characters long including - the trailing null byte. This is the string that will get - translated by the component into a configuration index. - @param [out] pIndexType - a pointer to a OMX_INDEXTYPE to receive the index value. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetExtensionIndex( \ - hComponent, \ - cParameterName, \ - pIndexType) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \ - hComponent, \ - cParameterName, \ - pIndexType) /* Macro End */ - - -/** The OMX_GetState macro will invoke the component to get the current - state of the component and place the state value into the location - pointed to by pState. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] pState - pointer to the location to receive the state. The value returned - is one of the OMX_STATETYPE members - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetState( \ - hComponent, \ - pState) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetState( \ - hComponent, \ - pState) /* Macro End */ - - -/** The OMX_UseBuffer macro will request that the component use - a buffer (and allocate its own buffer header) already allocated - by another component, or by the IL Client. This is a blocking - call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive the - pointer to the buffer header - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ - -#define OMX_UseBuffer( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes, \ - pBuffer) - - -/** The OMX_AllocateBuffer macro will request that the component allocate - a new buffer and buffer header. The component will allocate the - buffer and the buffer header and return a pointer to the buffer - header. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive - the pointer to the buffer header - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. The port can be found by using the nPortIndex - value as an index into the Port Definition array of the component. - @param [in] pAppPrivate - pAppPrivate is used to initialize the pAppPrivate member of the - buffer header structure. - @param [in] nSizeBytes - size of the buffer to allocate. Used when bAllocateNew is true. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_AllocateBuffer( \ - hComponent, \ - ppBuffer, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes) \ - ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \ - hComponent, \ - ppBuffer, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes) /* Macro End */ - - -/** The OMX_FreeBuffer macro will release a buffer header from the component - which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If - the component allocated the buffer (see the OMX_UseBuffer macro) then - the component shall free the buffer and buffer header. This is a - blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_FreeBuffer( \ - hComponent, \ - nPortIndex, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \ - hComponent, \ - nPortIndex, \ - pBuffer) /* Macro End */ - - -/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an - input port of a component. The buffer will be emptied by the component - and returned to the application via the EmptyBufferDone call back. - This is a non-blocking call in that the component will record the buffer - and return immediately and then empty the buffer, later, at the proper - time. As expected, this macro may be invoked only while the component - is in the OMX_StateExecuting. If nPortIndex does not specify an input - port, the component shall return an error. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_EmptyThisBuffer( \ - hComponent, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \ - hComponent, \ - pBuffer) /* Macro End */ - - -/** The OMX_FillThisBuffer macro will send an empty buffer to an - output port of a component. The buffer will be filled by the component - and returned to the application via the FillBufferDone call back. - This is a non-blocking call in that the component will record the buffer - and return immediately and then fill the buffer, later, at the proper - time. As expected, this macro may be invoked only while the component - is in the OMX_ExecutingState. If nPortIndex does not specify an output - port, the component shall return an error. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_FillThisBuffer( \ - hComponent, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \ - hComponent, \ - pBuffer) /* Macro End */ - - - -/** The OMX_UseEGLImage macro will request that the component use - a EGLImage provided by EGL (and allocate its own buffer header) - This is a blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive the - pointer to the buffer header. Note that the memory location used - for this buffer is NOT visible to the IL Client. - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. The port can be found by using the nPortIndex - value as an index into the Port Definition array of the component. - @param [in] pAppPrivate - pAppPrivate is used to initialize the pAppPrivate member of the - buffer header structure. - @param [in] eglImage - eglImage contains the handle of the EGLImage to use as a buffer on the - specified port. The component is expected to validate properties of - the EGLImage against the configuration of the port to ensure the component - can use the EGLImage as a buffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_UseEGLImage( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - eglImage) \ - ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - eglImage) - -/** The OMX_Init method is used to initialize the OMX core. It shall be the - first call made into OMX and it should only be executed one time without - an interviening OMX_Deinit call. - - The core should return from this call within 20 msec. - - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void); - - -/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be - the last call made into OMX. In the event that the core determines that - thare are components loaded when this call is made, the core may return - with an error rather than try to unload the components. - - The core should return from this call within 20 msec. - - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void); - - -/** The OMX_ComponentNameEnum method will enumerate through all the names of - recognised valid components in the system. This function is provided - as a means to detect all the components in the system run-time. There is - no strict ordering to the enumeration order of component names, although - each name will only be enumerated once. If the OMX core supports run-time - installation of new components, it is only requried to detect newly - installed components when the first call to enumerate component names - is made (i.e. when nIndex is 0x0). - - The core should return from this call in 20 msec. - - @param [out] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] nNameLength - number of characters in the cComponentName string. With all - component name strings restricted to less than 128 characters - (including the trailing null) it is recomended that the caller - provide a input string for the cComponentName of 128 characters. - @param [in] nIndex - number containing the enumeration index for the component. - Multiple calls to OMX_ComponentNameEnum with increasing values - of nIndex will enumerate through the component names in the - system until OMX_ErrorNoMore is returned. The value of nIndex - is 0 to (N-1), where N is the number of valid installed components - in the system. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. When the value of nIndex exceeds the number of - components in the system minus 1, OMX_ErrorNoMore will be - returned. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum( - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex); - - -/** The OMX_GetHandle method will locate the component specified by the - component name given, load that component into memory and then invoke - the component's methods to create an instance of the component. - - The core should return from this call within 20 msec. - - @param [out] pHandle - pointer to an OMX_HANDLETYPE pointer to be filled in by this method. - @param [in] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] pAppData - pointer to an application defined value that will be returned - during callbacks so that the application can identify the source - of the callback. - @param [in] pCallBacks - pointer to a OMX_CALLBACKTYPE structure that will be passed to the - component to initialize it with. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle( - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks); - - -/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle - method. If the component reference count goes to zero, the component will - be unloaded from memory. - - The core should return from this call within 20 msec when the component is - in the OMX_StateLoaded state. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle( - OMX_IN OMX_HANDLETYPE hComponent); - - - -/** The OMX_SetupTunnel method will handle the necessary calls to the components - to setup the specified tunnel the two components. NOTE: This is - an actual method (not a #define macro). This method will make calls into - the component ComponentTunnelRequest method to do the actual tunnel - connection. - - The ComponentTunnelRequest method on both components will be called. - This method shall not be called unless the component is in the - OMX_StateLoaded state except when the ports used for the tunnel are - disabled. In this case, the component may be in the OMX_StateExecuting, - OMX_StatePause, or OMX_StateIdle states. - - The core should return from this call within 20 msec. - - @param [in] hOutput - Handle of the component to be accessed. Also this is the handle - of the component whose port, specified in the nPortOutput parameter - will be used the source for the tunnel. This is the component handle - returned by the call to the OMX_GetHandle function. There is a - requirement that hOutput be the source for the data when - tunelling (i.e. nPortOutput is an output port). If 0x0, the component - specified in hInput will have it's port specified in nPortInput - setup for communication with the application / IL client. - @param [in] nPortOutput - nPortOutput is used to select the source port on component to be - used in the tunnel. - @param [in] hInput - This is the component to setup the tunnel with. This is the handle - of the component whose port, specified in the nPortInput parameter - will be used the destination for the tunnel. This is the component handle - returned by the call to the OMX_GetHandle function. There is a - requirement that hInput be the destination for the data when - tunelling (i.e. nPortInut is an input port). If 0x0, the component - specified in hOutput will have it's port specified in nPortPOutput - setup for communication with the application / IL client. - @param [in] nPortInput - nPortInput is used to select the destination port on component to be - used in the tunnel. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - When OMX_ErrorNotImplemented is returned, one or both components is - a non-interop component and does not support tunneling. - - On failure, the ports of both components are setup for communication - with the application / IL Client. - @ingroup core tun - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel( - OMX_IN OMX_HANDLETYPE hOutput, - OMX_IN OMX_U32 nPortOutput, - OMX_IN OMX_HANDLETYPE hInput, - OMX_IN OMX_U32 nPortInput); - -/** @ingroup cp */ -OMX_API OMX_ERRORTYPE OMX_GetContentPipe( - OMX_OUT OMX_HANDLETYPE *hPipe, - OMX_IN OMX_STRING szURI); - -/** The OMX_GetComponentsOfRole method will return the number of components that support the given - role and (if the compNames field is non-NULL) the names of those components. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the compNames field NULL to determine the number of component names - * second call this function with the compNames field pointing to an array of names allocated - according to the number returned by the first call. - - The core should return from this call within 5 msec. - - @param [in] role - This is generic standard component name consisting only of component class - name and the type within that class (e.g. 'audio_decoder.aac'). - @param [inout] pNumComps - This is used both as input and output. - - If compNames is NULL, the input is ignored and the output specifies how many components support - the given role. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of components string names listed within the compNames parameter. - @param [inout] compNames - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts - a list of the names of all physical components that implement the specified standard component name. - Each name is NULL terminated. numComps indicates the number of names. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole ( - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames); - -/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given - component and (if the roles field is non-NULL) the names of those roles. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the roles field NULL to determine the number of role names - * second call this function with the roles field pointing to an array of names allocated - according to the number returned by the first call. - - The core should return from this call within 5 msec. - - @param [in] compName - This is the name of the component being queried about. - @param [inout] pNumRoles - This is used both as input and output. - - If roles is NULL, the input is ignored and the output specifies how many roles the component supports. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of roles string names listed within the roles parameter. - @param [out] roles - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings - which accepts a list of the names of all standard components roles implemented on the - specified component name. numComps indicates the number of names. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent ( - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_CoreExt.h b/starpilot/ui/screenrecorder/openmax/include/OMX_CoreExt.h deleted file mode 100644 index 3ec14b05f..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_CoreExt.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2009 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_CoreExt.h - OpenMax IL version 1.1.2 - * The OMX_CoreExt header file contains extensions to the definitions used - * by both the application and the component to access common items. - */ - -#ifndef OMX_CoreExt_h -#define OMX_CoreExt_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Each OMX header shall include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ -#include - - -/** Event type extensions. */ -typedef enum OMX_EVENTEXTTYPE -{ - OMX_EventIndexSettingChanged = OMX_EventKhronosExtensions, /**< component signals the IL client of a change - in a param, config, or extension */ - OMX_EventExtMax = 0x7FFFFFFF -} OMX_EVENTEXTTYPE; - - -/** Enable or disable a callback event. */ -typedef struct OMX_CONFIG_CALLBACKREQUESTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_INDEXTYPE nIndex; /**< the index the callback is requested for */ - OMX_BOOL bEnable; /**< enable (OMX_TRUE) or disable (OMX_FALSE) the callback */ -} OMX_CONFIG_CALLBACKREQUESTTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* OMX_CoreExt_h */ -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_IVCommon.h b/starpilot/ui/screenrecorder/openmax/include/OMX_IVCommon.h deleted file mode 100644 index ec717565a..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_IVCommon.h +++ /dev/null @@ -1,933 +0,0 @@ -/** - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** - * @file OMX_IVCommon.h - OpenMax IL version 1.1.2 - * The structures needed by Video and Image components to exchange - * parameters and configuration data with the components. - */ -#ifndef OMX_IVCommon_h -#define OMX_IVCommon_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * Each OMX header must include all required header files to allow the header - * to compile without errors. The includes below are required for this header - * file to compile successfully - */ - -#include - -/** @defgroup iv OpenMAX IL Imaging and Video Domain - * Common structures for OpenMAX IL Imaging and Video domains - * @{ - */ - - -/** - * Enumeration defining possible uncompressed image/video formats. - * - * ENUMS: - * Unused : Placeholder value when format is N/A - * Monochrome : black and white - * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0 - * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0 - * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0 - * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0 - * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0 - * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0 - * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0 - * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0 - * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0 - * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0 - * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0 - * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0 - * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0 - * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0 - * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0 - * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally - * YUV411PackedPlanar : packed per payload in planar slices - * YUV420Planar : Three arrays Y,U,V. - * YUV420PackedPlanar : packed per payload in planar slices - * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V - * YUV422Planar : Three arrays Y,U,V. - * YUV422PackedPlanar : packed per payload in planar slices - * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V - * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr) - * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb) - * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY) - * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY) - * YUV444Interleaved : Each pixel contains equal parts YUV - * RawBayer8bit : SMIA camera output format - * RawBayer10bit : SMIA camera output format - * RawBayer8bitcompressed : SMIA camera output format - */ -typedef enum OMX_COLOR_FORMATTYPE { - OMX_COLOR_FormatUnused, - OMX_COLOR_FormatMonochrome, - OMX_COLOR_Format8bitRGB332, - OMX_COLOR_Format12bitRGB444, - OMX_COLOR_Format16bitARGB4444, - OMX_COLOR_Format16bitARGB1555, - OMX_COLOR_Format16bitRGB565, - OMX_COLOR_Format16bitBGR565, - OMX_COLOR_Format18bitRGB666, - OMX_COLOR_Format18bitARGB1665, - OMX_COLOR_Format19bitARGB1666, - OMX_COLOR_Format24bitRGB888, - OMX_COLOR_Format24bitBGR888, - OMX_COLOR_Format24bitARGB1887, - OMX_COLOR_Format25bitARGB1888, - OMX_COLOR_Format32bitBGRA8888, - OMX_COLOR_Format32bitARGB8888, - OMX_COLOR_FormatYUV411Planar, - OMX_COLOR_FormatYUV411PackedPlanar, - OMX_COLOR_FormatYUV420Planar, - OMX_COLOR_FormatYUV420PackedPlanar, - OMX_COLOR_FormatYUV420SemiPlanar, - OMX_COLOR_FormatYUV422Planar, - OMX_COLOR_FormatYUV422PackedPlanar, - OMX_COLOR_FormatYUV422SemiPlanar, - OMX_COLOR_FormatYCbYCr, - OMX_COLOR_FormatYCrYCb, - OMX_COLOR_FormatCbYCrY, - OMX_COLOR_FormatCrYCbY, - OMX_COLOR_FormatYUV444Interleaved, - OMX_COLOR_FormatRawBayer8bit, - OMX_COLOR_FormatRawBayer10bit, - OMX_COLOR_FormatRawBayer8bitcompressed, - OMX_COLOR_FormatL2, - OMX_COLOR_FormatL4, - OMX_COLOR_FormatL8, - OMX_COLOR_FormatL16, - OMX_COLOR_FormatL24, - OMX_COLOR_FormatL32, - OMX_COLOR_FormatYUV420PackedSemiPlanar, - OMX_COLOR_FormatYUV422PackedSemiPlanar, - OMX_COLOR_Format18BitBGR666, - OMX_COLOR_Format24BitARGB6666, - OMX_COLOR_Format24BitABGR6666, - OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - /** - -/** @defgroup imaging OpenMAX IL Imaging Domain - * @ingroup iv - * Structures for OpenMAX IL Imaging domain - * @{ - */ - -/** - * Enumeration used to define the possible image compression coding. - */ -typedef enum OMX_IMAGE_CODINGTYPE { - OMX_IMAGE_CodingUnused, /**< Value when format is N/A */ - OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */ - OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */ - OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */ - OMX_IMAGE_CodingEXIF, /**< EXIF image format */ - OMX_IMAGE_CodingTIFF, /**< TIFF image format */ - OMX_IMAGE_CodingGIF, /**< Graphics image format */ - OMX_IMAGE_CodingPNG, /**< PNG image format */ - OMX_IMAGE_CodingLZW, /**< LZW image format */ - OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */ - OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_CodingMax = 0x7FFFFFFF -} OMX_IMAGE_CODINGTYPE; - - -/** - * Data structure used to define an image path. The number of image paths - * for input and output will vary by type of the image component. - * - * Input (aka Source) : Zero Inputs, one Output, - * Splitter : One Input, 2 or more Outputs, - * Processing Element : One Input, one output, - * Mixer : 2 or more inputs, one output, - * Output (aka Sink) : One Input, zero outputs. - * - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output - * image path. If additional vendor specific data is required, it should - * be transmitted to the component using the CustomCommand function. - * Compliant components will prepopulate this structure with optimal - * values during the OMX_GetParameter() command. - * - * STRUCT MEMBERS: - * cMIMEType : MIME type of data for the port - * pNativeRender : Platform specific reference for a display if a - * sync, otherwise this field is 0 - * nFrameWidth : Width of frame to be used on port if - * uncompressed format is used. Use 0 for - * unknown, don't care or variable - * nFrameHeight : Height of frame to be used on port if - * uncompressed format is used. Use 0 for - * unknown, don't care or variable - * nStride : Number of bytes per span of an image (i.e. - * indicates the number of bytes to get from - * span N to span N+1, where negative stride - * indicates the image is bottom up - * nSliceHeight : Height used when encoding in slices - * bFlagErrorConcealment : Turns on error concealment if it is supported by - * the OMX component - * eCompressionFormat : Compression format used in this instance of - * the component. When OMX_IMAGE_CodingUnused is - * specified, eColorFormat is valid - * eColorFormat : Decompressed format used by this component - * pNativeWindow : Platform specific reference for a window object if a - * display sink , otherwise this field is 0x0. - */ -typedef struct OMX_IMAGE_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; - OMX_NATIVE_DEVICETYPE pNativeRender; - OMX_U32 nFrameWidth; - OMX_U32 nFrameHeight; - OMX_S32 nStride; - OMX_U32 nSliceHeight; - OMX_BOOL bFlagErrorConcealment; - OMX_IMAGE_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_NATIVE_WINDOWTYPE pNativeWindow; -} OMX_IMAGE_PORTDEFINITIONTYPE; - - -/** - * Port format parameter. This structure is used to enumerate the various - * data input/output format supported by the port. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Indicates which port to set - * nIndex : Indicates the enumeration index for the format from - * 0x0 to N-1 - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_IMAGE_CodingUnused is specified, - * eColorFormat is valid - * eColorFormat : Decompressed format used by this component - */ -typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_IMAGE_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; -} OMX_IMAGE_PARAM_PORTFORMATTYPE; - - -/** - * Flash control type - * - * ENUMS - * Torch : Flash forced constantly on - */ -typedef enum OMX_IMAGE_FLASHCONTROLTYPE { - OMX_IMAGE_FlashControlOn = 0, - OMX_IMAGE_FlashControlOff, - OMX_IMAGE_FlashControlAuto, - OMX_IMAGE_FlashControlRedEyeReduction, - OMX_IMAGE_FlashControlFillin, - OMX_IMAGE_FlashControlTorch, - OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_FlashControlMax = 0x7FFFFFFF -} OMX_IMAGE_FLASHCONTROLTYPE; - - -/** - * Flash control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFlashControl : Flash control type - */ -typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_FLASHCONTROLTYPE eFlashControl; -} OMX_IMAGE_PARAM_FLASHCONTROLTYPE; - - -/** - * Focus control type - */ -typedef enum OMX_IMAGE_FOCUSCONTROLTYPE { - OMX_IMAGE_FocusControlOn = 0, - OMX_IMAGE_FocusControlOff, - OMX_IMAGE_FocusControlAuto, - OMX_IMAGE_FocusControlAutoLock, - OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_FocusControlMax = 0x7FFFFFFF -} OMX_IMAGE_FOCUSCONTROLTYPE; - - -/** - * Focus control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFocusControl : Focus control - * nFocusSteps : Focus can take on values from 0 mm to infinity. - * Interest is only in number of steps over this range. - * nFocusStepIndex : Current focus step index - */ -typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl; - OMX_U32 nFocusSteps; - OMX_U32 nFocusStepIndex; -} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE; - - -/** - * Q Factor for JPEG compression, which controls the tradeoff between image - * quality and size. Q Factor provides a more simple means of controlling - * JPEG compression quality, without directly programming Quantization - * tables for chroma and luma - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1 - * produces the smallest, worst quality images, and a factor - * of 100 produces the largest, best quality images. A - * typical default is 75 for small good quality images - */ -typedef struct OMX_IMAGE_PARAM_QFACTORTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQFactor; -} OMX_IMAGE_PARAM_QFACTORTYPE; - -/** - * Quantization table type - */ - -typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE { - OMX_IMAGE_QuantizationTableLuma = 0, - OMX_IMAGE_QuantizationTableChroma, - OMX_IMAGE_QuantizationTableChromaCb, - OMX_IMAGE_QuantizationTableChromaCr, - OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF -} OMX_IMAGE_QUANTIZATIONTABLETYPE; - -/** - * JPEG quantization tables are used to determine DCT compression for - * YUV data, as an alternative to specifying Q factor, providing exact - * control of compression - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eQuantizationTable : Quantization table type - * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored - * in increasing columns then by rows of data (i.e. - * row 1, ... row 8). Quantization values are in - * the range 0-255 and stored in linear order - * (i.e. the component will zig-zag the - * quantization table data if required internally) - */ -typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable; - OMX_U8 nQuantizationMatrix[64]; -} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE; - - -/** - * Huffman table type, the same Huffman table is applied for chroma and - * luma component - */ -typedef enum OMX_IMAGE_HUFFMANTABLETYPE { - OMX_IMAGE_HuffmanTableAC = 0, - OMX_IMAGE_HuffmanTableDC, - OMX_IMAGE_HuffmanTableACLuma, - OMX_IMAGE_HuffmanTableACChroma, - OMX_IMAGE_HuffmanTableDCLuma, - OMX_IMAGE_HuffmanTableDCChroma, - OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF -} OMX_IMAGE_HUFFMANTABLETYPE; - -/** - * JPEG Huffman table - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eHuffmanTable : Huffman table type - * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each - * possible length - * nHuffmanTable[256] : 0-255, the size used for AC and DC - * HuffmanTable are 16 and 162 - */ -typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable; - OMX_U8 nNumberOfHuffmanCodeOfLength[16]; - OMX_U8 nHuffmanTable[256]; -}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE; - -/** @} */ -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Index.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Index.h deleted file mode 100644 index a1f17487d..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Index.h +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** @file OMX_Index.h - OpenMax IL version 1.1.2 - * The OMX_Index header file contains the definitions for both applications - * and components . - */ - - -#ifndef OMX_Index_h -#define OMX_Index_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ -#include - - -/** The OMX_INDEXTYPE enumeration is used to select a structure when either - * getting or setting parameters and/or configuration data. Each entry in - * this enumeration maps to an OMX specified structure. When the - * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods - * are used, the second parameter will always be an entry from this enumeration - * and the third entry will be the structure shown in the comments for the entry. - * For example, if the application is initializing a cropping function, the - * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter - * and would send a pointer to an initialized OMX_RECTTYPE structure as the - * third parameter. - * - * The enumeration entries named with the OMX_Config prefix are sent using - * the OMX_SetConfig command and the enumeration entries named with the - * OMX_PARAM_ prefix are sent using the OMX_SetParameter command. - */ -typedef enum OMX_INDEXTYPE { - - OMX_IndexComponentStartUnused = 0x01000000, - OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ - OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */ - OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */ - OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */ - OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */ - OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */ - OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */ - OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */ - OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */ - OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */ - OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */ - OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */ - OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */ - OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */ - OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */ - OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ - OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ - OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ - OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */ - - OMX_IndexPortStartUnused = 0x02000000, - OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */ - OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */ - OMX_IndexReservedStartUnused = 0x03000000, - - /* Audio parameters and configurations */ - OMX_IndexAudioStartUnused = 0x04000000, - OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */ - OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */ - OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */ - OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */ - OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */ - OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */ - OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */ - OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */ - OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */ - OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */ - OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */ - OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */ - OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */ - OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */ - OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */ - OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */ - OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */ - OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */ - OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */ - OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */ - OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */ - OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */ - OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */ - OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */ - OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */ - OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */ - OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */ - - OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */ - OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */ - OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */ - OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */ - OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */ - OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */ - OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */ - OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */ - OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */ - OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */ - OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */ - OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */ - OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */ - OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */ - OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */ - OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */ - OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */ - OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */ - OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */ - OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */ - - /* Image specific parameters and configurations */ - OMX_IndexImageStartUnused = 0x05000000, - OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */ - OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ - OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */ - OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */ - OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */ - OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */ - OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ - - /* Video specific parameters and configurations */ - OMX_IndexVideoStartUnused = 0x06000000, - OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */ - OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */ - OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */ - OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */ - OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */ - OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */ - OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */ - OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */ - OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */ - OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */ - OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */ - OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */ - OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */ - OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */ - OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ - OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ - OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */ - OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */ - OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */ - OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ - OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ - OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */ - OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ - OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */ - OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */ - OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */ - OMX_IndexConfigCommonDeinterlace, /**< reference: OMX_VIDEO_CONFIG_DEINTERLACE */ - - /* Image & Video common Configurations */ - OMX_IndexCommonStartUnused = 0x07000000, - OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ - OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */ - OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */ - OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */ - OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ - OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */ - OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */ - OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */ - OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */ - OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */ - OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */ - OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */ - OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */ - OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ - OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/ - OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */ - OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */ - OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */ - OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */ - OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */ - OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */ - OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */ - OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */ - OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */ - OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */ - OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */ - OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */ - OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */ - OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */ - OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */ - OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */ - - /* Reserved Configuration range */ - OMX_IndexOtherStartUnused = 0x08000000, - OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */ - OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */ - OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */ - - - /* Reserved Time range */ - OMX_IndexTimeStartUnused = 0x09000000, - OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */ - OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */ - OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */ - OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ - OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ - OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ - OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ - OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */ - OMX_IndexConfigTimeClientStartTime, /** - - -/** Khronos standard extension indices. - -This enum lists the current Khronos extension indices to OpenMAX IL. -*/ -typedef enum OMX_INDEXEXTTYPE { - - /* Component parameters and configurations */ - OMX_IndexExtComponentStartUnused = OMX_IndexKhronosExtensions + 0x00100000, - OMX_IndexConfigCallbackRequest, /**< reference: OMX_CONFIG_CALLBACKREQUESTTYPE */ - OMX_IndexConfigCommitMode, /**< reference: OMX_CONFIG_COMMITMODETYPE */ - OMX_IndexConfigCommit, /**< reference: OMX_CONFIG_COMMITTYPE */ - - /* Port parameters and configurations */ - OMX_IndexExtPortStartUnused = OMX_IndexKhronosExtensions + 0x00200000, - - /* Audio parameters and configurations */ - OMX_IndexExtAudioStartUnused = OMX_IndexKhronosExtensions + 0x00400000, - - /* Image parameters and configurations */ - OMX_IndexExtImageStartUnused = OMX_IndexKhronosExtensions + 0x00500000, - - /* Video parameters and configurations */ - OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000, - OMX_IndexParamNalStreamFormatSupported, /**< reference: OMX_NALSTREAMFORMATTYPE */ - OMX_IndexParamNalStreamFormat, /**< reference: OMX_NALSTREAMFORMATTYPE */ - OMX_IndexParamNalStreamFormatSelect, /**< reference: OMX_NALSTREAMFORMATTYPE */ - OMX_IndexParamVideoVp8, /**< reference: OMX_VIDEO_PARAM_VP8TYPE */ - OMX_IndexConfigVideoVp8ReferenceFrame, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMETYPE */ - OMX_IndexConfigVideoVp8ReferenceFrameType, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE */ - OMX_IndexParamVideoReserved, /**< Reserved for future index */ - OMX_IndexParamVideoHevc, /**< reference: OMX_VIDEO_PARAM_HEVCTYPE */ - - /* Image & Video common configurations */ - OMX_IndexExtCommonStartUnused = OMX_IndexKhronosExtensions + 0x00700000, - - /* Other configurations */ - OMX_IndexExtOtherStartUnused = OMX_IndexKhronosExtensions + 0x00800000, - OMX_IndexConfigAutoFramerateConversion, /**< reference: OMX_CONFIG_BOOLEANTYPE */ - OMX_IndexConfigPriority, /**< reference: OMX_PARAM_U32TYPE */ - OMX_IndexConfigOperatingRate, /**< reference: OMX_PARAM_U32TYPE in Q16 format for video and in Hz for audio */ - - /* Time configurations */ - OMX_IndexExtTimeStartUnused = OMX_IndexKhronosExtensions + 0x00900000, - - OMX_IndexExtMax = 0x7FFFFFFF -} OMX_INDEXEXTTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* OMX_IndexExt_h */ -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Other.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Other.h deleted file mode 100644 index caf7f3844..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Other.h +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** @file OMX_Other.h - OpenMax IL version 1.1.2 - * The structures needed by Other components to exchange - * parameters and configuration data with the components. - */ - -#ifndef OMX_Other_h -#define OMX_Other_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - - -/** - * Enumeration of possible data types which match to multiple domains or no - * domain at all. For types which are vendor specific, a value above - * OMX_OTHER_VENDORTSTART should be used. - */ -typedef enum OMX_OTHER_FORMATTYPE { - OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time, - time deltas, etc */ - OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power - management, setting clocks? */ - OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames - dropped, etc */ - OMX_OTHER_FormatBinary, /**< Arbitrary binary data */ - OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific - formats */ - - OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_OTHER_FormatMax = 0x7FFFFFFF -} OMX_OTHER_FORMATTYPE; - -/** - * Enumeration of seek modes. - */ -typedef enum OMX_TIME_SEEKMODETYPE { - OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation - * of the requested seek position over - * the actual seek position if it - * results in a faster seek. */ - OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek - * position over an approximation - * of the requested seek position even - * if it results in a slower seek. */ - OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_SeekModeMax = 0x7FFFFFFF -} OMX_TIME_SEEKMODETYPE; - -/* Structure representing the seekmode of the component */ -typedef struct OMX_TIME_CONFIG_SEEKMODETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */ -} OMX_TIME_CONFIG_SEEKMODETYPE; - -/** Structure representing a time stamp used with the following configs - * on the Clock Component (CC): - * - * OMX_IndexConfigTimeCurrentWallTime: query of the CC’s current wall - * time - * OMX_IndexConfigTimeCurrentMediaTime: query of the CC’s current media - * time - * OMX_IndexConfigTimeCurrentAudioReference and - * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference - * clock sending SC its reference time - * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends - * this structure to the Clock Component via a SetConfig on its - * client port when it receives a buffer with - * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp - * specified by that buffer for nStartTimestamp. - * - * It’s also used with the following config on components in general: - * - * OMX_IndexConfigTimePosition: IL client querying component position - * (GetConfig) or commanding a component to seek to the given location - * (SetConfig) - */ -typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version - * information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_TICKS nTimestamp; /**< timestamp .*/ -} OMX_TIME_CONFIG_TIMESTAMPTYPE; - -/** Enumeration of possible reference clocks to the media time. */ -typedef enum OMX_TIME_UPDATETYPE { - OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */ - OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */ - OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */ - OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_UpdateMax = 0x7FFFFFFF -} OMX_TIME_UPDATETYPE; - -/** Enumeration of possible reference clocks to the media time. */ -typedef enum OMX_TIME_REFCLOCKTYPE { - OMX_TIME_RefClockNone, /**< Use no references. */ - OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */ - OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */ - OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_RefClockMax = 0x7FFFFFFF -} OMX_TIME_REFCLOCKTYPE; - -/** Enumeration of clock states. */ -typedef enum OMX_TIME_CLOCKSTATE { - OMX_TIME_ClockStateRunning, /**< Clock running. */ - OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the - * prescribed clients emit their - * start time. */ - OMX_TIME_ClockStateStopped, /**< Clock stopped. */ - OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_ClockStateMax = 0x7FFFFFFF -} OMX_TIME_CLOCKSTATE; - -/** Structure representing a media time request to the clock component. - * - * A client component sends this structure to the Clock Component via a SetConfig - * on its client port to specify a media timestamp the Clock Component - * should emit. The Clock Component should fulfill the request by sending a - * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested - * timestamp. - * - * The client may require a media time request be fulfilled slightly - * earlier than the media time specified. In this case the client specifies - * an offset which is equal to the difference between wall time corresponding - * to the requested media time and the wall time when it will be - * fulfilled. - * - * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to - * time events according to timestamps. If a client must perform an operation O at - * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a - * media time request at T (perhaps specifying an offset to ensure the request fulfillment - * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE - * structure back to the client component, the client may perform operation O (perhaps having - * to wait a slight amount more time itself as specified by the return values). - */ - -typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time - * from others (e.g. the number of the frame to deliver). - * Duplicated in the media time structure that fulfills - * this request. A value of zero is reserved for time scale - * updates. */ - OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/ - OMX_TICKS nOffset; /**< Amount of wall clock time by which this - * request should be fulfilled early */ -} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE; - -/**< Structure sent from the clock component client either when fulfilling - * a media time request or when the time scale has changed. - * - * In the former case the Clock Component fills this structure and times its emission - * to a client component (via the client port) according to the corresponding media - * time request sent by the client. The Clock Component should time the emission to occur - * when the requested timestamp matches the Clock Component's media time but also the - * prescribed offset early. - * - * Upon scale changes the clock component clears the nClientPrivate data, sends the current - * media time and sets the nScale to the new scale via the client port. It emits a - * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to - * alter processing to accomodate scaling. For instance a video component might skip inter-frames - * in the case of extreme fastforward. Likewise an audio component might add or remove samples - * from an audio frame to scale audio data. - * - * It is expected that some clock components may not be able to fulfill requests - * at exactly the prescribed time. This is acceptable so long as the request is - * fulfilled at least as early as described and not later. This structure provides - * fields the client may use to wait for the remaining time. - * - * The client may use either the nOffset or nWallTimeAtMedia fields to determine the - * wall time until the nMediaTimestamp actually occurs. In the latter case the - * client can get a more accurate value for offset by getting the current wall - * from the cloc component and subtracting it from nWallTimeAtMedia. - */ - -typedef struct OMX_TIME_MEDIATIMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time - * from others. Copied from the media time request. - * A value of zero is reserved for time scale updates. */ - OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */ - OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was - * requested then this is the current media time. */ - OMX_TICKS nOffset; /**< Amount of wall clock time by which this - * request was actually fulfilled early */ - - OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp. - * A client may compare this value to current - * media time obtained from the Clock Component to determine - * the wall time until the media timestamp is really - * current. */ - OMX_S32 xScale; /**< Current media time scale in Q16 format. */ - OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/ - /**< State of the media time. */ -} OMX_TIME_MEDIATIMETYPE; - -/** Structure representing the current media time scale factor. Applicable only to clock - * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via - * the clock component client ports. Upon recieving this config the clock component changes - * the rate by which the media time increases or decreases effectively implementing trick modes. - */ -typedef struct OMX_TIME_CONFIG_SCALETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_S32 xScale; /**< This is a value in Q16 format which is used for - * scaling the media time */ -} OMX_TIME_CONFIG_SCALETYPE; - -/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE’s nWaitMask field */ -#define OMX_CLOCKPORT0 0x00000001 -#define OMX_CLOCKPORT1 0x00000002 -#define OMX_CLOCKPORT2 0x00000004 -#define OMX_CLOCKPORT3 0x00000008 -#define OMX_CLOCKPORT4 0x00000010 -#define OMX_CLOCKPORT5 0x00000020 -#define OMX_CLOCKPORT6 0x00000040 -#define OMX_CLOCKPORT7 0x00000080 - -/** Structure representing the current mode of the media clock. - * IL Client uses this config to change or query the mode of the - * media clock of the clock component. Applicable only to clock - * component. - * - * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time - * starts immediately at the prescribed start time. If - * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores - * the given nStartTime and waits for all clients specified in the - * nWaitMask to send starttimes (via - * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts - * the media clock using the earliest start time supplied. */ -typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version - * information */ - OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */ - OMX_TICKS nStartTime; /**< Start time of the media time. */ - OMX_TICKS nOffset; /**< Time to offset the media time by - * (e.g. preroll). Media time will be - * reported to be nOffset ticks earlier. - */ - OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */ -} OMX_TIME_CONFIG_CLOCKSTATETYPE; - -/** Structure representing the reference clock currently being used to - * compute media time. IL client uses this config to change or query the - * clock component's active reference clock */ -typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */ -} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE; - -/** Descriptor for setting specifics of power type. - * Note: this structure is listed for backwards compatibility. */ -typedef struct OMX_OTHER_CONFIG_POWERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_BOOL bEnablePM; /**< Flag to enable Power Management */ -} OMX_OTHER_CONFIG_POWERTYPE; - - -/** Descriptor for setting specifics of stats type. - * Note: this structure is listed for backwards compatibility. */ -typedef struct OMX_OTHER_CONFIG_STATSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - /* what goes here */ -} OMX_OTHER_CONFIG_STATSTYPE; - - -/** - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output other - * path. - */ -typedef struct OMX_OTHER_PORTDEFINITIONTYPE { - OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ -} OMX_OTHER_PORTDEFINITIONTYPE; - -/** Port format parameter. This structure is used to enumerate - * the various data input/output format supported by the port. - */ -typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Indicates which port to set */ - OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ - OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ -} OMX_OTHER_PARAM_PORTFORMATTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_QCOMExtns.h b/starpilot/ui/screenrecorder/openmax/include/OMX_QCOMExtns.h deleted file mode 100644 index 20917932b..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_QCOMExtns.h +++ /dev/null @@ -1,1888 +0,0 @@ -/*-------------------------------------------------------------------------- -Copyright (c) 2009-2015, The Linux Foundation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of The Linux Foundation nor - the names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------*/ -#ifndef __OMX_QCOM_EXTENSIONS_H__ -#define __OMX_QCOM_EXTENSIONS_H__ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/*============================================================================ -*//** @file OMX_QCOMExtns.h - This header contains constants and type definitions that specify the - extensions added to the OpenMAX Vendor specific APIs. - -*//*========================================================================*/ - - -/////////////////////////////////////////////////////////////////////////////// -// Include Files -/////////////////////////////////////////////////////////////////////////////// -#include "OMX_Core.h" -#include "OMX_Video.h" - -#define OMX_VIDEO_MAX_HP_LAYERS 6 -/** - * This extension is used to register mapping of a virtual - * address to a physical address. This extension is a parameter - * which can be set using the OMX_SetParameter macro. The data - * pointer corresponding to this extension is - * OMX_QCOM_MemMapEntry. This parameter is a 'write only' - * parameter (Current value cannot be queried using - * OMX_GetParameter macro). - */ -#define OMX_QCOM_EXTN_REGISTER_MMAP "OMX.QCOM.index.param.register_mmap" - -/** - * This structure describes the data pointer corresponding to - * the OMX_QCOM_MMAP_REGISTER_EXTN extension. This parameter - * must be set only 'after' populating a port with a buffer - * using OMX_UseBuffer, wherein the data pointer of the buffer - * corresponds to the virtual address as specified in this - * structure. - */ -struct OMX_QCOM_PARAM_MEMMAPENTRYTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port number the structure applies to */ - - /** - * The virtual address of memory block - */ - OMX_U64 nVirtualAddress; - - /** - * The physical address corresponding to the virtual address. The physical - * address is contiguous for the entire valid range of the virtual - * address. - */ - OMX_U64 nPhysicalAddress; -}; - -#define QOMX_VIDEO_IntraRefreshRandom (OMX_VIDEO_IntraRefreshVendorStartUnused + 0) - -/* This error event is used for H.264 long-term reference (LTR) encoding. - * When IL client specifies an LTR frame with its identifier via - * OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE to the encoder, if the specified - * LTR frame can not be located by the encoder in its LTR list, the encoder - * issues this error event to IL client to notify the failure of LTRUse config. - */ -#define QOMX_ErrorLTRUseFailed (OMX_ErrorVendorStartUnused + 1) - -#define QOMX_VIDEO_BUFFERFLAG_BFRAME 0x00100000 - -#define QOMX_VIDEO_BUFFERFLAG_EOSEQ 0x00200000 - -#define QOMX_VIDEO_BUFFERFLAG_MBAFF 0x00400000 - -#define QOMX_VIDEO_BUFFERFLAG_CANCEL 0x00800000 - -#define OMX_QCOM_PORTDEFN_EXTN "OMX.QCOM.index.param.portdefn" -/* Allowed APIs on the above Index: OMX_GetParameter() and OMX_SetParameter() */ - -typedef enum OMX_QCOMMemoryRegion -{ - OMX_QCOM_MemRegionInvalid, - OMX_QCOM_MemRegionEBI1, - OMX_QCOM_MemRegionSMI, - OMX_QCOM_MemRegionMax = 0X7FFFFFFF -} OMX_QCOMMemoryRegion; - -typedef enum OMX_QCOMCacheAttr -{ - OMX_QCOM_CacheAttrNone, - OMX_QCOM_CacheAttrWriteBack, - OMX_QCOM_CacheAttrWriteThrough, - OMX_QCOM_CacheAttrMAX = 0X7FFFFFFF -} OMX_QCOMCacheAttr; - -typedef struct OMX_QCOMRectangle -{ - OMX_S32 x; - OMX_S32 y; - OMX_S32 dx; - OMX_S32 dy; -} OMX_QCOMRectangle; - -/** OMX_QCOMFramePackingFormat - * Input or output buffer format - */ -typedef enum OMX_QCOMFramePackingFormat -{ - /* 0 - unspecified - */ - OMX_QCOM_FramePacking_Unspecified, - - /* 1 - Partial frames may be present OMX IL 1.1.1 Figure 2-10: - * Case 1??Each Buffer Filled In Whole or In Part - */ - OMX_QCOM_FramePacking_Arbitrary, - - /* 2 - Multiple complete frames per buffer (integer number) - * OMX IL 1.1.1 Figure 2-11: Case 2—Each Buffer Filled with - * Only Complete Frames of Data - */ - OMX_QCOM_FramePacking_CompleteFrames, - - /* 3 - Only one complete frame per buffer, no partial frame - * OMX IL 1.1.1 Figure 2-12: Case 3—Each Buffer Filled with - * Only One Frame of Compressed Data. Usually at least one - * complete unit of data will be delivered in a buffer for - * uncompressed data formats. - */ - OMX_QCOM_FramePacking_OnlyOneCompleteFrame, - - /* 4 - Only one complete subframe per buffer, no partial subframe - * Example: In H264, one complete NAL per buffer, where one frame - * can contatin multiple NAL - */ - OMX_QCOM_FramePacking_OnlyOneCompleteSubFrame, - - OMX_QCOM_FramePacking_MAX = 0X7FFFFFFF -} OMX_QCOMFramePackingFormat; - -typedef struct OMX_QCOM_PARAM_PORTDEFINITIONTYPE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - - /** Platform specific memory region EBI1, SMI, etc.,*/ - OMX_QCOMMemoryRegion nMemRegion; - - OMX_QCOMCacheAttr nCacheAttr; /** Cache attributes */ - - /** Input or output buffer format */ - OMX_U32 nFramePackingFormat; - -} OMX_QCOM_PARAM_PORTDEFINITIONTYPE; - -typedef struct OMX_QCOM_VIDEO_PARAM_QPRANGETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 minQP; - OMX_U32 maxQP; -} OMX_QCOM_VIDEO_PARAM_QPRANGETYPE; - -#define OMX_QCOM_PLATFORMPVT_EXTN "OMX.QCOM.index.param.platformprivate" -/** Allowed APIs on the above Index: OMX_SetParameter() */ - -typedef enum OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE -{ - /** Enum for PMEM information */ - OMX_QCOM_PLATFORM_PRIVATE_PMEM = 0x1 -} OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE; - -/** IL client will set the following structure. A failure - * code will be returned if component does not support the - * value provided for 'type'. - */ -struct OMX_QCOM_PLATFORMPRIVATE_EXTN -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX spec version information */ - OMX_U32 nPortIndex; /** Port number on which usebuffer extn is applied */ - - /** Type of extensions should match an entry from - OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE - */ - OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type; -}; - -typedef struct OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO -{ - /** pmem file descriptor */ - unsigned long pmem_fd; - /** Offset from pmem device base address */ - OMX_U32 offset; - OMX_U32 size; - OMX_U32 mapped_size; - OMX_PTR buffer; -}OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO; - -typedef struct OMX_QCOM_PLATFORM_PRIVATE_ENTRY -{ - /** Entry type */ - OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type; - - /** Pointer to platform specific entry */ - OMX_PTR entry; -}OMX_QCOM_PLATFORM_PRIVATE_ENTRY; - -typedef struct OMX_QCOM_PLATFORM_PRIVATE_LIST -{ - /** Number of entries */ - OMX_U32 nEntries; - - /** Pointer to array of platform specific entries * - * Contiguous block of OMX_QCOM_PLATFORM_PRIVATE_ENTRY element - */ - OMX_QCOM_PLATFORM_PRIVATE_ENTRY* entryList; -}OMX_QCOM_PLATFORM_PRIVATE_LIST; - -#define OMX_QCOM_FRAME_PACKING_FORMAT "OMX.QCOM.index.param.framepackfmt" -/* Allowed API call: OMX_GetParameter() */ -/* IL client can use this index to rerieve the list of frame formats * - * supported by the component */ - -typedef struct OMX_QCOM_FRAME_PACKINGFORMAT_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_QCOMFramePackingFormat eframePackingFormat; -} OMX_QCOM_FRAME_PACKINGFORMAT_TYPE; - - -/** - * Following is the enum for color formats supported on Qualcomm - * MSMs YVU420SemiPlanar color format is not defined in OpenMAX - * 1.1.1 and prior versions of OpenMAX specification. - */ - -enum OMX_QCOM_COLOR_FORMATTYPE -{ - -/** YVU420SemiPlanar: YVU planar format, organized with a first - * plane containing Y pixels, and a second plane containing - * interleaved V and U pixels. V and U pixels are sub-sampled - * by a factor of two both horizontally and vertically. - */ - QOMX_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, - QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka, - QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka, - QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka, - QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m, - QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mMultiView, - QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mCompressed, - QOMX_COLOR_Format32bitRGBA8888, - QOMX_COLOR_Format32bitRGBA8888Compressed, - QOMX_COLOR_FormatAndroidOpaque = (OMX_COLOR_FORMATTYPE) OMX_COLOR_FormatVendorStartUnused + 0x789, -}; - -enum OMX_QCOM_VIDEO_CODINGTYPE -{ -/** Codecs support by qualcomm which are not listed in OMX 1.1.x - * spec - * */ - OMX_QCOM_VIDEO_CodingVC1 = 0x7FA30C00 , - OMX_QCOM_VIDEO_CodingWMV9 = 0x7FA30C01, - QOMX_VIDEO_CodingDivx = 0x7FA30C02, /**< Value when coding is Divx */ - QOMX_VIDEO_CodingSpark = 0x7FA30C03, /**< Value when coding is Sorenson Spark */ - QOMX_VIDEO_CodingVp = 0x7FA30C04, - QOMX_VIDEO_CodingVp8 = OMX_VIDEO_CodingVP8, /**< keeping old enum for backwards compatibility*/ - QOMX_VIDEO_CodingHevc = OMX_VIDEO_CodingHEVC, /**< keeping old enum for backwards compatibility*/ - QOMX_VIDEO_CodingMVC = 0x7FA30C07, - QOMX_VIDEO_CodingVp9 = OMX_VIDEO_CodingVP9, /**< keeping old enum for backwards compatibility*/ -}; - -enum OMX_QCOM_EXTN_INDEXTYPE -{ - /** Qcom proprietary extension index list */ - - /* "OMX.QCOM.index.param.register_mmap" */ - OMX_QcomIndexRegmmap = 0x7F000000, - - /* "OMX.QCOM.index.param.platformprivate" */ - OMX_QcomIndexPlatformPvt = 0x7F000001, - - /* "OMX.QCOM.index.param.portdefn" */ - OMX_QcomIndexPortDefn = 0x7F000002, - - /* "OMX.QCOM.index.param.framepackingformat" */ - OMX_QcomIndexPortFramePackFmt = 0x7F000003, - - /*"OMX.QCOM.index.param.Interlaced */ - OMX_QcomIndexParamInterlaced = 0x7F000004, - - /*"OMX.QCOM.index.config.interlaceformat */ - OMX_QcomIndexConfigInterlaced = 0x7F000005, - - /*"OMX.QCOM.index.param.syntaxhdr" */ - QOMX_IndexParamVideoSyntaxHdr = 0x7F000006, - - /*"OMX.QCOM.index.config.intraperiod" */ - QOMX_IndexConfigVideoIntraperiod = 0x7F000007, - - /*"OMX.QCOM.index.config.randomIntrarefresh" */ - QOMX_IndexConfigVideoIntraRefresh = 0x7F000008, - - /*"OMX.QCOM.index.config.video.TemporalSpatialTradeOff" */ - QOMX_IndexConfigVideoTemporalSpatialTradeOff = 0x7F000009, - - /*"OMX.QCOM.index.param.video.EncoderMode" */ - QOMX_IndexParamVideoEncoderMode = 0x7F00000A, - - /*"OMX.QCOM.index.param.Divxtype */ - OMX_QcomIndexParamVideoDivx = 0x7F00000B, - - /*"OMX.QCOM.index.param.Sparktype */ - OMX_QcomIndexParamVideoSpark = 0x7F00000C, - - /*"OMX.QCOM.index.param.Vptype */ - OMX_QcomIndexParamVideoVp = 0x7F00000D, - - OMX_QcomIndexQueryNumberOfVideoDecInstance = 0x7F00000E, - - OMX_QcomIndexParamVideoSyncFrameDecodingMode = 0x7F00000F, - - OMX_QcomIndexParamVideoDecoderPictureOrder = 0x7F000010, - - /* "OMX.QCOM.index.config.video.FramePackingInfo" */ - OMX_QcomIndexConfigVideoFramePackingArrangement = 0x7F000011, - - OMX_QcomIndexParamConcealMBMapExtraData = 0x7F000012, - - OMX_QcomIndexParamFrameInfoExtraData = 0x7F000013, - - OMX_QcomIndexParamInterlaceExtraData = 0x7F000014, - - OMX_QcomIndexParamH264TimeInfo = 0x7F000015, - - OMX_QcomIndexParamIndexExtraDataType = 0x7F000016, - - OMX_GoogleAndroidIndexEnableAndroidNativeBuffers = 0x7F000017, - - OMX_GoogleAndroidIndexUseAndroidNativeBuffer = 0x7F000018, - - OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage = 0x7F000019, - - /*"OMX.QCOM.index.config.video.QPRange" */ - OMX_QcomIndexConfigVideoQPRange = 0x7F00001A, - - /*"OMX.QCOM.index.param.EnableTimeStampReoder"*/ - OMX_QcomIndexParamEnableTimeStampReorder = 0x7F00001B, - - /*"OMX.google.android.index.storeMetaDataInBuffers"*/ - OMX_QcomIndexParamVideoMetaBufferMode = 0x7F00001C, - - /*"OMX.google.android.index.useAndroidNativeBuffer2"*/ - OMX_GoogleAndroidIndexUseAndroidNativeBuffer2 = 0x7F00001D, - - /*"OMX.QCOM.index.param.VideoMaxAllowedBitrateCheck"*/ - OMX_QcomIndexParamVideoMaxAllowedBitrateCheck = 0x7F00001E, - - OMX_QcomIndexEnableSliceDeliveryMode = 0x7F00001F, - - /* "OMX.QCOM.index.param.video.ExtnUserExtraData" */ - OMX_QcomIndexEnableExtnUserData = 0x7F000020, - - /*"OMX.QCOM.index.param.video.EnableSmoothStreaming"*/ - OMX_QcomIndexParamEnableSmoothStreaming = 0x7F000021, - - /*"OMX.QCOM.index.param.video.QPRange" */ - OMX_QcomIndexParamVideoQPRange = 0x7F000022, - - OMX_QcomIndexEnableH263PlusPType = 0x7F000023, - - /*"OMX.QCOM.index.param.video.LTRCountRangeSupported"*/ - QOMX_IndexParamVideoLTRCountRangeSupported = 0x7F000024, - - /*"OMX.QCOM.index.param.video.LTRMode"*/ - QOMX_IndexParamVideoLTRMode = 0x7F000025, - - /*"OMX.QCOM.index.param.video.LTRCount"*/ - QOMX_IndexParamVideoLTRCount = 0x7F000026, - - /*"OMX.QCOM.index.config.video.LTRPeriod"*/ - QOMX_IndexConfigVideoLTRPeriod = 0x7F000027, - - /*"OMX.QCOM.index.config.video.LTRUse"*/ - QOMX_IndexConfigVideoLTRUse = 0x7F000028, - - /*"OMX.QCOM.index.config.video.LTRMark"*/ - QOMX_IndexConfigVideoLTRMark = 0x7F000029, - - /* OMX.google.android.index.prependSPSPPSToIDRFrames */ - OMX_QcomIndexParamSequenceHeaderWithIDR = 0x7F00002A, - - OMX_QcomIndexParamH264AUDelimiter = 0x7F00002B, - - OMX_QcomIndexParamVideoDownScalar = 0x7F00002C, - - /* "OMX.QCOM.index.param.video.FramePackingExtradata" */ - OMX_QcomIndexParamVideoFramePackingExtradata = 0x7F00002D, - - /* "OMX.QCOM.index.config.activeregiondetection" */ - OMX_QcomIndexConfigActiveRegionDetection = 0x7F00002E, - - /* "OMX.QCOM.index.config.activeregiondetectionstatus" */ - OMX_QcomIndexConfigActiveRegionDetectionStatus = 0x7F00002F, - - /* "OMX.QCOM.index.config.scalingmode" */ - OMX_QcomIndexConfigScalingMode = 0x7F000030, - - /* "OMX.QCOM.index.config.noisereduction" */ - OMX_QcomIndexConfigNoiseReduction = 0x7F000031, - - /* "OMX.QCOM.index.config.imageenhancement" */ - OMX_QcomIndexConfigImageEnhancement = 0x7F000032, - - /* google smooth-streaming support */ - OMX_QcomIndexParamVideoAdaptivePlaybackMode = 0x7F000033, - - /* H.264 MVC codec index */ - QOMX_IndexParamVideoMvc = 0x7F000034, - - /* "OMX.QCOM.index.param.video.QPExtradata" */ - OMX_QcomIndexParamVideoQPExtraData = 0x7F000035, - - /* "OMX.QCOM.index.param.video.InputBitsInfoExtradata" */ - OMX_QcomIndexParamVideoInputBitsInfoExtraData = 0x7F000036, - - /* VP8 Hierarchical P support */ - OMX_QcomIndexHierarchicalStructure = 0x7F000037, - - OMX_QcomIndexParamPerfLevel = 0x7F000038, - - OMX_QcomIndexParamH264VUITimingInfo = 0x7F000039, - - OMX_QcomIndexParamPeakBitrate = 0x7F00003A, - - /* Enable InitialQP index */ - QOMX_IndexParamVideoInitialQp = 0x7F00003B, - - OMX_QcomIndexParamSetMVSearchrange = 0x7F00003C, - - OMX_QcomIndexConfigPerfLevel = 0x7F00003D, - - /*"OMX.QCOM.index.param.video.LTRCount"*/ - OMX_QcomIndexParamVideoLTRCount = QOMX_IndexParamVideoLTRCount, - - /*"OMX.QCOM.index.config.video.LTRUse"*/ - OMX_QcomIndexConfigVideoLTRUse = QOMX_IndexConfigVideoLTRUse, - - /*"OMX.QCOM.index.config.video.LTRMark"*/ - OMX_QcomIndexConfigVideoLTRMark = QOMX_IndexConfigVideoLTRMark, - - /*"OMX.QCOM.index.param.video.CustomBufferSize"*/ - OMX_QcomIndexParamVideoCustomBufferSize = 0x7F00003E, - - /* Max Hierarchical P layers */ - OMX_QcomIndexMaxHierarchicallayers = 0x7F000041, - - /* Set Encoder Performance Index */ - OMX_QcomIndexConfigVideoVencPerfMode = 0x7F000042, - - /* Set Hybrid Hier-p layers */ - OMX_QcomIndexParamVideoHybridHierpMode = 0x7F000043, - - OMX_QcomIndexFlexibleYUVDescription = 0x7F000044, - - /* Vpp Hqv Control Type */ - OMX_QcomIndexParamVppHqvControl = 0x7F000045, - - /* Enable VPP */ - OMX_QcomIndexParamEnableVpp = 0x7F000046, - - /* MBI statistics mode */ - OMX_QcomIndexParamMBIStatisticsMode = 0x7F000047, - - /* Set PictureTypeDecode */ - OMX_QcomIndexConfigPictureTypeDecode = 0x7F000048, - - OMX_QcomIndexConfigH264EntropyCodingCabac = 0x7F000049, - - /* "OMX.QCOM.index.param.video.InputBatch" */ - OMX_QcomIndexParamBatchSize = 0x7F00004A, - - OMX_QcomIndexConfigNumHierPLayers = 0x7F00004B, - - OMX_QcomIndexConfigRectType = 0x7F00004C, - - OMX_QcomIndexConfigBaseLayerId = 0x7F00004E, - - OMX_QcomIndexParamDriverVersion = 0x7F00004F, - - OMX_QcomIndexConfigQp = 0x7F000050, - - OMX_QcomIndexParamVencAspectRatio = 0x7F000051, - - OMX_QTIIndexParamVQZipSEIExtraData = 0x7F000052, - - /* Enable VQZIP SEI NAL type */ - OMX_QTIIndexParamVQZIPSEIType = 0x7F000053, - - OMX_QTIIndexParamPassInputBufferFd = 0x7F000054, - - /* Set Prefer-adaptive playback*/ - /* "OMX.QTI.index.param.video.PreferAdaptivePlayback" */ - OMX_QTIIndexParamVideoPreferAdaptivePlayback = 0x7F000055, - - /* Set time params */ - OMX_QTIIndexConfigSetTimeData = 0x7F000056, - /* Force Compressed format for DPB when resolution <=1080p - * and OPB is cpu_access */ - /* OMX.QTI.index.param.video.ForceCompressedForDPB */ - OMX_QTIIndexParamForceCompressedForDPB = 0x7F000057, - - /* Enable ROI info */ - OMX_QTIIndexParamVideoEnableRoiInfo = 0x7F000058, - - /* Configure ROI info */ - OMX_QTIIndexConfigVideoRoiInfo = 0x7F000059, - - /* Set Low Latency Mode */ - OMX_QTIIndexParamLowLatencyMode = 0x7F00005A, - - /* Force OPB to UnCompressed mode */ - OMX_QTIIndexParamForceUnCompressedForOPB = 0x7F00005B, - -}; - -/** -* This is custom extension to configure Low Latency Mode. -* -* STRUCT MEMBERS -* -* nSize : Size of Structure in bytes -* nVersion : OpenMAX IL specification version information -* bLowLatencyMode : Enable/Disable Low Latency mode -*/ - -typedef struct QOMX_EXTNINDEX_VIDEO_VENC_LOW_LATENCY_MODE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bLowLatencyMode; -} QOMX_EXTNINDEX_VIDEO_VENC_LOW_LATENCY_MODE; - -/** -* This is custom extension to configure Encoder Aspect Ratio. -* -* STRUCT MEMBERS -* -* nSize : Size of Structure in bytes -* nVersion : OpenMAX IL specification version information -* nSARWidth : Horizontal aspect size -* nSARHeight : Vertical aspect size -*/ - -typedef struct QOMX_EXTNINDEX_VIDEO_VENC_SAR -{ - OMX_U32 nSize; - OMX_U32 nVersion; - OMX_U32 nSARWidth; - OMX_U32 nSARHeight; -} QOMX_EXTNINDEX_VIDEO_VENC_SAR; - -/** -* This is custom extension to configure Hier-p layers. -* This mode configures Hier-p layers dynamically. -* -* STRUCT MEMBERS -* -* nSize : Size of Structure in bytes -* nVersion : OpenMAX IL specification version information -* nNumHierLayers: Set the number of Hier-p layers for the session -* - This should be less than the MAX Hier-P -* layers set for the session. -*/ - -typedef struct QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nNumHierLayers; -} QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS; - - -/** -* This is custom extension to configure Hybrid Hier-p settings. -* This mode is different from enabling Hier-p mode. This -* property enables Hier-p encoding with LTR referencing in each -* sub-GOP. -* -* STRUCT MEMBERS -* -* nSize : Size of Structure in bytes -* nVersion : OpenMAX IL specification version information -* nKeyFrameInterval : Indicates the I frame interval -* nHpLayers : Set the number of Hier-p layers for the session -* - This should be <= 6. (1 Base layer + -* 5 Enhancement layers) -* nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS] : Bitrate to -* be set for each enhancement layer -* nMinQuantizer : minimum session QP -* nMaxQuantizer : Maximun session QP -*/ - -typedef struct QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nKeyFrameInterval; - OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS]; - OMX_U32 nMinQuantizer; - OMX_U32 nMaxQuantizer; - OMX_U32 nHpLayers; -} QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE; - -/** - * Encoder Performance Mode. This structure is used to set - * performance mode or power save mode when encoding. The search - * range is modified to save power or improve quality. - * - * STRUCT MEMBERS: - * OMX_U32 nPerfMode : Performance mode: - * 1: MAX_QUALITY - * 2: POWER_SAVE - */ - -typedef struct QOMX_EXTNINDEX_VIDEO_PERFMODE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPerfMode; -} QOMX_EXTNINDEX_VIDEO_PERFMODE; - -/** - * Initial QP parameter. This structure is used to enable - * vendor specific extension to let client enable setting - * initial QP values to I P B Frames - * - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * OMX_U32 nQpI : First Iframe QP - * OMX_U32 nQpP : First Pframe QP - * OMX_U32 nQpB : First Bframe QP - * OMX_U32 bEnableInitQp : Bit field indicating which frame type(s) shall - * use the specified initial QP. - * Bit 0: Enable initial QP for I/IDR - * and use value specified in nInitQpI - * Bit 1: Enable initial QP for P - * and use value specified in nInitQpP - * Bit 2: Enable initial QP for B - * and use value specified in nInitQpB - */ - -typedef struct QOMX_EXTNINDEX_VIDEO_INITIALQP { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQpI; - OMX_U32 nQpP; - OMX_U32 nQpB; - OMX_U32 bEnableInitQp; -} QOMX_EXTNINDEX_VIDEO_INITIALQP; - -/** - * Extension index parameter. This structure is used to enable - * vendor specific extension on input/output port and - * to pass the required flags and data, if any. - * The format of flags and data being passed is known to - * the client and component apriori. - * - * STRUCT MEMBERS: - * nSize : Size of Structure plus pData size - * nVersion : OMX specification version information - * nPortIndex : Indicates which port to set - * bEnable : Extension index enable (1) or disable (0) - * nFlags : Extension index flags, if any - * nDataSize : Size of the extension index data to follow - * pData : Extension index data, if present. - */ -typedef struct QOMX_EXTNINDEX_PARAMTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; - OMX_U32 nFlags; - OMX_U32 nDataSize; - OMX_PTR pData; -} QOMX_EXTNINDEX_PARAMTYPE; - -/** - * Range index parameter. This structure is used to enable - * vendor specific extension on input/output port and - * to pass the required minimum and maximum values - * - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * nMin : Minimum value - * nMax : Maximum value - * nSteSize : Step size - */ -typedef struct QOMX_EXTNINDEX_RANGETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nMin; - OMX_S32 nMax; - OMX_S32 nStepSize; -} QOMX_EXTNINDEX_RANGETYPE; - -/** - * Specifies LTR mode types. - */ -typedef enum QOMX_VIDEO_LTRMODETYPE -{ - QOMX_VIDEO_LTRMode_Disable = 0x0, /**< LTR encoding is disabled */ - QOMX_VIDEO_LTRMode_Manual = 0x1, /**< In this mode, IL client configures - ** the encoder the LTR count and manually - ** controls the marking and use of LTR - ** frames during video encoding. - */ - QOMX_VIDEO_LTRMode_Auto = 0x2, /**< In this mode, IL client configures - ** the encoder the LTR count and LTR - ** period. The encoder marks LTR frames - ** automatically based on the LTR period - ** during video encoding. IL client controls - ** the use of LTR frames. - */ - QOMX_VIDEO_LTRMode_MAX = 0x7FFFFFFF /** Maximum LTR Mode type */ -} QOMX_VIDEO_LTRMODETYPE; - -/** - * LTR mode index parameter. This structure is used - * to enable vendor specific extension on output port - * to pass the LTR mode information. - * - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * eLTRMode : Specifies the LTR mode used in encoder - */ -typedef struct QOMX_VIDEO_PARAM_LTRMODE_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_LTRMODETYPE eLTRMode; -} QOMX_VIDEO_PARAM_LTRMODE_TYPE; - -/** - * LTR count index parameter. This structure is used - * to enable vendor specific extension on output port - * to pass the LTR count information. - * - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * nCount : Specifies the number of LTR frames stored in the - * encoder component - */ -typedef struct QOMX_VIDEO_PARAM_LTRCOUNT_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nCount; -} QOMX_VIDEO_PARAM_LTRCOUNT_TYPE; - - -/** - * This should be used with OMX_QcomIndexParamVideoLTRCount extension. - */ -typedef QOMX_VIDEO_PARAM_LTRCOUNT_TYPE OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE; - -/** - * LTR period index parameter. This structure is used - * to enable vendor specific extension on output port - * to pass the LTR period information. - * - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * nFrames : Specifies the number of frames between two consecutive - * LTR frames. - */ -typedef struct QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nFrames; -} QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE; - -/** - * Marks the next encoded frame as an LTR frame. - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * nID : Specifies the identifier of the LTR frame to be marked - * as reference frame for encoding subsequent frames. - */ -typedef struct QOMX_VIDEO_CONFIG_LTRMARK_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nID; -} QOMX_VIDEO_CONFIG_LTRMARK_TYPE; - -/** - * This should be used with OMX_QcomIndexConfigVideoLTRMark extension. - */ -typedef QOMX_VIDEO_CONFIG_LTRMARK_TYPE OMX_QCOM_VIDEO_CONFIG_LTRMARK_TYPE; - -/** - * Specifies an LTR frame to encode subsequent frames. - * STRUCT MEMBERS: - * nSize : Size of Structure in bytes - * nVersion : OpenMAX IL specification version information - * nPortIndex : Index of the port to which this structure applies - * nID : Specifies the identifier of the LTR frame to be used - as reference frame for encoding subsequent frames. - * nFrames : Specifies the number of subsequent frames to be - encoded using the LTR frame with its identifier - nID as reference frame. Short-term reference frames - will be used thereafter. The value of 0xFFFFFFFF - indicates that all subsequent frames will be - encodedusing this LTR frame as reference frame. - */ -typedef struct QOMX_VIDEO_CONFIG_LTRUSE_TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nID; - OMX_U32 nFrames; -} QOMX_VIDEO_CONFIG_LTRUSE_TYPE; - -/** - * This should be used with OMX_QcomIndexConfigVideoLTRUse extension. - */ -typedef QOMX_VIDEO_CONFIG_LTRUSE_TYPE OMX_QCOM_VIDEO_CONFIG_LTRUSE_TYPE; - -/** - * Enumeration used to define the video encoder modes - * - * ENUMS: - * EncoderModeDefault : Default video recording mode. - * All encoder settings made through - * OMX_SetParameter/OMX_SetConfig are applied. No - * parameter is overridden. - * EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging - * Service). This mode is similar to EncoderModeDefault - * except that here the Rate control mode is overridden - * internally and set as a variant of variable bitrate with - * variable frame rate. After this mode is set if the IL - * client tries to set OMX_VIDEO_CONTROLRATETYPE via - * OMX_IndexParamVideoBitrate that would be rejected. For - * this, client should set mode back to EncoderModeDefault - * first and then change OMX_VIDEO_CONTROLRATETYPE. - */ -typedef enum QOMX_VIDEO_ENCODERMODETYPE -{ - QOMX_VIDEO_EncoderModeDefault = 0x00, - QOMX_VIDEO_EncoderModeMMS = 0x01, - QOMX_VIDEO_EncoderModeMax = 0x7FFFFFFF -} QOMX_VIDEO_ENCODERMODETYPE; - -/** - * This structure is used to set the video encoder mode. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * nMode : defines the video encoder mode - */ -typedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_ENCODERMODETYPE nMode; -} QOMX_VIDEO_PARAM_ENCODERMODETYPE; - -/** - * This structure describes the parameters corresponding to the - * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried - * during the loaded state. - */ - -typedef struct QOMX_VIDEO_SYNTAXHDRTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nBytes; /** The number of bytes filled in to the buffer */ - OMX_U8 data[1]; /** Buffer to store the header information */ -} QOMX_VIDEO_SYNTAXHDRTYPE; - -/** - * This structure describes the parameters corresponding to the - * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set - * dynamically during any state except the state invalid. This is primarily - * used for setting MaxQP from the application. This is set on the out port. - */ - -typedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nTSFactor; /** Temoral spatial tradeoff factor value in 0-100 */ -} QOMX_VIDEO_TEMPORALSPATIALTYPE; - -/** - * This structure describes the parameters corresponding to the - * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set - * dynamically during any state except the state invalid. This is set on the out port. - */ - -typedef struct QOMX_VIDEO_INTRAPERIODTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nIDRPeriod; /** This specifies coding a frame as IDR after every nPFrames - of intra frames. If this parameter is set to 0, only the - first frame of the encode session is an IDR frame. This - field is ignored for non-AVC codecs and is used only for - codecs that support IDR Period */ - OMX_U32 nPFrames; /** The number of "P" frames between two "I" frames */ - OMX_U32 nBFrames; /** The number of "B" frames between two "I" frames */ -} QOMX_VIDEO_INTRAPERIODTYPE; - -/** - * This structure describes the parameters corresponding to the - * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set - * dynamically during any state except the state invalid. This is used for the buffer negotiation - * with other clients. This is set on the out port. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */ -} OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE; - -/** - * This structure describes the parameters corresponding to the - * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set - * dynamically during any state except the state invalid. This is primarily used for the dynamic/random - * intrarefresh. This is set on the out port. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nRirMBs; /** The number of MBs to be set for intrarefresh */ -} OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE; - - -/** - * This structure describes the parameters corresponding to the - * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set - * dynamically during any state except the state invalid. This is primarily - * used for the min/max QP to be set from the application. This - * is set on the out port. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nMinQP; /** The number for minimum quantization parameter */ - OMX_U32 nMaxQP; /** The number for maximum quantization parameter */ -} OMX_QCOM_VIDEO_CONFIG_QPRANGE; - -/** - * This structure describes the parameters for the - * OMX_QcomIndexParamH264AUDelimiter extension. It enables/disables - * the AU delimiters in the H264 stream, which is used by WFD. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_H264_AUD -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_BOOL bEnable; /** Enable/disable the setting */ -} OMX_QCOM_VIDEO_CONFIG_H264_AUD; - -typedef enum QOMX_VIDEO_PERF_LEVEL -{ - OMX_QCOM_PerfLevelNominal, - OMX_QCOM_PerfLevelTurbo -} QOMX_VIDEO_PERF_LEVEL; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexParamPerfLevel extension. It will set - * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. - */ -typedef struct OMX_QCOM_VIDEO_PARAM_PERF_LEVEL { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ -} OMX_QCOM_VIDEO_PARAM_PERF_LEVEL; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexConfigPerfLevel extension. It will set - * the performance mode specified as QOMX_VIDEO_PERF_LEVEL. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - QOMX_VIDEO_PERF_LEVEL ePerfLevel; /** Performance level */ -} OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL; - -typedef enum QOMX_VIDEO_PICTURE_TYPE_DECODE -{ - OMX_QCOM_PictypeDecode_IPB, - OMX_QCOM_PictypeDecode_I -} QOMX_VIDEO_PICTURE_TYPE_DECODE; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexConfigPictureTypeDecode extension. It - * will set the picture type decode specified by eDecodeType. - */ -typedef struct OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - QOMX_VIDEO_PICTURE_TYPE_DECODE eDecodeType; /** Decode type */ -} OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexParamH264VUITimingInfo extension. It - * will enable/disable the VUI timing info. - */ -typedef struct OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_BOOL bEnable; /** Enable/disable the setting */ -} OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexParamVQZIPSEIType extension. It - * will enable/disable the VQZIP SEI info. - */ -typedef struct OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_BOOL bEnable; /** Enable/disable the setting */ -} OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE; - -/** - * This structure describes the parameters corresponding - * to OMX_QcomIndexParamPeakBitrate extension. It will - * set the peak bitrate specified by nPeakBitrate. - */ -typedef struct OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_U32 nPeakBitrate; /** Peak bitrate value */ -} OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE; - -/** - * This structure describes the parameters corresponding - * to OMX_QTIIndexParamForceCompressedForDPB extension. Enabling - * this extension will force the split mode DPB(compressed)/OPB(Linear) - * for all resolutions.On some chipsets preferred mode would be combined - * Linear for both DPB/OPB to save memory. For example on 8996 preferred mode - * would be combined linear for resolutions <= 1080p . - * Enabling this might save power but with the cost - * of increased memory i.e almost double the number on output YUV buffers. - */ -typedef struct OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_BOOL bEnable; /** Enable/disable the setting */ -} OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE; - -/** - * This structure describes the parameters corresponding - * to OMX_QTIIndexParamForceUnCompressedForOPB extension. Enabling this - * extension will force the OPB to be linear for the current video session. - * If this property is not set, then the OPB will be set to linear or compressed - * based on resolution selected and/or if cpu access is requested on the - * OPB buffer. - */ -typedef struct OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE { - OMX_U32 nSize; /** Sizeo f the structure in bytes */ - OMX_VERSIONTYPE nVersion; /** OMX specification version information */ - OMX_BOOL bEnable; /** Enable/disable the setting */ -} OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE; - -typedef struct OMX_VENDOR_EXTRADATATYPE { - OMX_U32 nPortIndex; - OMX_U32 nDataSize; - OMX_U8 *pData; // cdata (codec_data/extradata) -} OMX_VENDOR_EXTRADATATYPE; - -/** - * This structure describes the parameters corresponding to the - * OMX_VENDOR_VIDEOFRAMERATE extension. This parameter can be set - * dynamically during any state except the state invalid. This is - * used for frame rate to be set from the application. This - * is set on the in port. - */ -typedef struct OMX_VENDOR_VIDEOFRAMERATE { - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_U32 nFps; /** Frame rate value */ - OMX_BOOL bEnabled; /** Flag to enable or disable client's frame rate value */ -} OMX_VENDOR_VIDEOFRAMERATE; - -typedef enum OMX_INDEXVENDORTYPE { - OMX_IndexVendorFileReadInputFilename = 0xFF000001, - OMX_IndexVendorParser3gpInputFilename = 0xFF000002, - OMX_IndexVendorVideoExtraData = 0xFF000003, - OMX_IndexVendorAudioExtraData = 0xFF000004, - OMX_IndexVendorVideoFrameRate = 0xFF000005, -} OMX_INDEXVENDORTYPE; - -typedef enum OMX_QCOM_VC1RESOLUTIONTYPE -{ - OMX_QCOM_VC1_PICTURE_RES_1x1, - OMX_QCOM_VC1_PICTURE_RES_2x1, - OMX_QCOM_VC1_PICTURE_RES_1x2, - OMX_QCOM_VC1_PICTURE_RES_2x2 -} OMX_QCOM_VC1RESOLUTIONTYPE; - -typedef enum OMX_QCOM_INTERLACETYPE -{ - OMX_QCOM_InterlaceFrameProgressive, - OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst, - OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst, - OMX_QCOM_InterlaceFrameTopFieldFirst, - OMX_QCOM_InterlaceFrameBottomFieldFirst, - OMX_QCOM_InterlaceFieldTop, - OMX_QCOM_InterlaceFieldBottom -}OMX_QCOM_INTERLACETYPE; - -typedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE -{ - OMX_U32 nSize; /** Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion;/** OMX specification version information */ - OMX_U32 nPortIndex; /** Portindex which is extended by this structure */ - OMX_BOOL bInterlace; /** Interlace content **/ -}OMX_QCOM_PARAM_VIDEO_INTERLACETYPE; - -typedef struct OMX_QCOM_CONFIG_INTERLACETYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_QCOM_INTERLACETYPE eInterlaceType; -}OMX_QCOM_CONFIG_INTERLACETYPE; - -#define MAX_PAN_SCAN_WINDOWS 4 - -typedef struct OMX_QCOM_PANSCAN -{ - OMX_U32 numWindows; - OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS]; -} OMX_QCOM_PANSCAN; - -typedef struct OMX_QCOM_ASPECT_RATIO -{ - OMX_U32 aspectRatioX; - OMX_U32 aspectRatioY; -} OMX_QCOM_ASPECT_RATIO; - -typedef struct OMX_QCOM_DISPLAY_ASPECT_RATIO -{ - OMX_U32 displayVerticalSize; - OMX_U32 displayHorizontalSize; -} OMX_QCOM_DISPLAY_ASPECT_RATIO; - -typedef struct OMX_QCOM_FRAME_PACK_ARRANGEMENT -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 id; - OMX_U32 cancel_flag; - OMX_U32 type; - OMX_U32 quincunx_sampling_flag; - OMX_U32 content_interpretation_type; - OMX_U32 spatial_flipping_flag; - OMX_U32 frame0_flipped_flag; - OMX_U32 field_views_flag; - OMX_U32 current_frame_is_frame0_flag; - OMX_U32 frame0_self_contained_flag; - OMX_U32 frame1_self_contained_flag; - OMX_U32 frame0_grid_position_x; - OMX_U32 frame0_grid_position_y; - OMX_U32 frame1_grid_position_x; - OMX_U32 frame1_grid_position_y; - OMX_U32 reserved_byte; - OMX_U32 repetition_period; - OMX_U32 extension_flag; -} OMX_QCOM_FRAME_PACK_ARRANGEMENT; - -typedef struct OMX_QCOM_EXTRADATA_QP -{ - OMX_U32 nQP; -} OMX_QCOM_EXTRADATA_QP; - -typedef struct OMX_QCOM_EXTRADATA_BITS_INFO -{ - OMX_U32 header_bits; - OMX_U32 frame_bits; -} OMX_QCOM_EXTRADATA_BITS_INFO; - -typedef struct OMX_QCOM_EXTRADATA_USERDATA { - OMX_U32 type; - OMX_U32 data[1]; -} OMX_QCOM_EXTRADATA_USERDATA; - -typedef struct OMX_QCOM_EXTRADATA_FRAMEINFO -{ - // common frame meta data. interlace related info removed - OMX_VIDEO_PICTURETYPE ePicType; - OMX_QCOM_INTERLACETYPE interlaceType; - OMX_QCOM_PANSCAN panScan; - OMX_QCOM_ASPECT_RATIO aspectRatio; - OMX_QCOM_DISPLAY_ASPECT_RATIO displayAspectRatio; - OMX_U32 nConcealedMacroblocks; - OMX_U32 nFrameRate; - OMX_TICKS nTimeStamp; -} OMX_QCOM_EXTRADATA_FRAMEINFO; - -typedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION -{ - /** Frame Dimensions added to each YUV buffer */ - OMX_U32 nDecWidth; /** Width rounded to multiple of 16 */ - OMX_U32 nDecHeight; /** Height rounded to multiple of 16 */ - OMX_U32 nActualWidth; /** Actual Frame Width */ - OMX_U32 nActualHeight; /** Actual Frame Height */ - -} OMX_QCOM_EXTRADATA_FRAMEDIMENSION; - -typedef struct OMX_QCOM_H264EXTRADATA -{ - OMX_U64 seiTimeStamp; -} OMX_QCOM_H264EXTRADATA; - -typedef struct OMX_QCOM_VC1EXTRADATA -{ - OMX_U32 nVC1RangeY; - OMX_U32 nVC1RangeUV; - OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution; -} OMX_QCOM_VC1EXTRADATA; - -typedef union OMX_QCOM_EXTRADATA_CODEC_DATA -{ - OMX_QCOM_H264EXTRADATA h264ExtraData; - OMX_QCOM_VC1EXTRADATA vc1ExtraData; -} OMX_QCOM_EXTRADATA_CODEC_DATA; - -typedef struct OMX_QCOM_EXTRADATA_MBINFO -{ - OMX_U32 nFormat; - OMX_U32 nDataSize; - OMX_U8 data[0]; -} OMX_QCOM_EXTRADATA_MBINFO; - -typedef struct OMX_QCOM_EXTRADATA_VQZIPSEI { - OMX_U32 nSize; - OMX_U8 data[0]; -} OMX_QCOM_EXTRADATA_VQZIPSEI; - -typedef struct OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnableRoiInfo; -} OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO; - -typedef struct OMX_QTI_VIDEO_CONFIG_ROIINFO { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nUpperQpOffset; - OMX_S32 nLowerQpOffset; - OMX_BOOL bUseRoiInfo; - OMX_S32 nRoiMBInfoSize; - OMX_PTR pRoiMBInfo; -} OMX_QTI_VIDEO_CONFIG_ROIINFO; - -typedef enum OMX_QCOM_EXTRADATATYPE -{ - OMX_ExtraDataFrameInfo = 0x7F000001, - OMX_ExtraDataH264 = 0x7F000002, - OMX_ExtraDataVC1 = 0x7F000003, - OMX_ExtraDataFrameDimension = 0x7F000004, - OMX_ExtraDataVideoEncoderSliceInfo = 0x7F000005, - OMX_ExtraDataConcealMB = 0x7F000006, - OMX_ExtraDataInterlaceFormat = 0x7F000007, - OMX_ExtraDataPortDef = 0x7F000008, - OMX_ExtraDataMP2ExtnData = 0x7F000009, - OMX_ExtraDataMP2UserData = 0x7F00000a, - OMX_ExtraDataVideoLTRInfo = 0x7F00000b, - OMX_ExtraDataFramePackingArrangement = 0x7F00000c, - OMX_ExtraDataQP = 0x7F00000d, - OMX_ExtraDataInputBitsInfo = 0x7F00000e, - OMX_ExtraDataVideoEncoderMBInfo = 0x7F00000f, - OMX_ExtraDataVQZipSEI = 0x7F000010, -} OMX_QCOM_EXTRADATATYPE; - -typedef struct OMX_STREAMINTERLACEFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bInterlaceFormat; - OMX_U32 nInterlaceFormats; -} OMX_STREAMINTERLACEFORMAT; - -typedef enum OMX_INTERLACETYPE -{ - OMX_InterlaceFrameProgressive, - OMX_InterlaceInterleaveFrameTopFieldFirst, - OMX_InterlaceInterleaveFrameBottomFieldFirst, - OMX_InterlaceFrameTopFieldFirst, - OMX_InterlaceFrameBottomFieldFirst -} OMX_INTERLACES; - - -#define OMX_EXTRADATA_HEADER_SIZE 20 - -/** - * AVC profile types, each profile indicates support for various - * performance bounds and different annexes. - */ -typedef enum QOMX_VIDEO_AVCPROFILETYPE { - QOMX_VIDEO_AVCProfileBaseline = OMX_VIDEO_AVCProfileBaseline, - QOMX_VIDEO_AVCProfileMain = OMX_VIDEO_AVCProfileMain, - QOMX_VIDEO_AVCProfileExtended = OMX_VIDEO_AVCProfileExtended, - QOMX_VIDEO_AVCProfileHigh = OMX_VIDEO_AVCProfileHigh, - QOMX_VIDEO_AVCProfileHigh10 = OMX_VIDEO_AVCProfileHigh10, - QOMX_VIDEO_AVCProfileHigh422 = OMX_VIDEO_AVCProfileHigh422, - QOMX_VIDEO_AVCProfileHigh444 = OMX_VIDEO_AVCProfileHigh444, - /* QCom specific profile indexes */ - QOMX_VIDEO_AVCProfileConstrained = OMX_VIDEO_AVCProfileVendorStartUnused, - QOMX_VIDEO_AVCProfileConstrainedBaseline, - QOMX_VIDEO_AVCProfileConstrainedHigh, -} QOMX_VIDEO_AVCPROFILETYPE; - - -/** - * H.264 MVC Profiles - */ -typedef enum QOMX_VIDEO_MVCPROFILETYPE { - QOMX_VIDEO_MVCProfileStereoHigh = 0x1, - QOMX_VIDEO_MVCProfileMultiViewHigh = 0x2, - QOMX_VIDEO_MVCProfileKhronosExtensions = 0x6F000000, - QOMX_VIDEO_MVCProfileVendorStartUnused = 0x7F000000, - QOMX_VIDEO_MVCProfileMax = 0x7FFFFFFF -} QOMX_VIDEO_MVCPROFILETYPE; - -/** - * H.264 MVC Levels - */ -typedef enum QOMX_VIDEO_MVCLEVELTYPE { - QOMX_VIDEO_MVCLevel1 = 0x01, /**< Level 1 */ - QOMX_VIDEO_MVCLevel1b = 0x02, /**< Level 1b */ - QOMX_VIDEO_MVCLevel11 = 0x04, /**< Level 1.1 */ - QOMX_VIDEO_MVCLevel12 = 0x08, /**< Level 1.2 */ - QOMX_VIDEO_MVCLevel13 = 0x10, /**< Level 1.3 */ - QOMX_VIDEO_MVCLevel2 = 0x20, /**< Level 2 */ - QOMX_VIDEO_MVCLevel21 = 0x40, /**< Level 2.1 */ - QOMX_VIDEO_MVCLevel22 = 0x80, /**< Level 2.2 */ - QOMX_VIDEO_MVCLevel3 = 0x100, /**< Level 3 */ - QOMX_VIDEO_MVCLevel31 = 0x200, /**< Level 3.1 */ - QOMX_VIDEO_MVCLevel32 = 0x400, /**< Level 3.2 */ - QOMX_VIDEO_MVCLevel4 = 0x800, /**< Level 4 */ - QOMX_VIDEO_MVCLevel41 = 0x1000, /**< Level 4.1 */ - QOMX_VIDEO_MVCLevel42 = 0x2000, /**< Level 4.2 */ - QOMX_VIDEO_MVCLevel5 = 0x4000, /**< Level 5 */ - QOMX_VIDEO_MVCLevel51 = 0x8000, /**< Level 5.1 */ - QOMX_VIDEO_MVCLevelKhronosExtensions = 0x6F000000, - QOMX_VIDEO_MVCLevelVendorStartUnused = 0x7F000000, - QOMX_VIDEO_MVCLevelMax = 0x7FFFFFFF -} QOMX_VIDEO_MVCLEVELTYPE; - -/** - * DivX Versions - */ -typedef enum QOMX_VIDEO_DIVXFORMATTYPE { - QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */ - QOMX_VIDEO_DIVXFormat311 = 0x02, /**< DivX 3.11 */ - QOMX_VIDEO_DIVXFormat4 = 0x04, /**< DivX 4 */ - QOMX_VIDEO_DIVXFormat5 = 0x08, /**< DivX 5 */ - QOMX_VIDEO_DIVXFormat6 = 0x10, /**< DivX 6 */ - QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000, - QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000, - QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF -} QOMX_VIDEO_DIVXFORMATTYPE; - -/** - * DivX profile types, each profile indicates support for - * various performance bounds. - */ -typedef enum QOMX_VIDEO_DIVXPROFILETYPE { - QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */ - QOMX_VIDEO_DivXProfileMobile = 0x02, /**< Mobile Profile */ - QOMX_VIDEO_DivXProfileMT = 0x04, /**< Mobile Theatre Profile */ - QOMX_VIDEO_DivXProfileHT = 0x08, /**< Home Theatre Profile */ - QOMX_VIDEO_DivXProfileHD = 0x10, /**< High Definition Profile */ - QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000, - QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000, - QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF -} QOMX_VIDEO_DIVXPROFILETYPE; - -/** - * DivX Video Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of DivX stream / data - * eProfile : Profile of DivX stream / data - */ -typedef struct QOMX_VIDEO_PARAM_DIVXTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_DIVXFORMATTYPE eFormat; - QOMX_VIDEO_DIVXPROFILETYPE eProfile; -} QOMX_VIDEO_PARAM_DIVXTYPE; - - - -/** - * VP Versions - */ -typedef enum QOMX_VIDEO_VPFORMATTYPE { - QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */ - QOMX_VIDEO_VPFormat6 = 0x02, /**< VP6 Video Format */ - QOMX_VIDEO_VPFormat7 = 0x04, /**< VP7 Video Format */ - QOMX_VIDEO_VPFormat8 = 0x08, /**< VP8 Video Format */ - QOMX_VIDEO_VPFormat9 = 0x10, /**< VP9 Video Format */ - QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000, - QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000, - QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF -} QOMX_VIDEO_VPFORMATTYPE; - -/** - * VP profile types, each profile indicates support for various - * encoding tools. - */ -typedef enum QOMX_VIDEO_VPPROFILETYPE { - QOMX_VIDEO_VPProfileSimple = 0x01, /**< Simple Profile, applies to VP6 only */ - QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */ - QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */ - QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */ - QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */ - QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */ - QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000, - QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000, - QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF -} QOMX_VIDEO_VPPROFILETYPE; - -/** - * VP Video Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Format of VP stream / data - * eProfile : Profile or Version of VP stream / data - */ -typedef struct QOMX_VIDEO_PARAM_VPTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_VPFORMATTYPE eFormat; - QOMX_VIDEO_VPPROFILETYPE eProfile; -} QOMX_VIDEO_PARAM_VPTYPE; - -/** - * Spark Versions - */ -typedef enum QOMX_VIDEO_SPARKFORMATTYPE { - QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */ - QOMX_VIDEO_SparkFormat0 = 0x02, /**< Video Format Version 0 */ - QOMX_VIDEO_SparkFormat1 = 0x04, /**< Video Format Version 1 */ - QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000, - QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000, - QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF -} QOMX_VIDEO_SPARKFORMATTYPE; - -/** - * Spark Video Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of Spark stream / data - */ -typedef struct QOMX_VIDEO_PARAM_SPARKTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_SPARKFORMATTYPE eFormat; -} QOMX_VIDEO_PARAM_SPARKTYPE; - - -typedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nNumOfInstances; -} QOMX_VIDEO_QUERY_DECODER_INSTANCES; - -typedef struct QOMX_ENABLETYPE { - OMX_BOOL bEnable; -} QOMX_ENABLETYPE; - -typedef enum QOMX_VIDEO_EVENTS { - OMX_EventIndexsettingChanged = OMX_EventVendorStartUnused -} QOMX_VIDEO_EVENTS; - -typedef enum QOMX_VIDEO_PICTURE_ORDER { - QOMX_VIDEO_DISPLAY_ORDER = 0x1, - QOMX_VIDEO_DECODE_ORDER = 0x2 -} QOMX_VIDEO_PICTURE_ORDER; - -typedef struct QOMX_VIDEO_DECODER_PICTURE_ORDER { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - QOMX_VIDEO_PICTURE_ORDER eOutputPictureOrder; -} QOMX_VIDEO_DECODER_PICTURE_ORDER; - -typedef struct QOMX_INDEXEXTRADATATYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnabled; - OMX_INDEXTYPE nIndex; -} QOMX_INDEXEXTRADATATYPE; - -typedef struct QOMX_INDEXTIMESTAMPREORDER { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; -} QOMX_INDEXTIMESTAMPREORDER; - -typedef struct QOMX_INDEXDOWNSCALAR { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; -} QOMX_INDEXDOWNSCALAR; - -typedef struct QOMX_VIDEO_CUSTOM_BUFFERSIZE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nBufferSize; -} QOMX_VIDEO_CUSTOM_BUFFERSIZE; - -#define OMX_QCOM_INDEX_PARAM_VIDEO_SYNCFRAMEDECODINGMODE "OMX.QCOM.index.param.video.SyncFrameDecodingMode" -#define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData" -#define OMX_QCOM_INDEX_PARAM_VIDEO_SLICEDELIVERYMODE "OMX.QCOM.index.param.SliceDeliveryMode" -#define OMX_QCOM_INDEX_PARAM_VIDEO_FRAMEPACKING_EXTRADATA "OMX.QCOM.index.param.video.FramePackingExtradata" -#define OMX_QCOM_INDEX_PARAM_VIDEO_QP_EXTRADATA "OMX.QCOM.index.param.video.QPExtradata" -#define OMX_QCOM_INDEX_PARAM_VIDEO_INPUTBITSINFO_EXTRADATA "OMX.QCOM.index.param.video.InputBitsInfoExtradata" -#define OMX_QCOM_INDEX_PARAM_VIDEO_EXTNUSER_EXTRADATA "OMX.QCOM.index.param.video.ExtnUserExtraData" -#define OMX_QCOM_INDEX_CONFIG_VIDEO_FRAMEPACKING_INFO "OMX.QCOM.index.config.video.FramePackingInfo" -#define OMX_QCOM_INDEX_PARAM_VIDEO_MPEG2SEQDISP_EXTRADATA "OMX.QCOM.index.param.video.Mpeg2SeqDispExtraData" - -#define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure" -#define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount" -#define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod" -#define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse" -#define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark" -#define OMX_QCOM_INDEX_CONFIG_VIDEO_HIER_P_LAYERS "OMX.QCOM.index.config.video.hierplayers" -#define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle" -#define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid" -#define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp" -#define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar" -#define OMX_QTI_INDEX_PARAM_VIDEO_LOW_LATENCY "OMX.QTI.index.param.video.LowLatency" - -#define OMX_QCOM_INDEX_PARAM_VIDEO_PASSINPUTBUFFERFD "OMX.QCOM.index.param.video.PassInputBufferFd" -#define OMX_QTI_INDEX_PARAM_VIDEO_PREFER_ADAPTIVE_PLAYBACK "OMX.QTI.index.param.video.PreferAdaptivePlayback" -#define OMX_QTI_INDEX_CONFIG_VIDEO_SETTIMEDATA "OMX.QTI.index.config.video.settimedata" -#define OMX_QTI_INDEX_PARAM_VIDEO_FORCE_COMPRESSED_FOR_DPB "OMX.QTI.index.param.video.ForceCompressedForDPB" -#define OMX_QTI_INDEX_PARAM_VIDEO_ENABLE_ROIINFO "OMX.QTI.index.param.enableRoiInfo" -#define OMX_QTI_INDEX_CONFIG_VIDEO_ROIINFO "OMX.QTI.index.config.RoiInfo" - -typedef enum { - QOMX_VIDEO_FRAME_PACKING_CHECKERBOARD = 0, - QOMX_VIDEO_FRAME_PACKING_COLUMN_INTERLEAVE = 1, - QOMX_VIDEO_FRAME_PACKING_ROW_INTERLEAVE = 2, - QOMX_VIDEO_FRAME_PACKING_SIDE_BY_SIDE = 3, - QOMX_VIDEO_FRAME_PACKING_TOP_BOTTOM = 4, - QOMX_VIDEO_FRAME_PACKING_TEMPORAL = 5, -} QOMX_VIDEO_FRAME_PACKING_ARRANGEMENT; - -typedef enum { - QOMX_VIDEO_CONTENT_UNSPECIFIED = 0, - QOMX_VIDEO_CONTENT_LR_VIEW = 1, - QOMX_VIDEO_CONTENT_RL_VIEW = 2, -} QOMX_VIDEO_CONTENT_INTERPRETATION; - -/** - * Specifies the extended picture types. These values should be - * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to - * signal all pictures types which are allowed. - * - * ENUMS: - * H.264 Specific Picture Types: IDR - */ -typedef enum QOMX_VIDEO_PICTURETYPE { - QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000 -} QOMX_VIDEO_PICTURETYPE; - -#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION "OMX.QCOM.index.config.activeregiondetection" -#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION_STATUS "OMX.QCOM.index.config.activeregiondetectionstatus" -#define OMX_QCOM_INDEX_CONFIG_SCALING_MODE "OMX.QCOM.index.config.scalingmode" -#define OMX_QCOM_INDEX_CONFIG_NOISEREDUCTION "OMX.QCOM.index.config.noisereduction" -#define OMX_QCOM_INDEX_CONFIG_IMAGEENHANCEMENT "OMX.QCOM.index.config.imageenhancement" -#define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */ - - -typedef struct QOMX_RECTTYPE { - OMX_S32 nLeft; - OMX_S32 nTop; - OMX_U32 nWidth; - OMX_U32 nHeight; -} QOMX_RECTTYPE; - -typedef struct QOMX_ACTIVEREGIONDETECTIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; - QOMX_RECTTYPE sROI; - OMX_U32 nNumExclusionRegions; - QOMX_RECTTYPE sExclusionRegions[1]; -} QOMX_ACTIVEREGIONDETECTIONTYPE; - -typedef struct QOMX_ACTIVEREGIONDETECTION_STATUSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bDetected; - QOMX_RECTTYPE sDetectedRegion; -} QOMX_ACTIVEREGIONDETECTION_STATUSTYPE; - -typedef enum QOMX_SCALE_MODETYPE { - QOMX_SCALE_MODE_Normal, - QOMX_SCALE_MODE_Anamorphic, - QOMX_SCALE_MODE_Max = 0x7FFFFFFF -} QOMX_SCALE_MODETYPE; - -typedef struct QOMX_SCALINGMODETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - QOMX_SCALE_MODETYPE eScaleMode; -} QOMX_SCALINGMODETYPE; - -typedef struct QOMX_NOISEREDUCTIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; - OMX_BOOL bAutoMode; - OMX_S32 nNoiseReduction; -} QOMX_NOISEREDUCTIONTYPE; - -typedef struct QOMX_IMAGEENHANCEMENTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; - OMX_BOOL bAutoMode; - OMX_S32 nImageEnhancement; -} QOMX_IMAGEENHANCEMENTTYPE; - -/* - * these are part of OMX1.2 but JB MR2 branch doesn't have them defined - * OMX_IndexParamInterlaceFormat - * OMX_INTERLACEFORMATTYPE - */ -#ifndef OMX_IndexParamInterlaceFormat -#define OMX_IndexParamInterlaceFormat (0x7FF00000) -typedef struct OMX_INTERLACEFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nFormat; - OMX_TICKS nTimeStamp; -} OMX_INTERLACEFORMATTYPE; -#endif - -/** - * This structure is used to indicate the maximum number of buffers - * that a port will hold during data flow. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * nHeldBufferCount : Read-only, maximum number of buffers that will be held - */ -typedef struct QOMX_HELDBUFFERCOUNTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nHeldBufferCount; -} QOMX_HELDBUFFERCOUNTTYPE; - -typedef enum QOMX_VIDEO_HIERARCHICALCODINGTYPE { - QOMX_HIERARCHICALCODING_P = 0x01, - QOMX_HIERARCHICALCODING_B = 0x02, -} QOMX_VIDEO_HIERARCHICALCODINGTYPE; - -typedef struct QOMX_VIDEO_HIERARCHICALLAYERS { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nNumLayers; - QOMX_VIDEO_HIERARCHICALCODINGTYPE eHierarchicalCodingType; -} QOMX_VIDEO_HIERARCHICALLAYERS; - -typedef struct QOMX_VIDEO_H264ENTROPYCODINGTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bCabac; - OMX_U32 nCabacInitIdc; -} QOMX_VIDEO_H264ENTROPYCODINGTYPE; - - -/* VIDEO POSTPROCESSING CTRLS AND ENUMS */ -#define QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ 256 -#define VPP_HQV_CONTROL_GLOBAL_START (VPP_HQV_CONTROL_CUST + 1) - -typedef enum QOMX_VPP_HQV_MODE { - VPP_HQV_MODE_OFF, - VPP_HQV_MODE_AUTO, - VPP_HQV_MODE_MANUAL, - VPP_HQV_MODE_MAX -} QOMX_VPP_HQV_MODE; - -typedef enum QOMX_VPP_HQVCONTROLTYPE { - VPP_HQV_CONTROL_CADE = 0x1, - VPP_HQV_CONTROL_CNR = 0x04, - VPP_HQV_CONTROL_AIE = 0x05, - VPP_HQV_CONTROL_FRC = 0x06, - VPP_HQV_CONTROL_CUST = 0x07, - VPP_HQV_CONTROL_GLOBAL_DEMO = VPP_HQV_CONTROL_GLOBAL_START, - VPP_HQV_CONTROL_MAX, -} QOMX_VPP_HQVCONTROLTYPE; - -typedef enum QOMX_VPP_HQV_HUE_MODE { - VPP_HQV_HUE_MODE_OFF, - VPP_HQV_HUE_MODE_ON, - VPP_HQV_HUE_MODE_MAX, -} QOMX_VPP_HQV_HUE_MODE; - -typedef enum QOMX_VPP_HQV_FRC_MODE { - VPP_HQV_FRC_MODE_OFF, - VPP_HQV_FRC_MODE_LOW, - VPP_HQV_FRC_MODE_MED, - VPP_HQV_FRC_MODE_HIGH, - VPP_HQV_FRC_MODE_MAX, -} QOMX_VPP_HQV_FRC_MODE; - - -typedef struct QOMX_VPP_HQVCTRL_CADE { - QOMX_VPP_HQV_MODE mode; - OMX_U32 level; - OMX_S32 contrast; - OMX_S32 saturation; -} QOMX_VPP_HQVCTRL_CADE; - -typedef struct QOMX_VPP_HQVCTRL_CNR { - QOMX_VPP_HQV_MODE mode; - OMX_U32 level; -} QOMX_VPP_HQVCTRL_CNR; - -typedef struct QOMX_VPP_HQVCTRL_AIE { - QOMX_VPP_HQV_MODE mode; - QOMX_VPP_HQV_HUE_MODE hue_mode; - OMX_U32 cade_level; - OMX_U32 ltm_level; -} QOMX_VPP_HQVCTRL_AIE; - -typedef struct QOMX_VPP_HQVCTRL_CUSTOM { - OMX_U32 id; - OMX_U32 len; - OMX_U8 data[QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ]; -} QOMX_VPP_HQVCTRL_CUSTOM; - -typedef struct QOMX_VPP_HQVCTRL_GLOBAL_DEMO { - OMX_U32 process_percent; -} QOMX_VPP_HQVCTRL_GLOBAL_DEMO; - -typedef struct QOMX_VPP_HQVCTRL_FRC { - QOMX_VPP_HQV_FRC_MODE mode; -} QOMX_VPP_HQVCTRL_FRC; - -typedef struct QOMX_VPP_HQVCONTROL { - QOMX_VPP_HQV_MODE mode; - QOMX_VPP_HQVCONTROLTYPE ctrl_type; - union { - QOMX_VPP_HQVCTRL_CADE cade; - QOMX_VPP_HQVCTRL_CNR cnr; - QOMX_VPP_HQVCTRL_AIE aie; - QOMX_VPP_HQVCTRL_CUSTOM custom; - QOMX_VPP_HQVCTRL_GLOBAL_DEMO global_demo; - QOMX_VPP_HQVCTRL_FRC frc; - }; -} QOMX_VPP_HQVCONTROL; - -/* STRUCTURE TO TURN VPP ON */ -typedef struct QOMX_VPP_ENABLE { - OMX_BOOL enable_vpp; -} QOMX_VPP_ENABLE; - -typedef enum OMX_QOMX_VIDEO_MBISTATISTICSTYPE { - QOMX_MBI_STATISTICS_MODE_DEFAULT = 0, - QOMX_MBI_STATISTICS_MODE_1 = 0x01, - QOMX_MBI_STATISTICS_MODE_2 = 0x02, -} OMX_QOMX_VIDEO_MBISTATISTICSTYPE; - -typedef struct OMX_QOMX_VIDEO_MBI_STATISTICS { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_QOMX_VIDEO_MBISTATISTICSTYPE eMBIStatisticsType; -} OMX_QOMX_VIDEO_MBI_STATISTICS; - -typedef struct QOMX_VIDEO_BATCHSIZETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nBatchSize; -} QOMX_VIDEO_BATCHSIZETYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __OMX_QCOM_EXTENSIONS_H__ */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Skype_VideoExtensions.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Skype_VideoExtensions.h deleted file mode 100644 index 5cc832930..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Skype_VideoExtensions.h +++ /dev/null @@ -1,155 +0,0 @@ -/*@@@+++@@@@****************************************************************** - - Microsoft Skype Engineering - Copyright (C) 2014 Microsoft Corporation. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -*@@@---@@@@******************************************************************/ - - -#ifndef __OMX_SKYPE_VIDEOEXTENSIONS_H__ -#define __OMX_SKYPE_VIDEOEXTENSIONS_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include - -#pragma pack(push, 1) - - -typedef enum OMX_SKYPE_VIDEO_SliceControlMode -{ - OMX_SKYPE_VIDEO_SliceControlModeNone = 0, - OMX_SKYPE_VIDEO_SliceControlModeMB = 1, - OMX_SKYPE_VIDEO_SliceControlModeByte = 2, - OMX_SKYPE_VIDEO_SliceControlModMBRow = 3, -} OMX_SKYPE_VIDEO_SliceControlMode; - - -typedef enum OMX_SKYPE_VIDEO_HierarType -{ - OMX_SKYPE_VIDEO_HierarType_P = 0x01, - OMX_SKYPE_VIDEO_HierarType_B = 0x02, -} OMX_SKYPE_VIDEO_HIERAR_HierarType; - -typedef enum OMX_VIDEO_EXTENSION_AVCPROFILETYPE -{ - OMX_VIDEO_EXT_AVCProfileConstrainedBaseline = 0x01, - OMX_VIDEO_EXT_AVCProfileConstrainedHigh = 0x02, -} OMX_VIDEO_EXTENSION_AVCPROFILETYPE; - -typedef struct OMX_SKYPE_VIDEO_ENCODERPARAMS { - OMX_BOOL bLowLatency; - OMX_BOOL bUseExtendedProfile; - OMX_BOOL bSequenceHeaderWithIDR; - OMX_VIDEO_EXTENSION_AVCPROFILETYPE eProfile; - OMX_U32 nLTRFrames; - OMX_SKYPE_VIDEO_HierarType eHierarType; - OMX_U32 nMaxTemporalLayerCount; - OMX_SKYPE_VIDEO_SliceControlMode eSliceControlMode; - OMX_U32 nSarIndex; - OMX_U32 nSarWidth; - OMX_U32 nSarHeight; -} OMX_SKYPE_VIDEO_ENCODERPARAMS; - -typedef struct OMX_SKYPE_VIDEO_PARAM_ENCODERSETTING { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_SKYPE_VIDEO_ENCODERPARAMS stEncParam; -} OMX_SKYPE_VIDEO_PARAM_ENCODESETTING; - -typedef struct OMX_SKYPE_VIDEO_ENCODERCAP { - OMX_BOOL bLowLatency; - OMX_U32 nMaxFrameWidth; - OMX_U32 nMaxFrameHeight; - OMX_U32 nMaxInstances; - OMX_U32 nMaxTemporaLayerCount; - OMX_U32 nMaxRefFrames; - OMX_U32 nMaxLTRFrames; - OMX_VIDEO_AVCLEVELTYPE nMaxLevel; - OMX_U32 nSliceControlModesBM; - OMX_U32 nMaxMacroblockProcessingRate; - OMX_U32 xMinScaleFactor; -} OMX_SKYPE_VIDEO_ENCODERCAP; - -typedef struct OMX_SKYPE_VIDEO_PARAM_ENCODERCAP { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_SKYPE_VIDEO_ENCODERCAP stEncCap; -} OMX_SKYPE_VIDEO_PARAM_ENCODERCAP; - -typedef struct OMX_SKYPE_VIDEO_DECODERCAP { - OMX_BOOL bLowLatency; - OMX_U32 nMaxFrameWidth; - OMX_U32 nMaxFrameHeight; - OMX_U32 nMaxInstances; - OMX_VIDEO_AVCLEVELTYPE nMaxLevel; - OMX_U32 nMaxMacroblockProcessingRate; -} OMX_SKYPE_VIDEO_DECODERCAP; - -typedef struct OMX_SKYPE_VIDEO_PARAM_DECODERCAP { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_SKYPE_VIDEO_DECODERCAP stDecoderCap; -} OMX_SKYPE_VIDEO_PARAM_DECODERCAP; - -typedef struct OMX_SKYPE_VIDEO_CONFIG_QP { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQP; -} OMX_SKYPE_VIDEO_CONFIG_QP; - -typedef struct OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nPID; -} OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID; - -typedef struct OMX_SKYPE_VIDEO_PARAM_DRIVERVER { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U64 nDriverVersion; -} OMX_SKYPE_VIDEO_PARAM_DRIVERVER; - -typedef enum OMX_SKYPE_VIDEO_DownScaleFactor -{ - OMX_SKYPE_VIDEO_DownScaleFactor_1_1 = 0, - OMX_SKYPE_VIDEO_DownScaleFactor_Equal_AR = 1, - OMX_SKYPE_VIDEO_DownScaleFactor_Any = 2, -} OMX_SKYPE_VIDEO_DownScaleFactor; - -#pragma pack(pop) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Types.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Types.h deleted file mode 100644 index 3b9fab4fc..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Types.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Types.h - OpenMax IL version 1.1.2 - * The OMX_Types header file contains the primitive type definitions used by - * the core, the application and the component. This file may need to be - * modified to be used on systems that do not have "char" set to 8 bits, - * "short" set to 16 bits and "long" set to 32 bits. - */ - -#ifndef OMX_Types_h -#define OMX_Types_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** The OMX_API and OMX_APIENTRY are platform specific definitions used - * to declare OMX function prototypes. They are modified to meet the - * requirements for a particular platform */ -#ifdef __SYMBIAN32__ -# ifdef __OMX_EXPORTS -# define OMX_API __declspec(dllexport) -# else -# ifdef _WIN32 -# define OMX_API __declspec(dllexport) -# else -# define OMX_API __declspec(dllimport) -# endif -# endif -#else -# ifdef _WIN32 -# ifdef __OMX_EXPORTS -# define OMX_API __declspec(dllexport) -# else -# define OMX_API __declspec(dllimport) -# endif -# else -# ifdef __OMX_EXPORTS -# define OMX_API -# else -# define OMX_API extern -# endif -# endif -#endif - -#ifndef OMX_APIENTRY -#define OMX_APIENTRY -#endif - -/** OMX_IN is used to identify inputs to an OMX function. This designation - will also be used in the case of a pointer that points to a parameter - that is used as an output. */ -#ifndef OMX_IN -#define OMX_IN -#endif - -/** OMX_OUT is used to identify outputs from an OMX function. This - designation will also be used in the case of a pointer that points - to a parameter that is used as an input. */ -#ifndef OMX_OUT -#define OMX_OUT -#endif - - -/** OMX_INOUT is used to identify parameters that may be either inputs or - outputs from an OMX function at the same time. This designation will - also be used in the case of a pointer that points to a parameter that - is used both as an input and an output. */ -#ifndef OMX_INOUT -#define OMX_INOUT -#endif - -/** OMX_ALL is used to as a wildcard to select all entities of the same type - * when specifying the index, or referring to a object by an index. (i.e. - * use OMX_ALL to indicate all N channels). When used as a port index - * for a config or parameter this OMX_ALL denotes that the config or - * parameter applies to the entire component not just one port. */ -#define OMX_ALL 0xFFFFFFFF - -/** In the following we define groups that help building doxygen documentation */ - -/** @defgroup core OpenMAX IL core - * Functions and structure related to the OMX IL core - */ - - /** @defgroup comp OpenMAX IL component - * Functions and structure related to the OMX IL component - */ - -/** @defgroup rpm Resource and Policy Management - * Structures for resource and policy management of components - */ - -/** @defgroup buf Buffer Management - * Buffer handling functions and structures - */ - -/** @defgroup tun Tunneling - * @ingroup core comp - * Structures and functions to manage tunnels among component ports - */ - -/** @defgroup cp Content Pipes - * @ingroup core - */ - - /** @defgroup metadata Metadata handling - * - */ - -/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */ -typedef unsigned char OMX_U8; - -/** OMX_S8 is an 8 bit signed quantity that is byte aligned */ -typedef signed char OMX_S8; - -/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */ -typedef unsigned short OMX_U16; - -/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */ -typedef signed short OMX_S16; - -/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */ -typedef unsigned int OMX_U32; - -/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */ -typedef signed int OMX_S32; - - -/* Users with compilers that cannot accept the "long long" designation should - define the OMX_SKIP64BIT macro. It should be noted that this may cause - some components to fail to compile if the component was written to require - 64 bit integral types. However, these components would NOT compile anyway - since the compiler does not support the way the component was written. -*/ -#ifndef OMX_SKIP64BIT -#ifdef __SYMBIAN32__ -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned long long OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed long long OMX_S64; - -#elif defined(WIN32) - -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned __int64 OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed __int64 OMX_S64; - -#else /* WIN32 */ - -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned long long OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed long long OMX_S64; - -#endif /* WIN32 */ -#endif - - -/** The OMX_BOOL type is intended to be used to represent a true or a false - value when passing parameters to and from the OMX core and components. The - OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary. - */ -typedef enum OMX_BOOL { - OMX_FALSE = 0, - OMX_TRUE = !OMX_FALSE, - OMX_BOOL_MAX = 0x7FFFFFFF -} OMX_BOOL; - -#ifdef OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS - -typedef OMX_U32 OMX_PTR; -typedef OMX_PTR OMX_STRING; -typedef OMX_PTR OMX_BYTE; - -#else - -/** The OMX_PTR type is intended to be used to pass pointers between the OMX - applications and the OMX Core and components. This is a 32 bit pointer and - is aligned on a 32 bit boundary. - */ -typedef void* OMX_PTR; - -/** The OMX_STRING type is intended to be used to pass "C" type strings between - the application and the core and component. The OMX_STRING type is a 32 - bit pointer to a zero terminated string. The pointer is word aligned and - the string is byte aligned. - */ -typedef char* OMX_STRING; - -/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as - buffers between the application and the component and core. The OMX_BYTE - type is a 32 bit pointer to a zero terminated string. The pointer is word - aligned and the string is byte aligned. - */ -typedef unsigned char* OMX_BYTE; - -/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify - at runtime. This identifier should be generated by a component in a way - that guarantees that every instance of the identifier running on the system - is unique. */ - - -#endif - -typedef unsigned char OMX_UUIDTYPE[128]; - -/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or - an output port. This enumeration is common across all component types. - */ -typedef enum OMX_DIRTYPE -{ - OMX_DirInput, /**< Port is an input port */ - OMX_DirOutput, /**< Port is an output port */ - OMX_DirMax = 0x7FFFFFFF -} OMX_DIRTYPE; - -/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering - for numerical data (i.e. big endian, or little endian). - */ -typedef enum OMX_ENDIANTYPE -{ - OMX_EndianBig, /**< big endian */ - OMX_EndianLittle, /**< little endian */ - OMX_EndianMax = 0x7FFFFFFF -} OMX_ENDIANTYPE; - - -/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data - is signed or unsigned - */ -typedef enum OMX_NUMERICALDATATYPE -{ - OMX_NumericalDataSigned, /**< signed data */ - OMX_NumericalDataUnsigned, /**< unsigned data */ - OMX_NumercialDataMax = 0x7FFFFFFF -} OMX_NUMERICALDATATYPE; - - -/** Unsigned bounded value type */ -typedef struct OMX_BU32 { - OMX_U32 nValue; /**< actual value */ - OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ - OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ -} OMX_BU32; - - -/** Signed bounded value type */ -typedef struct OMX_BS32 { - OMX_S32 nValue; /**< actual value */ - OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ - OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ -} OMX_BS32; - - -/** Structure representing some time or duration in microseconds. This structure - * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate - * negative deltas and preroll scenarios. The quantity is represented in microseconds - * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based - * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g. - * individual audio samples delivered at 192 kHz). The quantity is 64 bit to - * accommodate a large dynamic range (signed 32 bit values would allow only for plus - * or minus 35 minutes). - * - * Implementations with limited precision may convert the signed 64 bit value to - * a signed 32 bit value internally but risk loss of precision. - */ -#ifndef OMX_SKIP64BIT -typedef OMX_S64 OMX_TICKS; -#else -typedef struct OMX_TICKS -{ - OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */ - OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */ -} OMX_TICKS; -#endif -#define OMX_TICKS_PER_SECOND 1000000 - -/** Define the public interface for the OMX Handle. The core will not use - this value internally, but the application should only use this value. - */ -typedef void* OMX_HANDLETYPE; - -typedef struct OMX_MARKTYPE -{ - OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will - generate a mark event upon - processing the mark. */ - OMX_PTR pMarkData; /**< Application specific data associated with - the mark sent on a mark event to disambiguate - this mark from others. */ -} OMX_MARKTYPE; - - -/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the - * platform & operating specific object used to reference the display - * or can be used by a audio port for native audio rendering */ -typedef void* OMX_NATIVE_DEVICETYPE; - -/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the - * platform & operating specific object used to reference the window */ -typedef void* OMX_NATIVE_WINDOWTYPE; - -/** The OMX_VERSIONTYPE union is used to specify the version for - a structure or component. For a component, the version is entirely - specified by the component vendor. Components doing the same function - from different vendors may or may not have the same version. For - structures, the version shall be set by the entity that allocates the - structure. For structures specified in the OMX 1.1 specification, the - value of the version shall be set to 1.1.0.0 in all cases. Access to the - OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or - by accessing one of the structure elements to, for example, check only - the Major revision. - */ -typedef union OMX_VERSIONTYPE -{ - struct - { - OMX_U8 nVersionMajor; /**< Major version accessor element */ - OMX_U8 nVersionMinor; /**< Minor version accessor element */ - OMX_U8 nRevision; /**< Revision version accessor element */ - OMX_U8 nStep; /**< Step version accessor element */ - } s; - OMX_U32 nVersion; /**< 32 bit value to make accessing the - version easily done in a single word - size copy/compare operation */ -} OMX_VERSIONTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_Video.h b/starpilot/ui/screenrecorder/openmax/include/OMX_Video.h deleted file mode 100644 index 64dbe87b4..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_Video.h +++ /dev/null @@ -1,1082 +0,0 @@ -/** - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** - * @file OMX_Video.h - OpenMax IL version 1.1.2 - * The structures is needed by Video components to exchange parameters - * and configuration data with OMX components. - */ -#ifndef OMX_Video_h -#define OMX_Video_h - -/** @defgroup video OpenMAX IL Video Domain - * @ingroup iv - * Structures for OpenMAX IL Video domain - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/** - * Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - - -/** - * Enumeration used to define the possible video compression codings. - * NOTE: This essentially refers to file extensions. If the coding is - * being used to specify the ENCODE type, then additional work - * must be done to configure the exact flavor of the compression - * to be used. For decode cases where the user application can - * not differentiate between MPEG-4 and H.264 bit streams, it is - * up to the codec to handle this. - */ -typedef enum OMX_VIDEO_CODINGTYPE { - OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */ - OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ - OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */ - OMX_VIDEO_CodingH263, /**< H.263 */ - OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */ - OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */ - OMX_VIDEO_CodingRV, /**< all versions of Real Video */ - OMX_VIDEO_CodingAVC, /**< H.264/AVC */ - OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */ - OMX_VIDEO_CodingVP8, /**< Google VP8, formerly known as On2 VP8 */ - OMX_VIDEO_CodingVP9, /**< Google VP9 */ - OMX_VIDEO_CodingHEVC, /**< HEVC */ - OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_CodingMax = 0x7FFFFFFF -} OMX_VIDEO_CODINGTYPE; - - -/** - * Data structure used to define a video path. The number of Video paths for - * input and output will vary by type of the Video component. - * - * Input (aka Source) : zero Inputs, one Output, - * Splitter : one Input, 2 or more Outputs, - * Processing Element : one Input, one output, - * Mixer : 2 or more inputs, one output, - * Output (aka Sink) : one Input, zero outputs. - * - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output video - * path. If additional vendor specific data is required, it should be - * transmitted to the component using the CustomCommand function. Compliant - * components will prepopulate this structure with optimal values during the - * GetDefaultInitParams command. - * - * STRUCT MEMBERS: - * cMIMEType : MIME type of data for the port - * pNativeRender : Platform specific reference for a display if a - * sync, otherwise this field is 0 - * nFrameWidth : Width of frame to be used on channel if - * uncompressed format is used. Use 0 for unknown, - * don't care or variable - * nFrameHeight : Height of frame to be used on channel if - * uncompressed format is used. Use 0 for unknown, - * don't care or variable - * nStride : Number of bytes per span of an image - * (i.e. indicates the number of bytes to get - * from span N to span N+1, where negative stride - * indicates the image is bottom up - * nSliceHeight : Height used when encoding in slices - * nBitrate : Bit rate of frame to be used on channel if - * compressed format is used. Use 0 for unknown, - * don't care or variable - * xFramerate : Frame rate to be used on channel if uncompressed - * format is used. Use 0 for unknown, don't care or - * variable. Units are Q16 frames per second. - * bFlagErrorConcealment : Turns on error concealment if it is supported by - * the OMX component - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_VIDEO_CodingUnused is - * specified, eColorFormat is used - * eColorFormat : Decompressed format used by this component - * pNativeWindow : Platform specific reference for a window object if a - * display sink , otherwise this field is 0x0. - */ -typedef struct OMX_VIDEO_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; - OMX_NATIVE_DEVICETYPE pNativeRender; - OMX_U32 nFrameWidth; - OMX_U32 nFrameHeight; - OMX_S32 nStride; - OMX_U32 nSliceHeight; - OMX_U32 nBitrate; - OMX_U32 xFramerate; - OMX_BOOL bFlagErrorConcealment; - OMX_VIDEO_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_NATIVE_WINDOWTYPE pNativeWindow; -} OMX_VIDEO_PORTDEFINITIONTYPE; - -/** - * Port format parameter. This structure is used to enumerate the various - * data input/output format supported by the port. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Indicates which port to set - * nIndex : Indicates the enumeration index for the format from - * 0x0 to N-1 - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_VIDEO_CodingUnused is specified, - * eColorFormat is used - * eColorFormat : Decompressed format used by this component - * xFrameRate : Indicates the video frame rate in Q16 format - */ -typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_VIDEO_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_U32 xFramerate; -} OMX_VIDEO_PARAM_PORTFORMATTYPE; - - -/** - * This is a structure for configuring video compression quantization - * parameter values. Codecs may support different QP values for different - * frame types. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * nQpI : QP value to use for index frames - * nQpP : QP value to use for P frames - * nQpB : QP values to use for bidirectional frames - */ -typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQpI; - OMX_U32 nQpP; - OMX_U32 nQpB; -} OMX_VIDEO_PARAM_QUANTIZATIONTYPE; - - -/** - * Structure for configuration of video fast update parameters. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * bEnableVFU : Enable/Disable video fast update - * nFirstGOB : Specifies the number of the first macroblock row - * nFirstMB : specifies the first MB relative to the specified first GOB - * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB - * and nFirstMB - */ -typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnableVFU; - OMX_U32 nFirstGOB; - OMX_U32 nFirstMB; - OMX_U32 nNumMBs; -} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE; - - -/** - * Enumeration of possible bitrate control types - */ -typedef enum OMX_VIDEO_CONTROLRATETYPE { - OMX_Video_ControlRateDisable, - OMX_Video_ControlRateVariable, - OMX_Video_ControlRateConstant, - OMX_Video_ControlRateVariableSkipFrames, - OMX_Video_ControlRateConstantSkipFrames, - OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_Video_ControlRateMax = 0x7FFFFFFF -} OMX_VIDEO_CONTROLRATETYPE; - - -/** - * Structure for configuring bitrate mode of a codec. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : Port that this struct applies to - * eControlRate : Control rate type enum - * nTargetBitrate : Target bitrate to encode with - */ -typedef struct OMX_VIDEO_PARAM_BITRATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_CONTROLRATETYPE eControlRate; - OMX_U32 nTargetBitrate; -} OMX_VIDEO_PARAM_BITRATETYPE; - - -/** - * Enumeration of possible motion vector (MV) types - */ -typedef enum OMX_VIDEO_MOTIONVECTORTYPE { - OMX_Video_MotionVectorPixel, - OMX_Video_MotionVectorHalfPel, - OMX_Video_MotionVectorQuarterPel, - OMX_Video_MotionVectorEighthPel, - OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_Video_MotionVectorMax = 0x7FFFFFFF -} OMX_VIDEO_MOTIONVECTORTYPE; - - -/** - * Structure for configuring the number of motion vectors used as well - * as their accuracy. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : port that this structure applies to - * eAccuracy : Enumerated MV accuracy - * bUnrestrictedMVs : Allow unrestricted MVs - * bFourMV : Allow use of 4 MVs - * sXSearchRange : Search range in horizontal direction for MVs - * sYSearchRange : Search range in vertical direction for MVs - */ -typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_MOTIONVECTORTYPE eAccuracy; - OMX_BOOL bUnrestrictedMVs; - OMX_BOOL bFourMV; - OMX_S32 sXSearchRange; - OMX_S32 sYSearchRange; -} OMX_VIDEO_PARAM_MOTIONVECTORTYPE; - - -/** - * Enumeration of possible methods to use for Intra Refresh - */ -typedef enum OMX_VIDEO_INTRAREFRESHTYPE { - OMX_VIDEO_IntraRefreshCyclic, - OMX_VIDEO_IntraRefreshAdaptive, - OMX_VIDEO_IntraRefreshBoth, - OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_IntraRefreshRandom, - OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF -} OMX_VIDEO_INTRAREFRESHTYPE; - - -/** - * Structure for configuring intra refresh mode - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eRefreshMode : Cyclic, Adaptive, or Both - * nAirMBs : Number of intra macroblocks to refresh in a frame when - * AIR is enabled - * nAirRef : Number of times a motion marked macroblock has to be - * intra coded - * nCirMBs : Number of consecutive macroblocks to be coded as "intra" - * when CIR is enabled - */ -typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode; - OMX_U32 nAirMBs; - OMX_U32 nAirRef; - OMX_U32 nCirMBs; -} OMX_VIDEO_PARAM_INTRAREFRESHTYPE; - - -/** - * Structure for enabling various error correction methods for video - * compression. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bEnableHEC : Enable/disable header extension codes (HEC) - * bEnableResync : Enable/disable resynchronization markers - * nResynchMarkerSpacing : Resynch markers interval (in bits) to be - * applied in the stream - * bEnableDataPartitioning : Enable/disable data partitioning - * bEnableRVLC : Enable/disable reversible variable length - * coding - */ -typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnableHEC; - OMX_BOOL bEnableResync; - OMX_U32 nResynchMarkerSpacing; - OMX_BOOL bEnableDataPartitioning; - OMX_BOOL bEnableRVLC; -} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE; - - -/** - * Configuration of variable block-size motion compensation (VBSMC) - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * b16x16 : Enable inter block search 16x16 - * b16x8 : Enable inter block search 16x8 - * b8x16 : Enable inter block search 8x16 - * b8x8 : Enable inter block search 8x8 - * b8x4 : Enable inter block search 8x4 - * b4x8 : Enable inter block search 4x8 - * b4x4 : Enable inter block search 4x4 - */ -typedef struct OMX_VIDEO_PARAM_VBSMCTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL b16x16; - OMX_BOOL b16x8; - OMX_BOOL b8x16; - OMX_BOOL b8x8; - OMX_BOOL b8x4; - OMX_BOOL b4x8; - OMX_BOOL b4x4; -} OMX_VIDEO_PARAM_VBSMCTYPE; - - -/** - * H.263 profile types, each profile indicates support for various - * performance bounds and different annexes. - * - * ENUMS: - * Baseline : Baseline Profile: H.263 (V1), no optional modes - * H320 Coding : H.320 Coding Efficiency Backward Compatibility - * Profile: H.263+ (V2), includes annexes I, J, L.4 - * and T - * BackwardCompatible : Backward Compatibility Profile: H.263 (V1), - * includes annex F - * ISWV2 : Interactive Streaming Wireless Profile: H.263+ - * (V2), includes annexes I, J, K and T - * ISWV3 : Interactive Streaming Wireless Profile: H.263++ - * (V3), includes profile 3 and annexes V and W.6.3.8 - * HighCompression : Conversational High Compression Profile: H.263++ - * (V3), includes profiles 1 & 2 and annexes D and U - * Internet : Conversational Internet Profile: H.263++ (V3), - * includes profile 5 and annex K - * Interlace : Conversational Interlace Profile: H.263++ (V3), - * includes profile 5 and annex W.6.3.11 - * HighLatency : High Latency Profile: H.263++ (V3), includes - * profile 6 and annexes O.1 and P.5 - */ -typedef enum OMX_VIDEO_H263PROFILETYPE { - OMX_VIDEO_H263ProfileBaseline = 0x01, - OMX_VIDEO_H263ProfileH320Coding = 0x02, - OMX_VIDEO_H263ProfileBackwardCompatible = 0x04, - OMX_VIDEO_H263ProfileISWV2 = 0x08, - OMX_VIDEO_H263ProfileISWV3 = 0x10, - OMX_VIDEO_H263ProfileHighCompression = 0x20, - OMX_VIDEO_H263ProfileInternet = 0x40, - OMX_VIDEO_H263ProfileInterlace = 0x80, - OMX_VIDEO_H263ProfileHighLatency = 0x100, - OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_H263PROFILETYPE; - - -/** - * H.263 level types, each level indicates support for various frame sizes, - * bit rates, decoder frame rates. - */ -typedef enum OMX_VIDEO_H263LEVELTYPE { - OMX_VIDEO_H263Level10 = 0x01, - OMX_VIDEO_H263Level20 = 0x02, - OMX_VIDEO_H263Level30 = 0x04, - OMX_VIDEO_H263Level40 = 0x08, - OMX_VIDEO_H263Level45 = 0x10, - OMX_VIDEO_H263Level50 = 0x20, - OMX_VIDEO_H263Level60 = 0x40, - OMX_VIDEO_H263Level70 = 0x80, - OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_H263LevelMax = 0x7FFFFFFF -} OMX_VIDEO_H263LEVELTYPE; - - -/** - * Specifies the picture type. These values should be OR'd to signal all - * pictures types which are allowed. - * - * ENUMS: - * Generic Picture Types: I, P and B - * H.263 Specific Picture Types: SI and SP - * H.264 Specific Picture Types: EI and EP - * MPEG-4 Specific Picture Types: S - */ -typedef enum OMX_VIDEO_PICTURETYPE { - OMX_VIDEO_PictureTypeI = 0x01, - OMX_VIDEO_PictureTypeP = 0x02, - OMX_VIDEO_PictureTypeB = 0x04, - OMX_VIDEO_PictureTypeSI = 0x08, - OMX_VIDEO_PictureTypeSP = 0x10, - OMX_VIDEO_PictureTypeEI = 0x11, - OMX_VIDEO_PictureTypeEP = 0x12, - OMX_VIDEO_PictureTypeS = 0x14, - OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF -} OMX_VIDEO_PICTURETYPE; - - -/** - * H.263 Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * eProfile : H.263 profile(s) to use - * eLevel : H.263 level(s) to use - * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE - * (specified in the 1998 version of H.263) to - * indicate custom picture sizes or clock - * frequencies - * nAllowedPictureTypes : Specifies the picture types allowed in the - * bitstream - * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is - * not constrained. It is recommended to change - * the value of the RTYPE bit for each reference - * picture in error-free communication - * nPictureHeaderRepetition : Specifies the frequency of picture header - * repetition - * nGOBHeaderInterval : Specifies the interval of non-empty GOB - * headers in units of GOBs - */ -typedef struct OMX_VIDEO_PARAM_H263TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_VIDEO_H263PROFILETYPE eProfile; - OMX_VIDEO_H263LEVELTYPE eLevel; - OMX_BOOL bPLUSPTYPEAllowed; - OMX_U32 nAllowedPictureTypes; - OMX_BOOL bForceRoundingTypeToZero; - OMX_U32 nPictureHeaderRepetition; - OMX_U32 nGOBHeaderInterval; -} OMX_VIDEO_PARAM_H263TYPE; - - -/** - * MPEG-2 profile types, each profile indicates support for various - * performance bounds and different annexes. - */ -typedef enum OMX_VIDEO_MPEG2PROFILETYPE { - OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */ - OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */ - OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */ - OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */ - OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */ - OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */ - OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG2PROFILETYPE; - - -/** - * MPEG-2 level types, each level indicates support for various frame - * sizes, bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_MPEG2LEVELTYPE { - OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */ - OMX_VIDEO_MPEG2LevelML, /**< Main Level */ - OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */ - OMX_VIDEO_MPEG2LevelHL, /**< High Level */ - OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG2LEVELTYPE; - - -/** - * MPEG-2 params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * eProfile : MPEG-2 profile(s) to use - * eLevel : MPEG-2 levels(s) to use - */ -typedef struct OMX_VIDEO_PARAM_MPEG2TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_VIDEO_MPEG2PROFILETYPE eProfile; - OMX_VIDEO_MPEG2LEVELTYPE eLevel; -} OMX_VIDEO_PARAM_MPEG2TYPE; - - -/** - * MPEG-4 profile types, each profile indicates support for various - * performance bounds and different annexes. - * - * ENUMS: - * - Simple Profile, Levels 1-3 - * - Simple Scalable Profile, Levels 1-2 - * - Core Profile, Levels 1-2 - * - Main Profile, Levels 2-4 - * - N-bit Profile, Level 2 - * - Scalable Texture Profile, Level 1 - * - Simple Face Animation Profile, Levels 1-2 - * - Simple Face and Body Animation (FBA) Profile, Levels 1-2 - * - Basic Animated Texture Profile, Levels 1-2 - * - Hybrid Profile, Levels 1-2 - * - Advanced Real Time Simple Profiles, Levels 1-4 - * - Core Scalable Profile, Levels 1-3 - * - Advanced Coding Efficiency Profile, Levels 1-4 - * - Advanced Core Profile, Levels 1-2 - * - Advanced Scalable Texture, Levels 2-3 - */ -typedef enum OMX_VIDEO_MPEG4PROFILETYPE { - OMX_VIDEO_MPEG4ProfileSimple = 0x01, - OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02, - OMX_VIDEO_MPEG4ProfileCore = 0x04, - OMX_VIDEO_MPEG4ProfileMain = 0x08, - OMX_VIDEO_MPEG4ProfileNbit = 0x10, - OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20, - OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40, - OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80, - OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100, - OMX_VIDEO_MPEG4ProfileHybrid = 0x200, - OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400, - OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800, - OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000, - OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000, - OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000, - OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000, - OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG4PROFILETYPE; - - -/** - * MPEG-4 level types, each level indicates support for various frame - * sizes, bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_MPEG4LEVELTYPE { - OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */ - OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */ - OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */ - OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */ - OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */ - OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */ - OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */ - OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */ - OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG4LEVELTYPE; - - -/** - * MPEG-4 configuration. This structure handles configuration options - * which are specific to MPEG4 algorithms - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+ - * Annex K). Put zero if not used - * bSVH : Enable Short Video Header mode - * bGov : Flag to enable GOV - * nPFrames : Number of P frames between each I frame (also called - * GOV period) - * nBFrames : Number of B frames between each I frame - * nIDCVLCThreshold : Value of intra DC VLC threshold - * bACPred : Flag to use ac prediction - * nMaxPacketSize : Maximum size of packet in bytes. - * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4. - * Interpreted as described in MPEG4 standard. - * eProfile : MPEG-4 profile(s) to use. - * eLevel : MPEG-4 level(s) to use. - * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream - * nHeaderExtension : Specifies the number of consecutive video packet - * headers within a VOP - * bReversibleVLC : Specifies whether reversible variable length coding - * is in use - */ -typedef struct OMX_VIDEO_PARAM_MPEG4TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nSliceHeaderSpacing; - OMX_BOOL bSVH; - OMX_BOOL bGov; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_U32 nIDCVLCThreshold; - OMX_BOOL bACPred; - OMX_U32 nMaxPacketSize; - OMX_U32 nTimeIncRes; - OMX_VIDEO_MPEG4PROFILETYPE eProfile; - OMX_VIDEO_MPEG4LEVELTYPE eLevel; - OMX_U32 nAllowedPictureTypes; - OMX_U32 nHeaderExtension; - OMX_BOOL bReversibleVLC; -} OMX_VIDEO_PARAM_MPEG4TYPE; - - -/** - * WMV Versions - */ -typedef enum OMX_VIDEO_WMVFORMATTYPE { - OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */ - OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */ - OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */ - OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */ - OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF -} OMX_VIDEO_WMVFORMATTYPE; - - -/** - * WMV Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of WMV stream / data - */ -typedef struct OMX_VIDEO_PARAM_WMVTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_WMVFORMATTYPE eFormat; -} OMX_VIDEO_PARAM_WMVTYPE; - - -/** - * Real Video Version - */ -typedef enum OMX_VIDEO_RVFORMATTYPE { - OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */ - OMX_VIDEO_RVFormat8, /**< Real Video format 8 */ - OMX_VIDEO_RVFormat9, /**< Real Video format 9 */ - OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */ - OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_RVFormatMax = 0x7FFFFFFF -} OMX_VIDEO_RVFORMATTYPE; - - -/** - * Real Video Params - * - * STUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of RV stream / data - * nBitsPerPixel : Bits per pixel coded in the frame - * nPaddedWidth : Padded width in pixel of a video frame - * nPaddedHeight : Padded Height in pixels of a video frame - * nFrameRate : Rate of video in frames per second - * nBitstreamFlags : Flags which internal information about the bitstream - * nBitstreamVersion : Bitstream version - * nMaxEncodeFrameSize: Max encoded frame size - * bEnablePostFilter : Turn on/off post filter - * bEnableTemporalInterpolation : Turn on/off temporal interpolation - * bEnableLatencyMode : When enabled, the decoder does not display a decoded - * frame until it has detected that no enhancement layer - * frames or dependent B frames will be coming. This - * detection usually occurs when a subsequent non-B - * frame is encountered - */ -typedef struct OMX_VIDEO_PARAM_RVTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_RVFORMATTYPE eFormat; - OMX_U16 nBitsPerPixel; - OMX_U16 nPaddedWidth; - OMX_U16 nPaddedHeight; - OMX_U32 nFrameRate; - OMX_U32 nBitstreamFlags; - OMX_U32 nBitstreamVersion; - OMX_U32 nMaxEncodeFrameSize; - OMX_BOOL bEnablePostFilter; - OMX_BOOL bEnableTemporalInterpolation; - OMX_BOOL bEnableLatencyMode; -} OMX_VIDEO_PARAM_RVTYPE; - - -/** - * AVC profile types, each profile indicates support for various - * performance bounds and different annexes. - */ -typedef enum OMX_VIDEO_AVCPROFILETYPE { - OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */ - OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */ - OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */ - OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */ - OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */ - OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */ - OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */ - OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF -} OMX_VIDEO_AVCPROFILETYPE; - - -/** - * AVC level types, each level indicates support for various frame sizes, - * bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_AVCLEVELTYPE { - OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */ - OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */ - OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */ - OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */ - OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */ - OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */ - OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */ - OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */ - OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */ - OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */ - OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */ - OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */ - OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */ - OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */ - OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */ - OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */ - OMX_VIDEO_AVCLevel52 = 0x10000, /**< Level 5.2 */ - OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF -} OMX_VIDEO_AVCLEVELTYPE; - - -/** - * AVC loop filter modes - * - * OMX_VIDEO_AVCLoopFilterEnable : Enable - * OMX_VIDEO_AVCLoopFilterDisable : Disable - * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries - */ -typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE { - OMX_VIDEO_AVCLoopFilterEnable = 0, - OMX_VIDEO_AVCLoopFilterDisable, - OMX_VIDEO_AVCLoopFilterDisableSliceBoundary, - OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF -} OMX_VIDEO_AVCLOOPFILTERTYPE; - - -/** - * AVC params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nSliceHeaderSpacing : Number of macroblocks between slice header, put - * zero if not used - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * bUseHadamard : Enable/disable Hadamard transform - * nRefFrames : Max number of reference frames to use for inter - * motion search (1-16) - * nRefIdxTrailing : Pic param set ref frame index (index into ref - * frame buffer of trailing frames list), B frame - * support - * nRefIdxForward : Pic param set ref frame index (index into ref - * frame buffer of forward frames list), B frame - * support - * bEnableUEP : Enable/disable unequal error protection. This - * is only valid of data partitioning is enabled. - * bEnableFMO : Enable/disable flexible macroblock ordering - * bEnableASO : Enable/disable arbitrary slice ordering - * bEnableRS : Enable/disable sending of redundant slices - * eProfile : AVC profile(s) to use - * eLevel : AVC level(s) to use - * nAllowedPictureTypes : Specifies the picture types allowed in the - * bitstream - * bFrameMBsOnly : specifies that every coded picture of the - * coded video sequence is a coded frame - * containing only frame macroblocks - * bMBAFF : Enable/disable switching between frame and - * field macroblocks within a picture - * bEntropyCodingCABAC : Entropy decoding method to be applied for the - * syntax elements for which two descriptors appear - * in the syntax tables - * bWeightedPPrediction : Enable/disable weighted prediction shall not - * be applied to P and SP slices - * nWeightedBipredicitonMode : Default weighted prediction is applied to B - * slices - * bconstIpred : Enable/disable intra prediction - * bDirect8x8Inference : Specifies the method used in the derivation - * process for luma motion vectors for B_Skip, - * B_Direct_16x16 and B_Direct_8x8 as specified - * in subclause 8.4.1.2 of the AVC spec - * bDirectSpatialTemporal : Flag indicating spatial or temporal direct - * mode used in B slice coding (related to - * bDirect8x8Inference) . Spatial direct mode is - * more common and should be the default. - * nCabacInitIdx : Index used to init CABAC contexts - * eLoopFilterMode : Enable/disable loop filter - */ -typedef struct OMX_VIDEO_PARAM_AVCTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nSliceHeaderSpacing; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_BOOL bUseHadamard; - OMX_U32 nRefFrames; - OMX_U32 nRefIdx10ActiveMinus1; - OMX_U32 nRefIdx11ActiveMinus1; - OMX_BOOL bEnableUEP; - OMX_BOOL bEnableFMO; - OMX_BOOL bEnableASO; - OMX_BOOL bEnableRS; - OMX_VIDEO_AVCPROFILETYPE eProfile; - OMX_VIDEO_AVCLEVELTYPE eLevel; - OMX_U32 nAllowedPictureTypes; - OMX_BOOL bFrameMBsOnly; - OMX_BOOL bMBAFF; - OMX_BOOL bEntropyCodingCABAC; - OMX_BOOL bWeightedPPrediction; - OMX_U32 nWeightedBipredicitonMode; - OMX_BOOL bconstIpred ; - OMX_BOOL bDirect8x8Inference; - OMX_BOOL bDirectSpatialTemporal; - OMX_U32 nCabacInitIdc; - OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode; -} OMX_VIDEO_PARAM_AVCTYPE; - -typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, - or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ - OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE, - or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ - OMX_U32 nProfileIndex; /**< Used to query for individual profile support information, - This parameter is valid only for - OMX_IndexParamVideoProfileLevelQuerySupported index, - For all other indices this parameter is to be ignored. */ -} OMX_VIDEO_PARAM_PROFILELEVELTYPE; - -/** - * Structure for dynamically configuring bitrate mode of a codec. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : Port that this struct applies to - * nEncodeBitrate : Target average bitrate to be generated in bps - */ -typedef struct OMX_VIDEO_CONFIG_BITRATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nEncodeBitrate; -} OMX_VIDEO_CONFIG_BITRATETYPE; - -/** - * Defines Encoder Frame Rate setting - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * xEncodeFramerate : Encoding framerate represented in Q16 format - */ -typedef struct OMX_CONFIG_FRAMERATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 xEncodeFramerate; /* Q16 format */ -} OMX_CONFIG_FRAMERATETYPE; - -typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL IntraRefreshVOP; -} OMX_CONFIG_INTRAREFRESHVOPTYPE; - -typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */ - OMX_U8 ErrMap[1]; /* Error map hint */ -} OMX_CONFIG_MACROBLOCKERRORMAPTYPE; - -typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnabled; -} OMX_CONFIG_MBERRORREPORTINGTYPE; - -typedef struct OMX_PARAM_MACROBLOCKSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nMacroblocks; -} OMX_PARAM_MACROBLOCKSTYPE; - -/** - * AVC Slice Mode modes - * - * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame - * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame - * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame - */ -typedef enum OMX_VIDEO_AVCSLICEMODETYPE { - OMX_VIDEO_SLICEMODE_AVCDefault = 0, - OMX_VIDEO_SLICEMODE_AVCMBSlice, - OMX_VIDEO_SLICEMODE_AVCByteSlice, - OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF -} OMX_VIDEO_AVCSLICEMODETYPE; - -/** - * AVC FMO Slice Mode Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nNumSliceGroups : Specifies the number of slice groups - * nSliceGroupMapType : Specifies the type of slice groups - * eSliceMode : Specifies the type of slice - */ -typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U8 nNumSliceGroups; - OMX_U8 nSliceGroupMapType; - OMX_VIDEO_AVCSLICEMODETYPE eSliceMode; -} OMX_VIDEO_PARAM_AVCSLICEFMO; - -/** - * AVC IDR Period Configs - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nIDRPeriod : Specifies periodicity of IDR frames - * nPFrames : Specifies internal of coding Intra frames - */ -typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIDRPeriod; - OMX_U32 nPFrames; -} OMX_VIDEO_CONFIG_AVCINTRAPERIOD; - -/** - * AVC NAL Size Configs - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nNaluBytes : Specifies the NAL unit size - */ -typedef struct OMX_VIDEO_CONFIG_NALSIZE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nNaluBytes; -} OMX_VIDEO_CONFIG_NALSIZE; - - -/** - * Deinterlace Config - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nEnable : Specifies to enable deinterlace - */ -typedef struct OMX_VIDEO_CONFIG_DEINTERLACE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nEnable; -} OMX_VIDEO_CONFIG_DEINTERLACE; - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff --git a/starpilot/ui/screenrecorder/openmax/include/OMX_VideoExt.h b/starpilot/ui/screenrecorder/openmax/include/OMX_VideoExt.h deleted file mode 100644 index 5bf6fd487..000000000 --- a/starpilot/ui/screenrecorder/openmax/include/OMX_VideoExt.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2010 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_VideoExt.h - OpenMax IL version 1.1.2 - * The OMX_VideoExt header file contains extensions to the - * definitions used by both the application and the component to - * access video items. - */ - -#ifndef OMX_VideoExt_h -#define OMX_VideoExt_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Each OMX header shall include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ -#include - -/** NALU Formats */ -typedef enum OMX_NALUFORMATSTYPE { - OMX_NaluFormatStartCodes = 1, - OMX_NaluFormatOneNaluPerBuffer = 2, - OMX_NaluFormatOneByteInterleaveLength = 4, - OMX_NaluFormatTwoByteInterleaveLength = 8, - OMX_NaluFormatFourByteInterleaveLength = 16, - OMX_NaluFormatCodingMax = 0x7FFFFFFF -} OMX_NALUFORMATSTYPE; - -/** NAL Stream Format */ -typedef struct OMX_NALSTREAMFORMATTYPE{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_NALUFORMATSTYPE eNaluFormat; -} OMX_NALSTREAMFORMATTYPE; - -/** VP8 profiles */ -typedef enum OMX_VIDEO_VP8PROFILETYPE { - OMX_VIDEO_VP8ProfileMain = 0x01, - OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF, - OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_VP8PROFILETYPE; - -/** VP8 levels */ -typedef enum OMX_VIDEO_VP8LEVELTYPE { - OMX_VIDEO_VP8Level_Version0 = 0x01, - OMX_VIDEO_VP8Level_Version1 = 0x02, - OMX_VIDEO_VP8Level_Version2 = 0x04, - OMX_VIDEO_VP8Level_Version3 = 0x08, - OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF, - OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF -} OMX_VIDEO_VP8LEVELTYPE; - -/** VP8 Param */ -typedef struct OMX_VIDEO_PARAM_VP8TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_VP8PROFILETYPE eProfile; - OMX_VIDEO_VP8LEVELTYPE eLevel; - OMX_U32 nDCTPartitions; - OMX_BOOL bErrorResilientMode; -} OMX_VIDEO_PARAM_VP8TYPE; - -/** Structure for configuring VP8 reference frames */ -typedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bPreviousFrameRefresh; - OMX_BOOL bGoldenFrameRefresh; - OMX_BOOL bAlternateFrameRefresh; - OMX_BOOL bUsePreviousFrame; - OMX_BOOL bUseGoldenFrame; - OMX_BOOL bUseAlternateFrame; -} OMX_VIDEO_VP8REFERENCEFRAMETYPE; - -/** Structure for querying VP8 reference frame type */ -typedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bIsIntraFrame; - OMX_BOOL bIsGoldenOrAlternateFrame; -} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE; - -/** HEVC Profiles */ -typedef enum OMX_VIDEO_HEVCPROFILETYPE { - OMX_VIDEO_HEVCProfileMain = 0x01, - OMX_VIDEO_HEVCProfileMain10 = 0x02, - OMX_VIDEO_HEVCProfileUnknown = 0x6EFFFFFF, - OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF -} OMX_VIDEO_HEVCPROFILETYPE; - -/** HEVC levels */ -typedef enum OMX_VIDEO_HEVCLEVELTYPE { - OMX_VIDEO_HEVCLevel_Version0 = 0x0, - OMX_VIDEO_HEVCMainTierLevel1 = 0x1, - OMX_VIDEO_HEVCHighTierLevel1 = 0x2, - OMX_VIDEO_HEVCMainTierLevel2 = 0x4, - OMX_VIDEO_HEVCHighTierLevel2 = 0x8, - OMX_VIDEO_HEVCMainTierLevel21 = 0x10, - OMX_VIDEO_HEVCHighTierLevel21 = 0x20, - OMX_VIDEO_HEVCMainTierLevel3 = 0x40, - OMX_VIDEO_HEVCHighTierLevel3 = 0x80, - OMX_VIDEO_HEVCMainTierLevel31 = 0x100, - OMX_VIDEO_HEVCHighTierLevel31 = 0x200, - OMX_VIDEO_HEVCMainTierLevel4 = 0x400, - OMX_VIDEO_HEVCHighTierLevel4 = 0x800, - OMX_VIDEO_HEVCMainTierLevel41 = 0x1000, - OMX_VIDEO_HEVCHighTierLevel41 = 0x2000, - OMX_VIDEO_HEVCMainTierLevel5 = 0x4000, - OMX_VIDEO_HEVCHighTierLevel5 = 0x8000, - OMX_VIDEO_HEVCMainTierLevel51 = 0x10000, - OMX_VIDEO_HEVCHighTierLevel51 = 0x20000, - OMX_VIDEO_HEVCMainTierLevel52 = 0x40000, - OMX_VIDEO_HEVCHighTierLevel52 = 0x80000, - OMX_VIDEO_HEVCMainTierLevel6 = 0x100000, - OMX_VIDEO_HEVCHighTierLevel6 = 0x200000, - OMX_VIDEO_HEVCMainTierLevel61 = 0x400000, - OMX_VIDEO_HEVCHighTierLevel61 = 0x800000, - OMX_VIDEO_HEVCMainTierLevel62 = 0x1000000, - OMX_VIDEO_HEVCLevelUnknown = 0x6EFFFFFF, - OMX_VIDEO_HEVCLevelMax = 0x7FFFFFFF -} OMX_VIDEO_HEVCLEVELTYPE; - -/** HEVC Param */ -typedef struct OMX_VIDEO_PARAM_HEVCTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_HEVCPROFILETYPE eProfile; - OMX_VIDEO_HEVCLEVELTYPE eLevel; -} OMX_VIDEO_PARAM_HEVCTYPE; - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* OMX_VideoExt_h */ -/* File EOF */ diff --git a/starpilot/ui/screenrecorder/screenrecorder.cc b/starpilot/ui/screenrecorder/screenrecorder.cc deleted file mode 100644 index 5a47698c9..000000000 --- a/starpilot/ui/screenrecorder/screenrecorder.cc +++ /dev/null @@ -1,151 +0,0 @@ -#include "libyuv.h" - -#include "selfdrive/ui/qt/util.h" - -#include "starpilot/ui/screenrecorder/screenrecorder.h" - -constexpr int BITRATE = 8 * 1024 * 1024; -constexpr int MAX_DURATION = 1000 * 60 * 5; -constexpr int SCREEN_WIDTH = 2160; -constexpr int SCREEN_HEIGHT = 1080; - -const QDir RECORDINGS_FOLDER("/data/media/screen_recordings"); - -ScreenRecorder::ScreenRecorder(QWidget *parent) : QPushButton(parent) { - setFixedSize(btn_size, btn_size); - - rootWidget = topWidget(this); - - QObject::connect(this, &QPushButton::clicked, this, &ScreenRecorder::toggleRecording); - QObject::connect(uiState(), &UIState::offroadTransition, this, &ScreenRecorder::stopRecording); - QObject::connect(uiState(), &UIState::uiUpdate, this, &ScreenRecorder::updateState); -} - -void ScreenRecorder::updateState() { - if (!recording) { - return; - } - - if (QDateTime::currentMSecsSinceEpoch() - startedTime > MAX_DURATION) { - stopRecording(); - startRecording(); - return; - } - - if (captureBuffer.size() != QSize(SCREEN_WIDTH, SCREEN_HEIGHT)) { - captureBuffer = QImage(SCREEN_WIDTH, SCREEN_HEIGHT, QImage::Format_RGBA8888); - } - - QPainter p(&captureBuffer); - rootWidget->render(&p); - p.end(); - - imageQueue.push(QImage(captureBuffer)); -} - -void ScreenRecorder::toggleRecording() { - recording ? stopRecording() : startRecording(); -} - -void ScreenRecorder::startRecording() { - encoder = std::make_unique( - RECORDINGS_FOLDER.path().toStdString().c_str(), - SCREEN_WIDTH, - SCREEN_HEIGHT, - UI_FREQ, - BITRATE - ); - encoder->encoder_open((QDateTime::currentDateTime().toString("yyyy-MM-dd_HH-mm-ss").toStdString() + ".mp4").c_str()); - - if (!encoder->is_open) { - encoder.reset(); - return; - } - - recording = true; - - startedTime = QDateTime::currentMSecsSinceEpoch(); - - imageQueue.clear(); - - encodingThread = std::thread(&ScreenRecorder::encodeImage, this); - - update(); -} - -void ScreenRecorder::stopRecording() { - if (!recording) { - return; - } - - recording = false; - - if (encodingThread.joinable()) { - encodingThread.join(); - } - - if (encoder) { - encoder->encoder_close(); - encoder.reset(); - } - - update(); -} - -void ScreenRecorder::encodeImage() { - while (recording) { - QImage image; - if (imageQueue.pop_wait_for(image, std::chrono::milliseconds(1000))) { - uint64_t currentTimestamp = nanos_since_boot(); - - if (image.format() != QImage::Format_RGBA8888) { - image = image.convertToFormat(QImage::Format_RGBA8888); - } - - const uint8_t *bits = image.constBits(); - if (bits) { - encoder->encode_frame_rgba(bits, SCREEN_WIDTH, SCREEN_HEIGHT, currentTimestamp); - } - } - } -} - -void ScreenRecorder::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); - - if (recording) { - qint64 elapsed = QDateTime::currentMSecsSinceEpoch() - startedTime; - - qreal phase = (elapsed % 2000) / 2000.0 * 2 * M_PI; - qreal alphaFactor = 0.5 + 0.5 * sin(phase); - - QColor glowColor = redColor(); - glowColor.setAlphaF(0.3 + 0.7 * alphaFactor); - - int glowWidth = 8 + static_cast(2 * alphaFactor); - - p.setBrush(blackColor(166)); - p.setFont(InterFont(25, QFont::Bold)); - p.setPen(QPen(glowColor, glowWidth)); - } else { - p.setBrush(blackColor(166)); - p.setFont(InterFont(25, QFont::DemiBold)); - p.setPen(QPen(redColor(), 8)); - } - - int centeringOffset = 10; - - QRect buttonRect(centeringOffset, btn_size / 3, btn_size - centeringOffset * 2, btn_size / 3); - p.drawRoundedRect(buttonRect, 24, 24); - - QRect textRect = buttonRect.adjusted(centeringOffset, 0, -centeringOffset, 0); - p.setPen(QPen(whiteColor(), 6)); - p.drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, recording ? tr("RECORDING") : tr("RECORD")); - - if (!recording) { - p.setBrush(redColor(166)); - p.setPen(Qt::NoPen); - p.drawEllipse(QPoint(buttonRect.right() - btn_size / 10 - centeringOffset, buttonRect.center().y()), btn_size / 10, btn_size / 10); - } -} diff --git a/starpilot/ui/screenrecorder/screenrecorder.h b/starpilot/ui/screenrecorder/screenrecorder.h deleted file mode 100644 index f7b49351b..000000000 --- a/starpilot/ui/screenrecorder/screenrecorder.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include "omx_encoder.h" -#include "blocking_queue.h" - -#include "selfdrive/ui/qt/onroad/buttons.h" - -class ScreenRecorder : public QPushButton { - Q_OBJECT - -public: - explicit ScreenRecorder(QWidget *parent = nullptr); - - void startRecording(); - void stopRecording(); - -protected: - void paintEvent(QPaintEvent *event) override; - -private slots: - void toggleRecording(); - -private: - void encodeImage(); - void updateState(); - - bool recording; - - qint64 startedTime; - - std::thread encodingThread; - - std::unique_ptr encoder; - - BlockingQueue imageQueue{UI_FREQ}; - - QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } - QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } - QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } - - QImage captureBuffer; - - QWidget *rootWidget; -}; diff --git a/starpilot/ui/starpilot_ui.cc b/starpilot/ui/starpilot_ui.cc deleted file mode 100644 index 643c8ed0c..000000000 --- a/starpilot/ui/starpilot_ui.cc +++ /dev/null @@ -1,124 +0,0 @@ -#include "starpilot/ui/starpilot_ui.h" - -#include -#include - -#include -#include - -#include "system/hardware/hw.h" - -static void update_state(StarPilotUIState *fs) { - StarPilotUIScene &starpilot_scene = fs->starpilot_scene; - - SubMaster &fpsm = *(fs->sm); - fpsm.update(0); - - const char *desktop_fake_wifi_env = std::getenv("SP_ALLOW_DESKTOP_FAKE_WIFI"); - const bool desktop_force_online = Hardware::PC() && desktop_fake_wifi_env != nullptr && std::string(desktop_fake_wifi_env) != "0"; - if (desktop_force_online) { - starpilot_scene.online = true; - } - - if (fpsm.updated("deviceState")) { - const cereal::DeviceState::Reader &deviceState = fpsm["deviceState"].getDeviceState(); - if (!desktop_force_online) { - starpilot_scene.online = deviceState.getNetworkType() != cereal::DeviceState::NetworkType::NONE; - } - } - starpilot_scene.switchback_mode_enabled = fs->params_memory.getBool("SwitchbackModeEnabled"); - - if (fpsm.updated("starpilotCarState")) { - const cereal::StarPilotCarState::Reader &starpilotCarState = fpsm["starpilotCarState"].getStarpilotCarState(); - starpilot_scene.always_on_lateral_active = !starpilot_scene.enabled && starpilotCarState.getAlwaysOnLateralEnabled(); - starpilot_scene.traffic_mode_enabled = starpilotCarState.getTrafficModeEnabled(); - } - if (fpsm.updated("starpilotPlan")) { - const cereal::StarPilotPlan::Reader &starpilotPlan = fpsm["starpilotPlan"].getStarpilotPlan(); - if (starpilotPlan.getThemeUpdated()) { - emit fs->themeUpdated(); - } - capnp::Text::Reader toggles = starpilotPlan.getStarpilotToggles(); - QByteArray current_toggles(toggles.cStr(), toggles.size()); - // starpilot_process only broadcasts the full toggles JSON periodically and - // sends an empty string on every other frame. Skip the empty broadcasts so - // we don't parse "" (QJsonParseError "illegal value") every frame. - if (!current_toggles.trimmed().isEmpty()) { - static QByteArray previous_toggles; - if (previous_toggles != current_toggles) { - QJsonParseError parse_error; - QJsonDocument toggles_doc = QJsonDocument::fromJson(current_toggles, &parse_error); - if (parse_error.error == QJsonParseError::NoError && toggles_doc.isObject()) { - QJsonObject updated_toggles = starpilot_scene.starpilot_toggles; - const QJsonObject parsed_toggles = toggles_doc.object(); - for (auto it = parsed_toggles.begin(); it != parsed_toggles.end(); ++it) { - updated_toggles.insert(it.key(), it.value()); - } - starpilot_scene.starpilot_toggles = updated_toggles; - } else { - qWarning() << "Ignoring invalid StarPilot toggles JSON:" << parse_error.errorString(); - } - previous_toggles = current_toggles; - } - } - } - - // Keep force drive-state toggles authoritative from params so UI state - // switches immediately even if starpilotPlan is delayed. - starpilot_scene.starpilot_toggles["force_offroad"] = fs->params.getBool("ForceOffroad"); - starpilot_scene.starpilot_toggles["force_onroad"] = fs->params.getBool("ForceOnroad"); - - if (fpsm.updated("selfdriveState")) { - const cereal::SelfdriveState::Reader &selfdriveState = fpsm["selfdriveState"].getSelfdriveState(); - starpilot_scene.enabled = selfdriveState.getEnabled(); - } -} - -StarPilotUIState::StarPilotUIState(QObject *parent) : QObject(parent) { - sm = std::make_unique>({ - "carControl", "deviceState", "starpilotCarState", "starpilotDeviceState", - "starpilotPlan", "starpilotRadarState", "starpilotSelfdriveState", "liveDelay", - "liveParameters", "liveTorqueParameters", "liveTracks", "mapdExtendedOut", "mapdOut", "selfdriveState" - }); - - // Provide sane local defaults until starpilotPlan publishes real toggles. - starpilot_scene.starpilot_toggles = { - {"debug_mode", false}, - {"driver_camera_in_reverse", false}, - {"force_offroad", false}, - {"force_onroad", false}, - {"screen_brightness", 101}, - {"screen_brightness_onroad", 101}, - {"screen_timeout", 30}, - {"screen_timeout_onroad", 10}, - {"sidebar_color1", "#FFFFFFFF"}, - {"sidebar_color2", "#FFFFFFFF"}, - {"sidebar_color3", "#FFFFFFFF"}, - {"simple_mode", false}, - {"standby_mode", false}, - {"tethering_config", 0}, - }; - - wifi = new WifiManager(this); - - if (params.getInt("TetheringEnabled") == 1) { - wifi->setTetheringEnabled(true); - } -} - -StarPilotUIState *starpilotUIState() { - static StarPilotUIState starpilot_ui_state; - return &starpilot_ui_state; -} - -void StarPilotUIState::update() { - update_state(this); - - if (starpilot_scene.enabled && starpilot_scene.starpilot_toggles.value("conditional_chill_mode").toBool() && - !starpilot_scene.starpilot_toggles.value("conditional_experimental_mode").toBool()) { - starpilot_scene.conditional_status = params_memory.getInt("CCStatus"); - } else { - starpilot_scene.conditional_status = starpilot_scene.enabled ? params_memory.getInt("CEStatus") : 0; - } - starpilot_scene.driver_camera_timer = starpilot_scene.reverse && starpilot_scene.starpilot_toggles.value("driver_camera_in_reverse").toBool() ? starpilot_scene.driver_camera_timer + 1 : 0; -} diff --git a/starpilot/ui/starpilot_ui.h b/starpilot/ui/starpilot_ui.h deleted file mode 100644 index e31626055..000000000 --- a/starpilot/ui/starpilot_ui.h +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once - -#include "cereal/messaging/messaging.h" -#include "selfdrive/ui/qt/network/wifi_manager.h" - -#include "starpilot/ui/qt/widgets/starpilot_controls.h" - -struct StarPilotUIScene { - bool always_on_lateral_active; - bool downloading_update; - bool enabled; - bool starpilot_panel_active; - bool online; - bool parked; - bool reverse; - bool sidebars_open; - bool standstill; - bool switchback_mode_enabled; - bool traffic_mode_enabled; - bool wake_up_screen; - - int conditional_status; - int driver_camera_timer; - int started_timer; - - QJsonObject starpilot_toggles; -}; - -class StarPilotUIState : public QObject { - Q_OBJECT - -public: - explicit StarPilotUIState(QObject *parent = nullptr); - - void update(); - - std::unique_ptr sm; - - StarPilotUIScene starpilot_scene; - - Params params; - Params params_memory{"", true}; - - WifiManager *wifi; - -signals: - void themeUpdated(); -}; - -StarPilotUIState *starpilotUIState(); diff --git a/system/manager/launch_param_migrations.py b/system/manager/launch_param_migrations.py index 888cb2384..5504a4d8f 100644 --- a/system/manager/launch_param_migrations.py +++ b/system/manager/launch_param_migrations.py @@ -10,7 +10,7 @@ LONG_PITCH_KEY = "LongPitch" LANE_CHANGE_SMOOTHING_KEY = "LaneChangeSmoothing" STEER_KP_KEY = "SteerKP" STEER_KP_STOCK_KEY = "SteerKPStock" -USE_OLD_UI_KEY = "UseOldUI" +LEGACY_UI_SELECTION_KEYS = ("UseOldUI", "TryRaylibUI") VISION_SPEED_LIMIT_DETECTION_KEY = "VisionSpeedLimitDetection" DEVELOPER_METRIC_DISPLAY_KEYS = ( "FPSCounter", @@ -25,12 +25,12 @@ CAMERA_VIEW_KEY = "CameraView" DEFAULT_STEER_KP = 0.6 LEGACY_STEER_KP = 0.7 -QT_STEER_KP_PLACEHOLDER = 1.0 +LEGACY_STEER_KP_STOCK_PLACEHOLDER = 1.0 LAUNCH_PARAM_MIGRATION_MARKER = ".starpilot_launch_param_migrations_v2" BRANCH_DEFAULTS_MIGRATION_MARKER = ".starpilot_branch_defaults_migrations_v1" ACCELERATION_PROFILE_MIGRATION_MARKER = ".starpilot_acceleration_profile_default_v1" -USE_OLD_UI_MIGRATION_MARKER = ".starpilot_use_old_ui_migration_v2" +LEGACY_UI_SELECTION_MIGRATION_MARKER = ".starpilot_remove_legacy_ui_selection_v1" LATERAL_METHOD_REBRAND_MIGRATION_MARKER = ".starpilot_lateral_method_rebrand_v1" VISION_SPEED_LIMIT_DETECTION_MIGRATION_MARKER = ".starpilot_vision_speed_limit_detection_v1" DEVELOPER_METRIC_DISPLAY_MIGRATION_MARKER = ".starpilot_developer_metric_display_off_v1" @@ -113,8 +113,8 @@ def _acceleration_profile_marker_path(params: ParamsLike) -> Path: return _marker_dir_path(params) / ACCELERATION_PROFILE_MIGRATION_MARKER -def _use_old_ui_marker_path(params: ParamsLike) -> Path: - return _marker_dir_path(params) / USE_OLD_UI_MIGRATION_MARKER +def _legacy_ui_selection_marker_path(params: ParamsLike) -> Path: + return _marker_dir_path(params) / LEGACY_UI_SELECTION_MIGRATION_MARKER def _lateral_method_rebrand_marker_path(params: ParamsLike) -> Path: @@ -184,7 +184,7 @@ def _apply_legacy_launch_param_migrations(params: ParamsLike, marker: Path) -> N steer_kp_stock = params.get_float(STEER_KP_STOCK_KEY) if (_approx_equal(steer_kp_stock, 0.0) or _approx_equal(steer_kp_stock, LEGACY_STEER_KP) or - _approx_equal(steer_kp_stock, QT_STEER_KP_PLACEHOLDER)): + _approx_equal(steer_kp_stock, LEGACY_STEER_KP_STOCK_PLACEHOLDER)): params.put_float(STEER_KP_STOCK_KEY, DEFAULT_STEER_KP) # Initialize UsePrebuilt to True if never explicitly set, so the UI default @@ -225,13 +225,14 @@ def _apply_acceleration_profile_default_migration(params: ParamsLike, marker: Pa marker.touch() -def _apply_use_old_ui_migration(params: ParamsLike, marker: Path) -> None: +def _remove_legacy_ui_selection(params: ParamsLike, marker: Path) -> None: if marker.exists(): return marker.parent.mkdir(parents=True, exist_ok=True) - params.put_bool(USE_OLD_UI_KEY, False) + for key in LEGACY_UI_SELECTION_KEYS: + Path(params.get_param_path(key)).unlink(missing_ok=True) marker.touch() @@ -333,7 +334,7 @@ def _apply_camera_view_default_migration(params: ParamsLike, marker: Path) -> No def apply_launch_param_migrations(params: ParamsLike, marker_path: Path | None = None, branch_defaults_marker_path: Path | None = None, acceleration_profile_marker_path: Path | None = None, - use_old_ui_marker_path: Path | None = None, + legacy_ui_selection_marker_path: Path | None = None, lateral_method_rebrand_marker_path: Path | None = None, vision_speed_limit_detection_marker_path: Path | None = None, developer_metric_display_marker_path: Path | None = None, @@ -348,7 +349,9 @@ def apply_launch_param_migrations(params: ParamsLike, marker_path: Path | None = _apply_acceleration_profile_default_migration( params, acceleration_profile_marker_path or _acceleration_profile_marker_path(params) ) - _apply_use_old_ui_migration(params, use_old_ui_marker_path or _use_old_ui_marker_path(params)) + _remove_legacy_ui_selection( + params, legacy_ui_selection_marker_path or _legacy_ui_selection_marker_path(params) + ) _apply_lateral_method_rebrand_migration( params, lateral_method_rebrand_marker_path or _lateral_method_rebrand_marker_path(params) ) diff --git a/system/manager/process_config.py b/system/manager/process_config.py index 115fe9277..6d55e9f2f 100644 --- a/system/manager/process_config.py +++ b/system/manager/process_config.py @@ -105,83 +105,14 @@ def run_v_asm(started: bool, params: Params, CP: car.CarParams, starpilot_toggle return started and getattr(starpilot_toggles, "v_asm_enabled", False) -class BigDeviceUIProcess: - name = "ui" - enabled = True - sigkill = False - daemon = False - - def __init__(self, should_run, watchdog_max_dt=None): - self.should_run_fn = should_run - self.watchdog_max_dt = watchdog_max_dt - self._started = False - self._params = None - self._active_process = None - self._qt_process = NativeProcess("ui", "selfdrive/ui", ["./ui"], should_run, watchdog_max_dt=watchdog_max_dt) - self._raylib_process = NativeProcess( - "ui", - ".", - ["/usr/bin/env", "BIG=1", sys.executable, "-m", "openpilot.selfdrive.ui.ui"], - should_run, - watchdog_max_dt=watchdog_max_dt, - ) - - @property - def proc(self): - return self._active_process.proc if self._active_process is not None else None - - @property - def shutting_down(self): - return self._active_process.shutting_down if self._active_process is not None else False - - def prepare(self) -> None: - self._qt_process.prepare() - - def should_run(self, started: bool, params: Params, CP: car.CarParams, starpilot_toggles: SimpleNamespace) -> bool: - self._started = started - self._params = params - return self.should_run_fn(started, params, CP, starpilot_toggles) - - def _desired_process(self): - return self._qt_process if self._params is not None and self._params.get_bool("UseOldUI") else self._raylib_process - - def start(self) -> None: - desired_process = self._desired_process() - - # Never swap UI implementations mid-drive. Direct param writes while onroad - # take effect the next time the device is offroad. - if self._started and self._active_process is not None and self._active_process is not desired_process: - desired_process = self._active_process - - if self._active_process is not None and self._active_process is not desired_process: - self._active_process.stop() - - for process in (self._qt_process, self._raylib_process): - if process is not desired_process and process.proc is not None: - process.stop() - - self._active_process = desired_process - self._active_process.start() - - def stop(self, retry: bool = True, block: bool = True, sig=None): - ret = None - for process in (self._qt_process, self._raylib_process): - process_ret = process.stop(retry=retry, block=block, sig=sig) - if process is self._active_process: - ret = process_ret - return ret - - def restart(self) -> None: - self.stop() - self.start() - - def check_watchdog(self, started: bool) -> None: - if self._active_process is not None: - self._active_process.check_watchdog(started) - - def get_process_state_msg(self): - process = self._active_process or self._qt_process - return process.get_process_state_msg() +def big_device_ui_process() -> NativeProcess: + return NativeProcess( + "ui", + ".", + ["/usr/bin/env", "BIG=1", sys.executable, "-m", "openpilot.selfdrive.ui.ui"], + always_run, + watchdog_max_dt=UI_WATCHDOG_MAX_DT, + ) procs = [ @@ -247,9 +178,8 @@ procs += [ device_type = HARDWARE.get_device_type() if device_type in ("tici", "tizi"): - procs.append(BigDeviceUIProcess(always_run, watchdog_max_dt=UI_WATCHDOG_MAX_DT)) + procs.append(big_device_ui_process()) else: - # C4 (mici) already runs the Python raylib UI path; UseOldUI must not affect it. procs.append(PythonProcess("ui", "selfdrive.ui.ui", always_run, watchdog_max_dt=UI_WATCHDOG_MAX_DT)) procs += [ diff --git a/system/manager/test/test_launch_param_migrations.py b/system/manager/test/test_launch_param_migrations.py index f2579565f..45205715e 100644 --- a/system/manager/test/test_launch_param_migrations.py +++ b/system/manager/test/test_launch_param_migrations.py @@ -16,7 +16,7 @@ from openpilot.system.manager.launch_param_migrations import ( MARKER_DIRNAME, STANDARD_ACCELERATION_PROFILE, SPEED_LIMIT_VISIBILITY_MIGRATION_MARKER, - USE_OLD_UI_MIGRATION_MARKER, + LEGACY_UI_SELECTION_MIGRATION_MARKER, VISION_SPEED_LIMIT_DETECTION_MIGRATION_MARKER, apply_launch_param_migrations, ) @@ -297,33 +297,28 @@ def test_apply_launch_param_migrations_preserves_custom_acceleration_profile_wit assert params.get_int("AccelerationProfile") == 1 -def test_apply_launch_param_migrations_defaults_old_ui_off_from_try_raylib_enabled(tmp_path): - params = FileBackedFakeParams(tmp_path / "params") - params.put_bool("TryRaylibUI", True) - - apply_launch_param_migrations(params) - - assert not params.get_bool("UseOldUI") - assert marker_path(tmp_path, USE_OLD_UI_MIGRATION_MARKER).is_file() - - -def test_apply_launch_param_migrations_defaults_old_ui_off_from_try_raylib_disabled(tmp_path): +def test_apply_launch_param_migrations_removes_legacy_ui_selection(tmp_path): params = FileBackedFakeParams(tmp_path / "params") + params.put_bool("UseOldUI", True) params.put_bool("TryRaylibUI", False) apply_launch_param_migrations(params) - assert not params.get_bool("UseOldUI") - assert marker_path(tmp_path, USE_OLD_UI_MIGRATION_MARKER).is_file() + assert not Path(params.get_param_path("UseOldUI")).exists() + assert not Path(params.get_param_path("TryRaylibUI")).exists() + assert marker_path(tmp_path, LEGACY_UI_SELECTION_MIGRATION_MARKER).is_file() -def test_apply_launch_param_migrations_resets_existing_use_old_ui(tmp_path): +def test_apply_launch_param_migrations_removes_legacy_ui_selection_once(tmp_path): params = FileBackedFakeParams(tmp_path / "params") - params.put_bool("UseOldUI", True) + marker = marker_path(tmp_path, LEGACY_UI_SELECTION_MIGRATION_MARKER) + apply_launch_param_migrations(params) + params.put_bool("UseOldUI", True) + marker.touch() apply_launch_param_migrations(params) - assert not params.get_bool("UseOldUI") + assert Path(params.get_param_path("UseOldUI")).exists() def test_apply_launch_param_migrations_preserves_active_lateral_method_trial(tmp_path): diff --git a/system/manager/test/test_manager.py b/system/manager/test/test_manager.py index 14f491ed0..2ad3eded5 100644 --- a/system/manager/test/test_manager.py +++ b/system/manager/test/test_manager.py @@ -4,13 +4,12 @@ import signal import time from pathlib import Path import json -from types import SimpleNamespace from cereal import car from openpilot.common.params import Params import openpilot.system.manager.manager as manager from openpilot.system.manager.process import ensure_running -from openpilot.system.manager.process_config import BigDeviceUIProcess, managed_processes, procs +from openpilot.system.manager.process_config import big_device_ui_process, managed_processes, procs from openpilot.system.hardware import HARDWARE os.environ['FAKEUPLOAD'] = "1" @@ -206,40 +205,6 @@ def test_offroad_cleanup_does_not_remove_destination_replaced_after_snapshot(tmp assert "NavDestination" not in params.removed -class FakeManagedProcess: - def __init__(self): - self.proc = None - self.shutting_down = False - self.starts = 0 - self.stops = 0 - - def prepare(self): - pass - - def start(self): - if self.proc is not None: - return - - self.starts += 1 - self.shutting_down = False - self.proc = SimpleNamespace(exitcode=None, pid=self.starts, is_alive=lambda: True) - - def stop(self, retry=True, block=True, sig=None): - if self.proc is None: - return None - - self.stops += 1 - self.shutting_down = False - self.proc = None - return 0 - - def check_watchdog(self, started): - pass - - def get_process_state_msg(self): - return SimpleNamespace(name="ui") - - def test_reboot_guard_only_defers_automatic_requests(): assert manager.should_defer_reboot("DoReboot", started=True, ignition=False) assert manager.should_defer_reboot("DoReboot", started=False, ignition=True) @@ -247,6 +212,14 @@ def test_reboot_guard_only_defers_automatic_requests(): assert not manager.should_defer_reboot("DoUserReboot", started=True, ignition=True) +def test_big_device_ui_process_always_launches_c3_ui(): + ui_process = big_device_ui_process() + + assert ui_process.cwd == "." + assert ui_process.cmdline[0:2] == ["/usr/bin/env", "BIG=1"] + assert ui_process.cmdline[-2:] == ["-m", "openpilot.selfdrive.ui.ui"] + + class TestManager: @pytest.fixture(autouse=True) def isolate_boot_backup(self, monkeypatch): @@ -276,34 +249,6 @@ class TestManager: assert names.index("the_galaxy") < ui_idx assert names.index("galaxy") < ui_idx - def test_big_device_ui_process_swaps_offroad_only(self, tmp_path): - ui_process = BigDeviceUIProcess(lambda *args: True) - qt_process = FakeManagedProcess() - raylib_process = FakeManagedProcess() - ui_process._qt_process = qt_process - ui_process._raylib_process = raylib_process - - params = FileBackedFakeParams(tmp_path / "params", {"UseOldUI": False}) - - assert ui_process.should_run(False, params, car.CarParams.new_message(), SimpleNamespace()) - ui_process.start() - assert ui_process.proc is raylib_process.proc - assert qt_process.starts == 0 - assert raylib_process.starts == 1 - - params.put_bool("UseOldUI", True) - assert ui_process.should_run(True, params, car.CarParams.new_message(), SimpleNamespace()) - ui_process.start() - assert ui_process.proc is raylib_process.proc - assert qt_process.stops == 0 - assert qt_process.starts == 0 - - assert ui_process.should_run(False, params, car.CarParams.new_message(), SimpleNamespace()) - ui_process.start() - assert raylib_process.stops == 1 - assert qt_process.starts == 1 - assert ui_process.proc is qt_process.proc - def test_blacklisted_procs(self): # TODO: ensure there are blacklisted procs until we have a dedicated test assert len(BLACKLIST_PROCS), "No blacklisted procs to test not_run" diff --git a/system/ui/README.md b/system/ui/README.md index 3c42622ad..15594930d 100644 --- a/system/ui/README.md +++ b/system/ui/README.md @@ -21,5 +21,5 @@ Quick start: Style guide: * All graphical elements should subclass [`Widget`](/system/ui/widgets/__init__.py). - * Prefer a stateful widget over a function for easy migration from QT + * Prefer a stateful widget over a function when it simplifies lifecycle management * All internal class variables and functions should be prefixed with `_` diff --git a/system/ui/lib/application.py b/system/ui/lib/application.py index 60d66fd47..cacc59869 100644 --- a/system/ui/lib/application.py +++ b/system/ui/lib/application.py @@ -141,7 +141,7 @@ void main() { DEFAULT_TEXT_SIZE = 60 DEFAULT_TEXT_COLOR = rl.Color(255, 255, 255, int(255 * 0.9)) -# Qt draws fonts accounting for ascent/descent differently, so compensate to match old styles +# Compensate for ascent/descent so migrated layouts keep their established alignment. # The real scales for the fonts below range from 1.212 to 1.266 FONT_SCALE = 1.242 if BIG_UI else 1.16 @@ -624,7 +624,7 @@ class GuiApplication: self._render_texture_width = max(1, int(round(self._scaled_width * self._pixel_scale_x))) self._render_texture_height = max(1, int(round(self._scaled_height * self._pixel_scale_y))) - # Keep raybig burn-in movement in final-frame composition. Translating the live EGL + # Keep big-UI burn-in movement in final-frame composition. Translating the live EGL # camera/widget pass can corrupt the camera presentation instead of shifting the UI. needs_render_texture = ((self._scale != 1.0 and not PC) or BURN_IN_MODE or RECORD or MICI_FORCE_RENDER_TEXTURE or @@ -1199,7 +1199,7 @@ class GuiApplication: rl.gui_set_style(rl.GuiControl.DEFAULT, rl.GuiControlProperty.BASE_COLOR_NORMAL, rl.color_to_int(rl.Color(50, 50, 50, 255))) def _patch_text_functions(self): - # Wrap pyray text APIs to apply a global text size scale so our px sizes match Qt + # Wrap pyray text APIs to apply a global text size scale. if not hasattr(rl, "_orig_draw_text_ex"): rl._orig_draw_text_ex = rl.draw_text_ex diff --git a/system/ui/widgets/__init__.py b/system/ui/widgets/__init__.py index 17e1aac1c..c3a8b8f82 100644 --- a/system/ui/widgets/__init__.py +++ b/system/ui/widgets/__init__.py @@ -57,7 +57,7 @@ class Widget(abc.ABC): self._update_layout_rects() def set_parent_rect(self, parent_rect: rl.Rectangle) -> None: - """Can be used like size hint in QT""" + """Return the widget's preferred dimensions.""" self._parent_rect = parent_rect @property diff --git a/system/ui/widgets/html_render.py b/system/ui/widgets/html_render.py index 77fca9fe3..6a794ea57 100644 --- a/system/ui/widgets/html_render.py +++ b/system/ui/widgets/html_render.py @@ -52,7 +52,7 @@ class HtmlElement: font_weight: FontWeight margin_top: int margin_bottom: int - line_height: float = 0.9 # matches Qt visually, unsure why not default 1.2 + line_height: float = 0.9 indent_level: int = 0 @@ -72,7 +72,7 @@ class HtmlRenderer(Widget): self._cached_height: float | None = None self._cached_width: int = -1 - # Base paragraph size (Qt stylesheet default is 48px in offroad alerts) + # Base paragraph size for offroad alerts. base_p_size = int(text_size.get(ElementType.P, 48)) # Untagged text defaults to

    diff --git a/tools/CTF.md b/tools/CTF.md index 32891cd38..167f9eaad 100644 --- a/tools/CTF.md +++ b/tools/CTF.md @@ -15,6 +15,6 @@ getting started cd tools/replay ./replay '0c7f0c7f0c7f0c7f|2021-10-13--13-00-00' --dcam --ecam -# start the UI in another terminal -selfdrive/ui/ui +# start the C3 UI in another terminal +./c3 ``` diff --git a/tools/README.md b/tools/README.md index cdd5b3030..60f582ab6 100644 --- a/tools/README.md +++ b/tools/README.md @@ -41,7 +41,7 @@ scons -u -j$(nproc) Follow [these instructions](https://docs.microsoft.com/en-us/windows/wsl/install) to setup the WSL and install the `Ubuntu-24.04` distribution. Once your Ubuntu WSL environment is setup, follow the Linux setup instructions to finish setting up your environment. See [these instructions](https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps) for running GUI apps. -**NOTE**: If you are running WSL and any GUIs are failing (segfaulting or other strange issues) even after following the steps above, you may need to enable software rendering with `LIBGL_ALWAYS_SOFTWARE=1`, e.g. `LIBGL_ALWAYS_SOFTWARE=1 selfdrive/ui/ui`. +**NOTE**: If you are running WSL and any GUIs are failing (segfaulting or other strange issues) even after following the steps above, you may need to enable software rendering with `LIBGL_ALWAYS_SOFTWARE=1`, e.g. `LIBGL_ALWAYS_SOFTWARE=1 ./c3`. ## CTF Learn about the openpilot ecosystem and tools by playing our [CTF](/tools/CTF.md). diff --git a/tools/STARPILOT_DEVELOPMENT.md b/tools/STARPILOT_DEVELOPMENT.md index 1b57bddd2..b34d3cd09 100644 --- a/tools/STARPILOT_DEVELOPMENT.md +++ b/tools/STARPILOT_DEVELOPMENT.md @@ -3,7 +3,7 @@ This branch uses a split development flow: - `./build` keeps producing device-target (`larch64`) artifacts for comma runtime compatibility. -- `./dev`, `./tool`, `./tools/host`, `./c3`, `./c4`, and `./raybig` use an isolated host cache under `.host_runtime/` for native macOS/Linux tooling. +- `./dev`, `./tool`, `./tools/host`, `./c3`, and `./c4` use an isolated host cache under `.host_runtime/` for native macOS/Linux tooling. The goal is simple: keep the device build intact, keep host tools consistent with runtime behavior, and stop polluting the repo with host-only `.so`, `.o`, and desktop UI artifacts. @@ -14,7 +14,6 @@ The goal is simple: keep the device build intact, keep host tools consistent wit - Run `tools/install_python_dependencies.sh` - Have `uv` available in your shell - For device-target builds, install Docker Desktop or Podman with Linux/aarch64 support -- For macOS Qt UI (`./c3`), install the Qt 5/Homebrew dependencies already expected by the repo ## One-time device build setup @@ -75,7 +74,7 @@ All three entrypoints do the same thing. `./dev` is the shortest general-purpose ### Available host commands - `./dev replay [args...]` -- `./onroad [jobs] (--c3 | --c4 | --raybig | --all | --replay-only) ` +- `./onroad [jobs] (--c3 | --c4 | --all | --replay-only) ` - `./dev cabana [args...]` - `./dev plotjuggler [args...]` - `./dev juggle [args...]` @@ -89,7 +88,6 @@ watching it in real time, use `tools/clip/run.py` (see [tools/clip/README.md](cl - `./c3 [jobs] [args...]` - `./c4 [jobs] [args...]` -- `./raybig [jobs] [args...]` These are wrappers around the same isolated host runner used by `./dev`. @@ -104,7 +102,6 @@ Examples: ./dev cabana ./c3 8 ./c4 8 -./raybig 8 ./dev shell ``` @@ -149,7 +146,7 @@ That means: Current bucket split: -- shared bucket: `./c3`, `./c4`, `./raybig`, `./dev replay`, `./dev plotjuggler`, `./dev juggle`, `./dev shell` +- shared bucket: `./c3`, `./c4`, `./dev replay`, `./dev plotjuggler`, `./dev juggle`, `./dev shell` - cabana bucket: `./dev cabana` This prevents one command from syncing or rebuilding over another live host session while still allowing the common Cabana + PlotJuggler pairing. @@ -174,7 +171,7 @@ Use `./onroad ...` when: - you need replay and UI to share the same isolated host runtime and messaging prefix - you want the default side-by-side desktop UI launch without running separate replay/UI commands -Use `./c3`, `./c4`, or `./raybig` when: +Use `./c3` or `./c4` when: - you want the desktop UI variants - you want them to build/run from the isolated host cache instead of touching tracked files @@ -217,5 +214,5 @@ To refresh one bucket only: 1. Use `./build` when you need the real device-target build. 2. Use `./dev replay`, `./dev cabana`, or `./dev plotjuggler` for host-side tooling. -3. Use `./c3`, `./c4`, or `./raybig` for desktop UI work. +3. Use `./c3` or `./c4` for desktop UI work. 4. Let `.host_runtime` keep host artifacts out of the repo. diff --git a/tools/StarPilot/generate_galaxy_layout.py b/tools/StarPilot/generate_galaxy_layout.py deleted file mode 100755 index 28ddf7cab..000000000 --- a/tools/StarPilot/generate_galaxy_layout.py +++ /dev/null @@ -1,721 +0,0 @@ -import os -import re -import sys -import json -import ast - -REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../')) - -CATEGORIES = [ - {"file": "lateral_settings.cc", "name": "Lateral (Steering)", "icon": "bi-arrows-move"}, - {"file": "longitudinal_settings.cc", "name": "Longitudinal (Speed & Following)", "icon": "bi-speedometer2"}, - {"file": "visual_settings.cc", "name": "Visual (Display & UI)", "icon": "bi-eye"}, - {"file": "sounds_settings.cc", "name": "Sounds & Alerts", "icon": "bi-volume-up"}, - {"file": "vehicle_settings.cc", "name": "Vehicle", "icon": "bi-car-front"}, - {"file": "device_settings.cc", "name": "Device & Data", "icon": "bi-hdd"}, -] - -DROPDOWN_MAPPING = { - "SelectModel": { - "key": "DrivingModel", - "options_endpoint": "/api/models/installed" - } -} - -# Custom controls implemented outside the tuple vectors in Qt settings panels. -# Inject these so regenerated galaxy layouts retain equivalent functionality. -INJECTED_SECTION_PARAMS = { - "Longitudinal (Speed & Following)": [ - { - "key": "CEOpenRoad", - "label": "Open Road", - "description": "Keep Experimental Mode active on an open road after reaching the set speed when no lead vehicle is detected. This can help the model anticipate braking sooner.", - "data_type": "bool", - "ui_type": "toggle", - "parent_key": "ConditionalExperimental", - }, - ], - "Vehicle": [ - { - "key": "CarMake", - "label": "Car Make", - "description": "Select your car make.", - "data_type": "string", - "ui_type": "dropdown", - "options_endpoint": "/api/fingerprints/makes", - }, - { - "key": "CarModel", - "label": "Car Model (Fingerprint)", - "description": "Choose the fingerprint platform to use when automatic detection is disabled.", - "data_type": "string", - "ui_type": "dropdown", - "options_endpoint": "/api/fingerprints/models?make={CarMake}", - }, - { - "key": "ForceFingerprint", - "label": "Disable Automatic Fingerprint Detection", - "description": "Force the selected fingerprint and prevent it from changing automatically.", - "data_type": "bool", - "ui_type": "toggle", - }, - { - "key": "IsRHD", - "label": "Right Hand Driving", - "description": "Use right-hand-drive driver monitoring. This follows the auto-detected side until changed manually.", - "data_type": "bool", - "ui_type": "toggle", - }, - ], -} - -# Keys explicitly hidden from The Galaxy's generic settings UI. -HIDDEN_KEYS = { - "CustomAlerts", - "HumanAcceleration", - "HideLeadMarker", - "HideSpeedLimit", - "LockDoorsTimer", - "NewLongAPI", - "ToyotaDoors", - "ReverseCruise", -} - -HIDDEN_SECTION_NAMES = {"Model & Customization"} - -# Keys that are boolean toggles despite ambiguous defaults in starpilot_variables.py. -FORCE_BOOL_KEYS = {"EVTuning"} - -# These fields are intentionally allowed to differ from the Qt source. Galaxy -# has its own copy, nesting, and browser-only behavior for otherwise shared -# params, so regeneration must not discard those overrides. -GALAXY_OVERRIDE_FIELDS = { - "label", - "description", - "parent_key", - "is_parent_toggle", - "disabled_when_key_true", - "disabled_reason", -} - - -def get_param_settings_tiers(): - params_path = os.path.join(REPO_ROOT, "common/params_keys.h") - tiers = {} - with open(params_path, "r", encoding="utf-8") as params_file: - for line in params_file: - match = re.match(r'\s*\{"([^"]+)",', line) - if match: - tiers[match.group(1)] = "simple" if "SETTINGS_SIMPLE" in line else "advanced" - return tiers - - -PARAM_SETTINGS_TIERS = get_param_settings_tiers() - - -def apply_settings_tiers(layout): - for section in layout: - params = section.get("params", []) - params_by_key = {param["key"]: param for param in params if "key" in param} - resolved = {} - - def resolve_tier(key, resolving=None): - if key in resolved: - return resolved[key] - - resolving = set(resolving or ()) - if key in resolving: - return "advanced" - resolving.add(key) - - parent_key = params_by_key.get(key, {}).get("parent_key") - if parent_key == "GalaxyDeveloperMode": - resolved[key] = "advanced" - return resolved[key] - own_tier = PARAM_SETTINGS_TIERS.get(key) - if parent_key: - parent_tier = resolve_tier(parent_key, resolving) - resolved[key] = parent_tier if own_tier is None else ( - "advanced" if "advanced" in (parent_tier, own_tier) else "simple" - ) - else: - resolved[key] = own_tier or "advanced" - return resolved[key] - - for param in params: - key = param.get("key") - if key: - param["settings_tier"] = resolve_tier(key) - - return layout - -DEVELOPER_SIDEBAR_METRIC_KEYS = { - "DeveloperSidebarMetric1", - "DeveloperSidebarMetric2", - "DeveloperSidebarMetric3", - "DeveloperSidebarMetric4", - "DeveloperSidebarMetric5", - "DeveloperSidebarMetric6", - "DeveloperSidebarMetric7", -} - -DEVELOPER_SIDEBAR_METRIC_OPTIONS = [ - {"value": 0, "label": "None"}, - {"value": 1, "label": "Acceleration: Current"}, - {"value": 2, "label": "Acceleration: Max"}, - {"value": 3, "label": "Auto Tune: Actuator Delay"}, - {"value": 4, "label": "Auto Tune: Friction"}, - {"value": 5, "label": "Auto Tune: Lateral Acceleration"}, - {"value": 6, "label": "Auto Tune: Steer Ratio"}, - {"value": 7, "label": "Auto Tune: Stiffness Factor"}, - {"value": 8, "label": "Engagement %: Lateral"}, - {"value": 9, "label": "Engagement %: Longitudinal"}, - {"value": 10, "label": "Lateral Control: Steering Angle"}, - {"value": 11, "label": "Lateral Control: Torque % Used"}, - {"value": 12, "label": "Longitudinal Control: Actuator Acceleration Output"}, - {"value": 13, "label": "Longitudinal MPC Jerk: Acceleration"}, - {"value": 14, "label": "Longitudinal MPC Jerk: Danger Zone"}, - {"value": 15, "label": "Longitudinal MPC Jerk: Speed Control"}, - {"value": 16, "label": "Driving Model: Current"}, -] - -PARENT_KEYS_MAPPING = { - "device_settings.cc": { - "deviceManagementKeys": "DeviceManagement", - "screenKeys": "ScreenManagement" - }, - "lateral_settings.cc": { - "advancedLateralTuneKeys": "AdvancedLateralTune", - "aolKeys": "AlwaysOnLateral", - "laneChangeKeys": "LaneChanges", - "lateralTuneKeys": "LateralTune", - "qolKeys": "QOLLateral" - }, - "longitudinal_settings.cc": { - "advancedLongitudinalTuneKeys": "AdvancedLongitudinalTune", - "aggressivePersonalityKeys": "AggressivePersonalityProfile", - "conditionalChillKeys": "ConditionalChill", - "conditionalExperimentalKeys": "ConditionalExperimental", - "curveSpeedKeys": "CurveSpeedController", - "customDrivingPersonalityKeys": "CustomPersonalities", - "longitudinalTuneKeys": "LongitudinalTune", - "qolKeys": "QOLLongitudinal", - "relaxedPersonalityKeys": "RelaxedPersonalityProfile", - "speedLimitControllerKeys": "SpeedLimitController", - "speedLimitControllerOffsetsKeys": "SpeedLimitController", - "speedLimitControllerQOLKeys": "SpeedLimitController", - "speedLimitControllerVisualKeys": "SpeedLimitController", - "standardPersonalityKeys": "StandardPersonalityProfile", - "trafficPersonalityKeys": "TrafficPersonalityProfile" - }, - "sounds_settings.cc": { - "alertVolumeControlKeys": "AlertVolumeControl", - }, - "theme_settings.cc": { - "customThemeKeys": "CustomTheme" - }, - "visual_settings.cc": { - "advancedCustomOnroadUIKeys": "AdvancedCustomUI", - "customOnroadUIKeys": "CustomUI", - "developerMetricKeys": "DeveloperMetrics", - "developerSidebarKeys": "DeveloperSidebar", - "developerUIKeys": "DeveloperUI", - "developerWidgetKeys": "DeveloperWidgets", - "modelUIKeys": "ModelUI", - "navigationUIKeys": "NavigationUI", - "qualityOfLifeKeys": "QOLVisuals" - }, - "vehicle_settings.cc": {} -} - -ALL_PARENT_KEYS = set() -for cmap in PARENT_KEYS_MAPPING.values(): - for parent in cmap.values(): - ALL_PARENT_KEYS.add(parent) - -def get_variables_data(): - filepath = os.path.join(REPO_ROOT, "starpilot/common/starpilot_variables.py") - excluded = set() - defaults = {} - if not os.path.exists(filepath): - return excluded, defaults - - with open(filepath, 'r', encoding='utf-8') as f: - tree = ast.parse(f.read()) - - def parse_params_list(value_node): - try: - if isinstance(value_node, ast.List): - for elt in value_node.elts: - if isinstance(elt, ast.Tuple) and len(elt.elts) >= 2: - key_node = elt.elts[0] - val_node = elt.elts[1] - if isinstance(key_node, ast.Constant): - key = key_node.value - if isinstance(val_node, ast.Constant): - val = val_node.value - if isinstance(val, (str, bytes)): - v = val.decode('utf-8') if isinstance(val, bytes) else str(val) - if v in ("0", "1"): - defaults[key] = "bool" - elif "." in v and v.replace(".", "", 1).isdigit(): - defaults[key] = "float" - elif v.isdigit(): - defaults[key] = "int" - else: - defaults[key] = "string" - else: - defaults[key] = "unknown" - elif isinstance(val_node, ast.Call) and isinstance(val_node.func, ast.Name) and val_node.func.id == "str": - # str() is used for several numeric defaults. - defaults[key] = "float" - else: - defaults[key] = "unknown" - except: - pass - - for node in tree.body: - if isinstance(node, ast.Assign): - for target in node.targets: - if getattr(target, 'id', '') == 'EXCLUDED_KEYS': - try: - excluded = ast.literal_eval(node.value) - except: - pass - elif getattr(target, 'id', '') in ('starpilot_default_params', 'misc_tuning_levels'): - parse_params_list(node.value) - elif isinstance(node, ast.AnnAssign): - if getattr(node.target, 'id', '') in ('starpilot_default_params', 'misc_tuning_levels'): - parse_params_list(node.value) - - return excluded, defaults - -EXCLUDED_KEYS, DEFAULT_TYPES = get_variables_data() - -def get_editable_keys(): - filepath = os.path.join(REPO_ROOT, "starpilot/common/starpilot_variables.py") - editable = set() - if not os.path.exists(filepath): - return editable - - with open(filepath, 'r', encoding='utf-8') as f: - tree = ast.parse(f.read()) - - for node in tree.body: - value_node = None - if isinstance(node, ast.Assign): - for target in node.targets: - if getattr(target, 'id', '') == 'starpilot_default_params': - value_node = node.value - break - elif isinstance(node, ast.AnnAssign): - if getattr(node.target, 'id', '') == 'starpilot_default_params': - value_node = node.value - - if isinstance(value_node, ast.List): - for elt in value_node.elts: - if isinstance(elt, ast.Tuple) and elt.elts and isinstance(elt.elts[0], ast.Constant): - editable.add(elt.elts[0].value) - - return editable - -EDITABLE_KEYS = get_editable_keys() - - -def parse_params_keys_h(): - filepath = os.path.join(REPO_ROOT, "common/params_keys.h") - keys = set() - types = {} - if not os.path.exists(filepath): - return keys, types - - type_map = { - "BOOL": "bool", - "INT": "int", - "FLOAT": "float", - "STRING": "string", - "JSON": "string", - "BYTES": "string", - } - pattern = re.compile(r'\{"([A-Za-z0-9_]+)",\s*\{[^,]+,\s*([A-Z]+)') - - with open(filepath, 'r', encoding='utf-8') as f: - for line in f: - match = pattern.search(line) - if not match: - continue - key, ptype = match.groups() - keys.add(key) - types[key] = type_map.get(ptype, "unknown") - - return keys, types - - -if not DEFAULT_TYPES or not EDITABLE_KEYS: - parsed_keys, parsed_types = parse_params_keys_h() - if not EDITABLE_KEYS: - EDITABLE_KEYS = parsed_keys - for key, value in parsed_types.items(): - DEFAULT_TYPES.setdefault(key, value) - -def get_param_type(key): - return DEFAULT_TYPES.get(key, "unknown") - -def extract_bracket_block(text, start_idx): - if text[start_idx] != '{': return "" - depth = 0 - in_str = False - escape = False - for i in range(start_idx, len(text)): - char = text[i] - if escape: - escape = False - continue - if char == '\\': - escape = True - continue - if char == '"': - in_str = not in_str - continue - if not in_str: - if char == '{': depth += 1 - elif char == '}': - depth -= 1 - if depth == 0: - return text[start_idx:i+1] - return "" - -def parse_cpp_file(filename): - filepath = os.path.join(REPO_ROOT, "starpilot/ui/qt/offroad", filename) - if not os.path.exists(filepath): return [] - - with open(filepath, 'r', encoding='utf-8') as f: - content = f.read() - - vector_match = re.search( - r'(?:const\s+)?std::vector<\s*std::tuple\s*>\s*\w+\s*\{', - content, - re.DOTALL, - ) - if not vector_match: return [] - - start_idx = vector_match.end() - 1 - vector_content = extract_bracket_block(content, start_idx) - - local_parent_map = PARENT_KEYS_MAPPING.get(filename, {}) - child_to_parent = {} - child_to_qsets = {} - - header_filename = filename.replace(".cc", ".h") - header_filepath = os.path.join(REPO_ROOT, "starpilot/ui/qt/offroad", header_filename) - full_source = content - if os.path.exists(header_filepath): - with open(header_filepath, 'r', encoding='utf-8') as fh: - full_source += "\n" + fh.read() - - for qset_match in re.finditer(r'QSet\s+(\w+)\s*(?:=\s*)?\{([^}]+)\};', full_source): - qset_name = qset_match.group(1) - if qset_name in local_parent_map: - parent_key = local_parent_map[qset_name] - children_str = qset_match.group(2) - children = [c.strip().strip('"') for c in children_str.split(',') if c.strip()] - for child in children: - child_to_parent[child] = parent_key - child_to_qsets.setdefault(child, []).append(qset_name) - - items = [] - - idx = 0 - while True: - idx = vector_content.find('{"', idx) - if idx == -1: break - - block = extract_bracket_block(vector_content, idx) - if not block: - idx += 1 - continue - - row_match = re.search(r'\{"([A-Za-z0-9_]+)"\s*,\s*(.*?)\s*\}$', block, re.DOTALL) - if not row_match: - idx += len(block) - continue - - key = row_match.group(1) - rest = row_match.group(2) - idx += len(block) - - if key in HIDDEN_KEYS or key in EXCLUDED_KEYS or key.startswith("IgnoreMe"): - continue - - strings = re.findall(r'tr\("((?:[^"\\]|\\.)+)"\)|"((?:[^"\\]|\\.)+)"', rest) - valid_strings = [s[0] or s[1] for s in strings if s[0] or s[1]] - - if not valid_strings: continue - - title = valid_strings[0] - desc = valid_strings[1] if len(valid_strings) > 1 else "" - options_endpoint = None - dropdown_options = None - - if key in DEVELOPER_SIDEBAR_METRIC_KEYS: - if key not in EDITABLE_KEYS: - continue - widget_type = "dropdown" - data_type = "int" - dropdown_options = DEVELOPER_SIDEBAR_METRIC_OPTIONS - elif key in DROPDOWN_MAPPING: - m = DROPDOWN_MAPPING[key] - key = m["key"] - widget_type = "dropdown" - options_endpoint = m["options_endpoint"] - data_type = "string" - else: - if key not in EDITABLE_KEYS: - continue - data_type = get_param_type(key) - if data_type == "unknown": continue - widget_type = "toggle" - min_val, max_val, step = None, None, None - - for i in range(1, 10): - placeholder = f"%{i}" - if placeholder in desc and len(valid_strings) > i + 1: - desc = desc.replace(placeholder, valid_strings[i + 1]) - - desc = re.sub(r'', '\n', desc, flags=re.IGNORECASE) - desc = re.sub(r'<[^>]+>', '', desc) - desc = desc.replace('\\"', '"').strip() - title = re.sub(r'\s*\(\s*Default:\s*%\d\s*\)', '', title) - title = re.sub(r'%\d', '', title).strip() - desc = re.sub(r'\s*\(\s*Default:\s*%\d\s*\)', '', desc) - desc = re.sub(r'%\d', '', desc).strip() - - if widget_type == "toggle": - snippet_match = None - - # Let's match the original's regex for finding the Toggle = assignment line - search_patterns = [r'param\s*==\s*"' + key + r'"'] - for qset_name in child_to_qsets.get(key, []): - search_patterns.append(r'(?:' + qset_name + r'\.contains\(param\))') - - for pattern in search_patterns: - match = re.search(pattern + r'.*?[a-zA-Z]+Toggle\s*=\s*(.*?);', content, re.DOTALL) - if match: - snippet_match = match - break - - if snippet_match: - assignment = snippet_match.group(1) - if "StarPilotParamValueControl" in assignment or "StarPilotParamValueButtonControl" in assignment: - widget_type = "numeric" - if data_type in ("string", "bool", "unknown"): - data_type = "float" - - if "alertVolumeControlKeys" in child_to_qsets.get(key, []): - if key in ["WarningImmediateVolume", "WarningSoftVolume"]: - min_val, max_val, step = "25", "101", "1" - else: - min_val, max_val, step = "0", "101", "1" - else: - args_match = re.search(r'Control[^(]*\(([^;]+)\)', assignment) - if args_match: - args_str = args_match.group(1) - num_match = re.search(r'icon\s*,\s*([-\d.]+)\s*,\s*([-\d.]+)\s*,(?:[^,]*,){2}\s*([-\d.]+)', args_str) - if num_match: - min_val, max_val, step = num_match.group(1), num_match.group(2), num_match.group(3) - else: - num_match = re.search(r'icon\s*,\s*([-\d.]+)\s*,\s*([-\d.]+)', args_str) - if num_match: - min_val, max_val = num_match.group(1), num_match.group(2) - step_match = re.search(r'(?:std::map\(\)|[a-zA-Z0-9_]+Labels)\s*,\s*([-\d.]+)', args_str) - if step_match: - step = step_match.group(1) - - # CESpeed/CCMSpeed are rendered in Qt with dual numeric controls, - # so the generic assignment matcher cannot infer it reliably. - if key in {"CESpeed", "CCMSpeed"}: - widget_type = "numeric" - data_type = "int" - min_val, max_val, step = "0", "99", "1" - - if key in FORCE_BOOL_KEYS: - data_type = "bool" - - precision = None - precision_match = re.search(r"QString::number\([^,]+,\s*'f'\s*,\s*(\d+)\)", rest) - if precision_match: - precision = int(precision_match.group(1)) - - if data_type == "float" and step and float(step).is_integer(): - data_type = "int" - - # Generic galaxy UI can't faithfully represent non-boolean button/multi-option controls. - if widget_type == "toggle" and data_type != "bool": - continue - - s = { - "key": key, - "label": title, - "description": desc, - "data_type": data_type, - "ui_type": widget_type - } - if widget_type == "numeric": - if min_val is not None: s["min"] = float(min_val) - if max_val is not None: s["max"] = float(max_val) - if step is not None: s["step"] = float(step) - if precision is not None: s["precision"] = precision - elif widget_type == "dropdown": - if options_endpoint: s["options_endpoint"] = options_endpoint - if dropdown_options: s["options"] = dropdown_options - if key in child_to_parent: s["parent_key"] = child_to_parent[key] - if key in ALL_PARENT_KEYS: s["is_parent_toggle"] = True - - if key == "CELead": - s["is_parent_toggle"] = True - - items.append(s) - - # Mirror CELead's split sub-toggles from StarPilotButtonToggleControl. - if key == "CELead": - items.extend([ - { - "key": "CESlowerLead", - "label": "Slower Lead", - "description": "Switch to \"Experimental Mode\" when a slower lead vehicle is detected ahead.", - "data_type": "bool", - "ui_type": "toggle", - "parent_key": "CELead", - }, - { - "key": "CEStoppedLead", - "label": "Stopped Lead", - "description": "Switch to \"Experimental Mode\" when a stopped lead vehicle is detected ahead.", - "data_type": "bool", - "ui_type": "toggle", - "parent_key": "CELead", - }, - ]) - - # Mirror CESpeed/CCMSpeed's dual sliders (with-lead variants) from Qt. - if key == "CESpeed": - items.append({ - "key": "CESpeedLead", - "label": "Below (With Lead)", - "description": "Switch to \"Experimental Mode\" when driving below this speed with a lead.", - "data_type": "int", - "ui_type": "numeric", - "min": 0.0, - "max": 99.0, - "step": 1.0, - "parent_key": "ConditionalExperimental", - }) - elif key == "CCMSpeed": - items.append({ - "key": "CCMSpeedLead", - "label": "Above (With Lead)", - "description": "Switch to \"Chill Mode\" when following a stable lead above this speed.", - "data_type": "int", - "ui_type": "numeric", - "min": 0.0, - "max": 99.0, - "step": 1.0, - "parent_key": "ConditionalChill", - }) - - return items - - -def merge_layouts(existing_layout, generated_layout): - generated_sections = {section["name"]: section for section in generated_layout} - existing_keys = { - param["key"] - for section in existing_layout - for param in section.get("params", []) - if "key" in param - } - merged_keys = set(existing_keys) - - merged_layout = [] - - for section in existing_layout: - name = section["name"] - if name in HIDDEN_SECTION_NAMES: - continue - generated = generated_sections.get(name) - if generated is None: - merged_layout.append(section) - continue - - existing_params = section.get("params", []) - generated_params = generated.get("params", []) - generated_by_key = {param["key"]: param for param in generated_params} - - merged_params = [] - seen_keys = set() - - for param in existing_params: - key = param["key"] - if key in generated_by_key: - merged_param = dict(param) - for field, value in generated_by_key[key].items(): - if field not in GALAXY_OVERRIDE_FIELDS and field != "settings_tier": - merged_param[field] = value - merged_params.append(merged_param) - else: - merged_params.append(param) - seen_keys.add(key) - - for param in generated_params: - key = param["key"] - if key not in seen_keys and key not in merged_keys: - merged_params.append(param) - seen_keys.add(key) - merged_keys.add(key) - - merged_section = dict(section) - merged_section["icon"] = generated.get("icon", section.get("icon")) - merged_section["params"] = merged_params - merged_layout.append(merged_section) - - existing_names = {section["name"] for section in existing_layout} - for section in generated_layout: - if section["name"] not in existing_names: - merged_layout.append(section) - - return merged_layout - - -def generate_layout(existing_layout=None): - generated_layout = [] - for cat in CATEGORIES: - items = parse_cpp_file(cat["file"]) - injected = INJECTED_SECTION_PARAMS.get(cat["name"], []) - if injected: - existing_keys = {item["key"] for item in items} - items = [dict(item) for item in injected if item["key"] not in existing_keys] + items - if items: - generated_layout.append({ - "name": cat["name"], - "icon": cat["icon"], - "params": items - }) - - layout = generated_layout if existing_layout is None else merge_layouts(existing_layout, generated_layout) - return apply_settings_tiers(layout) - -def main(): - output_path = os.path.join(REPO_ROOT, "starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json") - existing_layout = None - if os.path.exists(output_path): - with open(output_path, 'r', encoding='utf-8') as f: - existing_layout = json.load(f) - layout = generate_layout(existing_layout) - if layout == existing_layout: - return - with open(output_path, 'w', encoding='utf-8') as f: - json.dump(layout, f, indent=2, ensure_ascii=False) - f.write("\n") - -if __name__ == '__main__': - main() diff --git a/tools/clip/README.md b/tools/clip/README.md index 22b505ce5..863feba07 100644 --- a/tools/clip/README.md +++ b/tools/clip/README.md @@ -18,7 +18,7 @@ python3 tools/lib/auth.py Public routes and `--demo` need no authentication. -`replay` and the raybig UI runtime are built automatically on first run, so expect the first +`replay` and the c3 UI runtime are built automatically on first run, so expect the first clip to take a few extra minutes. ## Usage @@ -36,22 +36,16 @@ python3 tools/clip/run.py 78511c37de32c375/00000958--8cb1d3e165 -s 140 -e 260 -o Recording happens in real time, so a 120s clip takes about 120s to produce. -## Choosing a UI +## UI -`-u/--ui` selects which desktop UI to record. The default is `c3`. +Clips use the c3 raylib UI. ```bash -python3 tools/clip/run.py --demo -u raybig -o output.mp4 +python3 tools/clip/run.py --demo -u c3 -o output.mp4 ``` -- `c3` renders the Qt UI into a virtual Xvfb display and screen captures it with `ffmpeg`. -- `raybig` runs the raylib UI, which exports its own frames straight to `ffmpeg`. This bypasses - screen capture entirely, so it also works where a compositor hides window contents from - `x11grab` (notably WSLg). - -Note that `raybig` clips do not get the title, metadata, or route timer overlays that `c3` -clips get: those are `ffmpeg` `drawtext` filters applied during screen capture, and the raylib -UI's own export path does not run them. +The UI exports its frames straight to `ffmpeg`. This bypasses screen capture, so it also works +where a compositor hides window contents from `x11grab` (notably WSLg). ## Options @@ -59,11 +53,10 @@ UI's own export path does not run them. | --- | --- | | `-o, --output` | Output path, must be `.mp4` (default `output.mp4`) | | `-s, --start` / `-e, --end` | Clip window in seconds; omit if timing is in the route ID | -| `-u, --ui` | `c3` (default) or `raybig` | +| `-u, --ui` | `c3` (default) | | `-f, --file-size` | Target size in MB (default 9, sized for Discord/GitHub) | | `-q, --quality` | `high` (hevc, default) or `low` (qcam) | | `-x, --speed` | Record at this speed multiple | -| `-t, --title` | Burn a title into the video (`c3` only) | | `-d, --data-dir` | Use local route data instead of downloading | | `-p, --prefix` | openpilot prefix to isolate the run | @@ -72,11 +65,10 @@ The default 9MB target suits short clips. For anything longer than about a minut ## WSL -Recording works on WSL2 under Windows 11, which supplies a display through WSLg. Use -`-u raybig`; `-u c3` relies on screen capture and can produce black frames there. +Recording works on WSL2 under Windows 11, which supplies a display through WSLg. ```bash -python3 tools/clip/run.py -u raybig -f 250 -o ~/clips/foo.mp4 78511c37de32c375/00000958--8cb1d3e165/140/260 +python3 tools/clip/run.py -u c3 -f 250 -o ~/clips/foo.mp4 78511c37de32c375/00000958--8cb1d3e165/140/260 ``` Running the tool rebuilds native extensions, and this repo tracks those build artifacts in git, diff --git a/tools/clip/run.py b/tools/clip/run.py index 3d49c0391..9f5452568 100755 --- a/tools/clip/run.py +++ b/tools/clip/run.py @@ -20,8 +20,8 @@ from openpilot.common.utils import managed_proc from openpilot.tools.lib.route import Route from openpilot.tools.lib.logreader import LogReader -# cereal.messaging, common.params and common.prefix load native extensions that the raybig path -# builds at runtime (prepare_raybig_runtime), so they're imported at point of use instead - at +# cereal.messaging, common.params and common.prefix load native extensions that the c3 path +# builds at runtime (prepare_c3_runtime), so they're imported at point of use instead - at # module scope they'd fail before that build ever runs. DEFAULT_OUTPUT = 'output.mp4' @@ -32,18 +32,15 @@ FRAMERATE = 20 PIXEL_DEPTH = '24' RESOLUTION = '2160x1080' SECONDS_TO_WARM = 2 -PROC_WAIT_SECONDS = 30*10 -RECORD_TAIL_MARGIN = 5 # extra seconds recorded past the requested end, see record_raybig +RECORD_TAIL_MARGIN = 5 # extra seconds recorded past the requested end, see record_c3 MAX_CACHED_SEGMENTS = 5 # replay's own default, see tools/replay/main.cc -MAX_PLAYBACK = 10 # upper bound for --playback, see record_raybig +MAX_PLAYBACK = 10 # upper bound for --playback, see record_c3 PROGRESS_INTERVAL = 30 # seconds between progress lines while recording STALL_WARN_SECONDS = 60 # warn if the output file stops growing for this long -OPENPILOT_FONT = str(Path(BASEDIR, 'selfdrive/assets/fonts/Inter-Regular.ttf').resolve()) REPLAY = str(Path(BASEDIR, 'tools/replay/replay').resolve()) -UI = str(Path(BASEDIR, 'selfdrive/ui/ui').resolve()) -RAYBIG_UI = str(Path(BASEDIR, 'selfdrive/ui/ui.py').resolve()) -RAYBIG_PREPARE_SCRIPT = str(Path(BASEDIR, 'scripts/launch_ui_raybig_desktop.sh').resolve()) +C3_UI = str(Path(BASEDIR, 'selfdrive/ui/ui.py').resolve()) +C3_PREPARE_SCRIPT = str(Path(BASEDIR, 'scripts/launch_ui_c3_desktop.sh').resolve()) WSLG_X11_DIR = '/mnt/wslg/.X11-unix' logger = logging.getLogger('clip.py') @@ -78,34 +75,10 @@ def check_for_failure(procs: list[Popen]): raise ChildProcessError(msg) -def escape_ffmpeg_text(value: str): - special_chars = {',': '\\,', ':': '\\:', '=': '\\=', '[': '\\[', ']': '\\]'} - value = value.replace('\\', '\\\\\\\\\\\\\\\\') - for char, escaped in special_chars.items(): - value = value.replace(char, escaped) - return value - - def get_logreader(route: Route): return LogReader(route.qlog_paths()[0] if len(route.qlog_paths()) else route.name.canonical_name) -def get_meta_text(lr: LogReader, route: Route): - init_data = lr.first('initData') - car_params = lr.first('carParams') - origin_parts = init_data.gitRemote.split('/') - origin = origin_parts[3] if len(origin_parts) > 3 else 'unknown' - return ', '.join([ - f"openpilot v{init_data.version}", - f"route: {route.name.canonical_name}", - f"car: {car_params.carFingerprint}", - f"origin: {origin}", - f"branch: {init_data.gitBranch}", - f"commit: {init_data.gitCommit[:7]}", - f"modified: {str(init_data.dirty).lower()}", - ]) - - def parse_args(parser: ArgumentParser): args = parser.parse_args() if args.demo: @@ -169,17 +142,15 @@ def wslg_available() -> bool: return os.path.isdir(WSLG_X11_DIR) -def validate_env(parser: ArgumentParser, ui: Literal['c3', 'raybig']): +def validate_env(parser: ArgumentParser, ui: Literal['c3']): if platform.system() not in ['Linux']: parser.exit(1, f'clip.py: error: {platform.system()} is not a supported operating system\n') - use_wslg = ui == 'raybig' and wslg_available() + use_wslg = wslg_available() - required_bins = ['ffmpeg'] - if ui == 'raybig': - required_bins.append('ffprobe') # used to retime the export, see retime_to_wall_clock + required_bins = ['ffmpeg', 'ffprobe'] if not use_wslg: - # Under WSLg, raybig renders against the existing live :0 display instead of a virtual Xvfb one. + # Under WSLg, c3 renders against the existing live :0 display instead of a virtual Xvfb one. required_bins.append('Xvfb') for proc in required_bins: if shutil.which(proc) is None: @@ -187,14 +158,10 @@ def validate_env(parser: ArgumentParser, ui: Literal['c3', 'raybig']): # REPLAY is not checked here; prepare_replay() builds it on demand - if ui == 'c3': - if shutil.which(UI) is None: - parser.exit(1, f'clip.py: error: missing {UI} command, did you build openpilot yet?\n') - elif ui == 'raybig': - if not os.path.isfile(RAYBIG_UI): - parser.exit(1, f'clip.py: error: missing {RAYBIG_UI}\n') - if not os.access(RAYBIG_PREPARE_SCRIPT, os.X_OK): - parser.exit(1, f'clip.py: error: missing or non-executable {RAYBIG_PREPARE_SCRIPT}\n') + if not os.path.isfile(C3_UI): + parser.exit(1, f'clip.py: error: missing {C3_UI}\n') + if not os.access(C3_PREPARE_SCRIPT, os.X_OK): + parser.exit(1, f'clip.py: error: missing or non-executable {C3_PREPARE_SCRIPT}\n') def validate_output_file(output_file: str): @@ -209,12 +176,6 @@ def validate_route(route: str): return route -def validate_title(title: str): - if len(title) > 80: - raise ArgumentTypeError('title must be no longer than 80 chars') - return title - - def validate_scale(scale: str): value = float(scale) if not 0 < value <= 1: @@ -266,58 +227,15 @@ def prepare_replay(jobs: int | None = None): raise ChildProcessError('failed to build replay, see output above') -def prepare_raybig_runtime(): - logger.info('preparing raybig host runtime (this can take a while the first time)...') +def prepare_c3_runtime(): + logger.info('preparing c3 host runtime (this can take a while the first time)...') env = os.environ.copy() - env['SP_RAYBIG_COMPILE_ONLY'] = '1' + env['SP_C3_COMPILE_ONLY'] = '1' # Without this, the script's own cleanup trap restores/deletes the .so files it just built. env['SP_KEEP_DESKTOP_RUNTIME_ARTIFACTS'] = '1' - result = Popen([RAYBIG_PREPARE_SCRIPT], env=env) + result = Popen([C3_PREPARE_SCRIPT], env=env) if result.wait() != 0: - raise ChildProcessError('failed to prepare raybig host runtime, see output above') - - -def make_ffmpeg_cmd(display: str, out: str, duration: int, bit_rate_kbps: int, overlays: list[str]): - return [ - 'ffmpeg', '-y', - '-video_size', RESOLUTION, - '-framerate', str(FRAMERATE), - '-f', 'x11grab', - '-rtbufsize', '100M', - '-draw_mouse', '0', - '-i', display, - '-c:v', 'libx264', - '-maxrate', f'{bit_rate_kbps}k', - '-bufsize', f'{bit_rate_kbps*2}k', - '-crf', '23', - '-filter:v', ','.join(overlays), - '-preset', 'ultrafast', - '-tune', 'zerolatency', - '-pix_fmt', 'yuv420p', - '-movflags', '+faststart', - '-f', 'mp4', - '-t', str(duration), - out, - ] - - -def record(procs: list[Popen], env: dict[str, str], display: str, out: str, duration: int, - bit_rate_kbps: int, overlays: list[str]): - # c3 has no frame export of its own, so screen capture its Xvfb display. raybig uses - # record_raybig instead. - logger.info('waiting for replay to begin (loading segments, may take a while)...') - wait_for_frames(procs) - logger.debug(f'letting UI warm up ({SECONDS_TO_WARM}s)...') - time.sleep(SECONDS_TO_WARM) - check_for_failure(procs) - - ffmpeg_cmd = make_ffmpeg_cmd(display, out, duration, bit_rate_kbps, overlays) - with managed_proc(ffmpeg_cmd, env) as ffmpeg_proc: - all_procs = procs + [ffmpeg_proc] - logger.info(f'recording in progress ({duration}s)...') - ffmpeg_proc.wait(duration + PROC_WAIT_SECONDS) - check_for_failure(all_procs) - logger.info(f'recording complete: {Path(out).resolve()}') + raise ChildProcessError('failed to prepare c3 host runtime, see output above') def probe_video(path: str) -> tuple[float, float]: @@ -367,7 +285,7 @@ def retime_to_wall_clock(out: str, recorded_seconds: float, tolerance: float = 0 retimed.unlink(missing_ok=True) -def record_raybig(ui_proc: Popen, replay_proc: Popen, duration: int, out: str, playback: float = 1.0): +def record_c3(ui_proc: Popen, replay_proc: Popen, duration: int, out: str, playback: float = 1.0): # the UI records from the moment its window opens, so the export leads with some offroad # frames. tail margin covers replay not being exactly at `start` on the first onroad frame. # at playback > 1 the route advances faster than the clock, so we wait proportionally less. @@ -441,8 +359,7 @@ def clip( end: int, speed: int, target_mb: int, - title: str | None, - ui: Literal['c3', 'raybig'], + ui: Literal['c3'], scale: float | None, playback: float, ): @@ -454,9 +371,9 @@ def clip( duration = end - start bit_rate_kbps = int(round(target_mb * 8 * 1024 * 1024 / duration / 1000)) - # raybig exports its own frames (RECORD, below) rather than being screen captured, so under + # c3 exports its own frames (RECORD, below) rather than being screen captured, so under # WSLg it can just render against the live desktop instead of needing its own Xvfb. - use_wslg = ui == 'raybig' and wslg_available() + use_wslg = wslg_available() if use_wslg: display = os.environ.get('DISPLAY', ':0') else: @@ -465,23 +382,6 @@ def clip( display = f':{display_num}' xvfb_cmd = ['Xvfb', display, '-terminate', '-screen', '0', f'{RESOLUTION}x{PIXEL_DEPTH}'] - box_style = 'box=1:boxcolor=black@0.33:boxborderw=7' - meta_text = get_meta_text(lr, route) - overlays = [ - # metadata overlay - f"drawtext=text='{escape_ffmpeg_text(meta_text)}':fontfile={OPENPILOT_FONT}:fontcolor=white:fontsize=15:{box_style}:x=(w-text_w)/2:y=5.5:enable='between(t,1,5)'", - # route time overlay - f"drawtext=text='%{{eif\\:floor(({start}+t)/60)\\:d\\:2}}\\:%{{eif\\:mod({start}+t\\,60)\\:d\\:2}}':fontfile={OPENPILOT_FONT}:fontcolor=white:fontsize=24:{box_style}:x=w-text_w-38:y=38" - ] - if title: - overlays.append(f"drawtext=text='{escape_ffmpeg_text(title)}':fontfile={OPENPILOT_FONT}:fontcolor=white:fontsize=32:{box_style}:x=(w-text_w)/2:y=53") - - if speed > 1: - overlays += [ - f"setpts=PTS/{speed}", - "fps=60", - ] - # read far enough ahead that replay doesn't run dry partway through and loop back on itself, # repeating earlier footage. capped because each cached ~60s segment holds its logs and camera # video in memory, and a long clip would otherwise try to hold the whole route at once. @@ -497,61 +397,44 @@ def clip( prepare_replay() - if ui == 'raybig': - prepare_raybig_runtime() - ui_cmd = [sys.executable, RAYBIG_UI] - else: - ui_cmd = [UI, '-platform', 'xcb'] + prepare_c3_runtime() + ui_cmd = [sys.executable, C3_UI] - # imported here, after prepare_raybig_runtime() has built the native extensions it needs + # imported here, after prepare_c3_runtime() has built the native extensions it needs from openpilot.common.prefix import OpenpilotPrefix with OpenpilotPrefix(prefix, shared_download_cache=True): populate_car_params(lr) env = os.environ.copy() env['DISPLAY'] = display - if ui == 'raybig': - env['BIG'] = '1' - env.setdefault('PRIME_TYPE', '0') - # use the real replayed drive stats instead of raybig's desktop fake-data demo - env['SP_RAYBIG_FAKE_DRIVE_STATS'] = '0' - pythonpath_extra = f"{BASEDIR}{os.pathsep}{Path(BASEDIR, 'starpilot/third_party')}" - env['PYTHONPATH'] = f"{pythonpath_extra}{os.pathsep}{env['PYTHONPATH']}" if env.get('PYTHONPATH') else pythonpath_extra - # the raylib UI pipes its own frames to ffmpeg (system/ui/lib/application.py). no drawtext - # overlays on this path, unlike c3. - env['RECORD'] = '1' - env['RECORD_OUTPUT'] = out - env['RECORD_BITRATE'] = f'{bit_rate_kbps}k' - if speed > 1: - env['RECORD_SPEED'] = str(speed) - # the UI defaults to 60fps and tags the export as such, but the per-frame GPU readback - # can't sustain that and the clip plays fast. ask for a rate it can actually hit. at - # playback > 1 it has to render proportionally faster to still cover FRAMERATE frames - # per second of route. - env['FPS'] = str(int(round(FRAMERATE * playback))) - # sets the render texture size, which is what gets piped to ffmpeg. left unset, the UI - # picks a scale that fits the screen. - if scale is not None: - env['SCALE'] = str(scale) + env['BIG'] = '1' + env.setdefault('PRIME_TYPE', '0') + env['SP_C3_FAKE_DRIVE_STATS'] = '0' + pythonpath_extra = f"{BASEDIR}{os.pathsep}{Path(BASEDIR, 'starpilot/third_party')}" + env['PYTHONPATH'] = f"{pythonpath_extra}{os.pathsep}{env['PYTHONPATH']}" if env.get('PYTHONPATH') else pythonpath_extra + env['RECORD'] = '1' + env['RECORD_OUTPUT'] = out + env['RECORD_BITRATE'] = f'{bit_rate_kbps}k' + if speed > 1: + env['RECORD_SPEED'] = str(speed) + env['FPS'] = str(int(round(FRAMERATE * playback))) + if scale is not None: + env['SCALE'] = str(scale) - if use_wslg: - logger.info('WSLg detected: rendering against the live desktop display.') - with managed_proc(ui_cmd, env) as ui_proc, managed_proc(replay_cmd, env) as replay_proc: - record_raybig(ui_proc, replay_proc, duration, out, playback) - else: - with managed_proc(xvfb_cmd, env) as xvfb_proc: - wait_for_xvfb(display_num, xvfb_proc) - with managed_proc(ui_cmd, env) as ui_proc, managed_proc(replay_cmd, env) as replay_proc: - record_raybig(ui_proc, replay_proc, duration, out, playback) + if use_wslg: + logger.info('WSLg detected: rendering against the live desktop display.') + with managed_proc(ui_cmd, env) as ui_proc, managed_proc(replay_cmd, env) as replay_proc: + record_c3(ui_proc, replay_proc, duration, out, playback) else: with managed_proc(xvfb_cmd, env) as xvfb_proc: wait_for_xvfb(display_num, xvfb_proc) with managed_proc(ui_cmd, env) as ui_proc, managed_proc(replay_cmd, env) as replay_proc: - record([xvfb_proc, ui_proc, replay_proc], env, display, out, duration, bit_rate_kbps, overlays) + record_c3(ui_proc, replay_proc, duration, out, playback) def main(): p = ArgumentParser(prog='clip.py', description='clip your openpilot route.', epilog='comma.ai') + playback_help = "Replay faster than real time; the clip stays at normal speed but drops frames if the UI cannot keep up." route_group = p.add_mutually_exclusive_group(required=True) route_group.add_argument('route', nargs='?', type=validate_route, help=f'The route (e.g. {DEMO_ROUTE} or {DEMO_ROUTE}/{DEMO_START}/{DEMO_END})') route_group.add_argument('--demo', help='use the demo route', action='store_true') @@ -563,14 +446,10 @@ def main(): p.add_argument('-q', '--quality', help='quality of camera (low = qcam, high = hevc)', choices=['low', 'high'], default='high') p.add_argument('-x', '--speed', help='record the clip at this speed multiple', type=int, default=1) p.add_argument('-s', '--start', help='start clipping at seconds', type=int) - p.add_argument('-t', '--title', help='overlay this title on the video (e.g. "Chill driving across the Golden Gate Bridge")', type=validate_title) - p.add_argument('-u', '--ui', help='desktop UI to record. raybig exports its own frames, so it also works where screen capture ' - 'cannot see the window (e.g. WSLg), but gets no title/metadata overlays', - choices=['c3', 'raybig'], default='c3') - p.add_argument('--scale', help='scale the recorded resolution, e.g. 0.5 for half size (raybig only, default is to fit the screen)', + p.add_argument('-u', '--ui', help='desktop UI to record', choices=['c3'], default='c3') + p.add_argument('--scale', help='scale the recorded resolution, e.g. 0.5 for half size (default is to fit the screen)', type=validate_scale) - p.add_argument('--playback', help='replay faster than real time to finish sooner, e.g. 2 for twice as fast (raybig only). ' - 'the clip still plays at normal speed, but drops frames if the UI cannot keep up', + p.add_argument('--playback', help=playback_help, type=validate_playback, default=1.0) args = parse_args(p) validate_env(p, args.ui) @@ -586,7 +465,6 @@ def main(): end=args.end, speed=args.speed, target_mb=args.file_size, - title=args.title, ui=args.ui, scale=args.scale, playback=args.playback, diff --git a/tools/laptop_device_build/Dockerfile b/tools/laptop_device_build/Dockerfile index 8a4cf86c4..0cf253289 100644 --- a/tools/laptop_device_build/Dockerfile +++ b/tools/laptop_device_build/Dockerfile @@ -19,7 +19,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ gcc-aarch64-linux-gnu \ g++-aarch64-linux-gnu \ cmake \ - qtbase5-private-dev \ python3-pip \ xz-utils \ git \ diff --git a/tools/laptop_device_build/extract_sysroot_from_agnos.py b/tools/laptop_device_build/extract_sysroot_from_agnos.py index 0096857d8..a5b8bb51d 100644 --- a/tools/laptop_device_build/extract_sysroot_from_agnos.py +++ b/tools/laptop_device_build/extract_sysroot_from_agnos.py @@ -20,9 +20,6 @@ REQUIRED_DIRS = [ ("usr/lib/aarch64-linux-gnu", "/usr/lib/aarch64-linux-gnu"), ("usr/include", "/usr/include"), ] -OPTIONAL_DIRS = [ - ("usr/lib/qt5/bin", "/usr/lib/qt5/bin"), -] VENDOR_CANDIDATES = ["/system/vendor/lib64", "/vendor/lib64"] OPTIONAL_INCLUDE_DIRS: list[str] = [] DEBUGFS_NOT_FOUND_MARKERS = ( @@ -237,14 +234,6 @@ def main() -> int: print(f"Extracting {src_path} -> {dst}", flush=True) run_debugfs(image_path, src_path, dst) - for rel_dst, src_path in OPTIONAL_DIRS: - dst = output_dir / rel_dst - try: - print(f"Extracting {src_path} -> {dst}", flush=True) - run_debugfs(image_path, src_path, dst) - except RuntimeError: - print(f"WARN: optional path not found in AGNOS image: {src_path}", flush=True) - vendor_ok = False vendor_dst = output_dir / "system/vendor/lib64" for src_path in VENDOR_CANDIDATES: diff --git a/tools/replay/onroad_config.py b/tools/replay/onroad_config.py index b1599286f..27615a357 100644 --- a/tools/replay/onroad_config.py +++ b/tools/replay/onroad_config.py @@ -217,16 +217,13 @@ def logged_params(init_data: Any | None) -> dict[str, bytes]: def select_ui_target(init_data: Any | None) -> str: if init_data is None: - return "raybig" + return "c3" device_type = str(getattr(init_data, "deviceType", "")).lower() if device_type in {"mici", "c4"}: return "c4" - if device_type in {"tici", "tizi"} and logged_params(init_data).get("UseOldUI") == b"1": - return "c3" - - return "raybig" + return "c3" def seed_logged_params(init_data: Any | None, params: Params) -> int: diff --git a/tools/replay/tests/test_onroad_config.py b/tools/replay/tests/test_onroad_config.py index aa09acddb..ad5eb60eb 100644 --- a/tools/replay/tests/test_onroad_config.py +++ b/tools/replay/tests/test_onroad_config.py @@ -74,10 +74,11 @@ def test_select_ui_uses_c4_for_mici_routes(): assert onroad_config.select_ui_target(_init_data("mici")) == "c4" -def test_select_ui_uses_old_qt_only_when_big_route_logged_use_old_ui(): +def test_select_ui_uses_c3_for_all_big_routes(): assert onroad_config.select_ui_target(_init_data("tici", {"UseOldUI": b"1"})) == "c3" - assert onroad_config.select_ui_target(_init_data("tici", {"TryRaylibUI": b"0"})) == "raybig" - assert onroad_config.select_ui_target(_init_data("tizi")) == "raybig" + assert onroad_config.select_ui_target(_init_data("tici", {"TryRaylibUI": b"0"})) == "c3" + assert onroad_config.select_ui_target(_init_data("tizi")) == "c3" + assert onroad_config.select_ui_target(None) == "c3" def test_seed_onroad_params_uses_logged_disabled_bool_and_desktop_overrides(monkeypatch):

    e*pcwX?q?iw2P;S=_NNFA_9gYbI0VqRvvfo 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Ð@fWK{*xG(YX6Ndk?@>J=I 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�|3XZeiUDYNI#&|viZ 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∈ON$i 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%0DE45W~%lDul7Zy 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

  • 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�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