From ecfb1b68f937b167d942a386ce97c21dd52c8201 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Thu, 7 May 2026 10:53:40 +0100 Subject: [PATCH 01/11] feature(workout): add Workout app for indoor HR-centric activity tracking Introduce the Workout app, an indoor activity tracker derived from the Running app and tailored to a heart-rate-first, GPS-free experience: - Bootstrap from a copy of the Running app, fully renamed (paths, symbols, identifiers, build targets, TouchGFX project, assets). - Drop GPS end-to-end: no GPS sensor connection, no map builder, no fix indicator, no "Acquiring Signal" / pre-fix start confirmation flows. - Remove the Intervals feature in full: Track/Settings types, Commands messages and senders, Service state machine, SettingsSerializer JSON, AppMenu navigation node, GUI screens/containers, and Model/ ModelListener/TrackPresenter callbacks. - HR-centric tracking: new Track::Data fields (hrZone, totalCalories, lapCalories, cumulative time-in-zone) populated by a fixed-weight zone-weighted MET calorie model in the Service. - Reworked GUI: three track faces (HR + calories + total time; lap-avg HR + lap number + lap time; time of day + battery) and a lap popup showing lap number, lap time, lap-avg HR, and lap calories. - FIT export records the session as FIT_SPORT_GENERIC and drops all position/altitude/distance/speed/ascent/descent fields from records, laps, sessions, and the activity summary JSON; collapses unused mFHRecord variants and splits BATTERY into BATTERY_LEVEL/VOLTAGE. --- Apps/Workout/Output/.gitignore | 9 + Apps/Workout/Resources/icon_30x30.png | Bin 0 -> 1566 bytes Apps/Workout/Resources/icon_60x60.png | Bin 0 -> 3211 bytes .../Software/Apps/TouchGFX-GUI/.gitignore | 16 + .../Software/Apps/TouchGFX-GUI/README.md | 68 + .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 2769 +++++++++++++++++ .../Apps/TouchGFX-GUI/application.config | 24 + .../TouchGFX-GUI/assets/fonts/OLDENGL.TTF | Bin 0 -> 93068 bytes .../assets/fonts/Poppins-Italic.ttf | Bin 0 -> 182012 bytes .../assets/fonts/Poppins-Light.ttf | Bin 0 -> 145936 bytes .../assets/fonts/Poppins-LightItalic.ttf | Bin 0 -> 184460 bytes .../assets/fonts/Poppins-Medium.ttf | Bin 0 -> 156520 bytes .../assets/fonts/Poppins-Regular.ttf | Bin 0 -> 158240 bytes .../assets/fonts/Poppins-SemiBold.ttf | Bin 0 -> 155232 bytes .../TouchGFX-GUI/assets/fonts/verdana.ttf | Bin 0 -> 243304 bytes .../assets/images/CircleCross_50x50.png | Bin 0 -> 1419 bytes .../assets/images/CircleTick_50x50.png | Bin 0 -> 1321 bytes .../assets/images/Clock_16x19.png | Bin 0 -> 552 bytes .../assets/images/CrossAmber_17x17.png | Bin 0 -> 346 bytes .../assets/images/CrossWhite_17x17.png | Bin 0 -> 342 bytes .../assets/images/HeartRateZone1.png | Bin 0 -> 1180 bytes .../assets/images/HeartRateZone2.png | Bin 0 -> 1104 bytes .../assets/images/HeartRateZone3.png | Bin 0 -> 535 bytes .../assets/images/HeartRateZone4.png | Bin 0 -> 1118 bytes .../assets/images/HeartRateZone5.png | Bin 0 -> 1208 bytes .../assets/images/HeartRateZoneGroup.png | Bin 0 -> 3686 bytes .../assets/images/Heart_30x30.png | Bin 0 -> 565 bytes .../assets/images/Heart_46x39.png | Bin 0 -> 1309 bytes .../assets/images/Pause_14x14.png | Bin 0 -> 408 bytes .../assets/images/TickAmber_22x17.png | Bin 0 -> 298 bytes .../assets/images/WorkoutMan_30x30.png | Bin 0 -> 1566 bytes .../assets/images/clock_24x29.png | Bin 0 -> 794 bytes .../Apps/TouchGFX-GUI/assets/texts/texts.xml | 425 +++ .../Apps/TouchGFX-GUI/assets/texts/texts.xsd | 168 + .../config/msvs/Application.props | 26 + .../include/fonts/ApplicationFontProvider.hpp | 70 + .../fonts/include/fonts/CachedFont.hpp | 93 + .../include/fonts/CompressedFontCache.hpp | 42 + .../fonts/CompressedUnmappedFontCache.hpp | 46 + .../fonts/include/fonts/FontCache.hpp | 112 + .../fonts/include/fonts/GeneratedFont.hpp | 227 ++ .../fonts/include/fonts/UnmappedDataFont.hpp | 137 + .../fonts/src/ApplicationFontProvider.cpp | 63 + .../generated/fonts/src/CachedFont.cpp | 55 + .../fonts/src/CompressedFontCache.cpp | 183 ++ .../fonts/src/CompressedUnmappedFontCache.cpp | 263 ++ .../generated/fonts/src/FontCache.cpp | 424 +++ .../src/Font_Poppins_Italic_18_2bpp_0.cpp | 336 ++ .../src/Font_Poppins_Italic_18_2bpp_4.cpp | 7 + .../src/Font_Poppins_Italic_20_2bpp_0.cpp | 367 +++ .../src/Font_Poppins_Italic_20_2bpp_4.cpp | 7 + .../src/Font_Poppins_Medium_10_2bpp_0.cpp | 198 ++ .../src/Font_Poppins_Medium_10_2bpp_4.cpp | 7 + .../src/Font_Poppins_Medium_18_2bpp_0.cpp | 309 ++ .../src/Font_Poppins_Medium_18_2bpp_4.cpp | 7 + .../src/Font_Poppins_Medium_25_2bpp_0.cpp | 444 +++ .../src/Font_Poppins_Medium_25_2bpp_4.cpp | 7 + .../src/Font_Poppins_Medium_50_2bpp_0.cpp | 1341 ++++++++ .../src/Font_Poppins_Medium_50_2bpp_4.cpp | 10 + .../src/Font_Poppins_Regular_14_2bpp_0.cpp | 251 ++ .../src/Font_Poppins_Regular_14_2bpp_4.cpp | 7 + .../src/Font_Poppins_Regular_16_2bpp_0.cpp | 275 ++ .../src/Font_Poppins_Regular_16_2bpp_4.cpp | 7 + .../src/Font_Poppins_Regular_18_2bpp_0.cpp | 305 ++ .../src/Font_Poppins_Regular_18_2bpp_4.cpp | 7 + .../src/Font_Poppins_SemiBold_18_2bpp_0.cpp | 315 ++ .../src/Font_Poppins_SemiBold_18_2bpp_4.cpp | 7 + .../src/Font_Poppins_SemiBold_20_2bpp_0.cpp | 354 +++ .../src/Font_Poppins_SemiBold_20_2bpp_4.cpp | 7 + .../src/Font_Poppins_SemiBold_25_2bpp_0.cpp | 464 +++ .../src/Font_Poppins_SemiBold_25_2bpp_4.cpp | 7 + .../src/Font_Poppins_SemiBold_30_2bpp_0.cpp | 604 ++++ .../src/Font_Poppins_SemiBold_30_2bpp_4.cpp | 8 + .../src/Font_Poppins_SemiBold_35_2bpp_0.cpp | 783 +++++ .../src/Font_Poppins_SemiBold_35_2bpp_4.cpp | 9 + .../src/Font_Poppins_SemiBold_40_2bpp_0.cpp | 972 ++++++ .../src/Font_Poppins_SemiBold_40_2bpp_4.cpp | 9 + .../src/Font_Poppins_SemiBold_60_2bpp_0.cpp | 1947 ++++++++++++ .../src/Font_Poppins_SemiBold_60_2bpp_4.cpp | 12 + .../generated/fonts/src/GeneratedFont.cpp | 310 ++ .../src/Kerning_Poppins_Italic_18_2bpp.cpp | 6 + .../src/Kerning_Poppins_Italic_20_2bpp.cpp | 6 + .../src/Kerning_Poppins_Medium_10_2bpp.cpp | 6 + .../src/Kerning_Poppins_Medium_18_2bpp.cpp | 6 + .../src/Kerning_Poppins_Medium_25_2bpp.cpp | 6 + .../src/Kerning_Poppins_Medium_50_2bpp.cpp | 6 + .../src/Kerning_Poppins_Regular_14_2bpp.cpp | 6 + .../src/Kerning_Poppins_Regular_16_2bpp.cpp | 6 + .../src/Kerning_Poppins_Regular_18_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_18_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_20_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_25_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_30_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_35_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_40_2bpp.cpp | 6 + .../src/Kerning_Poppins_SemiBold_60_2bpp.cpp | 6 + .../src/Table_Poppins_Italic_18_2bpp.cpp | 130 + .../src/Table_Poppins_Italic_20_2bpp.cpp | 130 + .../src/Table_Poppins_Medium_10_2bpp.cpp | 130 + .../src/Table_Poppins_Medium_18_2bpp.cpp | 130 + .../src/Table_Poppins_Medium_25_2bpp.cpp | 130 + .../src/Table_Poppins_Medium_50_2bpp.cpp | 130 + .../src/Table_Poppins_Regular_14_2bpp.cpp | 130 + .../src/Table_Poppins_Regular_16_2bpp.cpp | 130 + .../src/Table_Poppins_Regular_18_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_18_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_20_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_25_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_30_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_35_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_40_2bpp.cpp | 130 + .../src/Table_Poppins_SemiBold_60_2bpp.cpp | 130 + .../generated/fonts/src/UnmappedDataFont.cpp | 236 ++ .../fonts/src/VectorFontRendererBuffers.cpp | 11 + .../common/FrontendApplicationBase.hpp | 107 + .../gui_generated/common/FrontendHeapBase.hpp | 135 + .../gui_generated/common/SimConstants.hpp | 11 + .../gui_generated/containers/BatteryBase.hpp | 55 + .../gui_generated/containers/ButtonsBase.hpp | 40 + .../containers/HeartRateZoneBase.hpp | 37 + .../containers/InfoCarouselBase.hpp | 45 + .../containers/LapListItemBase.hpp | 47 + .../containers/MainMenuBackgroundBase.hpp | 34 + .../gui_generated/containers/MainMenuBase.hpp | 58 + .../containers/MainMenuCenterItemBase.hpp | 45 + .../containers/MainMenuItemBase.hpp | 43 + .../containers/MainMenuLayoutBase.hpp | 46 + .../containers/PauseIndicatorBase.hpp | 44 + .../containers/ScrollIndicatorBase.hpp | 38 + .../containers/SummaryFaceHeartRateBase.hpp | 55 + .../containers/SummaryFaceLapsBase.hpp | 72 + .../containers/SummaryFaceOverviewBase.hpp | 60 + .../containers/TimerRingBase.hpp | 36 + .../gui_generated/containers/TitleBase.hpp | 42 + .../gui_generated/containers/ToggleBase.hpp | 37 + .../containers/TrackFaceLapBase.hpp | 54 + .../containers/TrackFaceStatusBase.hpp | 47 + .../containers/TrackFaceTotalBase.hpp | 58 + .../main_screen/MainViewBase.hpp | 42 + .../menualerts_screen/MenuAlertsViewBase.hpp | 42 + .../MenuSettingsViewBase.hpp | 42 + .../menutime_screen/MenuTimeViewBase.hpp | 44 + .../MenuTimeSavedViewBase.hpp | 53 + .../track_screen/TrackViewBase.hpp | 50 + .../TrackActionViewBase.hpp | 46 + .../TrackDiscardConfirmationViewBase.hpp | 54 + .../TrackDiscardedViewBase.hpp | 55 + .../tracklap_screen/TrackLapViewBase.hpp | 68 + .../tracksaved_screen/TrackSavedViewBase.hpp | 55 + .../TrackStartConfirmationViewBase.hpp | 48 + .../TrackSummaryViewBase.hpp | 50 + .../src/common/FrontendApplicationBase.cpp | 223 ++ .../src/containers/BatteryBase.cpp | 117 + .../src/containers/ButtonsBase.cpp | 60 + .../src/containers/HeartRateZoneBase.cpp | 49 + .../src/containers/InfoCarouselBase.cpp | 46 + .../src/containers/LapListItemBase.cpp | 53 + .../src/containers/MainMenuBackgroundBase.cpp | 29 + .../src/containers/MainMenuBase.cpp | 66 + .../src/containers/MainMenuCenterItemBase.cpp | 47 + .../src/containers/MainMenuItemBase.cpp | 43 + .../src/containers/MainMenuLayoutBase.cpp | 45 + .../src/containers/PauseIndicatorBase.cpp | 43 + .../src/containers/ScrollIndicatorBase.cpp | 51 + .../containers/SummaryFaceHeartRateBase.cpp | 70 + .../src/containers/SummaryFaceLapsBase.cpp | 100 + .../containers/SummaryFaceOverviewBase.cpp | 87 + .../src/containers/TimerRingBase.cpp | 40 + .../src/containers/TitleBase.cpp | 38 + .../src/containers/ToggleBase.cpp | 38 + .../src/containers/TrackFaceLapBase.cpp | 81 + .../src/containers/TrackFaceStatusBase.cpp | 49 + .../src/containers/TrackFaceTotalBase.cpp | 86 + .../src/main_screen/MainViewBase.cpp | 37 + .../menualerts_screen/MenuAlertsViewBase.cpp | 37 + .../MenuSettingsViewBase.cpp | 37 + .../src/menutime_screen/MenuTimeViewBase.cpp | 42 + .../MenuTimeSavedViewBase.cpp | 59 + .../src/track_screen/TrackViewBase.cpp | 55 + .../TrackActionViewBase.cpp | 45 + .../TrackDiscardConfirmationViewBase.cpp | 55 + .../TrackDiscardedViewBase.cpp | 59 + .../src/tracklap_screen/TrackLapViewBase.cpp | 104 + .../tracksaved_screen/TrackSavedViewBase.cpp | 59 + .../TrackStartConfirmationViewBase.cpp | 53 + .../TrackSummaryViewBase.cpp | 55 + .../images/include/BitmapDatabase.hpp | 1 + .../images/include/images/BitmapDatabase.hpp | 33 + .../images/include/images/SVGDatabase.hpp | 20 + .../generated/images/src/BitmapDatabase.cpp | 56 + .../generated/images/src/SVGDatabase.cpp | 19 + .../images/src/image_CircleCross_50x50.cpp | 217 ++ .../images/src/image_CircleTick_50x50.cpp | 217 ++ .../images/src/image_Clock_16x19.cpp | 34 + .../images/src/image_CrossAmber_17x17.cpp | 33 + .../images/src/image_CrossWhite_17x17.cpp | 33 + .../images/src/image_HeartRateZone1.cpp | 151 + .../images/src/image_HeartRateZone2.cpp | 153 + .../images/src/image_HeartRateZone3.cpp | 125 + .../images/src/image_HeartRateZone4.cpp | 153 + .../images/src/image_HeartRateZone5.cpp | 151 + .../images/src/image_HeartRateZoneGroup.cpp | 1216 ++++++++ .../images/src/image_Heart_30x30.cpp | 83 + .../images/src/image_Heart_46x39.cpp | 158 + .../images/src/image_Pause_14x14.cpp | 25 + .../images/src/image_TickAmber_22x17.cpp | 40 + .../images/src/image_WorkoutMan_30x30.cpp | 83 + .../images/src/image_clock_24x29.cpp | 66 + .../simulator/include/simulator/mainBase.hpp | 9 + .../DirectFrameBufferVideoController.hpp | 356 +++ .../include/simulator/video/MJPEGDecoder.hpp | 75 + .../simulator/video/SoftwareMJPEGDecoder.hpp | 73 + .../generated/simulator/msvs/touchgfx.props | 31 + .../simulator/msvs/touchgfx_prebuild.targets | 86 + .../simulator/msvs/touchgfx_sdl2.props | 29 + .../generated/simulator/src/mainBase.cpp | 29 + .../src/video/SoftwareMJPEGDecoder.cpp | 619 ++++ .../generated/simulator/touchgfx.ico | Bin 0 -> 384440 bytes .../generated/simulator/touchgfx.rc | 1 + .../generated/simulator/touchgfx.res | Bin 0 -> 100170 bytes .../include/texts/TextKeysAndLanguages.hpp | 149 + .../texts/include/texts/TypedTextDatabase.hpp | 21 + .../generated/texts/src/LanguageGb.cpp | 144 + .../generated/texts/src/Texts.cpp | 191 ++ .../generated/texts/src/TypedTextDatabase.cpp | 264 ++ .../videos/include/videos/VideoDatabase.hpp | 8 + .../gui/common/FrontendApplication.hpp | 50 + .../gui/include/gui/common/FrontendHeap.hpp | 74 + .../gui/include/gui/containers/Battery.hpp | 47 + .../gui/include/gui/containers/Buttons.hpp | 54 + .../include/gui/containers/CountdownTimer.hpp | 79 + .../include/gui/containers/HeartRateZone.hpp | 41 + .../include/gui/containers/InfoCarousel.hpp | 94 + .../include/gui/containers/LapListItem.hpp | 38 + .../gui/include/gui/containers/MainMenu.hpp | 135 + .../gui/containers/MainMenuBackground.hpp | 29 + .../gui/containers/MainMenuCenterItem.hpp | 53 + .../include/gui/containers/MainMenuItem.hpp | 54 + .../include/gui/containers/MainMenuLayout.hpp | 77 + .../include/gui/containers/MenuItemConfig.hpp | 169 + .../gui/containers/MenuItemRenderer.hpp | 182 ++ .../include/gui/containers/PauseIndicator.hpp | 34 + .../gui/containers/ScrollIndicator.hpp | 139 + .../gui/containers/SummaryFaceHeartRate.hpp | 34 + .../gui/containers/SummaryFaceLaps.hpp | 71 + .../gui/containers/SummaryFaceOverview.hpp | 33 + .../gui/include/gui/containers/TimerRing.hpp | 180 ++ .../gui/include/gui/containers/Title.hpp | 40 + .../gui/include/gui/containers/Toggle.hpp | 65 + .../include/gui/containers/TrackFaceLap.hpp | 26 + .../gui/containers/TrackFaceStatus.hpp | 35 + .../include/gui/containers/TrackFaceTotal.hpp | 28 + .../include/gui/main_screen/MainPresenter.hpp | 41 + .../gui/include/gui/main_screen/MainView.hpp | 38 + .../menualerts_screen/MenuAlertsPresenter.hpp | 38 + .../gui/menualerts_screen/MenuAlertsView.hpp | 41 + .../MenuSettingsPresenter.hpp | 40 + .../menusettings_screen/MenuSettingsView.hpp | 34 + .../gui/menutime_screen/MenuTimePresenter.hpp | 40 + .../gui/menutime_screen/MenuTimeView.hpp | 35 + .../MenuTimeSavedPresenter.hpp | 36 + .../MenuTimeSavedView.hpp | 28 + .../gui/include/gui/model/AppMenu.hpp | 130 + .../gui/include/gui/model/Model.hpp | 140 + .../gui/include/gui/model/ModelListener.hpp | 37 + .../gui/track_screen/TrackPresenter.hpp | 43 + .../include/gui/track_screen/TrackView.hpp | 34 + .../TrackActionPresenter.hpp | 40 + .../trackaction_screen/TrackActionView.hpp | 48 + .../TrackDiscardConfirmationPresenter.hpp | 38 + .../TrackDiscardConfirmationView.hpp | 18 + .../TrackDiscardedPresenter.hpp | 38 + .../TrackDiscardedView.hpp | 24 + .../gui/tracklap_screen/TrackLapPresenter.hpp | 36 + .../gui/tracklap_screen/TrackLapView.hpp | 35 + .../tracksaved_screen/TrackSavedPresenter.hpp | 36 + .../gui/tracksaved_screen/TrackSavedView.hpp | 24 + .../TrackStartConfirmationPresenter.hpp | 39 + .../TrackStartConfirmationView.hpp | 18 + .../TrackSummaryPresenter.hpp | 35 + .../tracksummary_screen/TrackSummaryView.hpp | 35 + .../gui/src/common/FrontendApplication.cpp | 7 + .../gui/src/containers/Battery.cpp | 67 + .../gui/src/containers/Buttons.cpp | 41 + .../gui/src/containers/CountdownTimer.cpp | 76 + .../gui/src/containers/HeartRateZone.cpp | 45 + .../gui/src/containers/InfoCarousel.cpp | 108 + .../gui/src/containers/LapListItem.cpp | 34 + .../gui/src/containers/MainMenu.cpp | 168 + .../gui/src/containers/MainMenuBackground.cpp | 16 + .../gui/src/containers/MainMenuCenterItem.cpp | 143 + .../gui/src/containers/MainMenuItem.cpp | 125 + .../gui/src/containers/MainMenuLayout.cpp | 144 + .../gui/src/containers/PauseIndicator.cpp | 27 + .../gui/src/containers/ScrollIndicator.cpp | 228 ++ .../src/containers/SummaryFaceHeartRate.cpp | 32 + .../gui/src/containers/SummaryFaceLaps.cpp | 119 + .../src/containers/SummaryFaceOverview.cpp | 38 + .../gui/src/containers/TimerRing.cpp | 187 ++ .../TouchGFX-GUI/gui/src/containers/Title.cpp | 42 + .../gui/src/containers/Toggle.cpp | 63 + .../gui/src/containers/TrackFaceLap.cpp | 34 + .../gui/src/containers/TrackFaceStatus.cpp | 25 + .../gui/src/containers/TrackFaceTotal.cpp | 38 + .../gui/src/main_screen/MainPresenter.cpp | 37 + .../gui/src/main_screen/MainView.cpp | 134 + .../menualerts_screen/MenuAlertsPresenter.cpp | 21 + .../src/menualerts_screen/MenuAlertsView.cpp | 118 + .../MenuSettingsPresenter.cpp | 29 + .../menusettings_screen/MenuSettingsView.cpp | 118 + .../src/menutime_screen/MenuTimePresenter.cpp | 29 + .../gui/src/menutime_screen/MenuTimeView.cpp | 84 + .../MenuTimeSavedPresenter.cpp | 18 + .../MenuTimeSavedView.cpp | 42 + .../Apps/TouchGFX-GUI/gui/src/model/Model.cpp | 326 ++ .../gui/src/track_screen/TrackPresenter.cpp | 58 + .../gui/src/track_screen/TrackView.cpp | 120 + .../TrackActionPresenter.cpp | 39 + .../trackaction_screen/TrackActionView.cpp | 203 ++ .../TrackDiscardConfirmationPresenter.cpp | 19 + .../TrackDiscardConfirmationView.cpp | 42 + .../TrackDiscardedPresenter.cpp | 26 + .../TrackDiscardedView.cpp | 31 + .../src/tracklap_screen/TrackLapPresenter.cpp | 26 + .../gui/src/tracklap_screen/TrackLapView.cpp | 87 + .../tracksaved_screen/TrackSavedPresenter.cpp | 18 + .../src/tracksaved_screen/TrackSavedView.cpp | 31 + .../TrackStartConfirmationPresenter.cpp | 30 + .../TrackStartConfirmationView.cpp | 42 + .../TrackSummaryPresenter.cpp | 32 + .../tracksummary_screen/TrackSummaryView.cpp | 114 + .../simulator/ConfigurationSimulator.hpp | 48 + .../Apps/TouchGFX-GUI/simulator/gcc/Makefile | 102 + .../Apps/TouchGFX-GUI/simulator/main.cpp | 165 + .../simulator/msvs/Application.sln | 21 + .../simulator/msvs/Application.vcxproj | 559 ++++ .../msvs/Application.vcxproj.filters | 1993 ++++++++++++ .../TouchGFX-GUI/simulator/msvs/SDK.props | 18 + .../Software/Apps/TouchGFX-GUI/target.config | 12 + .../Software/Apps/TouchGFX-GUI/touchgfx.cmake | 21 + .../Software/Apps/TouchGFX-GUI/una/Makefile | 276 ++ .../Software/Apps/Workout-CMake/.gitignore | 1 + .../Apps/Workout-CMake/CMakeLists.txt | 67 + .../Apps/WorkoutGUI-CubeIDE/.cproject | 155 + .../Apps/WorkoutGUI-CubeIDE/.gitignore | 18 + .../Software/Apps/WorkoutGUI-CubeIDE/.project | 268 ++ .../.settings/org.eclipse.cdt.core.prefs | 12 + .../Apps/WorkoutGUI-CubeIDE/Linker.ld | 4 + .../Apps/WorkoutService-CubeIDE/.cproject | 156 + .../Apps/WorkoutService-CubeIDE/.gitignore | 18 + .../Apps/WorkoutService-CubeIDE/.project | 588 ++++ .../.settings/org.eclipse.cdt.core.prefs | 30 + .../Apps/WorkoutService-CubeIDE/Linker.ld | 4 + .../Software/Libs/Header/ActivitySummary.hpp | 43 + .../Libs/Header/ActivitySummarySerializer.hpp | 78 + .../Software/Libs/Header/ActivityWriter.hpp | 147 + .../Workout/Software/Libs/Header/Commands.hpp | 320 ++ Apps/Workout/Software/Libs/Header/Service.hpp | 151 + .../Workout/Software/Libs/Header/Settings.hpp | 47 + .../Libs/Header/SettingsSerializer.hpp | 68 + Apps/Workout/Software/Libs/Header/Track.hpp | 55 + .../Libs/Header/WristTiltDetector.hpp | 316 ++ .../Workout/Software/Libs/Header/icon_30x30.h | 78 + .../Workout/Software/Libs/Header/icon_60x60.h | 246 ++ .../Sources/ActivitySummarySerializer.cpp | 182 ++ .../Software/Libs/Sources/ActivityWriter.cpp | 527 ++++ .../Workout/Software/Libs/Sources/Service.cpp | 820 +++++ .../Libs/Sources/SettingsSerializer.cpp | 131 + .../Libs/Sources/WristTiltDetector.cpp | 219 ++ Apps/Workout/Software/Libs/libs.cmake | 10 + 370 files changed, 41283 insertions(+) create mode 100644 Apps/Workout/Output/.gitignore create mode 100644 Apps/Workout/Resources/icon_30x30.png create mode 100644 Apps/Workout/Resources/icon_60x60.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/.gitignore create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/README.md create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/application.config create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/OLDENGL.TTF create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Italic.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Light.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-LightItalic.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Medium.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Regular.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-SemiBold.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/verdana.ttf create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleCross_50x50.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleTick_50x50.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Clock_16x19.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CrossAmber_17x17.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CrossWhite_17x17.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone1.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone2.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone3.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone4.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone5.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZoneGroup.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Heart_30x30.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Heart_46x39.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Pause_14x14.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/TickAmber_22x17.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/WorkoutMan_30x30.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/clock_24x29.png create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xsd create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/config/msvs/Application.props create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/ApplicationFontProvider.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CachedFont.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedFontCache.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedUnmappedFontCache.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/FontCache.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/GeneratedFont.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/UnmappedDataFont.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/ApplicationFontProvider.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CachedFont.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedFontCache.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedUnmappedFontCache.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/FontCache.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_0.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/GeneratedFont.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_20_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_10_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_25_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_50_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_14_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_16_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_20_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_25_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_30_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_35_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_40_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_60_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_20_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_10_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_25_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_50_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_14_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_16_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_18_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_20_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_25_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_30_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_35_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_40_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_60_2bpp.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/UnmappedDataFont.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/VectorFontRendererBuffers.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendApplicationBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendHeapBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/SimConstants.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/BatteryBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ButtonsBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/HeartRateZoneBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/InfoCarouselBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/LapListItemBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBackgroundBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuCenterItemBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuItemBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuLayoutBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/PauseIndicatorBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ScrollIndicatorBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceLapsBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TimerRingBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TitleBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ToggleBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceLapBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceStatusBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceTotalBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/main_screen/MainViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menualerts_screen/MenuAlertsViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menusettings_screen/MenuSettingsViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutime_screen/MenuTimeViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutimesaved_screen/MenuTimeSavedViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/track_screen/TrackViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackaction_screen/TrackActionViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscarded_screen/TrackDiscardedViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracklap_screen/TrackLapViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksaved_screen/TrackSavedViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackstartconfirmation_screen/TrackStartConfirmationViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/BatteryBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ButtonsBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/HeartRateZoneBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/InfoCarouselBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/LapListItemBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBackgroundBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuCenterItemBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuItemBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuLayoutBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/PauseIndicatorBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ScrollIndicatorBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceLapsBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TimerRingBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TitleBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ToggleBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceLapBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceStatusBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceTotalBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/main_screen/MainViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menualerts_screen/MenuAlertsViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menusettings_screen/MenuSettingsViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutime_screen/MenuTimeViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutimesaved_screen/MenuTimeSavedViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/track_screen/TrackViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackaction_screen/TrackActionViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscarded_screen/TrackDiscardedViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracklap_screen/TrackLapViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksaved_screen/TrackSavedViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackstartconfirmation_screen/TrackStartConfirmationViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/BitmapDatabase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/BitmapDatabase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/SVGDatabase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/BitmapDatabase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/SVGDatabase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/mainBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/DirectFrameBufferVideoController.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/MJPEGDecoder.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/SoftwareMJPEGDecoder.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx.props create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_prebuild.targets create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_sdl2.props create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/mainBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/video/SoftwareMJPEGDecoder.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/touchgfx.ico create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/touchgfx.rc create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/touchgfx.res create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TypedTextDatabase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/videos/include/videos/VideoDatabase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendApplication.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendHeap.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Battery.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Buttons.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/CountdownTimer.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/HeartRateZone.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/InfoCarousel.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/LapListItem.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenu.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuBackground.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuCenterItem.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuItem.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuLayout.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemConfig.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemRenderer.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/PauseIndicator.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ScrollIndicator.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceLaps.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TimerRing.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Title.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Toggle.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceLap.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceStatus.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceTotal.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimePresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimeView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/AppMenu.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/Model.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/ModelListener.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryPresenter.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/common/FrontendApplication.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Battery.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Buttons.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/CountdownTimer.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/HeartRateZone.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/InfoCarousel.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/LapListItem.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuBackground.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuCenterItem.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuItem.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuLayout.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/PauseIndicator.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ScrollIndicator.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceLaps.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TimerRing.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Title.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Toggle.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceLap.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceStatus.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceTotal.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimePresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimeView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/model/Model.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryPresenter.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/ConfigurationSimulator.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/main.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.sln create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/SDK.props create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/target.config create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/touchgfx.cmake create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile create mode 100644 Apps/Workout/Software/Apps/Workout-CMake/.gitignore create mode 100644 Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt create mode 100644 Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.cproject create mode 100644 Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.gitignore create mode 100644 Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.project create mode 100644 Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.settings/org.eclipse.cdt.core.prefs create mode 100644 Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/Linker.ld create mode 100644 Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject create mode 100644 Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.gitignore create mode 100644 Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project create mode 100644 Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.settings/org.eclipse.cdt.core.prefs create mode 100644 Apps/Workout/Software/Apps/WorkoutService-CubeIDE/Linker.ld create mode 100644 Apps/Workout/Software/Libs/Header/ActivitySummary.hpp create mode 100644 Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp create mode 100644 Apps/Workout/Software/Libs/Header/ActivityWriter.hpp create mode 100644 Apps/Workout/Software/Libs/Header/Commands.hpp create mode 100644 Apps/Workout/Software/Libs/Header/Service.hpp create mode 100644 Apps/Workout/Software/Libs/Header/Settings.hpp create mode 100644 Apps/Workout/Software/Libs/Header/SettingsSerializer.hpp create mode 100644 Apps/Workout/Software/Libs/Header/Track.hpp create mode 100644 Apps/Workout/Software/Libs/Header/WristTiltDetector.hpp create mode 100644 Apps/Workout/Software/Libs/Header/icon_30x30.h create mode 100644 Apps/Workout/Software/Libs/Header/icon_60x60.h create mode 100644 Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp create mode 100644 Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp create mode 100644 Apps/Workout/Software/Libs/Sources/Service.cpp create mode 100644 Apps/Workout/Software/Libs/Sources/SettingsSerializer.cpp create mode 100644 Apps/Workout/Software/Libs/Sources/WristTiltDetector.cpp create mode 100644 Apps/Workout/Software/Libs/libs.cmake diff --git a/Apps/Workout/Output/.gitignore b/Apps/Workout/Output/.gitignore new file mode 100644 index 00000000..c2586cf9 --- /dev/null +++ b/Apps/Workout/Output/.gitignore @@ -0,0 +1,9 @@ +# Ignore everything +* + +# But not .gitignore itself +!.gitignore + +# Don't ignore the Release folder and allow everything inside Release +!/Release/ +!/Release/** \ No newline at end of file diff --git a/Apps/Workout/Resources/icon_30x30.png b/Apps/Workout/Resources/icon_30x30.png new file mode 100644 index 0000000000000000000000000000000000000000..9b139d7e07ad86ba4eecfb5dfe53527e58367406 GIT binary patch literal 1566 zcmV+(2I2XMP)0*}N@#h73D^4?OQl^?w{bg zAtF683JVut#*B@)dGjPHDozLAlL!dN(xq8gzy3OWz6_+L6=3n=98^`6nL3(&a86D# zwr{_UhYuxi97nnm=FR&U&z~Q{ojctY16AzYxfyfko zG!mFX2C~R#h>qsb-2D4cz&uW!`hz^ZNM3Np8(u_5he|1EF!RFU>eYRiJef>WRsBFs zlQCrq(9rNXjHvigTzr61kWBkI(=Y{g`%{#b7MVGQHOHF%vby?5Y}~jTPoJ`bdD^5Q zGBOd_*{>5=JrSve4Ev2Z@Gf~DL+S9~^5wU2=FBz9e*)I5DI!C5!{w4`zd(Crq@;*A zcFcj67LOhc3lXfsVfE@sTe!91w}>a7+97=0t10sD=qDyGMR|pUIQ##VY%nY{?t?shYs0LQzOHyU8@K~ zY*lseii&+y0?9~9nndJ?rreUvew{3wNlMP}Qq^lZIvV65sHu3VB5H8t$Q!7y_rVh0 zP#zEToJm?*A~G`OMmroI#n|l&J6SFbP{hT>K~~kj`kc-m)XvT`0qk_lX3oDxT6`-p(~bV=&I z^6VM5R#n06^I=S6B)(m?45@$@2APy_4->-FV+Jb!=I3ua+TNbmL%H=+t$L|}9CJGH zx28Q&nwl<}dg}iL%xYG_jvaYwcJ@!yRQfg6hhZ{F)B2T+j65p0CS1DYH1$K0EEKT8 zo&5ZCx*q?;y?e6RhbpA$8qCES2*B2LK(*H;|&{{(cUiWSEV5eVq@8- zYPLvGUthWMI^D%%5C++Y12#I>s#Ujf>y{D(Ww%v)yhdTor54#2ydcdfT^%Vlc!w7+S zq^Cz>=FG3r-7V|CnWqybu*)Nd`tcK8>)N$mT(~fe<~5PPjZ*6AQRsgD1dA4p!7v=+ zU-3@C+O@yZG|9+ggiMk|JbwH$%F3Exz0}LgTZvF#((NRe`4)(TY*fBrdd-Im%+WlY zNs~nZh1T$b%~&ZZ8usk@00SEZ1DCLWe=$uPUeY&=VFN>a{46?WHeSK*mx1+0fh9{S z$!Z0Gt8Lsk9(8r^S-`AfjIgz}?;s%|a24{nf1gd8l?cppA%JCU+O(NQp2-LhgITYt z%|xV=crn}$j#7Df4ee`qaWc>9+m5YUcVUPLWN@e*j@{IqRC7&6ax#z8rx#=RUTnsgE)YBq~b8g9k^6#jOb42368?(chFWXe=>|WXJUP zKMn_&r(ER`;3HzOKt^0bNy!Gh7-NPLBbNsc?xI?*(D&PH9*WkR7^1BH1M3)Gx-Ua* QcmMzZ07*qoM6N<$g6UA^!~g&Q literal 0 HcmV?d00001 diff --git a/Apps/Workout/Resources/icon_60x60.png b/Apps/Workout/Resources/icon_60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..e6facaecaa4c59b6affca37770f006b604710b59 GIT binary patch literal 3211 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 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/.gitignore b/Apps/Workout/Software/Apps/TouchGFX-GUI/.gitignore new file mode 100644 index 00000000..959f43e0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/.gitignore @@ -0,0 +1,16 @@ +# build + +*.vcxproj.user +*.bak + +/build/ +/simulator/msvs/.vs/* +/simulator/msvs/screenshots/* +/config/gcc/* + +# GUI generated files +/generated/*.config +/generated/**/*.txt +/generated/**/*.cache +/generated/simulator/**/Makefile + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/README.md b/Apps/Workout/Software/Apps/TouchGFX-GUI/README.md new file mode 100644 index 00000000..fa97d5df --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/README.md @@ -0,0 +1,68 @@ +# TouchGFX generator and simulator for the UnaWatch firmware +This project is completely independent of CubeIDE and can be added to any other project generated by CubeMX. + +By default, CubeMX generates a TouchGFX folder next to the project file (.cproject) and the framework in Middlewares/ST/touchgfx. +These folders are grouped together in the current directory. + +Files from the App and target folders, which are the porting level between TouchGFX and the user app, are moved to **Software/Libs/Header/Gui** and **Software/Libs/Source/Gui** + +## Copy a GUI project from othe project + +## Adding a GUI project to a CubeIDE project: + +**NOTE: If you simply copied a GUI project from another project and added it to CubeIDE, then you only need to do step 2.** + +1. If TouchGFX was added to the CubeMX project and the corresponding folders were generated and added to the project, then they must be excluded from the build: +``` +./TouchGFX +./Middlewares/ST/touchgfx +``` + +2. Add the current folder to the project. This folder (TouchGFX-GUI) should be added as a link to a folder with files ("_Link to files and folders_"). Thus, all new generated screens will be automatically added to the project. +Make sure that the entire folder is not excluded from the build after adding. +After adding TouchGFX-GUI to the CubeIDE structure, you need to exclude the following folders from the build: +``` +TouchGFX-GUI/generated/simulator/src/ +TouchGFX-GUI/simulator/ +TouchGFX-GUI/touchgfx/framework/source/ +TouchGFX-GUI/touchgfx/os/ +``` + +3. In the project settings, delete includes which were added by CubeMX: +``` +../TouchGFX/App +../TouchGFX/target/generated +../TouchGFX/target +../Middlewares/ST/touchgfx/framework/include +../TouchGFX/generated/fonts/include +../TouchGFX/generated/gui_generated/include +../TouchGFX/generated/images/include +../TouchGFX/generated/texts/include +../TouchGFX/generated/videos/include +../TouchGFX/gui/include +``` + +4. In the project settings, add the necessary includes from new location: +``` +../../TouchGFX-GUI/touchgfx/framework/include +../../TouchGFX-GUI/generated/fonts/include +../../TouchGFX-GUI/generated/gui_generated/include +../../TouchGFX-GUI/generated/images/include +../../TouchGFX-GUI/generated/texts/include +../../TouchGFX-GUI/generated/videos/include +../../TouchGFX-GUI/gui/include +``` +5. In the project settings, in the linker section, change the path to the precompiled library: +``` +"${workspace_loc:/projectname/Middlewares/ST/touchgfx/lib/core/cortex_m33/gcc}" +``` +change to: +``` +"${ProjDirPath}/../TouchGFX-GUI/touchgfx/lib/core/cortex_m33/gcc" +``` + +6. Add folders to **.gitignore** file: +``` +/TouchGFX/ +/Middlewares/ST/touchgfx/ +``` \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx new file mode 100644 index 00000000..8dc494c7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -0,0 +1,2769 @@ +{ + "Application": { + "Screens": [ + { + "Name": "Main", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "menuLayout", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuLayout" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "Main" + } + } + ] + }, + { + "Name": "MenuSettings", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "menuLayout", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuLayout" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "MenuSettings" + } + } + ] + }, + { + "Name": "MenuAlerts", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "menuLayout", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuLayout" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "MenuAlerts" + } + } + ] + }, + { + "Name": "MenuTime", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "menuLayout", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuLayout" + }, + { + "Type": "Image", + "Name": "tick", + "X": 186, + "Y": 60, + "Width": 22, + "Height": 17, + "LockPosition": true, + "RelativeFilename": "TickAmber_22x17.png" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "MenuTime" + } + } + ] + }, + { + "Name": "MenuTimeSaved", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "TextArea", + "Name": "savedText", + "X": 73, + "Y": 150, + "Width": 95, + "Height": 38, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "AutoSize": true, + "Wildcard1": { + "TextId": "TEXT_SAVED" + } + }, + { + "Type": "Image", + "Name": "icon", + "X": 95, + "Y": 95, + "Width": 50, + "Height": 50, + "LockPosition": true, + "RelativeFilename": "CircleTick_50x50.png" + }, + { + "Type": "TextArea", + "Name": "messageText", + "X": 60, + "Y": 53, + "Width": 120, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_MEDIUM_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "MenuTimeSaved" + } + } + ] + }, + { + "Name": "TrackStartConfirmation", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "TextArea", + "Name": "questionText", + "X": 35, + "Y": 94, + "Width": 170, + "Height": 52, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_20", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "LineSpacing": -5, + "Wildcard1": {} + }, + { + "Type": "Image", + "Name": "tick", + "X": 186, + "Y": 60, + "Width": 22, + "Height": 17, + "LockPosition": true, + "RelativeFilename": "TickAmber_22x17.png" + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackStartConfirmation" + } + } + ] + }, + { + "Name": "Track", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "scrollIndicator", + "Y": 47, + "Width": 36, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "ScrollIndicator" + }, + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "CustomContainerInstance", + "Name": "trackFaceStatus", + "Width": 240, + "Height": 240, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "TrackFaceStatus" + }, + { + "Type": "CustomContainerInstance", + "Name": "trackFaceTotal", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "TrackFaceTotal" + }, + { + "Type": "CustomContainerInstance", + "Name": "trackFaceLap", + "Width": 240, + "Height": 240, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "TrackFaceLap" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "Track" + } + } + ] + }, + { + "Name": "TrackLap", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "Line", + "Name": "line2", + "X": 35, + "Y": 127, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "caloriesValue", + "X": 70, + "Y": 158, + "Width": 100, + "Height": 44, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_WXKL", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "caloriesText", + "X": 70, + "Y": 137, + "Width": 100, + "Height": 23, + "LockPosition": true, + "TextId": "ResourceId7", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "TextArea", + "Name": "timeValue", + "X": 122, + "Y": 82, + "Width": 100, + "Height": 44, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_3KKT", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "timeText", + "X": 136, + "Y": 58, + "Width": 44, + "Height": 23, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "AutoSize": true, + "Wildcard1": { + "TextId": "TEXT_TIME" + } + }, + { + "Type": "Line", + "Name": "line1", + "X": 119, + "Y": 84, + "Width": 3, + "Height": 44, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndY": 44.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "hrValue", + "X": 18, + "Y": 82, + "Width": 100, + "Height": 44, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_Z0WD", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "hrText", + "X": 40, + "Y": 58, + "Width": 70, + "Height": 23, + "LockPosition": true, + "TextId": "ResourceId6", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "AutoSize": true + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackLap" + } + } + ] + }, + { + "Name": "TrackAction", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "menuLayout", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuLayout" + }, + { + "Type": "CustomContainerInstance", + "Name": "pauseIndicator", + "Y": 200, + "Width": 240, + "Height": 34, + "LockPosition": true, + "CustomContainerDefinitionName": "PauseIndicator" + }, + { + "Type": "CustomContainerInstance", + "Name": "infoCarousel", + "X": 40, + "Width": 160, + "Height": 87, + "LockPosition": true, + "CustomContainerDefinitionName": "InfoCarousel" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackAction" + } + } + ] + }, + { + "Name": "TrackDiscardConfirmation", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "TextArea", + "Name": "questionText", + "X": 35, + "Y": 88, + "Width": 170, + "Height": 80, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_20", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "LineSpacing": -5, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 40 + } + }, + { + "Type": "Image", + "Name": "tick", + "X": 186, + "Y": 60, + "Width": 22, + "Height": 17, + "LockPosition": true, + "RelativeFilename": "TickAmber_22x17.png" + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackDiscardConfirmation" + } + } + ] + }, + { + "Name": "TrackDiscarded", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "TextArea", + "Name": "subtitleText", + "X": 48, + "Y": 158, + "Width": 144, + "Height": 57, + "LockPosition": true, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 30 + } + }, + { + "Type": "Image", + "Name": "icon", + "X": 95, + "Y": 95, + "Width": 50, + "Height": 50, + "LockPosition": true, + "RelativeFilename": "CircleCross_50x50.png" + }, + { + "Type": "TextArea", + "Name": "headingText", + "X": 41, + "Y": 47, + "Width": 159, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_DISCARTED", + "UseBuffer": true, + "BufferSize": 15 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackDiscarded" + } + } + ] + }, + { + "Name": "TrackSaved", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "TextArea", + "Name": "subtitleText", + "X": 48, + "Y": 156, + "Width": 144, + "Height": 57, + "LockPosition": true, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 30 + } + }, + { + "Type": "Image", + "Name": "icon", + "X": 95, + "Y": 95, + "Width": 50, + "Height": 50, + "LockPosition": true, + "RelativeFilename": "CircleTick_50x50.png" + }, + { + "Type": "TextArea", + "Name": "headingText", + "X": 41, + "Y": 47, + "Width": 159, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_SAVED", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction2", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackSaved" + } + } + ] + }, + { + "Name": "TrackSummary", + "CanvasBufferSize": 3600, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 46, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "CustomContainerInstance", + "Name": "scrollIndicator", + "Y": 47, + "Width": 36, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "ScrollIndicator" + }, + { + "Type": "CustomContainerInstance", + "Name": "summaryFaceLaps", + "Width": 240, + "Height": 240, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "SummaryFaceLaps" + }, + { + "Type": "CustomContainerInstance", + "Name": "summaryFaceHeartRate", + "Width": 240, + "Height": 240, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "SummaryFaceHeartRate" + }, + { + "Type": "CustomContainerInstance", + "Name": "summaryFaceOverview", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "SummaryFaceOverview" + } + ], + "Interactions": [ + { + "InteractionName": "Interaction1", + "Trigger": { + "Type": "TriggerScreenTransitionBegins" + }, + "Action": { + "Type": "ActionGotoScreen", + "ScreenTransitionType": "ScreenTransitionNone", + "ActionComponent": "TrackSummary" + } + } + ] + } + ], + "CustomContainerDefinitions": [ + { + "Name": "Battery", + "Width": 90, + "Height": 28, + "Components": [ + { + "Type": "Box", + "Name": "s1box", + "X": 4, + "Width": 14, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + } + }, + { + "Type": "Line", + "Name": "s1line1", + "Width": 8, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 4.0, + "StartY": 4.0, + "EndX": 4.0, + "EndY": 24.0, + "LineWidth": 8.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "s1line2", + "X": 16, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Box", + "Name": "s2box", + "X": 24, + "Width": 16, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + } + }, + { + "Type": "Line", + "Name": "s2line1", + "X": 22, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "s2line2", + "X": 38, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Box", + "Name": "s3box", + "X": 46, + "Width": 16, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + } + }, + { + "Type": "Line", + "Name": "s3line1", + "X": 44, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "s3line2", + "X": 60, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Box", + "Name": "s4box", + "X": 68, + "Width": 14, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + } + }, + { + "Type": "Line", + "Name": "s4line1", + "X": 66, + "Width": 4, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 2.0, + "StartY": 2.0, + "EndX": 2.0, + "EndY": 26.0, + "LineWidth": 4.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "s4line2", + "X": 78, + "Width": 8, + "Height": 28, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 4.0, + "StartY": 4.0, + "EndX": 4.0, + "EndY": 24.0, + "LineWidth": 8.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "s4line3", + "X": 82, + "Y": 6, + "Width": 8, + "Height": 16, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "StartX": 4.0, + "StartY": 4.0, + "EndX": 4.0, + "EndY": 12.0, + "LineWidth": 8.0, + "LineEndingStyle": "Round" + } + ], + "Interactions": [] + }, + { + "Name": "Buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "Components": [ + { + "Type": "Circle", + "Name": "bL1", + "Width": 240, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 113.0, + "LineWidth": 6.0, + "StartAngle": 291.0, + "EndAngle": 308.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "bL2", + "Width": 240, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 113.0, + "LineWidth": 6.0, + "StartAngle": 232.0, + "EndAngle": 249.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "bR2", + "Width": 240, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 113.0, + "LineWidth": 6.0, + "StartAngle": 111.0, + "EndAngle": 128.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "bR1", + "Width": 240, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 113.0, + "LineWidth": 6.0, + "StartAngle": 52.0, + "EndAngle": 69.0, + "CapPrecision": "Round" + } + ], + "Interactions": [] + }, + { + "Name": "HeartRateZone", + "X": 15, + "Width": 210, + "Height": 71, + "Components": [ + { + "Type": "Image", + "Name": "group", + "Width": 210, + "Height": 69, + "LockPosition": true, + "RelativeFilename": "HeartRateZoneGroup.png" + }, + { + "Type": "Image", + "Name": "hr1", + "Y": 28, + "Width": 39, + "Height": 44, + "Visible": false, + "LockPosition": true, + "RelativeFilename": "HeartRateZone1.png" + }, + { + "Type": "Image", + "Name": "hr2", + "X": 33, + "Y": 3, + "Width": 47, + "Height": 37, + "Visible": false, + "LockPosition": true, + "RelativeFilename": "HeartRateZone2.png" + }, + { + "Type": "Image", + "Name": "hr3", + "X": 80, + "Width": 50, + "Height": 28, + "Visible": false, + "LockPosition": true, + "RelativeFilename": "HeartRateZone3.png" + }, + { + "Type": "Image", + "Name": "hr4", + "X": 131, + "Y": 3, + "Width": 47, + "Height": 37, + "Visible": false, + "LockPosition": true, + "RelativeFilename": "HeartRateZone4.png" + }, + { + "Type": "Image", + "Name": "hr5", + "X": 173, + "Y": 28, + "Width": 39, + "Height": 44, + "Visible": false, + "LockPosition": true, + "RelativeFilename": "HeartRateZone5.png" + } + ], + "Interactions": [] + }, + { + "Name": "InfoCarousel", + "X": 40, + "Width": 160, + "Height": 87, + "Components": [ + { + "Type": "Line", + "Name": "line", + "Y": 65, + "Width": 160, + "Height": 3, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "EndX": 160.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "dataValue", + "Y": 29, + "Width": 160, + "Height": 45, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "titleText", + "Y": 10, + "Width": 160, + "Height": 27, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 15 + } + } + ], + "Interactions": [] + }, + { + "Name": "PauseIndicator", + "Width": 240, + "Height": 34, + "Components": [ + { + "Type": "Circle", + "Name": "background", + "X": 38, + "Width": 164, + "Height": 34, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "CenterX": 82.0, + "CenterY": -82.0, + "Radius": 116.0, + "EndAngle": 360.0, + "CapPrecision": "Butt" + }, + { + "Type": "TextArea", + "Name": "timerValue", + "X": 88, + "Y": 5, + "Width": 85, + "Height": 23, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "Image", + "Name": "pauseIcon", + "X": 76, + "Y": 10, + "Width": 14, + "Height": 14, + "LockPosition": true, + "RelativeFilename": "Pause_14x14.png" + } + ], + "Interactions": [] + }, + { + "Name": "ScrollIndicator", + "Y": 47, + "Width": 36, + "Height": 146, + "Components": [ + { + "Type": "Circle", + "Name": "rail", + "Width": 36, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 112.0, + "LineWidth": 8.5, + "StartAngle": 232.0, + "EndAngle": 308.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "handle", + "Width": 36, + "Height": 146, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 112.0, + "LineWidth": 8.5, + "StartAngle": 290.0, + "EndAngle": 308.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "handleOvf", + "Width": 36, + "Height": 146, + "Visible": false, + "LockPosition": true, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 120.0, + "CenterY": 73.0, + "Radius": 112.0, + "LineWidth": 8.5, + "StartAngle": 290.0, + "EndAngle": 308.0, + "CapPrecision": "Round" + } + ], + "Interactions": [] + }, + { + "Name": "Title", + "X": 50, + "Width": 140, + "Height": 41, + "Components": [ + { + "Type": "Line", + "Name": "line", + "Y": 38, + "Width": 140, + "Height": 3, + "LockPosition": true, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "EndX": 140.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "titleText", + "X": 10, + "Y": 11, + "Width": 120, + "Height": 23, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 16 + } + } + ], + "Interactions": [] + }, + { + "Name": "Toggle", + "Width": 60, + "Height": 30, + "Components": [ + { + "Type": "Line", + "Name": "rail", + "Width": 60, + "Height": 30, + "StartX": 15.0, + "StartY": 15.0, + "EndX": 45.0, + "EndY": 15.0, + "LineWidth": 30.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Circle", + "Name": "handle", + "Width": 30, + "Height": 30, + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "CenterX": 15.0, + "CenterY": 15.0, + "Radius": 15.0, + "EndAngle": 360.0, + "CapPrecision": "Butt" + } + ], + "Interactions": [] + }, + { + "Name": "MainMenu", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "ScrollWheel", + "Name": "wheel", + "Y": 87, + "Width": 240, + "Height": 132, + "LockPosition": true, + "UseSelectedStyle": true, + "SelectedItemTemplateName": "MainMenuCenterItem", + "MarginAfter": 15, + "IsCircular": true, + "ItemTemplateName": "MainMenuItem", + "NumberofItems": 10, + "Easing": "Linear", + "EasingOption": "Out", + "SwipeAcceleration": 1.0, + "DragAcceleration": 1.0, + "OverShootPercentage": 100 + }, + { + "Type": "CustomContainerInstance", + "Name": "scrollIndicator", + "Y": 47, + "Width": 36, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "ScrollIndicator" + } + ], + "Interactions": [] + }, + { + "Name": "MainMenuCenterItem", + "Width": 240, + "Height": 66, + "Components": [ + { + "Type": "TextArea", + "Name": "tipText", + "Y": 40, + "Width": 240, + "Height": 25, + "Visible": false, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "LineSpacing": -8, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "TextArea", + "Name": "labelText", + "Y": 13, + "Width": 240, + "Height": 40, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "LineSpacing": -8, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "toggle", + "X": 151, + "Y": 18, + "Width": 60, + "Height": 30, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "Toggle" + }, + { + "Type": "Image", + "Name": "icon", + "X": 20, + "Y": 3, + "Width": 80, + "Height": 80, + "Visible": false, + "LockPosition": true + } + ], + "Interactions": [] + }, + { + "Name": "MainMenuItem", + "Width": 240, + "Height": 66, + "Components": [ + { + "Type": "TextArea", + "Name": "tipText", + "Y": 44, + "Width": 240, + "Height": 25, + "Visible": false, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Green": 128, + "Blue": 128 + }, + "LineSpacing": -8, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "TextArea", + "Name": "labelText", + "Y": 20, + "Width": 240, + "Height": 23, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "LineSpacing": -6, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "Image", + "Name": "icon", + "X": 46, + "Y": 7, + "Width": 80, + "Height": 80, + "Visible": false, + "LockPosition": true + } + ], + "Interactions": [] + }, + { + "Name": "MainMenuBackground", + "Width": 220, + "Height": 66, + "Components": [ + { + "Type": "Circle", + "Name": "circle", + "Width": 220, + "Height": 66, + "LockPosition": true, + "Color": { + "Green": 64, + "Blue": 64 + }, + "CenterX": 110.0, + "CenterY": 33.0, + "Radius": 110.0, + "EndAngle": 360.0, + "CapPrecision": "Butt" + } + ], + "Interactions": [] + }, + { + "Name": "MainMenuLayout", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "CustomContainerInstance", + "Name": "background", + "X": 16, + "Y": 87, + "Width": 220, + "Height": 66, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenuBackground" + }, + { + "Type": "CustomContainerInstance", + "Name": "buttons", + "Y": 47, + "Width": 240, + "Height": 146, + "LockPosition": true, + "CustomContainerDefinitionName": "Buttons" + }, + { + "Type": "CustomContainerInstance", + "Name": "menu", + "Width": 240, + "Height": 240, + "LockPosition": true, + "CustomContainerDefinitionName": "MainMenu" + }, + { + "Type": "TextArea", + "Name": "infoText", + "X": 35, + "Y": 57, + "Width": 170, + "Height": 23, + "Visible": false, + "LockPosition": true, + "TextId": "TMP_ITALIC_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [] + }, + { + "Name": "TimerRing", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "Circle", + "Name": "track", + "Width": 240, + "Height": 240, + "Color": { + "Red": 64, + "Green": 64, + "Blue": 64 + }, + "CenterX": 120.0, + "CenterY": 120.0, + "Radius": 112.0, + "LineWidth": 8.5, + "StartAngle": 138.0, + "EndAngle": 402.0, + "CapPrecision": "Round" + }, + { + "Type": "Circle", + "Name": "progress", + "Width": 240, + "Height": 240, + "Color": { + "Red": 192, + "Green": 128 + }, + "CenterX": 120.0, + "CenterY": 120.0, + "Radius": 112.0, + "LineWidth": 8.5, + "StartAngle": 138.0, + "EndAngle": 160.0, + "CapPrecision": "Round" + } + ], + "Interactions": [] + }, + { + "Name": "TrackFaceLap", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "timerText", + "X": 60, + "Y": 204, + "Width": 120, + "Height": 23, + "TextId": "ResourceId3", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "TextArea", + "Name": "timerValue", + "X": 35, + "Y": 162, + "Width": 170, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_KERT", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Line", + "Name": "line2", + "X": 35, + "Y": 159, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "lapValue", + "X": 53, + "Y": 111, + "Width": 134, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_4SCV", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "lapText", + "X": 50, + "Y": 88, + "Width": 140, + "Height": 23, + "TextId": "ResourceId4", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "Line", + "Name": "line1", + "X": 35, + "Y": 79, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "hrValue", + "X": 58, + "Y": 30, + "Width": 124, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_8WSQ", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "hrText", + "X": 70, + "Y": 10, + "Width": 100, + "Height": 23, + "TextId": "ResourceId5", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + } + ], + "Interactions": [] + }, + { + "Name": "TrackFaceTotal", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "timerText", + "X": 75, + "Y": 204, + "Width": 91, + "Height": 22, + "LockPosition": true, + "TextId": "ResourceId2", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "TextArea", + "Name": "timerValue", + "X": 35, + "Y": 162, + "Width": 170, + "Height": 42, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_GAMW", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Line", + "Name": "line3", + "X": 35, + "Y": 159, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "caloriesValue", + "X": 18, + "Y": 111, + "Width": 204, + "Height": 48, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_35", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_OTQI", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "caloriesText", + "X": 20, + "Y": 88, + "Width": 200, + "Height": 23, + "LockPosition": true, + "TextId": "ResourceId1", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "Line", + "Name": "line1", + "X": 35, + "Y": 79, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "hrText", + "X": 160, + "Y": 50, + "Width": 45, + "Height": 23, + "LockPosition": true, + "TextId": "TMP_REGULAR_18_L", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_HR_UC", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "hrValue", + "X": 75, + "Y": 29, + "Width": 90, + "Height": 44, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_HFND", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "hrZone", + "X": 15, + "Y": 4, + "Width": 210, + "Height": 71, + "LockPosition": true, + "CustomContainerDefinitionName": "HeartRateZone" + } + ], + "Interactions": [] + }, + { + "Name": "TrackFaceStatus", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "percentValue", + "X": 85, + "Y": 172, + "Width": 70, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_MEDIUM_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_ICBU", + "UseBuffer": true, + "BufferSize": 5 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "battery", + "X": 75, + "Y": 138, + "Width": 90, + "Height": 28, + "LockPosition": true, + "CustomContainerDefinitionName": "Battery" + }, + { + "Type": "Line", + "Name": "line", + "X": 35, + "Y": 120, + "Width": 170, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "StartX": 170.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "dayTimeValue", + "X": 35, + "Y": 43, + "Width": 170, + "Height": 77, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_60", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_YHFT", + "UseBuffer": true, + "BufferSize": 10 + } + } + ], + "Interactions": [] + }, + { + "Name": "SummaryFaceOverview", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "caloriesValue", + "X": 135, + "Y": 173, + "Width": 77, + "Height": 32, + "TextId": "TMP_SEMIBOLD_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_XTK2", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "caloriesText", + "X": 43, + "Y": 179, + "Width": 91, + "Height": 21, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_CALORIE_UC", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Line", + "Name": "line2", + "X": 25, + "Y": 166, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "avgHRValue", + "X": 132, + "Y": 127, + "Width": 78, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_ZJSJ", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "avgHRText", + "X": 39, + "Y": 133, + "Width": 100, + "Height": 21, + "LockPosition": true, + "TextId": "__SingleUse_Q39K", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_AVG_HR_UC", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Line", + "Name": "line1", + "X": 25, + "Y": 120, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "timerValue", + "X": 66, + "Y": 60, + "Width": 134, + "Height": 35, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_5T2E", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Image", + "Name": "clockIcon", + "X": 45, + "Y": 62, + "Width": 24, + "Height": 29, + "LockPosition": true, + "RelativeFilename": "clock_24x29.png" + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [] + }, + { + "Name": "SummaryFaceHeartRate", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "maxHrText", + "X": 81, + "Y": 118, + "Width": 78, + "Height": 25, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_20", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_MAX_HR_UC", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "maxHrValue", + "X": 70, + "Y": 77, + "Width": 100, + "Height": 51, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_CMV2", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Line", + "Name": "line", + "X": 25, + "Y": 147, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "avgHrText", + "X": 81, + "Y": 191, + "Width": 75, + "Height": 25, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_20", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "TEXT_AVG_HR", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "avgHrValue", + "X": 70, + "Y": 150, + "Width": 100, + "Height": 51, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_FMCS", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Image", + "Name": "heartIcon", + "X": 105, + "Y": 48, + "Width": 30, + "Height": 30, + "LockPosition": true, + "RelativeFilename": "Heart_30x30.png" + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [] + }, + { + "Name": "SummaryFaceLaps", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "ScrollList", + "Name": "scrollList", + "X": 25, + "Y": 126, + "Width": 190, + "Height": 90, + "LockPosition": true, + "ItemTemplateName": "LapListItem", + "NumberofItems": 3, + "Easing": "Linear", + "EasingOption": "Out", + "SwipeAcceleration": 1.0, + "DragAcceleration": 1.0, + "OverShootPercentage": 100 + }, + { + "Type": "TextArea", + "Name": "maxHRText", + "X": 151, + "Y": 104, + "Width": 64, + "Height": 23, + "TextId": "ResourceId10", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "TextArea", + "Name": "avgHRText", + "X": 78, + "Y": 104, + "Width": 79, + "Height": 21, + "TextId": "ResourceId11", + "TextRotation": "0", + "Color": { + "Green": 192, + "Blue": 192 + } + }, + { + "Type": "TextArea", + "Name": "timeText", + "X": 40, + "Y": 104, + "Width": 39, + "Height": 20, + "TextId": "ResourceId12", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "AutoSize": true + }, + { + "Type": "Line", + "Name": "line", + "X": 25, + "Y": 100, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "timerText", + "X": 73, + "Y": 75, + "Width": 118, + "Height": 23, + "LockPosition": true, + "TextId": "TMP_REGULAR_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 32 + } + }, + { + "Type": "Image", + "Name": "clockIcon", + "X": 54, + "Y": 75, + "Width": 16, + "Height": 19, + "LockPosition": true, + "RelativeFilename": "Clock_16x19.png" + }, + { + "Type": "TextArea", + "Name": "lapsText", + "X": 20, + "Y": 40, + "Width": 200, + "Height": 38, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_30", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "UseBuffer": true, + "BufferSize": 16 + } + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [] + }, + { + "Name": "LapListItem", + "Width": 190, + "Height": 18, + "Components": [ + { + "Type": "TextArea", + "Name": "maxHRText", + "X": 127, + "Width": 64, + "Height": 18, + "TextId": "TMP_REGULAR_14_L", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_ACJE", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "avgHRText", + "X": 53, + "Width": 79, + "Height": 18, + "TextId": "TMP_REGULAR_14_L", + "TextRotation": "0", + "Color": { + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_BOEQ", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "timeText", + "X": 19, + "Width": 40, + "Height": 18, + "TextId": "TMP_REGULAR_14_R", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_NOCF", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "indexText", + "Width": 21, + "Height": 18, + "LockPosition": true, + "TextId": "TMP_REGULAR_14_R", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_U3YM", + "UseBuffer": true, + "BufferSize": 5 + } + } + ], + "Interactions": [] + } + ], + "Name": "WorkoutGUI", + "Resolution": { + "Width": 240, + "Height": 240 + }, + "SelectedColorDepth": 8, + "StartupScreenName": "Main", + "SelectedStartupLanguage": "GB", + "TouchGfxPath": "../../../../../../ThirdParty/touchgfx", + "UIPath": ".", + "AvailableColorDepths": [ + 8 + ], + "AvailableLCDs": { + "8": "LCD8bpp_ABGR2222" + }, + "AvailableSections": [ + "ExtFlashSection", + "IntFlashSection" + ], + "AvailableResolutions": [ + { + "Width": 240, + "Height": 240 + } + ], + "PhysicalButtons": [], + "FrameworkFeatures": { + "LCD8bpp_ABGR2222": { + "Id": "LCD8bpp_ABGR", + "Features": [ + { + "Id": "TextureMapperImageFormats", + "Features": [ + { + "Id": "ABGR2222", + "Features": [ + { + "Id": "NearestNeighbor", + "IsEnabled": true + } + ] + } + ] + } + ] + } + }, + "GenerateAssetsCommand": "make -f simulator/gcc/Makefile assets -j8", + "PostGenerateCommand": "touchgfx update_project --project-file=simulator/msvs/Application.vcxproj", + "PostGenerateTargetCommand": "touchgfx update_project", + "PostGenerateTargetCommandOverride": "", + "CompileSimulatorCommand": "make -f simulator/gcc/Makefile -j8", + "RunSimulatorCommand": "build\\bin\\simulator.exe", + "LandscapeSkinX": 0, + "LandscapeSkinY": 0, + "PortraitSkinX": 0, + "PortraitSkinY": 0, + "DisplayOrientation": "Portrait", + "Family": "STM32U5", + "SubFamily": "STM32U575/585", + "Toolchain": "STM32CubeIDE", + "Platform": "m33", + "OptionalComponentsRoot": "touchgfx_components", + "OptionalComponents": [], + "AdditionalFeatures": [] + }, + "Version": "4.26.1" +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config b/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config new file mode 100644 index 00000000..b78b294b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config @@ -0,0 +1,24 @@ +{ + "image_configuration": { + "dither_algorithm": "0", + "alpha_dither": "no", + "layout_rotation": "90", + "opaque_image_format": "ABGR2222", + "nonopaque_image_format": "ABGR2222", + "l8_compression": "no", + "section": "IntFlashSection", + "extra_section": "IntFlashSection", + "images": {}, + "rgb_compression": "no" + }, + "text_configuration": { + "remap": "yes", + "a4": "yes", + "binary_translations": "no", + "binary_fonts": "no", + "framebuffer_bpp": "8", + "font_format": "0", + "cache_size": 4096, + "copy_translations_to_ram": "no" + } +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/OLDENGL.TTF b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/OLDENGL.TTF new file mode 100644 index 0000000000000000000000000000000000000000..bed2c5bf86c0b1ce617651360ae9abcade9e27ec GIT binary patch literal 93068 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 Mnz^Q`9>yI11K#A;xBvhE literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Italic.ttf b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12b7b3c40b5c8dd7d90968d43bac7bc673a6c221 GIT binary patch literal 182012 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

    ?;_d7QR+e3!@*M~gh!9Dwgr*NHqmUgQ}MAnciU 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

    rOJxY zOiUi+p$a#7b7XP`k&Ft>(5V4}EAnKZwJIT3K~m*agd!IpRedu+EuCF;Pnq5VfWW7x z6;oBy%hCx697);qGTBAxWvXk^%TiP-RvR<}!3@=E>62{*C?SM{6p1iNWx*;Wvw-vT z1WD_3gd}{CC0Y_a9d(wuwh^wxkzAHc$l*xjNd(t zMN-GYMS_Zv#Fw3@!m<*1iuiEK#ACTclTlaC-}>#2)n7D=Q60zo{vvQOaA!wRkd zy#eq7)EAY4qeID_E3m*wt}0NKD^SElJF_)ESzZ{x#(H?U3e3Byo zAe%)l5KBxJKt+)p#gTCIe6rVah#V4HGN|4~IjYOxSa8X?Ij5{I6)(YM+jGif=Dw=! zBt0RmucB68#Uy!ojiIL$q@+4=?t!<7+lE@aOKhj z7o0?86r&7uD7k1es05!H(b9wL7$V9m#W3ZSO_SaX67`f1u+4r8F05?|fn`|(Y=K@P z@trCW^i`F~)su*eRE)({^)9A`4g{lWQ`V+h!y`EjF_ON;iYa7cB)pt*5CmeGQJ(C{{8I3B3}p&j0!pSgbmhmO6<;j#~^{iIRpd zVyUmBBUyoZN`_>uu(6O-#W_q+dCvHnk!{r;w9K;eZqvL84=Nv*30l(@mAnprfuuNW zSTi%N^8#;E5P2y``H|P+ZA$K_;w%NL>a=SHR1uwKhL|obwq!uTZHX~NvrevametdOboPLhg z6bEi7N-P^!ivE{wDIzlT2h(KXQCc)fn4y<=Q9X z1g5;QvZ`j1ePxr^m{M6zS%)hp1$fFQ*{14{FX^+gCMtZBzB)s+4O) ze-q*=>DZ??0ospj^2&yUnoPPIX3U&aJ$87Nv06H|nR+d%b(hExYD(6jQ*1N!603Dr zriVqU^sp#nPI+bBq$=ZB>FBXZx|?jwQS}=u9YYQ(Wf%*~n5S~pSmg?jP`Sb*jd?0p zjdX1D^_q>hu3>np4xQFIe^gz~$nx5{abwHtCbb@K9WoZFa%!#0iO}mF5oIh=<Un>Quxp!j-5@lay1cXj-ReT574Oa*d^`XX~V6Q(9YHGt#Dx?AE2$ zwQXHz9kMO8P+Yk!`_Zvp-MA5BtERS`V&xxT<)7B(Q)sk|H-*ONZldn0el;a2cvEtWu^$dgF&L&Or=KcuigfJy4X>`Mt(sUp(Qb;x zM|eV0RercB#sMnhH0h|+G+BCRYFdmTwXSwNMVdk&$tYJ=(G(gQCc~koNV}?ulfb(; z^^`HD5ZS#ZQ>bJoxb&JPY0I^hx@oO+r3Ly;rcSs`6SzzBfISWOMFJXM55ay0e**Wx zWw1x`v9KrdiHK*&YmfV~hc%IsmQ$j299}iqqH~1B9JD6kFI^7bPqzIaX@+o ziO?#@fgVAL)E;Qo1DJtc&~U@5;b!&khF*=QG>f?(hBYq2t39moDQPc;y%G8+W1*8# zi@&M(dl)(;)XpW)6*b9w>W6(ah1WkjRB8T6`jeQ?z6#R}q zGqeWmp&{S|Z2%A4{P)0(e>iUUUjj@TZt#n6TR&7hhr9XFxQCyB`}YTN*FF#T>KhUJ z9N-S&26r|7-of8S+{tdkUF<&m9l|~9IozjyfxFZ1a6kGBZb9#2U>Y%gGKk_Vg=}b* zko|&;nI`?RR}6Sj9Xg*SGJZ5}?-@TuHnav{v&|B+v$RJ`+g94&OS_M>dy&m*rF~f1 zm!*A^Y)}cdO?T-ZOt#^+w11NJ&t%)YMz-;sw7((SPX2Pcpx<+6hHPoaNn4gEz9qkq z@P;-rp16v!Q_?;yZJEj@O8;bOACdM!XZ9p0^^mk>{~8pvpO7(f>=~Al-zJZ2<2D(eF6}I7dq|sp z$%Gl+C0neLw&V~Yc?o(k6hBVF(A)V;$o7h#WlXTNUnd*7Ok_*^(2|0mZISkQX`hs- zy&IwE->-PpW@nXak*wRrp&h?InW#7VCdYkh;#$5h?2oZ44bL zgg=5sSWqfp4J{}Ze!?U3BFADq+=LfU|AZGftnd;RDyaowwP1vM0Dl*tLva;m8A>?- zy@$2p2ZM_YAAzm@)*^KoVwX`W?0e#dfr~rv{hA^x+QJ__8v4kZlRoI z$aMi)8h7BogP2>ePf1*NWEeKICu<$ zD0zukCCgEiAxvlqVFLcE2vIy?KpXH!R3Q3+k`h14(9_Xc_|Qh=`T>ydqa3QuEs0Cj zk#M3%P%7vxdrQ*W;6i;Q>30M9DaS1e!=}0rtqCLfK>@N6quNGolyyQZ<-I`Z@ZW(S zeJ6dyhr}xfs2s$g#;}ioo~SW=1gUu70P1xFWvxYiDgk{AE~YZp0j8-2@Kcy*^gi&u zFWY(*?InusmVeY6)Nj-mw}6p2%R;@YD3hp1tx$i8b`-t`Zl@N2+tDj7m<=}LOELz% zzEhZy*6<_nmvYRaHt~1^n?bJ-@uDX`3Hw=o0`^d{ZEPvka0*{CF>#O|$2``aA4dEY zvW@9@!;=ZKjGsY%Lm2rDuMoUp6xq=315T{=D2v^aCDx*Jt62zN6fk@_5rVmgL6WAI zM~wJF=&gS=Pucv=+?Wq^cummPO)z>Gdq6)o3%a;{p?6yW9orh{(@ux(>>TLHKEqx_ z`m4}@eGBiFr5SVBdOq7&WbAJoY8(ok*PYOBt!KxKvmwo0GCpT~iG9Xy8sCA2>QC%< z<346Ko&XW;jbHF~#_ynG+7IT$RZ*l0%`<7-m;+LBBCPd>Y_XZWDyYs5%G;)MQ{-jT|{J+>!O!c zM3zOxRaq91x!+SgsWczg`~UsqlVAV3s=B(my6V)U&pERSoz11BS&3fe`jq$3!ra80 z*_Lv|>`Xa^UgbyVP=0O>r)HRMLdn$NNpvBTQw!02JSWsRwF>RVoYWzy!_j8!m^vnP z0@{n^sk6~l>`fg{h%W}W#LiH^*-P$J+2^@m{2?kBzS8jF%a5ZVmq~ z{sb+hx#k@HUUN%&Oz)dKUrU9r0m@k?Q$z5%0EQmaGKU`3*w9ps4Si*w;*QfllIL9( zZ?-rV|1etG$>569lSp~Dy=tjGX=t{+cB?*VXoZ$P=~jD}ri$j=co|onh_@%!)>3G! zy>@`T>L+~)?EAG07uotbrQDpsX~BPzOuk$~ z3;!i%Y9|x22x+9UNac_(h2*qKAavam(nnx(z&>=^{sC?mXsY)2+ ziJ$`q9-XgUw(Zy4Il)o3nHK}-2o{uZH? zJfGRcB0CPRVx-%^_@(2NKl|BZ=L$MHF~6W?jf;N|ZbrI`+=O1S@S{M*;I%e<2^z~{ z9%kMtG9tbdew2LyjU5CoiH|3w3H7Y`+yicozX0A8XAHtu0OJlRHGD~YH7V=Ikrzho zO35?6obVCxIq;)8!kCy1k18fLw|uze4fU!pz8ApnZO9+BJjr)zX_N2Ja@J|2A$X_I zl)Wr}K%Xew=JZ`)Os@((qUl4EG<~>4Q-%)Or=AnPgp%B@Xd1>F!Dm<=j_c@r?djJo zGTO?4(}%!irx~N=wDOQGLuj$qSZJ2!%x{2EW9S;|Q`}@rGEI57p>ky0MO^!N`~%Xo z*D@gQ*uBDUQZD?*csEiuu%)$cBvft7+}Gy(SB(wXdPut0hWD{=~Uh5^?*5=UK=6u}NTTgvDdM!R}^x1dWYcJFg^Sls@`EzepT`)K@ULRM)kw)I;6pS8_|=4t)& ziyqXc`HA1PV})f)(#qy@pUol5-d(-#N_eH_CO5|Wk}@2h0DoM$+@?s1G%StRdBMHB zV!M|&*h*OS+^Tl6A>>6JwDa}1+Z!^|$)vn0f&F;h-Af^-x{Sx?G9PM!y{PZS)sNTx zzEtw5hgN?EcBV~z4Sx3irg}Thz;RqsCWz{|w+s z_yqBSI05xlNe<#9wq+,gV`s$@(G;FNJws-?r}9K5E*Hl51VZi6q$!F*VU2dB3mN6BKsppA}3m=x6Ex>+_HCIJgw$k>F)&R(Z;&5^En8s z2Yti6DdVk{^>M7PWBnZK@7P6-4RGw@1k<&;+HT}qTMgZ5tsT+zw++)MgWk0#ZEqH~ z8p?ZF-X6}c6mX?quc>wwZz4Hn4lx=0t8Kl$fd^{yjOd$D|H5JRwGBDCyP2kxVh}qC z*JCv?2P=-H?BYJBo`$iv_?*4klkCu*gH>K0mUcbZl^w>8;41=LfA_ZLUMmCq z(Ewi+;Ex6P>HvQ{z}E!$69N8YfUga3q=_rTQvtp{z@HBA4FUd4fUCuL&9gik;Lip4 z^8x-sfWH{vF9rC^0lq1~UkPxvY}fl5-d7IxLY}pfZ%X^`ht<&l{#wrj`X#v5v1-Szb8L)bV;vjk*m%co zaBPBO6CIoE*c8X6IyTL*8y%bO*l!)1VVQn&%Hgeh)+Ve??OT_5R%Q&xLTggy3w$-3 zi`-b^t;*b-xg&E==6-KIc0^k;4(oGA`P(d&B1=RRC;6{;|tFa8HrWx zH1VbCf4RHs@1puO_PS%69oypAR>$6S>`#tubL<_*b~^U1V}EvRmt*fcw%f4}9NXjA zhmP%a>@SXejpCz0T< z@$GFlU)>HO!%y&~EuHZ*8!29lg>-MMpNAvIC$Zl$7mMU2Nb>cpX0~7@ycb!1m|c`p zSnf99YfldAmQt)~`}2)wBs(J0uyCEncb(zxbB;al*b9!m z=-5k+z3kW~$6j&lRmZf4`Sqeb%xBuee5O6jXKy&Bea#QkzUDLSYd+Jy<}>YUK6}ft z?T)?e*bc|EPx@DApY)mbNuRyvnD$OTOnax#w0HVUd#BH|clu0wr_Z!^`b>ML&$M^? zOnax#w0HVUd#BH|clzuT$F!gNVcJi9rv21s+E0C^{nTgLPaonxb}$?b>6FUJZ)&&sk3&RbuvAi-X^^;{hIVe=})HbOh1->vTnF;J=P~>eAn-f zeeZBa;PKq~7DnKCNb!f5|E**OxE=|zi4k}kGJH2P!Trny`EoDGly4%}RA65l!V)-& zHLV_FcoPeeQ&dz>VWL-{{vSAYl(0P(@ij`%*P;cWqskXxD`b*jmm5^Q943D2>5R(gf^` zhd(VxGq6mWgI%QsSS}GTDmh?SGmDoaPp>a+f7!^)&HHQa-l-vC<5FmEK|{djDwXGmxA zyNnW**keozxhhABzahq z&TqEIn2e$JeI2&DDyvk{&Z>}o1WH={$EO8tK$3iK;v%$r3C-@Y*5$UXq?Oo(vN}~004>2Wj zA6PEG2cvR77^55m=;tG;t4T=Z*~rERcnd3;S#3lvZmE3($gQJDq!Zq0)+cGwfLYf0 ztWer8&n-ruDTe=<{_?z)np*FF;JyQ?A6*ISd(xHfRh;WecO>V!${k6$btOBBqpn;> z6Rs=O(VXkbRLiX^OO-0Rs=SVHT}5jCx;j+ptE)kMuMhAvIkEt3D-VKsqT^A4ECf5s zBCtr7g2nO(*hyA`omrb{t*ik{v$dt_R_PlM(13>cM-U`(C`E9FJ7N|u1DWd*oK zbe8o5UMP9zvKCxt-)}VZyx-bZBsyQomu+Byyag7?+hB?8088Z^u#3D4Mnz{G74l~= zDDz!Ar2fayE2pvEneF#WJZ<`N@FR};c0T1ej-1{nk9^q!wiBI&6vwbY>Bi{a}TB2FCCOtE1Qfuu^t|{p1sHeL%kbjq?)u9E{3AutL5BW9+G^ zi|GUCp)Ma@3aeoju0n5V;h|S70YO43@~>!BY7LSSH_qUGYMvZ{d3| z$}ddly?+E_c(>G2{|l^?6JV7b0oTgc;8Su8T+e^9mo7SDm&i#l%5JKbwm1FaKaQ-w zHY1VKlo;7(>Tsm*m~%N&`=%ks@wD!r$vsEnU@PN+xkkWz69NlN80=t@z>X#vyuhS@ zMJ5$2HfdldlMa@ex?mSm4=gkF!LFtOSZ;K75H;t36($3Wne)I((+I3G2JC0f0@ql{ zlNcXNV?s*!CZg9i1uIM@7&GUCRlhC;@!-kRnC4(xlMUvX7GQyifJLSySYmR(a?=Wo znq08Lv<73Q4cOf@1A7PBht@dq^_T5h#~Y(_hGFDWV2?4=k>eGd7jYcHv6Lec$FwEa z9Fq^?nF;J*3PFB@4lFgD!7io*EH_=is3`+u_)axm50eKjH0{AZ;)&RJD@`YGEhA|m zGNK0~z@Xr~gYj^#Hy=s72wx+ski{F=C3+QUyxnx8Gy}<3=S0X=bD=%PjLs&sZCuPz zOIuF13-2!Hf|dMh@73ChioW4~0g1Go^CH;=R?43=PIiI=5>LUnix=Jy zZ!apR?6Hb-&F2(YWoMt-iv4-0wg#Ww=-3yQ8Kk`Wa`f;`G?u)_;qj*l{(fdK_j-`O zTs#uJj!&em{Iy~AvXd3Y9{%zuxkt zpOd~{KPTPcPq#iK2OuNXu^;w3v|m)0c|I+{Ppv8a)O`2i`%w<>wA7BDIxk@Jo=Y%kbB;f!WMqc2MuO?}R6)?Mm3s)7-_7k+-$?^(RGwNBiNuWE@h@;#KVV7?!!LPpU_+Q)L{u8+}I zUtxA;p9yb+HR&^9Y3P?fg6E+Z@tJqKyo`6Z3+NMm$_$tCe4DZreySFEFSAqi6B<4F z>J83MnR>*f%z`D!2H!ziSuOR;@fLVJp8xJoc@tFvKkt-r%2%nneqt?6&&86V-EK2lTEgWu*0_{Co7P7RgF>{kG!yZ$BRYzQnuV z*Ld?gX}$3^MO&(nJ-;gFHE&SjPIKIyBCvLN%sLO9F7?V-j^D*z_*Wc=KgFxiRG)>v z!~4+3UyA3#XROb`kF9ou`V~Bk7eU{D;J?wnS090@d*2doe?8G9$0uLnZnf{fC3kD? z{Va{}_}GOV%$W7?*pr>i5$yf1#xLTte1-ZOI`GHTBcb&)n9aUPF1`c%;PdYiVe2NuNnZ%OTMNTEXgCONYN(Uzh5mvQ(}#9@_I~Gw%55%UycD>a(K#2NL=utB14L zrS&~ys^7+Ut*69um{s^!CA+Iy!_wFvIl&I@EBJTBucP(2ILuF(wBMy{1FOrf%D3#7 z{EK~(Q|JL_;#u-dyhH91owri{r1dU+TUdSXOG%NYl8v{^sd%+qjP`IGjsK2#Tr9OC zt6nq1U6Ti^<9#7n>?SYAbERtGeP?te)^r11x_np~>!g`z**uK5%g6C(`GI_E$7oHd zb>Yjpc9tDsW%ZM_5eZ9@_47FzkDMFOWBwF>k`37tyV%O~Fj6X)6=R~+B&igt%}1rR zUlQZO^&6@%@3i6JTG>%x!_QBI?{Von*l?9Bl#>-K^Lj=ewGq-k9al6|b2H)P?7Qg5 z>>=B=?)9!s(H98p(qj)(hmj~knTN5;Utp#1o1_byk)+qPd8+Pnn5$t6yqRW{hMLhJ zR!NCCUFmDwbvACy8FAwiao5|pac9I$OvK$_<0hODHzg4_$;M5#aayXWdTz@%&9UJL zR)?LnM%L~qo9~0_l`vQ%`m4~|K8ksMtv#I~h8V>Hdg{z|bOt5n7Ng$ch4`5s)=Si| zU$0{45cQ}r{U)#FnMrz`J2MwCIzMP^rh__Oh0RSiF0s#GerscAXso%}#*l_Fw;Q8V zRp8C}EoPW2rSK#<%$#)ZYay#wwP#YzIQ^ETQlij~9+Uazs8&X=C8R=KE1OjZ&9@Qi zuO;G_BSv8xb9LZ(UZs!aFoP)ddN6kw;*DfCaT>GRdDPu<<^t##l3M4Avnz>E!?8FPK@nfHSk7dSg)#s|*!@w+rG zPj9Eu8A?rCdd*A>oNX|Z0%t4Da5jckSQ|Ht)>wPipEg)~ z*3GEgtSL)JT5|1Kgtl9ImO*>1JxeyXaHiVUHDRhFV(2kxgc!ngR#lU42EPzedzKvE h#hCCO?2lK6UusLzJKnj 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 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Medium.ttf b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/fonts/Poppins-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6bcdcc27f22e001e46defdfd9e23f224ff65dd67 GIT binary patch literal 156520 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�y`;z7NXY<=wkmb;J@ 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�xlT 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 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleCross_50x50.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleCross_50x50.png new file mode 100644 index 0000000000000000000000000000000000000000..5768131f94febe66b788adbd95fbf389e10145c1 GIT binary patch literal 1419 zcmV;61$6p}P)Px#1am@3R0s$N2z&@+hyVZuHAzH4RA@uRT8&i`K@i^40>lom0zw0lQ~*=}RA6X8 z4;wI6;8}sO0)h<~Dli=w3()iXmf3jO+n>1~@ZRGkkDHyHZ~k{Sg&FC&EzRNc!W`Ac zOzPT9g{}K^yR7)7D9oxbX8pT1_p{P$#t;Gg`acx@Sz%5g_$9bZdU9F=SoNniUx$F| z1%v>w@ErsvfH9v67QN{Ms1pzXIKYArj{v||1_50I&{nG@H4uO}1Mw#?KF~5BNVf%; zD}Y&Q_^5!aN(&(CM%efsbliB2zb%BY!R;O>V=9VZJW(-63L&d$X|8f~Ng(1%1aTH) zgh2mg3bVlbs;h4^)~teRGe^L`NC=yCwI~n)aSP_bY$O2Y5WdQ3EBBszS!LB`kpQ%Y z#b>d&i2{K;eTi8D48Ky7U4k(OhVKPX1))wO^h>zedFWjbNGc{I00&zk1q^^LC9#Ca zf-%zqBH4-7*n7m4Xa!Xk(O4h{Cgy5T=D9D&9uSF(ACg)2fjp$bN410xET&Y@F*Uzx zy0#C5{&~@|#(x0eWQe&LfP4m!OGmc@B5en);ah?|P&EAxbs^1q$hHh60I|x3JeojS z){wY396LK{gm2Q=Y*w3%pPHLiu|N{mc=EW2flRm&1CRZ(`a5JG+8gGI5V z^|Zi5K-h%|Yy>KHPR3{l5L*~2;5Pk^ zQ4l#oWxp1y6Z6D`gkYHNH#yXzu%NsI!aF-(wdP0KjmM-*SYtO5%8r8|P;}lprm!hqu{m^b9F(xi;NEBm;7|c1zvzH& z7qo%-kt}S@TZag!SsMlMa3`}jZ&MGknZ+bSR2m_M(nz7^q@~?0L>3LFH80OW@Uyo(Ip8goR2cRb$*_e#!^xB(WYuEMAk0$K>5O-BpxmlGFgY3M4^ zYj5cmlGR^36pO};Cpbq!bjdZc%J%hJbJu+T?Y%jH(1-ZnAwKCo*&$%com8&nYnE9A z$-C+@?&)G3pSJ5&pUNVQY)135*}E7bWNt0302(%)>e%Z9qydQT!IRpkfCNCPJuUWf zt&kR_9jC8z{G<6fMvIMPqY5vUeE>Lyy)2Rd#o*=Nlr&&|;%LR^-8I7s|L6Dh5aFA0 Z`~@K?hk`#&184vM002ovPDHLkV1iPOi+2D3 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleTick_50x50.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CircleTick_50x50.png new file mode 100644 index 0000000000000000000000000000000000000000..4b423800b20c387555d6ca6ee83148185ee3127d GIT binary patch literal 1321 zcmV+^1=jkBP)Px#1am@3R0s$N2z&@+hyVZt(@8`@RA@uhnu~GMKoEvcPynHWq=F<35W9jT6(p$u z(*P(mfT^K5lR2%p|(*aPq57XSNQm6oV!!IiTA~UB@{1Q@*21+UcR{W{V z?HH&*AOygJAD}n^QeFitdOZZF7YG3M@W7`X0JIl_K<@ywj$Nf_5I~$^@C^j-#R?xe zZVi|#z${|qM1d@G3lMZ8O#FaxoVdi_8cNvUt}iUcL>7Ya#DzJGP_mfh<|;JK3nH#W zh%=WU1o|(NnK|wkeSMp;W*4Y3GX(rAkFr5mbAkxO9fYgdNC0L~z6h;W=sxGNi&dGq z2dIR_r>?khg20`=x-0>Kw_M3S!5D(!eE}+<)Tv|q0&aG$-BUq)F(Cms+6q1}09{IA z(T1rp(*cp}L~Cqa;!3naR2GS`KnTX=YFNzkwjNs`5*I%tvuuO>ONBeNL>tVts2Io8 ze9(05HVFOmqGOF`fT(qFxfwvd0OYbBw*ir|gVtzUf;Esc{f>2^nCGF}LQ4Q*l@(<) zK|0ouxY$pfonn-4joy@XOzk9+YPq$Q*Sf^>FKRdg2SRJ0R?H00|YcWxHyoB?;0o*Dl@4 z2f-RHl_JK(OAt0*01Yx7BeMYy1SWKFYfk_1+@u3yC zwnT9jVzEV|4<;pqPuKc9q7`E7isvy_sW+;2%%p_yxRot%od+vsAGp`+Sdaz`&(|kB zhT?zhL`HYi16h(gdZ)vKc^(f||H)BTJ5(_fJ|1;tHMLeyr+?JPLaD|w1|8Pew1k4~ zASmPPx294wB*)cx!EG^0}`rkS+3`J(a)e81;q3!KRi%Nf3bwOIT7k15ytl_jB^lZEHP*L||xscKR-oX{-nuQgHSHX}B8QgGF3Y zAOXl@&q0G+OS1rjRZ=B);FzCdbi~M+rNE8F5P(|XAd7gQ7`*(Oa7?qOEIwcNyq37l f@8uZfn|k~OCvaYZq8ft200000NkvXXu0mjfY8hPO literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Clock_16x19.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/Clock_16x19.png new file mode 100644 index 0000000000000000000000000000000000000000..50f2e38b7e77a659c4b377a800a851616b766ecf GIT binary patch literal 552 zcmV+@0@wYCP)X zxH!N*e%@@RPpefMd%Gexf_WsR|AT-P$m{vsdf#pb^dE$fP=b>RlK?So{^M?FJedRx+Aw6Y>0!oo-U z$G*f`G)j`%N92dF%fgc~YCzJgB+0I;#3aW0h0^|!sayfSdB%jtY7n7t4I80YPbVnF ze7y*kqJuXah_i8NWsnGK!5_kRX+Lgd)EWXEc%kZV;5Qbqenwsp807E3Jy1N>S;#BC qPVpxtzXO|1?<2IZKns4k(BK;hXQnVmKpdg~0000-G2co#^NA%Cx&(BWL^R}EX7WqAsj$Z z!;#VflwYnG8~iTWa$^>Q8OTz&P|9A*C*{p5bcKTpLKf;Jn3^BcGt zeyOtVw0=_7k)FrDlYeRUA@d5R2`mN6mw4To$G((do6usxtzWz@ss&wS6@PbH&ryj;h}BYb5`N z`-d?!eXO?Bl<%0eY{B=5UpciZ)M^3}|M(tq|Ggslr$~@p*FD+H9?gJ&P8JWzOLt|9 q*G7MNn!ywizW<;4iOh&POQzgyQ&#M1@3aJl4}+(xpUXO@geCwdY=XT2 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CrossWhite_17x17.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/CrossWhite_17x17.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3b5ba949c637828933a7d81037fdc8d0e9b8fa GIT binary patch literal 342 zcmV-c0jd6pP)Px#1am@3R0s$N2z&@+hyVZq07*naR5(wSl#305Fc6061Tumn-~`eMj2qwvIEii` z8yF{OH;@q=K_{sHRoa~NT9JgLxyQ#n{-TUAwNmO@RaJ}EI_C~r>j%!_gZMS#FD!nq zV6-r9S;i9}aP&B*AhtoQfxQks#NL#()(M|XKoTJ2NtFa&1eE~366z6IBg$N5Dmub< z;w`XNUN|?34D=-$Y6c_@7!?qprP+DNzaS2v+z43;ngbHZ1nMRod5N^72FFt=;1pTbhODTmT#e?qwL+0)>r~1l}Lb+Aj93E oYdxUn9T{-$fBjFU8HM=n4I?qnm?VtqZ2$lO07*qoM6N<$g4FbdF8}}l literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone1.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone1.png new file mode 100644 index 0000000000000000000000000000000000000000..c84d041f1a7125b3688336f650570c7e68e7cb09 GIT binary patch literal 1180 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 Z`~W+3vgDI|q#ytQ002ovPDHLkV1nkH*F69L literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone4.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/HeartRateZone4.png new file mode 100644 index 0000000000000000000000000000000000000000..184eab9078d23e11b351757fe00f0243bdaf6887 GIT binary patch literal 1118 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 tp{*I;1YZ@-o5uA*SbTQO_hR1vjPB literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/WorkoutMan_30x30.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/WorkoutMan_30x30.png new file mode 100644 index 0000000000000000000000000000000000000000..9b139d7e07ad86ba4eecfb5dfe53527e58367406 GIT binary patch literal 1566 zcmV+(2I2XMP)0*}N@#h73D^4?OQl^?w{bg zAtF683JVut#*B@)dGjPHDozLAlL!dN(xq8gzy3OWz6_+L6=3n=98^`6nL3(&a86D# zwr{_UhYuxi97nnm=FR&U&z~Q{ojctY16AzYxfyfko zG!mFX2C~R#h>qsb-2D4cz&uW!`hz^ZNM3Np8(u_5he|1EF!RFU>eYRiJef>WRsBFs zlQCrq(9rNXjHvigTzr61kWBkI(=Y{g`%{#b7MVGQHOHF%vby?5Y}~jTPoJ`bdD^5Q zGBOd_*{>5=JrSve4Ev2Z@Gf~DL+S9~^5wU2=FBz9e*)I5DI!C5!{w4`zd(Crq@;*A zcFcj67LOhc3lXfsVfE@sTe!91w}>a7+97=0t10sD=qDyGMR|pUIQ##VY%nY{?t?shYs0LQzOHyU8@K~ zY*lseii&+y0?9~9nndJ?rreUvew{3wNlMP}Qq^lZIvV65sHu3VB5H8t$Q!7y_rVh0 zP#zEToJm?*A~G`OMmroI#n|l&J6SFbP{hT>K~~kj`kc-m)XvT`0qk_lX3oDxT6`-p(~bV=&I z^6VM5R#n06^I=S6B)(m?45@$@2APy_4->-FV+Jb!=I3ua+TNbmL%H=+t$L|}9CJGH zx28Q&nwl<}dg}iL%xYG_jvaYwcJ@!yRQfg6hhZ{F)B2T+j65p0CS1DYH1$K0EEKT8 zo&5ZCx*q?;y?e6RhbpA$8qCES2*B2LK(*H;|&{{(cUiWSEV5eVq@8- zYPLvGUthWMI^D%%5C++Y12#I>s#Ujf>y{D(Ww%v)yhdTor54#2ydcdfT^%Vlc!w7+S zq^Cz>=FG3r-7V|CnWqybu*)Nd`tcK8>)N$mT(~fe<~5PPjZ*6AQRsgD1dA4p!7v=+ zU-3@C+O@yZG|9+ggiMk|JbwH$%F3Exz0}LgTZvF#((NRe`4)(TY*fBrdd-Im%+WlY zNs~nZh1T$b%~&ZZ8usk@00SEZ1DCLWe=$uPUeY&=VFN>a{46?WHeSK*mx1+0fh9{S z$!Z0Gt8Lsk9(8r^S-`AfjIgz}?;s%|a24{nf1gd8l?cppA%JCU+O(NQp2-LhgITYt z%|xV=crn}$j#7Df4ee`qaWc>9+m5YUcVUPLWN@e*j@{IqRC7&6ax#z8rx#=RUTnsgE)YBq~b8g9k^6#jOb42368?(chFWXe=>|WXJUP zKMn_&r(ER`;3HzOKt^0bNy!Gh7-NPLBbNsc?xI?*(D&PH9*WkR7^1BH1M3)Gx-Ua* QcmMzZ07*qoM6N<$g6UA^!~g&Q literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/clock_24x29.png b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/images/clock_24x29.png new file mode 100644 index 0000000000000000000000000000000000000000..aab23d9ec1afbb2cf5828c239951604a15817a3a GIT binary patch literal 794 zcmV+#1LgdQP)!i0Jo3Fe-ti=;0cn~h z7y^qa3xeQv(|(7V(d#(hS>V6WC{Pr|M+^&XdLe{}s0GB~pCm~F4B22X$h3J6gx{f(4-7m(zMWfPzA81|(>6vsZuING7%Oi>J~ z0(hY&Cl>N~=}i=Es|i$E50!RE z7N|T$?qZ0{uy(4P{0kXH%1I7%B9gba34Hmc5FJ8**Jm}W5FdDOs+R-Ip`1}ma7295 z@iNm)Ln)x2y$}oP23b{kerwEMU7eZ&dHz5hft&AJqkepRWp>k(li&1QaGaMckkuyl z`!nhYE?du}x76ex;-x*^-|_uO603wL?>zyhge7+bwL0(d_!zaM5bru^f;<7>^} zsW#n)Jo0@%hC^n9RMqGp`&A=5#KhJaNgijp9+eX)^08_S^>ykSaoFr^os|1gY%M`~ zj1l%-kQv&zE+99sCpTnAO7$oMk}cbos|c+le$uL&jLz5 + + + + + + + + New Text + + + Time + + + Avg HR + + + Max HR + + + New Text + + + CALORIES + + + AVG. HR + + + Avg HR + + + Current Lap + + + Lap Time + + + Time + + + Calories + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + <> + + + + + WORKOUT + + + Total + + + SUMMARY + + + MAP + + + LAPS + + + HEART RATE + + + Workout + + + Completed + + + Remaining + + + remaining + + + Elapsed + + + Time + + + Timer + + + TIME + + + Saved + + + Save & End + + + Settings + + + SETTINGS + + + Start + + + Lap Alerts + + + LAP ALERTS + + + Phone Notif. + + + Phone Notif. + + + minutes + + + minute + + + min + + + sec + + + mile + + + miles + + + mi + + + km + + + m + + + Open + + + ON + + + OFF + + + AVG HR + + + CALORIES + + + MAX HR + + + AVG HR + + + Avg. Pace + + + HR + + + Lap Time + + + % + + + Discarded + + + Discard + + + Resume + + + Summary + + + Lap + + + AVG. HR + + + + + <> + + + New Text + + + 96% + + + 17:35 + + + 4:27 + + + 5:02 + + + 24. + + + 208 + + + 128 + + + 10:05:49 + + + 165 + + + 117 + + + 566 + + + 133 + + + 0:05:49 + + + 2.33 + + + 15:37 + + + 115 + + + 8:32 + + + 6:27 + + + 44.44 + + + 0:05:49 + + + + + + + + + + + + + + + + + + + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xsd b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xsd new file mode 100644 index 00000000..10c7e195 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xsd @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/config/msvs/Application.props b/Apps/Workout/Software/Apps/TouchGFX-GUI/config/msvs/Application.props new file mode 100644 index 00000000..e2129e67 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/config/msvs/Application.props @@ -0,0 +1,26 @@ + + + + + 8 + ..\..\..\..\..\..\..\..\ThirdParty\touchgfx + ..\..\..\..\..\..\..\..\..\..\..\..\TouchGFX\4.26.1\env + ..\.. + + + + + + $(UseBPP) + + + $(TouchGFXReleasePath) + + + $(TouchGFXEnvPath) + + + $(ApplicationRoot) + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/ApplicationFontProvider.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/ApplicationFontProvider.hpp new file mode 100644 index 00000000..4e7bf851 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/ApplicationFontProvider.hpp @@ -0,0 +1,70 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_APPLICATIONFONTPROVIDER_HPP +#define TOUCHGFX_APPLICATIONFONTPROVIDER_HPP + +#include + +namespace touchgfx +{ +class FlashDataReader; +} + +struct Typography +{ + static const touchgfx::FontId POPPINS_REGULAR_18 = 0; + static const touchgfx::FontId POPPINS_REGULAR_14 = 1; + static const touchgfx::FontId POPPINS_REGULAR_16 = 2; + static const touchgfx::FontId POPPINS_MEDIUM_10 = 3; + static const touchgfx::FontId POPPINS_MEDIUM_18 = 4; + static const touchgfx::FontId POPPINS_MEDIUM_25 = 5; + static const touchgfx::FontId POPPINS_MEDIUM_50 = 6; + static const touchgfx::FontId POPPINS_SEMIBOLD_18 = 7; + static const touchgfx::FontId POPPINS_SEMIBOLD_20 = 8; + static const touchgfx::FontId POPPINS_SEMIBOLD_25 = 9; + static const touchgfx::FontId POPPINS_SEMIBOLD_30 = 10; + static const touchgfx::FontId POPPINS_SEMIBOLD_35 = 11; + static const touchgfx::FontId POPPINS_SEMIBOLD_40 = 12; + static const touchgfx::FontId POPPINS_SEMIBOLD_60 = 13; + static const touchgfx::FontId POPPINS_ITALIC_18 = 14; + static const touchgfx::FontId POPPINS_ITALIC_20 = 15; +}; + +struct TypographyFontIndex +{ + static const touchgfx::FontId POPPINS_REGULAR_18 = 0; // Poppins_Regular_18_2bpp + static const touchgfx::FontId POPPINS_REGULAR_14 = 1; // Poppins_Regular_14_2bpp + static const touchgfx::FontId POPPINS_REGULAR_16 = 2; // Poppins_Regular_16_2bpp + static const touchgfx::FontId POPPINS_MEDIUM_10 = 3; // Poppins_Medium_10_2bpp + static const touchgfx::FontId POPPINS_MEDIUM_18 = 4; // Poppins_Medium_18_2bpp + static const touchgfx::FontId POPPINS_MEDIUM_25 = 5; // Poppins_Medium_25_2bpp + static const touchgfx::FontId POPPINS_MEDIUM_50 = 6; // Poppins_Medium_50_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_18 = 7; // Poppins_SemiBold_18_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_20 = 8; // Poppins_SemiBold_20_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_25 = 9; // Poppins_SemiBold_25_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_30 = 10; // Poppins_SemiBold_30_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_35 = 11; // Poppins_SemiBold_35_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_40 = 12; // Poppins_SemiBold_40_2bpp + static const touchgfx::FontId POPPINS_SEMIBOLD_60 = 13; // Poppins_SemiBold_60_2bpp + static const touchgfx::FontId POPPINS_ITALIC_18 = 14; // Poppins_Italic_18_2bpp + static const touchgfx::FontId POPPINS_ITALIC_20 = 15; // Poppins_Italic_20_2bpp + static const uint16_t NUMBER_OF_FONTS = 16; +}; + +class ApplicationFontProvider : public touchgfx::FontProvider +{ +public: + virtual touchgfx::Font* getFont(touchgfx::FontId typography); + + static void setFlashReader(touchgfx::FlashDataReader* /*flashReader*/) + { + } + + static touchgfx::FlashDataReader* getFlashReader() + { + return 0; + } +}; + +#endif // TOUCHGFX_APPLICATIONFONTPROVIDER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CachedFont.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CachedFont.hpp new file mode 100644 index 00000000..687a32ba --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CachedFont.hpp @@ -0,0 +1,93 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_CACHEDFONT_HPP +#define TOUCHGFX_CACHEDFONT_HPP + +#include +#include + +namespace touchgfx +{ +class CachedFont : public GeneratedFont +{ +public: + CachedFont(const struct touchgfx::BinaryFontData* data, FontId id, FontCache* _cache, const GeneratedFont* _flashFont) + : GeneratedFont(0, // GlyphNode* + data->numberOfGlyphs, + data->fontHeight, + data->baseline, + data->pixAboveTop, + data->pixBelowBottom, + data->bitsPerPixel, + data->byteAlignRow, + data->maxLeft, + data->maxRight, + 0, // glyphDataPointer + 0, // Kerning table not used for cached font + data->fallbackChar, + data->ellipsisChar, + 0, // lsubTablePointer + 0), // contextualFormsPointer + fontId(id), + cache(_cache), + flashFont(_flashFont) + { + } + + CachedFont() + : GeneratedFont() + { + } + + using GeneratedFont::getGlyph; + + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const; + + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const; + + virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const; + + void setFontCache(FontCache& cache); + + FontId getFontId() const + { + return fontId; + } + + virtual const uint16_t* getGSUBTable() const + { + if (gsubTable != 0) + { + return gsubTable; + } + return flashFont->getGSUBTable(); + } + + virtual void setGSUBTable(const uint16_t* table) + { + gsubTable = table; + } + + virtual const FontContextualFormsTable* getContextualFormsTable() const + { + if (arabicTable != 0) + { + return arabicTable; + } + return flashFont->getContextualFormsTable(); + } + + virtual void setContextualFormsTable(const FontContextualFormsTable* table) + { + arabicTable = table; + } + +private: + FontId fontId; + FontCache* cache; + const GeneratedFont* flashFont; +}; +} // namespace touchgfx + +#endif // TOUCHGFX_CACHEDFONT_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedFontCache.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedFontCache.hpp new file mode 100644 index 00000000..fb899ccc --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedFontCache.hpp @@ -0,0 +1,42 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_COMPRESSEDFONTCACHE_HPP +#define TOUCHGFX_COMPRESSEDFONTCACHE_HPP + +#include +#include + +namespace touchgfx +{ +class CompressedFontCache +{ +public: + static void clearCache(); + static const uint8_t* hasCachedGlyph(const GlyphNode* glyphNode); + static void unableToCache(const GlyphNode* glyphNode, int byteSize); + static const uint8_t* cacheGlyph(const GlyphNode* glyph, const uint8_t* compressedData); + static int usedMemory() + { + return pixelsTop - (uint8_t*)bitmapFontCache + glyphsAllocated * sizeof(BitmapFontCacheKey); + } + + static int cacheClearCounter; +private: + static uint8_t* decompressGlyph(uint8_t* pixelsTop, const GlyphNode* glyphNode, const uint8_t* compressedData); + + struct BitmapFontCacheKey + { + const void* glyphNode; + const uint8_t* pixels; + }; + + static const int cacheSizeBytes = 4096; + static const int cacheWords = (cacheSizeBytes + 3) / 4; + static uint32_t bitmapFontCache[cacheWords]; + static uint8_t* pixelsTop; + static int glyphsAllocated; +}; +} // namespace touchgfx + +#endif // TOUCHGFX_COMPRESSEDFONTCACHE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedUnmappedFontCache.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedUnmappedFontCache.hpp new file mode 100644 index 00000000..b0688a6d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/CompressedUnmappedFontCache.hpp @@ -0,0 +1,46 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_COMPRESSEDUNMAPPEDFONTCACHE_HPP +#define TOUCHGFX_COMPRESSEDUNMAPPEDFONTCACHE_HPP + +#include +#include +#include + +namespace touchgfx +{ +class CompressedUnmappedFontCache +{ +public: + static void clearCache(); + static const GlyphNode* hasCachedGlyphNode(const GlyphNode* glyphNode); + static const GlyphNode* hasCachedGlyphData(const GlyphNode* glyphNode, const uint8_t*& pixelData); + static void unableToCache(const GlyphNode* glyphNode, int byteSize); + static GlyphNode* cacheGlyphNode(const GlyphNode* glyph); + static const uint8_t* cacheGlyphData(const GlyphNode* glyph, const uint8_t* compressedData, touchgfx::FlashDataReader* reader); + static int usedMemory() + { + return pixelsTop - (uint8_t*)bitmapFontCache + glyphsAllocated * sizeof(BitmapFontCacheKey); + } + + static int cacheClearCounter; +private: + static uint8_t* decompressGlyph(uint8_t* pixelsTop, const GlyphNode* glyphNode, const uint8_t* compressedData, touchgfx::FlashDataReader* reader); + + struct BitmapFontCacheKey + { + const void* glyphNodeSrc; + GlyphNode glyphNodeCopy; + const uint8_t* pixels; + }; + + static const int cacheSizeBytes = 4096; + static const int cacheWords = (cacheSizeBytes + 3) / 4; + static uint32_t bitmapFontCache[cacheWords]; + static uint8_t* pixelsTop; + static int glyphsAllocated; +}; +} // namespace touchgfx + +#endif // TOUCHGFX_COMPRESSEDUNMAPPEDFONTCACHE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/FontCache.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/FontCache.hpp new file mode 100644 index 00000000..153d33df --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/FontCache.hpp @@ -0,0 +1,112 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_FONTCACHE_HPP +#define TOUCHGFX_FONTCACHE_HPP + +#include +#include +#include + +namespace touchgfx +{ +class CachedFont; + +class FontDataReader +{ +public: + virtual ~FontDataReader() + { + } + + virtual void open() = 0; + virtual void close() = 0; + virtual void setPosition(uint32_t position) = 0; + virtual void readData(void* out, uint32_t numberOfBytes) = 0; +}; + +class FontCache +{ +public: + FontCache(); + void setReader(FontDataReader* reader); + void clear(bool keepGsubOrContextTable = false); + void setMemory(uint8_t* memory, uint32_t size); + void initializeCachedFont(TypedText t, CachedFont* font, bool loadGsubOrContextTable = false); + bool cacheString(TypedText t, const Unicode::UnicodeChar* string); + bool cacheLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string); + + const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, FontId font) const; + + uint32_t getMemoryUsage() + { + return memorySize - (gsubStart - top); + } + + void open(); + void close(); + + static inline const uint8_t* getPixelData(const GlyphNode* glyph) + { + return ((const uint8_t*)glyph) + SizeGlyphNode + sizeof(void*); + } + + static inline bool isCached(const GlyphNode* g) + { + return g->dataOffset == 0xFFFFFFFF; + } + +private: + static const uint32_t SizeGlyphNode = 16; + + bool contains(Unicode::UnicodeChar unicode, FontId font) const; + void insert(Unicode::UnicodeChar unicode, FontId font, bool& outOfMemory); + uint8_t* copyGlyph(uint8_t* top, Unicode::UnicodeChar unicode, FontId font, bool& outOfMemory); + + void cacheData(GlyphNode* first); + bool cacheSortedString(TypedText t); + bool createSortedString(const Unicode::UnicodeChar* string); + bool createSortedLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string, ...); + bool sortSortedString(int n); + + void setPosition(uint32_t position); + void readData(void* out, uint32_t numberOfBytes); + + uint32_t getGlyphSize(const GlyphNode* gn) + { + if (byteAlignRow) + { + // Round up line width to byte boundary and multiply by height + return (gn->width() * bpp + 7) / 8 * gn->height(); + } + // Calculate number of pixels and round up to byte bounday + return (gn->width() * gn->height() * bpp + 7) / 8; + } + + struct + { + uint8_t* first; // First GlyphNode, glyph in cache; + uint8_t* last; // Last GlyphNode, glyph in cache; + } fontTable[MAX(TypographyFontIndex::NUMBER_OF_FONTS, 1)]; + + uint32_t memorySize; + uint8_t* memory; // Start of memory + uint8_t* top; // First unused byte + uint8_t* gsubStart; // First address of GSUB tables, allocated in the end of the cache + + FontDataReader* reader; + + Unicode::UnicodeChar* sortedString; + // Must be bigger than BinaryFontData + static const uint32_t MAX_BUFFER_SIZE = 64; + char buffer[MAX_BUFFER_SIZE]; + uint32_t glyphDataOffset; + uint16_t numGlyphs; + uint16_t currentFileGlyphNumber; + uint8_t bpp; + uint8_t byteAlignRow; + GlyphNode currentFileGlyphNode; +}; +} // namespace touchgfx + +#endif // TOUCHGFX_FONTCACHE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/GeneratedFont.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/GeneratedFont.hpp new file mode 100644 index 00000000..e902d333 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/GeneratedFont.hpp @@ -0,0 +1,227 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_GENERATEDFONT_HPP +#define TOUCHGFX_GENERATEDFONT_HPP + +#include + +namespace touchgfx +{ +class GeneratedFont : public ConstFont +{ +public: + GeneratedFont(const GlyphNode* glyphs, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable); + + using ConstFont::getGlyph; + + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const; + + virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const; + + virtual const uint16_t* getGSUBTable() const + { + return gsubTable; + } + + virtual const FontContextualFormsTable* getContextualFormsTable() const + { + return arabicTable; + } + +protected: + GeneratedFont() + : ConstFont(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphData(0), kerningData(0), gsubTable(0), arabicTable(0) + { + } + + const void* glyphData; ///< The glyphs + const KerningNode* kerningData; ///< The kerning + const uint16_t* gsubTable; ///< The GSUB tables + + const FontContextualFormsTable* arabicTable; ///< Contextual forms +}; + +class FusedFont : public GeneratedFont +{ +public: + FusedFont(const GlyphNode* glyphs, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable, GlyphNode& fontFusedNode) + : GeneratedFont(glyphs, numGlyphs, height, baseline, pixAboveTop, pixBelowBottom, bitsPerPixel, byteAlignRow, + maxLeft, maxRight, glyphDataInternalFlash, kerningList, fallbackChar, ellipsisChar, + gsubData, formsTable), fusedNode(fontFusedNode) + { } + + using GeneratedFont::getGlyph; + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const; +private: + GlyphNode& fusedNode; +}; + +struct VectorFontNode +{ + uint32_t dataOffset; ///< The index to the data of this glyph in words + Unicode::UnicodeChar unicode; ///< The Unicode of this glyph. + uint16_t width; ///< Width of the actual glyph data + uint16_t height; ///< Height of the actual glyph data + int16_t top; ///< Vertical offset from baseline of the glyph + int16_t left; ///< Horizontal offset from the left of the glyph + uint16_t advance; ///< Width of the glyph (including space to the left and right) + uint16_t kerningTablePos; ///< Where are the kerning information for this glyph stored in the kerning table + uint8_t kerningTableSize; ///< How many entries are there in the kerning table (following kerningTablePos) for this glyph +}; + +struct VectorKerningNode +{ + Unicode::UnicodeChar unicodePrevChar; ///< The Unicode for the first character in the kerning pair + int16_t distance; ///< The kerning distance +}; + +struct VectorFontData +{ + uint16_t numberOfGlyphs; + uint16_t baselineHeight; + uint16_t maxLeft; + uint16_t maxRight; + uint16_t maxAboveTop; + uint16_t maxBelowBottom; + const Unicode::UnicodeChar fallbackChar; + const Unicode::UnicodeChar ellipsisChar; +}; + +class GeneratedVectorFont : public Font +{ +public: + GeneratedVectorFont(uint16_t baseline, float scale, const VectorFontNode* vectorGlyphs, const VectorFontData& fontData, + const uint16_t* const* glyphData, const VectorKerningNode* kerningTable, + const uint16_t* const gsubData, const FontContextualFormsTable* formsTable); + + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode) const; + + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const; + + virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const; + + virtual bool isVectorBasedFont() const { return true; } + + virtual float getScaleFactor() const { return scaleFactor; } + + virtual const uint16_t* getGSUBTable() const { return gsubTable; } + + virtual const FontContextualFormsTable* getContextualFormsTable() const { return arabicTable; } +private: + + const VectorFontNode* find(Unicode::UnicodeChar unicode) const; + const GlyphNode* getGlyphNode(const VectorFontNode* node) const; + + float scaleFactor; + const VectorFontNode* vectorNodes; + const uint16_t* const* vectorTable; + const VectorKerningNode* kerningTable; + const uint16_t* gsubTable; + const FontContextualFormsTable* arabicTable; + uint16_t numberOfGlyphs; + + static GlyphNode glyphNode; +}; + +struct BinaryFontData +{ + uint32_t fontIndex; // The font index (as used by TypedTextDatabase) + uint32_t sizeOfFontData; // Size of the complete BinaryFont + uint32_t offsetToTable; // GlyphNode[] + uint32_t offsetToKerning; // KerningNode[] + uint32_t offsetToGlyphs; // uint8_t[] + uint32_t offsetToGSUB; // uint16_t[] + uint32_t offsetToArabicTable; // FontContextualFormsTable + uint16_t numberOfGlyphs; // Number of glyphs in Table and Glyphs + uint16_t fontHeight; // Font height + uint16_t baseline; // Distance to baseline + uint8_t pixAboveTop; // Max pixels above top + uint8_t pixBelowBottom; // Max pixels below bottom + uint8_t bitsPerPixel; // Bpp + uint8_t byteAlignRow; // A4/A2/A1 + uint8_t maxLeft; // The maximum a glyph extends to the left + uint8_t maxRight; // The maximum a glyph extends to the right + Unicode::UnicodeChar fallbackChar; // Fallback Character for the font + Unicode::UnicodeChar ellipsisChar; // Ellipsis Character for the font +}; + +class BinaryFont : public GeneratedFont +{ +public: + BinaryFont(const struct touchgfx::BinaryFontData* data) + : GeneratedFont((const GlyphNode*)((const uint8_t*)data + data->offsetToTable), + data->numberOfGlyphs, + data->fontHeight, + data->baseline, + data->pixAboveTop, + data->pixBelowBottom, + data->bitsPerPixel, + data->byteAlignRow, + data->maxLeft, + data->maxRight, + 0, + (const KerningNode*)((const uint8_t*)data + data->offsetToKerning), + data->fallbackChar, + data->ellipsisChar, + (data->offsetToGSUB == 0) ? 0 : (const uint16_t*)((const uint8_t*)data + data->offsetToGSUB), + 0), + glyphData((const uint8_t*)data + data->offsetToGlyphs) + { + if (data->offsetToArabicTable > 0) + { + setupContextualTable(data); + } + } + + BinaryFont() + : GeneratedFont() + { + } + + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const + { + const uint8_t* data = (const uint8_t*)glyphData; + return &(data[glyph->dataOffset]); + } + +protected: + const uint8_t* glyphData; + FontContextualFormsTable contextualForms; + +private: + typedef const Unicode::UnicodeChar (*array5ptr)[5]; + typedef const Unicode::UnicodeChar (*array4ptr)[4]; + + void setupContextualTable(const struct touchgfx::BinaryFontData* data) + { + const uint16_t* const base = (const uint16_t*)(((const uint8_t*)data) + data->offsetToArabicTable); + // First elements in binary font are offsets to arrays in 16bit words + contextualForms.contextualForms4Long = (array5ptr)(base + base[0]); + contextualForms.contextualForms3Long = (array5ptr)(base + base[1]); + contextualForms.contextualForms2Long = (array5ptr)(base + base[2]); + contextualForms.contextualForms0621_063a = (array4ptr)(base + base[3]); + contextualForms.contextualForms0641_064a = (array4ptr)(base + base[4]); + contextualForms.contextualForms06XX = (array5ptr)(base + base[5]); + contextualForms.contextualForms4LongSize = base[6]; + contextualForms.contextualForms3LongSize = base[7]; + contextualForms.contextualForms2LongSize = base[8]; + contextualForms.contextualForms06XXSize = base[9]; + arabicTable = &contextualForms; + } +}; + + +class CompressedMappedFont : public GeneratedFont +{ +public: + CompressedMappedFont(const GlyphNode* glyphs, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable); + + using GeneratedFont::getGlyph; + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode) const; + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const; +}; + +} // namespace touchgfx + +#endif // TOUCHGFX_GENERATEDFONT_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/UnmappedDataFont.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/UnmappedDataFont.hpp new file mode 100644 index 00000000..393da256 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/include/fonts/UnmappedDataFont.hpp @@ -0,0 +1,137 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_UNMAPPEDDATAFONT_HPP +#define TOUCHGFX_UNMAPPEDDATAFONT_HPP + +#include + +namespace touchgfx +{ +/** + * An UnmappedDataFont has both glyph table and glyph data placed in a + * flash which does not support random access read (indirect + * access). A unicode table is located in a flash with random read + * access (direct access). + * + * @see Font, ConstFont + */ +class UnmappedDataFont : public Font +{ +public: + /** + * Construct the UnmappedDataFont. + * + * @param glyphs The array of glyphs known to this font (indirect). + * @param unicodes The array of unicodes known to this font (direct). + * @param numGlyphs The number of glyphs in list. + * @param height The height in pixels of the highest character in this font. + * @param baseline The height of the baseline in pixels. + * @param pixBelowBottom The maximum number of pixels that can be drawn below the + * bottom in this font. + * @param bitsPerPixel The number of bits per pixel in this font. + * @param byteAlignRow Are glyphs encoded using A4 format + * @param maxLeft The maximum a character extends to the left. + * @param maxRight The maximum a character extends to the right. + * @param glyphDataList Pointer to pointers the glyph data for the font (indirect). + * @param kerningList pointer to the kerning data for the font (direct). + * @param fallbackChar The fallback character for the typography in case no glyph is + * available. + * @param ellipsisChar The ellipsis character used for truncating long texts. + * @param gsubTable Pointer to GSUB table (direct). + */ + UnmappedDataFont(const GlyphNode* glyphs, const uint16_t* unicodes, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable); + + using Font::getGlyph; + + /** + * Gets the glyph data associated with the specified Unicode. The + GlyphNode is allocated in the buffer passed to the constructor. + * + * Please note that in case of Thai letters and Arabic letters + * where diacritics can be placed relative to the previous + * character(s), please use TextProvider::getNextLigature() + * instead as it will create a temporary GlyphNode that will be + * adjusted with respect to X/Y position. + * + * @param unicode The character to look up. + * @param pixelData Pointer to the pixel data for the glyph if the glyph is + * found. This is set by this method. + * @param [out] bitsPerPixel Reference where to place the number of bits per pixel. + * + * @return A pointer to the glyph node or null if the glyph was not found. + */ + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const; + + /** + * Obtains the address to the pixel data for the specified glyph. + * + * @param glyph The glyph to get the pixels data of. + * + * @return The address of the pixel data of the glyph. + */ + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const; + + /** + * Gets the kerning distance between two characters. + * + * @param prevChar The unicode value of the previous character. + * @param glyph the glyph object for the current character. + * + * @return The kerning distance between prevChar and glyph char. + */ + virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const; + + /** + * Gets GSUB table. + * + * @return The GSUB table or null if font has GSUB no table + */ + virtual const uint16_t* getGSUBTable() const + { + return gsubTable; + } + + /** + * Gets the contextual forms table used in arabic fonts. + * + * @return The FontContextualFormsTable or null if the font has no table. + */ + virtual const FontContextualFormsTable* getContextualFormsTable() const + { + return arabicTable; + } + +protected: + UnmappedDataFont() + : Font(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphList(0), unicodes(0), glyphDataList(0), kerningData(0), gsubTable(0) + { + } + + int lookupUnicode(uint16_t unicode) const; + + const GlyphNode* glyphList; ///< The list of glyphs + uint16_t listSize; ///< The size of the list of glyphs + const uint16_t* unicodes; ///< LookupTable with all unicodes in this font + const void* glyphDataList; ///< The glyphs (list of pointers) + const KerningNode* kerningData; ///< The kerning + const uint16_t* gsubTable; ///< The GSUB tables + + const FontContextualFormsTable* arabicTable; ///< Contextual forms + + static GlyphNode glyphNodeBuffer; ///< Buffer for GlyphNodes read from unmapped flash +}; + +class CompressedUnmappedDataFont : public UnmappedDataFont +{ +public: + CompressedUnmappedDataFont(const GlyphNode* glyphs, const uint16_t* unicodes, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable); + + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode) const; + virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const; + virtual const uint8_t* getPixelData(const GlyphNode* glyph) const; +}; + +} // namespace touchgfx + +#endif // TOUCHGFX_UNMAPPEDDATAFONT_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/ApplicationFontProvider.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/ApplicationFontProvider.cpp new file mode 100644 index 00000000..22f9e231 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/ApplicationFontProvider.cpp @@ -0,0 +1,63 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include + +touchgfx::Font* ApplicationFontProvider::getFont(touchgfx::FontId typography) +{ + switch (typography) + { + case Typography::POPPINS_REGULAR_18: + // Poppins_Regular_18_2bpp + return const_cast(TypedTextDatabase::getFonts()[0]); + case Typography::POPPINS_REGULAR_14: + // Poppins_Regular_14_2bpp + return const_cast(TypedTextDatabase::getFonts()[1]); + case Typography::POPPINS_REGULAR_16: + // Poppins_Regular_16_2bpp + return const_cast(TypedTextDatabase::getFonts()[2]); + case Typography::POPPINS_MEDIUM_10: + // Poppins_Medium_10_2bpp + return const_cast(TypedTextDatabase::getFonts()[3]); + case Typography::POPPINS_MEDIUM_18: + // Poppins_Medium_18_2bpp + return const_cast(TypedTextDatabase::getFonts()[4]); + case Typography::POPPINS_MEDIUM_25: + // Poppins_Medium_25_2bpp + return const_cast(TypedTextDatabase::getFonts()[5]); + case Typography::POPPINS_MEDIUM_50: + // Poppins_Medium_50_2bpp + return const_cast(TypedTextDatabase::getFonts()[6]); + case Typography::POPPINS_SEMIBOLD_18: + // Poppins_SemiBold_18_2bpp + return const_cast(TypedTextDatabase::getFonts()[7]); + case Typography::POPPINS_SEMIBOLD_20: + // Poppins_SemiBold_20_2bpp + return const_cast(TypedTextDatabase::getFonts()[8]); + case Typography::POPPINS_SEMIBOLD_25: + // Poppins_SemiBold_25_2bpp + return const_cast(TypedTextDatabase::getFonts()[9]); + case Typography::POPPINS_SEMIBOLD_30: + // Poppins_SemiBold_30_2bpp + return const_cast(TypedTextDatabase::getFonts()[10]); + case Typography::POPPINS_SEMIBOLD_35: + // Poppins_SemiBold_35_2bpp + return const_cast(TypedTextDatabase::getFonts()[11]); + case Typography::POPPINS_SEMIBOLD_40: + // Poppins_SemiBold_40_2bpp + return const_cast(TypedTextDatabase::getFonts()[12]); + case Typography::POPPINS_SEMIBOLD_60: + // Poppins_SemiBold_60_2bpp + return const_cast(TypedTextDatabase::getFonts()[13]); + case Typography::POPPINS_ITALIC_18: + // Poppins_Italic_18_2bpp + return const_cast(TypedTextDatabase::getFonts()[14]); + case Typography::POPPINS_ITALIC_20: + // Poppins_Italic_20_2bpp + return const_cast(TypedTextDatabase::getFonts()[15]); + default: + return 0; + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CachedFont.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CachedFont.cpp new file mode 100644 index 00000000..e1c5760a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CachedFont.cpp @@ -0,0 +1,55 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include + +namespace touchgfx +{ +const uint8_t* CachedFont::getPixelData(const GlyphNode* glyph) const +{ + // If glyph is cached, then data is present just after the GlyphNode + if (FontCache::isCached(glyph)) + { + const uint8_t* data = FontCache::getPixelData(glyph); + return data; + } + return flashFont->getPixelData(glyph); +} + +const GlyphNode* CachedFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const +{ + // Look first in internal flash font + const GlyphNode* n = flashFont->find(unicode); + + if ((n == 0) && (cache != 0)) + { + // Now look in FontCache table + n = cache->getGlyph(unicode, fontId); + } + + // Revert to normal behaviour if still not found + if (n == 0 && unicode != 0 && unicode != '\n') + { + Unicode::UnicodeChar fallbackChar = flashFont->getFallbackChar(); + n = flashFont->find(fallbackChar); + if (n == 0) + { + n = cache->getGlyph(fallbackChar, fontId); + } + } + + if (n != 0) + { + pixelData = getPixelData(n); + bitsPerPixel = getBitsPerPixel(); + return n; + } + return (const GlyphNode*)0; +} + +int8_t CachedFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const +{ + // Kerning is not supported by Font Caching + return 0; +} +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedFontCache.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedFontCache.cpp new file mode 100644 index 00000000..17d76024 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedFontCache.cpp @@ -0,0 +1,183 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include + +namespace touchgfx +{ +LOCATION_PRAGMA_32("TouchGFX_CompressedFontCache") +uint32_t CompressedFontCache::bitmapFontCache[cacheWords] LOCATION_ATTRIBUTE_32("TouchGFX_CompressedFontCache"); +uint8_t* CompressedFontCache::pixelsTop = (uint8_t*)CompressedFontCache::bitmapFontCache; +int CompressedFontCache::glyphsAllocated = 0; +int CompressedFontCache::cacheClearCounter = 0; + +namespace +{ +/* Read nibbles from a compressed data array */ +struct NibReader +{ + NibReader(const uint8_t* buffer) + : buffer(buffer), byteIndex(0), low(true) + {} + + const uint8_t* buffer; + int byteIndex; + bool low; + uint8_t getNext() + { + if (low) + { + const uint8_t val = buffer[byteIndex] & 0xF; + low = false; + return val; + } + const uint8_t val = buffer[byteIndex] >> 4; + low = true; + byteIndex++; + return val; + } +}; + +struct NibWriter +{ + NibWriter(uint8_t* buffer, int size) + : buffer(buffer), bufferEnd(buffer + size), low(true) {} + + uint8_t* buffer; + uint8_t* bufferEnd; + int low; + void put(uint8_t v) + { + if (low) + { + *buffer = v; + low = false; + return; + } + *buffer |= (v << 4); + buffer++; + low = true; + } + bool eof() { return buffer >= bufferEnd; } +}; +} // anonymous namespace + +uint8_t* CompressedFontCache::decompressGlyph(uint8_t* pixelsTop, const GlyphNode* glyphNode, const uint8_t* compressedData) +{ + const int byteSize = (glyphNode->width() + 1) / 2 * glyphNode->height(); + NibWriter writer(pixelsTop, byteSize); + NibReader reader(compressedData); + uint8_t* const pixelsEnd = pixelsTop + byteSize; + const int algorithm = glyphNode->dataOffset >> 30; + if (algorithm == 1) + { + // RLE1 + while (!writer.eof()) + { + const uint8_t value = reader.getNext(); + if (value == 0) + { + int zeroCount = reader.getNext(); + while (zeroCount) + { + writer.put(0); + zeroCount--; + } + } + writer.put(value); + } + } + else if (algorithm == 2) + { + // RLE2 + while (!writer.eof()) + { + const uint8_t value = reader.getNext(); + if (value == 0 || value == 0xF) + { + int count = reader.getNext(); + while (count) + { + writer.put(value); + count--; + } + } + writer.put(value); + } + } + else + { + // Uncompressed + while (pixelsTop < pixelsEnd) + { + *pixelsTop++ = *compressedData++; + } + } + + return pixelsEnd; +} + +void CompressedFontCache::clearCache() +{ + // Wait for DMA2D/GPU2D to finish drawing + HAL::getInstance()->lockUnlockFrameBuffer(); + glyphsAllocated = 0; + cacheClearCounter++; + pixelsTop = (uint8_t*)bitmapFontCache; +} + +void CompressedFontCache::unableToCache(const GlyphNode* glyphNode, int byteSize) +{ + while(1); +} + +const uint8_t* CompressedFontCache::hasCachedGlyph(const GlyphNode* glyphNode) +{ + const BitmapFontCacheKey* end = (const BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + const BitmapFontCacheKey* first = end - glyphsAllocated; + while (first < end) + { + if (first->glyphNode == glyphNode) + { + return first->pixels; + } + first++; + } + return 0; +} + +const uint8_t* CompressedFontCache::cacheGlyph(const GlyphNode* glyph, const uint8_t* compressedData) +{ + const int byteSize = (glyph->width() + 1) / 2 * glyph->height(); + if (byteSize + 8 > cacheSizeBytes) + { + unableToCache(glyph, byteSize); + return 0; + } + const BitmapFontCacheKey* end = (const BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + if (pixelsTop + byteSize + 8 > (const uint8_t*)&end[-glyphsAllocated]) + { + // Unable to fit glyph in data, clear cache + clearCache(); + } + + const uint8_t* glyphData = pixelsTop; + pixelsTop = decompressGlyph(pixelsTop, glyph, compressedData); + + // Flush the cache lines, must be 32byte aligned + uint8_t* rowStart = reinterpret_cast(reinterpret_cast(glyphData) & ~0x1F); + int alignmentOffset = glyphData - rowStart; + paint::flushLine((uint32_t*)rowStart, byteSize + alignmentOffset); + paint::invalidateTextureCache(); + + glyphsAllocated++; + + BitmapFontCacheKey* key = const_cast(end - glyphsAllocated); + key->glyphNode = glyph; + key->pixels = glyphData; + + return glyphData; +} +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedUnmappedFontCache.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedUnmappedFontCache.cpp new file mode 100644 index 00000000..6a59a71b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/CompressedUnmappedFontCache.cpp @@ -0,0 +1,263 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include + +namespace touchgfx +{ +LOCATION_PRAGMA_32("TouchGFX_CompressedUnmappedFontCache") +uint32_t CompressedUnmappedFontCache::bitmapFontCache[cacheWords] LOCATION_ATTRIBUTE_32("TouchGFX_CompressedUnmappedFontCache"); +uint8_t* CompressedUnmappedFontCache::pixelsTop = (uint8_t*)CompressedUnmappedFontCache::bitmapFontCache; +int CompressedUnmappedFontCache::glyphsAllocated = 0; +int CompressedUnmappedFontCache::cacheClearCounter = 0; + +namespace +{ +/* Read nibbles from compressed data in unmapped flash. Must read through reader object */ +struct NibUnmapReader +{ + NibUnmapReader(const uint8_t* srcAddress, touchgfx::FlashDataReader* reader) + : address(srcAddress), reader(reader), byteIndex(0), low(true) + { + address += bufferSize; + reader->copyData(srcAddress, buffer, sizeof(buffer)); + } + + const uint8_t* address; //next reading address + touchgfx::FlashDataReader* reader; + static const int bufferSize = 16; + uint8_t buffer[bufferSize]; + uint8_t value; + int byteIndex; + bool low; + uint8_t getNext() + { + if (low) + { + value = buffer[byteIndex]; + const uint8_t val = value & 0xF; + low = false; + return val; + } + const uint8_t val = value >> 4; + low = true; + if (byteIndex == bufferSize - 1) + { + reader->copyData(address, buffer, bufferSize); + address += bufferSize; + byteIndex = 0; + } + else + { + byteIndex++; + } + + return val; + } +}; + +struct NibWriter +{ + NibWriter(uint8_t* buffer, int size) + : buffer(buffer), bufferEnd(buffer + size), low(true) {} + + uint8_t* buffer; + uint8_t* bufferEnd; + int low; + void put(uint8_t v) + { + if (low) + { + *buffer = v; + low = false; + return; + } + *buffer |= (v << 4); + buffer++; + low = true; + } + bool eof() { return buffer >= bufferEnd; } +}; +} // anonymous namespace + +uint8_t* CompressedUnmappedFontCache::decompressGlyph(uint8_t* pixelsTop, const GlyphNode* glyphNode, const uint8_t* compressedData, touchgfx::FlashDataReader* flashReader) +{ + const int byteSize = (glyphNode->width() + 1) / 2 * glyphNode->height(); + NibWriter writer(pixelsTop, byteSize); + NibUnmapReader reader(compressedData, flashReader); + uint8_t* const pixelsEnd = pixelsTop + byteSize; + const int algorithm = glyphNode->dataOffset >> 30; + if (algorithm == 1) + { + // RLE1 + while (!writer.eof()) + { + const uint8_t value = reader.getNext(); + if (value == 0) + { + int zeroCount = reader.getNext(); + while (zeroCount) + { + writer.put(0); + zeroCount--; + } + } + writer.put(value); + } + } + else if (algorithm == 2) + { + // RLE2 + while (!writer.eof()) + { + const uint8_t value = reader.getNext(); + if (value == 0 || value == 0xF) + { + int count = reader.getNext(); + while (count) + { + writer.put(value); + count--; + } + } + writer.put(value); + } + } + else + { + // Uncompressed + flashReader->copyData(compressedData, pixelsTop, byteSize); + } + + return pixelsEnd; +} + +void CompressedUnmappedFontCache::clearCache() +{ + // Wait for DMA2D/GPU2D to finish drawing + HAL::getInstance()->lockUnlockFrameBuffer(); + glyphsAllocated = 0; + cacheClearCounter++; + pixelsTop = (uint8_t*)bitmapFontCache; +} + +void CompressedUnmappedFontCache::unableToCache(const GlyphNode* glyphNode, int byteSize) +{ + while(1); +} + +const GlyphNode* CompressedUnmappedFontCache::hasCachedGlyphNode(const GlyphNode* glyphNode) +{ + const BitmapFontCacheKey* end = (const BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + const BitmapFontCacheKey* first = end - glyphsAllocated; + while (first < end) + { + if (first->glyphNodeSrc == glyphNode) + { + return &first->glyphNodeCopy; + } + first++; + } + return 0; +} + +const GlyphNode* CompressedUnmappedFontCache::hasCachedGlyphData(const GlyphNode* glyphNode, const uint8_t*& pixelData) +{ + const BitmapFontCacheKey* end = (const BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + const BitmapFontCacheKey* first = end - glyphsAllocated; + while (first < end) + { + if (first->glyphNodeSrc == glyphNode) + { + //Pixel data can be zero! + pixelData = first->pixels; + return &first->glyphNodeCopy; + } + first++; + } + return 0; +} + +GlyphNode* CompressedUnmappedFontCache::cacheGlyphNode(const GlyphNode* glyph) +{ + const BitmapFontCacheKey* end = (const BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + if (pixelsTop + sizeof(BitmapFontCacheKey) > (const uint8_t*)&end[-glyphsAllocated]) + { + // Unable to fit GlyphNode in data, clear cache + clearCache(); + } + + glyphsAllocated++; + BitmapFontCacheKey* key = const_cast(end - glyphsAllocated); + key->glyphNodeSrc = glyph; + key->pixels = 0; + + return &key->glyphNodeCopy; +} + +const uint8_t* CompressedUnmappedFontCache::cacheGlyphData(const GlyphNode* glyph, const uint8_t* compressedData, touchgfx::FlashDataReader* reader) +{ + // Search keys for glyph + BitmapFontCacheKey* end = (BitmapFontCacheKey*)&bitmapFontCache[cacheWords]; + BitmapFontCacheKey* it = end - glyphsAllocated; + while (it < end) + { + if (it->glyphNodeSrc == glyph) + { + break; + } + it++; + } + + if (it == end) + { + // broken invariant! + return 0; + } + + const int byteSize = (it->glyphNodeCopy.width() + 1) / 2 * it->glyphNodeCopy.height(); + // Check if pixels can fit in cache + if (pixelsTop + byteSize > (const uint8_t*)&end[-glyphsAllocated]) + { + // Can it fit in a clean cache? + if (byteSize + sizeof(BitmapFontCacheKey) > cacheSizeBytes) + { + unableToCache(glyph, byteSize); + return 0; + } + + // Unable to fit pixel in data, must clear cache + + // Save address of GlyphNode in cache + const GlyphNode* cachedGn = &it->glyphNodeCopy; + + // Now clear (reset pointer) + clearCache(); + + // Insert glyph node again + glyphsAllocated++; + it = const_cast(end - 1); + it->glyphNodeSrc = glyph; + it->pixels = 0; + // Copy GlyphNode content from previous position in cache + it->glyphNodeCopy = *cachedGn; + } + + //Now decompress data + const uint8_t* glyphData = pixelsTop; + pixelsTop = decompressGlyph(pixelsTop, &it->glyphNodeCopy, compressedData, reader); + + // Flush the cache lines, must be 32byte aligned + uint8_t* rowStart = reinterpret_cast(reinterpret_cast(glyphData) & ~0x1F); + int alignmentOffset = glyphData - rowStart; + paint::flushLine((uint32_t*)rowStart, byteSize + alignmentOffset); + paint::invalidateTextureCache(); + + it->pixels = glyphData; + + return glyphData; +} + +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/FontCache.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/FontCache.cpp new file mode 100644 index 00000000..0b789364 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/FontCache.cpp @@ -0,0 +1,424 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include +#include +#include +#include + +namespace touchgfx +{ +FontCache::FontCache() + : memorySize(0), memory(0), top(0), gsubStart(0), reader(0) +{ +} + +void FontCache::clear(bool keepGsubOrContextTable /* = false */) +{ + memset(fontTable, 0, sizeof(fontTable)); + + // Top is beginning of memory, no glyphs are cached yet + top = memory; + + if (!keepGsubOrContextTable) + { + // gsubStart points to end of memory (nothing loaded yet) + gsubStart = memory + memorySize; + + // Round down to 32bit address + gsubStart = (uint8_t*)((uintptr_t)gsubStart & ~(sizeof(void*) - 1)); + } +} + +void FontCache::setMemory(uint8_t* _memory, uint32_t size) +{ + memory = _memory; + memorySize = size; + + clear(); +} + +void FontCache::setReader(FontDataReader* _reader) +{ + reader = _reader; +} + +const GlyphNode* FontCache::getGlyph(Unicode::UnicodeChar unicode, FontId font) const +{ + GlyphNode* g = (GlyphNode*)fontTable[font].first; + while (g) + { + if (g->unicode == unicode) + { + return g; + } + GlyphNode** next = (GlyphNode**)((uint8_t*)g + SizeGlyphNode); + g = *next; + } + return 0; +} + +void FontCache::open() +{ + if (reader) + { + reader->open(); + } +} + +void FontCache::close() +{ + if (reader) + { + reader->close(); + } +} + +void FontCache::initializeCachedFont(TypedText t, CachedFont* font, bool loadGsubOrContextTable /*= false*/) +{ + // Get font index from typed text + FontId fontId = t.getFontId(); + // Reset to start of file + open(); + setPosition(0); + + assert(sizeof(touchgfx::BinaryFontData) < MAX_BUFFER_SIZE); + readData(buffer, sizeof(touchgfx::BinaryFontData)); + const struct touchgfx::BinaryFontData* binaryFontData = reinterpret_cast(buffer); + + const Font** flashFonts = TypedTextDatabase::getFonts(); + const GeneratedFont* flashFont = static_cast(flashFonts[fontId]); + *font = CachedFont(reinterpret_cast(buffer), fontId, this, flashFont); + + if (loadGsubOrContextTable && (binaryFontData->offsetToGSUB != 0)) + { + setPosition(binaryFontData->offsetToGSUB); + + const uint32_t sizeOfGSUB = (binaryFontData->offsetToArabicTable != 0 ? binaryFontData->offsetToArabicTable : binaryFontData->sizeOfFontData) - binaryFontData->offsetToGSUB; + + if (top + sizeOfGSUB < gsubStart) // Room for this GSUB table + { + // Round down to aligned address + uint8_t* const gsubPosition = (uint8_t*)((uintptr_t)(gsubStart - sizeOfGSUB) & ~(sizeof(void*) - 1)); + readData(gsubPosition, sizeOfGSUB); + font->setGSUBTable(reinterpret_cast(gsubPosition)); + gsubStart = gsubPosition; + } + else + { + font->setGSUBTable(0); + } + } + + if (loadGsubOrContextTable && (binaryFontData->offsetToArabicTable != 0)) + { + setPosition(binaryFontData->offsetToArabicTable); + + const uint32_t sizeTableData = binaryFontData->sizeOfFontData - binaryFontData->offsetToArabicTable; + + if (top + sizeTableData + sizeof(FontContextualFormsTable) < gsubStart) // Room for the ContextualFormsTables + { + // Allocate FontContextualFormsTable first + gsubStart -= sizeof(FontContextualFormsTable); + // Round down to 32bit address + gsubStart = (uint8_t*)((uintptr_t)gsubStart & ~(sizeof(void*) - 1)); + + FontContextualFormsTable* table = (FontContextualFormsTable*)gsubStart; + font->setContextualFormsTable(table); + gsubStart -= sizeTableData; + readData(gsubStart, sizeTableData); + + // Set pointers in table + const uint16_t* const base = (const uint16_t*)gsubStart; + // First elements in binary font are offsets to arrays in 16bit words + table->contextualForms4Long = (FontContextualFormsTable::arrayOf5UnicodesPtr)(base + base[0]); + table->contextualForms3Long = (FontContextualFormsTable::arrayOf5UnicodesPtr)(base + base[1]); + table->contextualForms2Long = (FontContextualFormsTable::arrayOf5UnicodesPtr)(base + base[2]); + table->contextualForms0621_063a = (FontContextualFormsTable::arrayOf4UnicodesPtr)(base + base[3]); + table->contextualForms0641_064a = (FontContextualFormsTable::arrayOf4UnicodesPtr)(base + base[4]); + table->contextualForms06XX = (FontContextualFormsTable::arrayOf5UnicodesPtr)(base + base[5]); + table->contextualForms4LongSize = base[6]; + table->contextualForms3LongSize = base[7]; + table->contextualForms2LongSize = base[8]; + table->contextualForms06XXSize = base[9]; + } + else + { + font->setContextualFormsTable(0); + } + } + + close(); +} + +bool FontCache::cacheString(TypedText t, const Unicode::UnicodeChar* string) +{ + open(); + if (!createSortedString(string)) + { + close(); + return false; + } + const bool result = cacheSortedString(t); + close(); + return result; +} + +bool FontCache::cacheLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string) +{ + open(); + if (!createSortedLigatures(font, t, string, 0, 0)) + { + close(); + return false; + } + const bool result = cacheSortedString(t); + close(); + return result; +} + +bool FontCache::cacheSortedString(TypedText t) +{ + setPosition(8); // Skip font index and size + uint32_t glyphNodeOffset; + uint32_t dummy; + readData(&glyphNodeOffset, sizeof(uint32_t)); // offsetToTable + readData(&dummy, sizeof(uint32_t)); // offsetToKerning + readData(&glyphDataOffset, sizeof(uint32_t)); // offsetToGlyphs + readData(&dummy, sizeof(uint32_t)); // offsetToGlyphs + readData(&dummy, sizeof(uint32_t)); // offsetToArabicTable + readData(&numGlyphs, sizeof(uint16_t)); // numberOfGlyphs + + FontId fontId = t.getFontId(); // Get font index from typed text + bpp = t.getFont()->getBitsPerPixel(); // Get BPP from standard font + byteAlignRow = t.getFont()->getByteAlignRow(); // Get ByteAlign from font + + setPosition(glyphNodeOffset); // Go to glyph nodes for font + currentFileGlyphNumber = 0; + currentFileGlyphNode.unicode = 0; // Force reading of first glyph + + const Unicode::UnicodeChar* string = sortedString; + Unicode::UnicodeChar last = 0; + GlyphNode* firstNewGlyph = 0; + bool outOfMemory = false; + while (*string) + { + Unicode::UnicodeChar ch = *string; + if (ch != last) + { + if (!contains(ch, fontId)) + { + insert(ch, fontId, outOfMemory); + if (outOfMemory) + { + break; + } + if (firstNewGlyph == 0) + { + firstNewGlyph = (GlyphNode*)fontTable[fontId].last; + } + } + } + last = ch; + string++; + } + + cacheData(firstNewGlyph); + return !outOfMemory; +} + +bool FontCache::contains(Unicode::UnicodeChar unicode, FontId font) const +{ + GlyphNode* g = (GlyphNode*)fontTable[font].first; + while (g) + { + if (g->unicode == unicode) + { + return true; + } + GlyphNode** next = (GlyphNode**)((uint8_t*)g + SizeGlyphNode); + g = *next; + } + return false; +} + +void FontCache::insert(Unicode::UnicodeChar unicode, FontId font, bool& outOfMemory) +{ + // Insert new glyphnode and glyph after last for font. + uint8_t* oldTop = top; + top = copyGlyph(top, unicode, font, outOfMemory); + + if (top == oldTop) + { + return; + } + + if (fontTable[font].last == 0) + { + // First glyph + fontTable[font].first = oldTop; + fontTable[font].last = oldTop; + } + else + { + // Set next pointer of old last glyph + uint8_t** old_next = (uint8_t**)(fontTable[font].last + SizeGlyphNode); + *old_next = oldTop; + + // Save new glyph as last glyph + fontTable[font].last = oldTop; + } +} + +uint8_t* FontCache::copyGlyph(uint8_t* top, Unicode::UnicodeChar unicode, FontId font, bool& outOfMemory) +{ + while (currentFileGlyphNumber < numGlyphs && currentFileGlyphNode.unicode < unicode) + { + readData(¤tFileGlyphNode, sizeof(GlyphNode)); + currentFileGlyphNumber++; + } + if (currentFileGlyphNode.unicode != unicode) + { + // GlyphNode not found + return top; + } + + // GlyphNode found + uint32_t glyphSize = getGlyphSize(¤tFileGlyphNode); + const int alignment = sizeof(void*); + glyphSize = (glyphSize + (alignment - 1)) & ~(alignment - 1); + uint32_t requiredMem = SizeGlyphNode + sizeof(void*) + glyphSize; // GlyphNode + next ptr + glyph + + // Is space available before sortedString + if (top + requiredMem > (uint8_t*)sortedString) + { + outOfMemory = true; + return top; + } + + *(GlyphNode*)top = currentFileGlyphNode; + + // Clear next pointer + uint8_t** next = (uint8_t**)(top + SizeGlyphNode); + *next = 0; + top += requiredMem; + return top; +} + +void FontCache::cacheData(GlyphNode* first) +{ + GlyphNode* gn = first; + while (gn) + { + uint8_t* p = (uint8_t*)gn; + if (gn->dataOffset != 0xFFFFFFFF) + { + p += SizeGlyphNode; + // Next pointer + p += sizeof(void*); + + // Seek and copy + setPosition(glyphDataOffset + gn->dataOffset); + readData(p, getGlyphSize(gn)); + + // Mark glyphNode as cached + gn->dataOffset = 0xFFFFFFFF; + } + + GlyphNode** next = (GlyphNode**)((uint8_t*)gn + SizeGlyphNode); + gn = *next; + } +} + +bool FontCache::createSortedString(const Unicode::UnicodeChar* string) +{ + int length = Unicode::strlen(string); + // Sorted string is allocated at end of buffer + sortedString = (Unicode::UnicodeChar*)(gsubStart - (length + 1) * 2); + if ((uint8_t*)sortedString < top) + { + // Unable to allocate string buffer in end of memory + return false; + } + int n = 0; + Unicode::UnicodeChar* uc = sortedString; + while (*string) + { + *uc++ = *string++; + n++; + } + *uc = 0; + return sortSortedString(n); +} + +bool FontCache::createSortedLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string, ...) +{ + va_list pArg; + va_start(pArg, string); + TextProvider tp; + tp.initialize(string, pArg, font->getGSUBTable(), font->getContextualFormsTable()); + va_end(pArg); + Unicode::UnicodeChar ligature; + sortedString = (Unicode::UnicodeChar*)(gsubStart); + if ((uint8_t*)(sortedString - 1) < top) + { + return false; + } + *--sortedString = 0; + int n = 0; + while ((ligature = tp.getNextLigature(t.getTextDirection())) != 0) + { + if ((uint8_t*)(sortedString - 1) < top) + { + return false; + } + *--sortedString = ligature; + n++; + } + return sortSortedString(n); +} + +bool FontCache::sortSortedString(int n) +{ + Unicode::UnicodeChar* uc = sortedString; + for (int i = 0; i < n - 1; i++) + { + bool swapped = false; + for (int j = 0; j < n - i - 1; j++) + { + if (uc[j] > uc[j + 1]) + { + Unicode::UnicodeChar temp = uc[j]; + uc[j] = uc[j + 1]; + uc[j + 1] = temp; + swapped = true; + } + } + + // If no two elements were swapped by inner loop, then break + if (!swapped) + { + break; + } + } + return true; +} + +void FontCache::setPosition(uint32_t position) +{ + if (reader) + { + reader->setPosition(position); + } +} + +void FontCache::readData(void* out, uint32_t numberOfBytes) +{ + if (reader) + { + reader->readData(out, numberOfBytes); + } +} +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_0.cpp new file mode 100644 index 00000000..cb058270 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_0.cpp @@ -0,0 +1,336 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xB0, 0xB0, 0x74, 0x34, 0x38, 0x28, 0x2C, 0x1C, 0x1D, 0x04, 0x00, 0x0F, 0x0B, + // Unicode: [0x0022, quotedbl] + 0x95, 0xDB, 0xA7, 0xA3, + // Unicode: [0x0023, numbersign] + 0x00, 0xD0, 0x01, 0x0B, 0x00, 0x28, 0xD0, 0x00, 0x40, 0x07, 0x2C, 0x80, 0xFF, 0xFF, 0xFF, 0x50, + 0x6E, 0xF5, 0x15, 0x40, 0x03, 0x1C, 0x00, 0xA0, 0x40, 0x03, 0x00, 0x1D, 0xA0, 0x00, 0xFE, 0xFF, + 0xFF, 0x43, 0xB5, 0x95, 0x57, 0x00, 0x1D, 0xB0, 0x00, 0x80, 0x03, 0x1D, 0x00, 0x70, 0x80, 0x02, + 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x60, 0x00, 0xE4, 0x2F, 0xD0, 0xBA, 0x0B, 0x4B, 0xE2, 0x74, 0x24, 0x44, 0x8B, 0x01, 0xF0, + 0x1E, 0x00, 0xF8, 0x0B, 0x00, 0xED, 0x03, 0x90, 0x78, 0x14, 0x86, 0xD3, 0x62, 0x2C, 0xBC, 0xFB, + 0x01, 0xFE, 0x02, 0x40, 0x02, 0x00, 0x10, 0x00, + // Unicode: [0x0025, percent] + 0xE0, 0x07, 0x1D, 0x87, 0xC2, 0xD2, 0xD0, 0x38, 0x34, 0x5C, 0x07, 0xF8, 0xB2, 0x00, 0x00, 0x0A, + 0x00, 0xE0, 0x00, 0x00, 0x1D, 0x00, 0xC0, 0xE2, 0x06, 0x38, 0x8A, 0x43, 0xD7, 0xD0, 0x74, 0x34, + 0x28, 0x0B, 0xF8, 0x02, + // Unicode: [0x0026, ampersand] + 0x00, 0xF8, 0x02, 0x00, 0x7C, 0x2E, 0x00, 0x74, 0xA0, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x0B, 0x00, + 0x00, 0x7D, 0x00, 0x00, 0xEE, 0x03, 0x14, 0x1E, 0x2D, 0x38, 0x1D, 0xE0, 0x7A, 0x38, 0x00, 0xBE, + 0xE0, 0x01, 0xF4, 0x41, 0x5F, 0xB9, 0x0F, 0xE4, 0x6F, 0xB4, 0x00, + // Unicode: [0x0027, quotesingle] + 0xB5, 0x37, + // Unicode: [0x0028, parenleft] + 0x00, 0x78, 0x00, 0x1E, 0x40, 0x07, 0xD0, 0x02, 0xE0, 0x00, 0x74, 0x00, 0x38, 0x00, 0x2C, 0x00, + 0x1D, 0x00, 0x0E, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0E, 0x00, + 0x0E, 0x00, 0x2D, 0x00, 0x38, 0x00, 0xB4, 0x00, + // Unicode: [0x0029, parenright] + 0x00, 0x0B, 0x00, 0x1D, 0x00, 0x3C, 0x00, 0x74, 0x00, 0x74, 0x00, 0xB0, 0x00, 0xB0, 0x00, 0xA0, + 0x00, 0xB0, 0x00, 0xB0, 0x00, 0x70, 0x00, 0x74, 0x00, 0x38, 0x00, 0x2C, 0x00, 0x0E, 0x00, 0x0B, + 0x80, 0x03, 0xD0, 0x01, 0xB4, 0x00, 0x2D, 0x00, + // Unicode: [0x002A, asterisk] + 0xC0, 0x41, 0x31, 0xD5, 0xAE, 0xD1, 0x0B, 0xAB, 0x4E, 0x18, 0x01, 0x06, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x10, 0x00, 0x80, 0x03, 0x00, 0x2C, 0x00, 0xC0, 0x02, 0x00, 0x1D, 0xD0, 0xFF, 0xFF, 0x54, + 0x5E, 0x05, 0xE0, 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x00, 0x01, 0x00, + // Unicode: [0x002C, comma] + 0xD0, 0xC1, 0x42, 0x03, 0x0A, 0x0D, 0x00, + // Unicode: [0x002D, hyphen] + 0xFE, 0xBF, 0x55, 0x15, + // Unicode: [0x002E, period] + 0x84, 0xA7, 0x00, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0x1D, 0x00, 0x80, 0x03, 0x00, 0xB0, 0x00, 0x00, 0x0E, 0x00, 0xC0, 0x02, 0x00, 0x74, + 0x00, 0x00, 0x0A, 0x00, 0xD0, 0x01, 0x00, 0x38, 0x00, 0x00, 0x0B, 0x00, 0xD0, 0x00, 0x00, 0x2C, + 0x00, 0x40, 0x07, 0x00, 0xE0, 0x00, 0x00, 0x1D, 0x00, 0x80, 0x03, 0x00, 0xB0, 0x00, 0x00, 0x1D, + 0x00, 0xC0, 0x02, 0x00, 0x74, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x40, 0xBE, 0x01, 0xAE, 0x3E, 0xB4, 0x40, 0x87, 0x02, 0xB0, 0x1C, 0x00, 0xDB, 0x01, 0xB0, 0x0E, + 0x40, 0xA7, 0x00, 0x74, 0x0B, 0x80, 0xB3, 0x00, 0x2C, 0x0E, 0xE0, 0xD0, 0xEB, 0x07, 0xF4, 0x1B, + 0x00, + // Unicode: [0x0031, one] + 0xFC, 0x91, 0x03, 0x0E, 0x2C, 0xB0, 0xD0, 0x41, 0x07, 0x0E, 0x38, 0xB0, 0xC0, 0x42, 0x07, 0x1D, + 0x00, + // Unicode: [0x0032, two] + 0x00, 0xFE, 0x02, 0xBC, 0xB9, 0xE0, 0x00, 0x0E, 0x07, 0xE0, 0x10, 0x00, 0x0B, 0x00, 0x74, 0x00, + 0xD0, 0x02, 0x40, 0x0B, 0x00, 0x2D, 0x00, 0xB8, 0x00, 0xE0, 0x01, 0xD0, 0x57, 0x15, 0xFF, 0xFF, + 0x02, + // Unicode: [0x0033, three] + 0x00, 0xFE, 0x02, 0xBD, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0x90, 0x07, 0xE0, 0x0B, 0x00, + 0xE5, 0x02, 0x00, 0x38, 0x00, 0x40, 0xD7, 0x01, 0x34, 0x2D, 0xC0, 0x82, 0x9B, 0x0F, 0xE0, 0x2F, + 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x1F, 0x00, 0xF0, 0x03, 0x00, 0xEE, 0x00, 0xE0, 0x29, 0x00, 0x1E, 0x0B, 0xD0, 0xC1, + 0x01, 0x2D, 0x74, 0xD0, 0x02, 0x0D, 0x3C, 0x80, 0x83, 0xFF, 0xFF, 0x5B, 0x55, 0x6D, 0x00, 0x40, + 0x07, 0x00, 0xD0, 0x01, + // Unicode: [0x0035, five] + 0xF0, 0xFF, 0x4B, 0x5B, 0x55, 0x34, 0x00, 0x80, 0x03, 0x00, 0xAC, 0xBF, 0xC0, 0x5B, 0x2E, 0x2D, + 0x80, 0x03, 0x00, 0x74, 0x00, 0x40, 0x63, 0x00, 0x28, 0x0F, 0xD0, 0xD1, 0x97, 0x0B, 0xE4, 0x1B, + 0x00, + // Unicode: [0x0036, six] + 0x00, 0xFE, 0x01, 0x6D, 0x79, 0x70, 0x00, 0x8A, 0x02, 0x00, 0x5C, 0xBF, 0xD0, 0x5A, 0x2E, 0x2D, + 0x80, 0xE3, 0x00, 0x74, 0x0A, 0x40, 0xA3, 0x00, 0x38, 0x0D, 0xD0, 0xC1, 0x97, 0x0B, 0xE4, 0x1B, + 0x00, + // Unicode: [0x0037, seven] + 0xFC, 0xFF, 0x47, 0x55, 0x39, 0x00, 0xC0, 0x02, 0x00, 0x0E, 0x00, 0x74, 0x00, 0xC0, 0x02, 0x00, + 0x0E, 0x00, 0xB4, 0x00, 0x80, 0x03, 0x00, 0x1D, 0x00, 0xB0, 0x00, 0x80, 0x03, 0x00, 0x2D, 0x00, + 0x00, + // Unicode: [0x0038, eight] + 0x00, 0xF9, 0x07, 0xF0, 0x96, 0x0B, 0x1E, 0xC0, 0x82, 0x02, 0xB0, 0xE0, 0x41, 0x0A, 0xE0, 0xBF, + 0x00, 0x5E, 0x79, 0xE0, 0x00, 0x38, 0x2C, 0x00, 0x4E, 0x07, 0x80, 0xD3, 0x02, 0x74, 0xE0, 0x96, + 0x0B, 0xD0, 0x6F, 0x00, + // Unicode: [0x0039, nine] + 0x40, 0xBE, 0x01, 0x6E, 0x3D, 0x74, 0x00, 0x8B, 0x02, 0xA0, 0x2C, 0x00, 0xCB, 0x02, 0xB4, 0x78, + 0xE4, 0x07, 0xFE, 0x36, 0x00, 0x41, 0x53, 0x00, 0x2C, 0x0E, 0xD0, 0xD0, 0x97, 0x07, 0xE4, 0x1B, + 0x00, + // Unicode: [0x003A, colon] + 0xCE, 0x03, 0x00, 0x00, 0x00, 0x10, 0x9E, 0x02, + // Unicode: [0x003B, semicolon] + 0x80, 0x03, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x74, 0xA0, 0xD0, 0x81, 0x02, 0x01, + 0x00, + // Unicode: [0x003C, less] + 0x00, 0x14, 0xD0, 0x03, 0x2D, 0xE0, 0x02, 0x1E, 0x80, 0x07, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, + // Unicode: [0x003D, equal] + 0xF8, 0xFF, 0x2F, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0x55, 0x55, + 0x01, + // Unicode: [0x003E, greater] + 0x50, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x40, 0x0B, 0x78, 0x80, 0x07, 0x2D, 0x00, + // Unicode: [0x003F, question] + 0x90, 0x2F, 0xE0, 0xE6, 0xD3, 0x01, 0x5D, 0x01, 0x74, 0x00, 0xE0, 0x00, 0xE4, 0x41, 0xBF, 0x01, + 0x1D, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0B, 0x00, 0x1D, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0xA4, 0xBF, 0x01, 0x00, 0x6E, 0x95, 0x0B, 0x80, 0x02, 0x00, 0x2C, 0xA0, 0x00, 0x00, 0x70, + 0x38, 0xE0, 0xDB, 0xA0, 0x1C, 0x78, 0xF9, 0xA0, 0x0D, 0x0E, 0xB0, 0x90, 0x0A, 0x0B, 0xA0, 0xA0, + 0x0A, 0x07, 0x70, 0xA0, 0x0A, 0x0B, 0x74, 0x30, 0x0A, 0x1E, 0xB9, 0x29, 0x0D, 0xF8, 0xD2, 0x0B, + 0x28, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x04, 0x00, 0x80, 0xFF, 0x0B, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xF0, 0x01, 0x00, 0xBD, 0x00, 0xC0, 0x2E, 0x00, 0x74, 0x0E, 0x00, 0x8B, 0x03, 0xD0, 0xD1, + 0x01, 0x2C, 0x74, 0x40, 0x07, 0x2C, 0xB0, 0x00, 0x0B, 0xFE, 0xFF, 0xC3, 0x56, 0xE5, 0x79, 0x00, + 0x74, 0x0B, 0x00, 0x2D, + // Unicode: [0x0042, B] + 0xD0, 0xFF, 0x06, 0x78, 0xD5, 0x07, 0x0E, 0xD0, 0xC2, 0x02, 0xB0, 0xB0, 0x00, 0x1D, 0x1D, 0xD0, + 0x42, 0xFF, 0x1F, 0xE0, 0x55, 0x1E, 0x38, 0x00, 0x0B, 0x0B, 0x80, 0xC2, 0x02, 0xB4, 0xB4, 0x95, + 0x0B, 0xFD, 0x6F, 0x00, + // Unicode: [0x0043, C] + 0x00, 0xF9, 0x0B, 0x00, 0xAE, 0xFA, 0x01, 0x1F, 0x40, 0x0F, 0x0E, 0x00, 0x78, 0x1D, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xC0, 0x02, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x3C, 0x00, 0xA0, + 0xD1, 0x02, 0xE0, 0x02, 0xBE, 0xF9, 0x02, 0x90, 0xAF, 0x00, 0x00, + // Unicode: [0x0044, D] + 0xD0, 0xFF, 0x06, 0x80, 0x57, 0xB9, 0x00, 0x0E, 0x40, 0x0B, 0x2C, 0x00, 0x38, 0xB0, 0x00, 0xE0, + 0xD1, 0x01, 0x40, 0x47, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x38, 0x38, 0x00, 0xB0, 0xB0, 0x00, 0xE0, + 0xC0, 0x02, 0xE0, 0x41, 0x5B, 0xF9, 0x01, 0xFD, 0x6F, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xD0, 0xFF, 0x07, 0x5E, 0x15, 0xE0, 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x40, 0x07, 0x00, 0xF4, + 0xBF, 0x80, 0x57, 0x01, 0x38, 0x00, 0xC0, 0x02, 0x00, 0x2C, 0x00, 0xD0, 0x56, 0x01, 0xFD, 0x7F, + 0x00, + // Unicode: [0x0046, F] + 0xD0, 0xFF, 0x0B, 0x5E, 0x15, 0xE0, 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x40, 0x07, 0x00, 0xF4, + 0xBF, 0x80, 0x57, 0x01, 0x38, 0x00, 0xC0, 0x02, 0x00, 0x2C, 0x00, 0xD0, 0x01, 0x00, 0x1D, 0x00, + 0x00, + // Unicode: [0x0047, G] + 0x00, 0xF9, 0x0B, 0x00, 0xAE, 0xFA, 0x01, 0x1F, 0x40, 0x0F, 0x0E, 0x00, 0x68, 0x1D, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xB0, 0x40, 0xFF, 0xDF, 0x02, 0x54, 0x79, 0x0B, 0x00, 0xB0, 0x3C, 0x00, 0xE0, + 0xD1, 0x02, 0xE0, 0x01, 0xBE, 0xF9, 0x01, 0x90, 0xAF, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xD0, 0x01, 0xD0, 0x81, 0x03, 0x80, 0x03, 0x0E, 0x00, 0x0E, 0x2C, 0x00, 0x2C, 0xB0, 0x00, 0xB0, + 0xD0, 0x01, 0xD0, 0x41, 0xFF, 0xFF, 0x07, 0x5E, 0x55, 0x0E, 0x38, 0x00, 0x38, 0xB0, 0x00, 0xB0, + 0xC0, 0x02, 0xC0, 0x42, 0x07, 0x40, 0x07, 0x1D, 0x00, 0x1D, 0x00, + // Unicode: [0x0049, I] + 0xD0, 0x81, 0x03, 0x0E, 0x2C, 0xB0, 0xD0, 0x41, 0x07, 0x0E, 0x38, 0xB0, 0xC0, 0x42, 0x07, 0x1D, + 0x00, + // Unicode: [0x004A, J] + 0x00, 0x80, 0x03, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0x74, 0x00, 0xD0, 0x01, 0x80, 0x03, 0x00, 0x0E, + 0x00, 0x2C, 0x00, 0xB0, 0x24, 0xD0, 0xE1, 0x80, 0x43, 0x9B, 0x07, 0xF4, 0x06, 0x00, + // Unicode: [0x004B, K] + 0xD0, 0x01, 0x3C, 0x38, 0xC0, 0x03, 0x0E, 0x3C, 0xC0, 0xD2, 0x02, 0xB0, 0x2D, 0x00, 0xED, 0x02, + 0x40, 0x3F, 0x00, 0xE0, 0x1E, 0x00, 0x38, 0x1F, 0x00, 0x4B, 0x0F, 0xC0, 0x42, 0x0B, 0x74, 0x80, + 0x07, 0x1D, 0xC0, 0x03, + // Unicode: [0x004C, L] + 0xD0, 0x01, 0x38, 0x00, 0x0E, 0xC0, 0x02, 0xB0, 0x00, 0x1D, 0x40, 0x07, 0xE0, 0x00, 0x38, 0x00, + 0x0B, 0xC0, 0x02, 0xB4, 0x55, 0xFD, 0x2F, + // Unicode: [0x004D, M] + 0xD0, 0x02, 0x00, 0x78, 0xE0, 0x03, 0x00, 0x3D, 0xE0, 0x03, 0x00, 0x3F, 0xF0, 0x07, 0x40, 0x2F, + 0xB0, 0x0B, 0xC0, 0x2E, 0x74, 0x0E, 0xE0, 0x1D, 0x74, 0x0D, 0x74, 0x1D, 0x38, 0x1D, 0x28, 0x0E, + 0x38, 0x2C, 0x0D, 0x0E, 0x2C, 0x38, 0x0B, 0x0B, 0x2C, 0xB4, 0x03, 0x0B, 0x1D, 0xF0, 0x41, 0x07, + 0x1D, 0xB0, 0x40, 0x07, + // Unicode: [0x004E, N] + 0xD0, 0x02, 0xC0, 0x81, 0x0F, 0x40, 0x07, 0xBE, 0x00, 0x0E, 0xAC, 0x03, 0x38, 0xB0, 0x1D, 0xB0, + 0xD0, 0xE1, 0xC0, 0x42, 0x47, 0x47, 0x07, 0x0E, 0x3C, 0x1D, 0x38, 0xD0, 0x39, 0xB0, 0x00, 0xEB, + 0xC0, 0x02, 0xF4, 0x42, 0x07, 0xC0, 0x0B, 0x1D, 0x00, 0x1E, 0x00, + // Unicode: [0x004F, O] + 0x00, 0xF9, 0x0B, 0x40, 0xAF, 0xFA, 0x41, 0x1F, 0x40, 0x0F, 0x0F, 0x00, 0x74, 0x1D, 0x00, 0xD0, + 0x3A, 0x00, 0x00, 0xBB, 0x00, 0x00, 0xDD, 0x02, 0x00, 0x74, 0x0B, 0x00, 0xE0, 0x38, 0x00, 0xD0, + 0xD1, 0x02, 0xE0, 0x02, 0xBE, 0xF9, 0x02, 0x90, 0xBF, 0x01, 0x00, + // Unicode: [0x0050, P] + 0xD0, 0xFF, 0x02, 0x78, 0xD5, 0x03, 0x0E, 0xD0, 0xC1, 0x02, 0x74, 0xB0, 0x00, 0x1D, 0x1D, 0x80, + 0x43, 0x07, 0x79, 0xE0, 0xFF, 0x07, 0x78, 0x05, 0x00, 0x0B, 0x00, 0xC0, 0x02, 0x00, 0x74, 0x00, + 0x00, 0x1D, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xF9, 0x0B, 0x40, 0xAF, 0xFA, 0x41, 0x1F, 0x40, 0x0F, 0x0F, 0x00, 0x74, 0x1D, 0x00, 0xD0, + 0x3A, 0x00, 0x00, 0xBB, 0x00, 0x00, 0xED, 0x02, 0x00, 0x74, 0x0B, 0x00, 0xE0, 0x38, 0x00, 0xD0, + 0xD1, 0x02, 0xE0, 0x02, 0xBE, 0xF9, 0x02, 0x90, 0xFF, 0x03, 0x00, 0x00, 0x2D, 0x00, 0x00, 0xD0, + 0x02, + // Unicode: [0x0052, R] + 0xD0, 0xFF, 0x02, 0x78, 0xD5, 0x03, 0x0E, 0xD0, 0xC1, 0x02, 0x74, 0xB0, 0x00, 0x1D, 0x1D, 0x80, + 0x43, 0x07, 0x79, 0xE0, 0xFF, 0x07, 0x78, 0x3D, 0x00, 0x0B, 0x1D, 0xC0, 0x02, 0x0F, 0x74, 0x80, + 0x07, 0x1D, 0xC0, 0x02, + // Unicode: [0x0053, S] + 0x90, 0x6F, 0xE0, 0xD6, 0xC7, 0x02, 0x6C, 0x07, 0x50, 0x2D, 0x00, 0xE0, 0x07, 0x00, 0xFD, 0x01, + 0x40, 0x2F, 0x00, 0xF0, 0x18, 0x80, 0xB3, 0x00, 0x8E, 0x5B, 0x1E, 0xE4, 0x1B, 0x00, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0x47, 0xB5, 0x15, 0x00, 0x0B, 0x00, 0x74, 0x00, 0x40, 0x07, 0x00, 0x38, 0x00, 0x80, + 0x03, 0x00, 0x2C, 0x00, 0xC0, 0x02, 0x00, 0x1D, 0x00, 0xD0, 0x01, 0x00, 0x0E, 0x00, 0xE0, 0x00, + 0x00, + // Unicode: [0x0055, U] + 0x74, 0x00, 0x38, 0x0E, 0x00, 0x8E, 0x03, 0xC0, 0xB2, 0x00, 0xB0, 0x2C, 0x00, 0x5D, 0x07, 0x40, + 0xD3, 0x01, 0xE0, 0x38, 0x00, 0x28, 0x0E, 0x00, 0x8B, 0x03, 0xD0, 0xE1, 0x01, 0x2C, 0xF4, 0xE6, + 0x03, 0xE4, 0x1B, 0x00, + // Unicode: [0x0056, V] + 0x2D, 0x00, 0xB0, 0x2C, 0x00, 0x74, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x1E, 0x74, 0x00, 0x0B, 0x74, + 0x80, 0x03, 0xB0, 0xC0, 0x02, 0xB0, 0xE0, 0x00, 0xE0, 0xB0, 0x00, 0xD0, 0x38, 0x00, 0xD0, 0x1E, + 0x00, 0xC0, 0x0F, 0x00, 0xC0, 0x07, 0x00, + // Unicode: [0x0057, W] + 0x2D, 0x00, 0x0F, 0x80, 0xC7, 0x02, 0xF4, 0x01, 0x2C, 0x2C, 0xC0, 0x1F, 0xD0, 0xC1, 0x02, 0xDD, + 0x01, 0x0E, 0x2C, 0xA0, 0x1C, 0x74, 0x80, 0x43, 0xC7, 0x82, 0x03, 0x38, 0x28, 0x2C, 0x2C, 0x80, + 0xC3, 0xC1, 0xD2, 0x00, 0x34, 0x0E, 0x38, 0x0B, 0x40, 0x77, 0x80, 0x77, 0x00, 0xB4, 0x03, 0xB8, + 0x02, 0x00, 0x2F, 0x40, 0x1F, 0x00, 0xF0, 0x00, 0xB4, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xE0, 0x00, 0x78, 0xD0, 0x02, 0x2D, 0x80, 0x03, 0x0B, 0x40, 0x87, 0x03, 0x00, 0xDF, 0x01, 0x00, + 0x7E, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x00, 0x80, 0xB7, 0x00, 0xD0, 0xF1, 0x00, 0xB4, 0xD0, + 0x01, 0x2C, 0xC0, 0x02, 0x0E, 0x80, 0x07, + // Unicode: [0x0059, Y] + 0x2D, 0x00, 0x1E, 0x0F, 0xD0, 0x81, 0x07, 0x2C, 0xD0, 0x82, 0x03, 0xB0, 0x74, 0x00, 0x38, 0x0B, + 0x00, 0xFC, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x03, 0x00, 0xB0, 0x00, 0x00, 0x2C, 0x00, 0x40, 0x07, + 0x00, 0xD0, 0x01, 0x00, + // Unicode: [0x005A, Z] + 0xF0, 0xFF, 0x0F, 0x55, 0xB9, 0x00, 0xC0, 0x03, 0x00, 0x1E, 0x00, 0xB4, 0x00, 0xD0, 0x02, 0x00, + 0x0F, 0x00, 0x78, 0x00, 0xD0, 0x01, 0x40, 0x0B, 0x00, 0x3C, 0x00, 0xE0, 0x56, 0x05, 0xFF, 0xFF, + 0x00, + // Unicode: [0x005B, bracketleft] + 0x80, 0x2F, 0xA0, 0x01, 0x2C, 0x00, 0x07, 0xD0, 0x01, 0x38, 0x00, 0x0E, 0xC0, 0x02, 0xB0, 0x00, + 0x1D, 0x40, 0x03, 0xE0, 0x00, 0x28, 0x00, 0x0B, 0xC0, 0x01, 0x74, 0x00, 0x0D, 0x80, 0x03, 0xA0, + 0x00, 0xFC, 0x01, 0x15, 0x00, + // Unicode: [0x005C, backslash] + 0x0E, 0x0E, 0x0E, 0x0E, 0x1D, 0x1D, 0x1D, 0x1D, 0x1C, 0x2C, 0x2C, 0x2C, 0x28, 0x38, 0x38, 0x38, + 0x38, 0x74, 0x74, 0x74, + // Unicode: [0x005D, bracketright] + 0x00, 0x7F, 0x00, 0x39, 0x00, 0x38, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x0D, 0x00, 0x0E, + 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x07, 0x40, 0x07, 0x40, 0x03, 0x80, 0x03, 0x80, 0x02, 0xC0, 0x02, + 0xC0, 0x01, 0xD0, 0x01, 0xE0, 0x00, 0xFD, 0x00, 0x54, 0x00, + // Unicode: [0x005E, asciicircum] + 0x00, 0x50, 0x00, 0x40, 0x0F, 0x00, 0xFC, 0x01, 0xE0, 0x2D, 0x40, 0xC7, 0x02, 0x2C, 0x38, 0xE0, + 0x41, 0x47, 0x0B, 0xB0, 0x38, 0x00, 0xDE, 0x01, 0xE0, + // Unicode: [0x005F, underscore] + 0xA8, 0xAA, 0x5A, 0xFF, 0xFF, 0x07, + // Unicode: [0x0060, grave] + 0x09, 0xF0, 0x01, 0x1D, + // Unicode: [0x0061, a] + 0x40, 0xBE, 0xB1, 0xD0, 0x9B, 0x7B, 0xB4, 0x00, 0x7D, 0x38, 0x00, 0x3C, 0x2C, 0x00, 0x2C, 0x1D, + 0x00, 0x2C, 0x1D, 0x00, 0x1D, 0x2C, 0x40, 0x1F, 0xB8, 0xE5, 0x0E, 0xD0, 0x2F, 0x0E, + // Unicode: [0x0062, b] + 0xD0, 0x01, 0x00, 0xD0, 0x01, 0x00, 0xE0, 0x00, 0x00, 0xA0, 0xF8, 0x0B, 0xB0, 0x9B, 0x2F, 0xF4, + 0x01, 0x78, 0xB4, 0x00, 0x74, 0x38, 0x00, 0x74, 0x38, 0x00, 0x74, 0x3C, 0x00, 0x3C, 0x7C, 0x00, + 0x1E, 0xED, 0xE6, 0x07, 0x5D, 0xBE, 0x01, + // Unicode: [0x0063, c] + 0x40, 0xFE, 0x02, 0xF4, 0xE6, 0x42, 0x0B, 0xE0, 0xE1, 0x00, 0x10, 0x2C, 0x00, 0x40, 0x07, 0x00, + 0xD0, 0x01, 0x50, 0xB4, 0x00, 0x1E, 0xB8, 0xE5, 0x01, 0xF8, 0x1B, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xB0, 0x40, 0xBE, 0xB1, 0xD0, 0x9B, 0x7B, 0xB4, + 0x00, 0x7D, 0x38, 0x00, 0x3C, 0x2C, 0x00, 0x3C, 0x1D, 0x00, 0x2C, 0x1D, 0x00, 0x1D, 0x2C, 0x40, + 0x1F, 0xB8, 0xE5, 0x0E, 0xD0, 0x2F, 0x0E, + // Unicode: [0x0065, e] + 0x00, 0xFE, 0x02, 0xB4, 0xE5, 0x43, 0x07, 0xD0, 0xA1, 0x00, 0x74, 0xFC, 0xFF, 0x5F, 0x57, 0x55, + 0xD1, 0x01, 0x50, 0xB0, 0x00, 0x1E, 0xB8, 0xE5, 0x01, 0xF4, 0x1B, 0x00, + // Unicode: [0x0066, f] + 0x80, 0x0B, 0x5F, 0x74, 0xF0, 0x3F, 0x7D, 0xC1, 0x02, 0x2C, 0xD0, 0x01, 0x1D, 0xE0, 0x00, 0x0E, + 0xB0, 0x00, 0x07, 0x00, + // Unicode: [0x0067, g] + 0x40, 0xBE, 0xB1, 0xD0, 0x96, 0x7B, 0xB4, 0x00, 0x7D, 0x38, 0x00, 0x3C, 0x2C, 0x00, 0x2C, 0x1D, + 0x00, 0x2C, 0x1D, 0x00, 0x1E, 0x3C, 0x40, 0x1F, 0xF8, 0xE6, 0x0E, 0xD0, 0x2F, 0x0E, 0x00, 0x00, + 0x0B, 0x0A, 0x40, 0x07, 0x1E, 0xC0, 0x03, 0xBD, 0xF9, 0x01, 0xE4, 0x2F, 0x00, + // Unicode: [0x0068, h] + 0xD0, 0x01, 0x00, 0x74, 0x00, 0x00, 0x0E, 0x00, 0x80, 0xE6, 0x1B, 0xF0, 0x9B, 0x0F, 0x3D, 0x80, + 0x47, 0x07, 0xD0, 0xE1, 0x00, 0x74, 0x38, 0x00, 0x0E, 0x0B, 0x80, 0xC3, 0x02, 0xB0, 0x74, 0x00, + 0x2C, 0x1D, 0x40, 0x07, + // Unicode: [0x0069, i] + 0xD0, 0x81, 0x07, 0x00, 0x2C, 0xB0, 0xD0, 0x41, 0x07, 0x0E, 0x38, 0xB0, 0xC0, 0x42, 0x07, 0x1D, + 0x00, + // Unicode: [0x006A, j] + 0x00, 0x1D, 0x40, 0x07, 0x00, 0x00, 0x28, 0x00, 0x0B, 0xC0, 0x01, 0x74, 0x00, 0x0E, 0x80, 0x03, + 0xB0, 0x00, 0x2C, 0x40, 0x07, 0xD0, 0x01, 0x38, 0x00, 0x0E, 0xC0, 0x02, 0x79, 0xC0, 0x07, 0x00, + // Unicode: [0x006B, k] + 0xD0, 0x01, 0x00, 0x1D, 0x00, 0xE0, 0x00, 0x00, 0x0A, 0x78, 0xB0, 0xE0, 0x41, 0xC7, 0x07, 0x74, + 0x1F, 0x80, 0x3F, 0x00, 0xF8, 0x02, 0xC0, 0xBA, 0x00, 0x2C, 0x1E, 0xD0, 0xC1, 0x03, 0x1D, 0xB4, + 0x00, + // Unicode: [0x006C, l] + 0xD0, 0x41, 0x07, 0x0E, 0x38, 0xB0, 0xD0, 0x41, 0x07, 0x0E, 0x38, 0xB0, 0xC0, 0x42, 0x07, 0x1D, + 0x00, + // Unicode: [0x006D, m] + 0xB0, 0xF9, 0x46, 0xBE, 0x01, 0x7F, 0xF5, 0x5D, 0x3D, 0xF4, 0x00, 0x3E, 0x40, 0x47, 0x07, 0xD0, + 0x01, 0x74, 0x38, 0x00, 0x1D, 0x40, 0x87, 0x03, 0xE0, 0x00, 0x38, 0x2C, 0x00, 0x0A, 0x80, 0xC3, + 0x02, 0xB0, 0x00, 0x2C, 0x1D, 0x00, 0x07, 0xC0, 0xD2, 0x01, 0x74, 0x00, 0x1D, + // Unicode: [0x006E, n] + 0xB0, 0xF9, 0x06, 0xFC, 0xD5, 0x43, 0x0F, 0xD0, 0xD1, 0x01, 0x74, 0x38, 0x00, 0x1D, 0x0E, 0x80, + 0xC3, 0x02, 0xE0, 0xB0, 0x00, 0x2C, 0x1D, 0x00, 0x4B, 0x07, 0xD0, 0x01, + // Unicode: [0x006F, o] + 0x00, 0xFE, 0x02, 0xF4, 0xE6, 0x43, 0x0B, 0xD0, 0xE1, 0x00, 0xB0, 0x2D, 0x00, 0x6C, 0x07, 0x00, + 0xDB, 0x01, 0xE0, 0xB1, 0x00, 0x2D, 0xB8, 0xE5, 0x02, 0xE4, 0x1B, 0x00, + // Unicode: [0x0070, p] + 0xC0, 0xE2, 0x2F, 0x00, 0xBB, 0xF9, 0x02, 0x7D, 0x00, 0x1E, 0xB4, 0x00, 0x74, 0xE0, 0x00, 0xD0, + 0x81, 0x03, 0x40, 0x07, 0x0F, 0x00, 0x0F, 0x7C, 0x00, 0x1E, 0xB4, 0x9B, 0x1F, 0xD0, 0xE5, 0x1B, + 0x80, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x2C, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xD0, 0x01, 0x00, + 0x00, + // Unicode: [0x0071, q] + 0x40, 0xBE, 0xB1, 0xD0, 0x9B, 0x7B, 0xB4, 0x00, 0x7D, 0x38, 0x00, 0x3C, 0x2C, 0x00, 0x3C, 0x1D, + 0x00, 0x2C, 0x1D, 0x00, 0x1D, 0x3C, 0x40, 0x1F, 0xF8, 0xE6, 0x0E, 0xD0, 0x2F, 0x0E, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x0B, 0x00, 0x40, 0x07, 0x00, 0x40, 0x07, 0x00, 0x80, 0x03, + // Unicode: [0x0072, r] + 0xB0, 0x38, 0xEC, 0x4A, 0x1F, 0xD0, 0x01, 0x38, 0x00, 0x0E, 0xC0, 0x02, 0xB0, 0x00, 0x1D, 0x40, + 0x07, 0x00, + // Unicode: [0x0073, s] + 0x90, 0x6F, 0xD0, 0x96, 0x83, 0x03, 0x1C, 0x1E, 0x00, 0xE0, 0x06, 0x00, 0xB9, 0x00, 0x40, 0x8B, + 0x03, 0x38, 0x6D, 0x79, 0x90, 0x6F, 0x00, + // Unicode: [0x0074, t] + 0xB0, 0x40, 0x07, 0x74, 0xE0, 0xBF, 0x79, 0xC5, 0x02, 0x2C, 0xD0, 0x01, 0x1D, 0xE0, 0x00, 0x0E, + 0xE0, 0x05, 0xFD, 0x00, + // Unicode: [0x0075, u] + 0x2C, 0x00, 0xCE, 0x01, 0xB0, 0x1D, 0x00, 0xEB, 0x00, 0x74, 0x0E, 0x40, 0xB7, 0x00, 0x38, 0x0B, + 0xC0, 0xF2, 0x00, 0x2E, 0x6E, 0xF9, 0x41, 0xBF, 0x1D, + // Unicode: [0x0076, v] + 0x0F, 0x40, 0xE7, 0x00, 0x3C, 0x1D, 0xD0, 0xD1, 0x01, 0x0B, 0x2C, 0x78, 0x80, 0xC3, 0x02, 0x38, + 0x0E, 0x40, 0x77, 0x00, 0xF0, 0x03, 0x00, 0x1F, 0x00, + // Unicode: [0x0077, w] + 0x0B, 0xE0, 0x00, 0xED, 0x40, 0x1F, 0xB0, 0x0E, 0xE8, 0x41, 0xD3, 0xD0, 0x2D, 0x28, 0x0D, 0xCA, + 0xD2, 0xD1, 0x71, 0x28, 0x0A, 0x9C, 0x82, 0x73, 0xC0, 0x1E, 0xB4, 0x02, 0xB8, 0x40, 0x1F, 0x80, + 0x07, 0xB4, 0x00, + // Unicode: [0x0078, x] + 0xE0, 0x00, 0x0B, 0x2D, 0x38, 0x80, 0xD3, 0x01, 0xB4, 0x07, 0x00, 0x2F, 0x00, 0xF0, 0x01, 0x80, + 0x3E, 0x00, 0x8E, 0x07, 0x74, 0xB0, 0xD0, 0x01, 0x1E, + // Unicode: [0x0079, y] + 0x3C, 0x00, 0x1D, 0x0E, 0x80, 0x43, 0x07, 0x74, 0xD0, 0x02, 0x0B, 0xB0, 0xD0, 0x01, 0x38, 0x2C, + 0x00, 0x9E, 0x03, 0x40, 0x77, 0x00, 0xC0, 0x0F, 0x00, 0xF0, 0x01, 0x00, 0x2C, 0x00, 0x80, 0x07, + 0x00, 0xB0, 0x00, 0x00, 0x0E, 0x00, 0xD0, 0x02, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xF4, 0xFF, 0x54, 0xB5, 0x00, 0x38, 0x00, 0x1E, 0x80, 0x07, 0xD0, 0x02, 0xB4, 0x00, 0x3C, 0x00, + 0x5E, 0x15, 0xFF, 0x2F, + // Unicode: [0x007B, braceleft] + 0x00, 0x3E, 0xE0, 0x05, 0x2C, 0x00, 0x07, 0xD0, 0x01, 0x74, 0x00, 0x1D, 0x80, 0x03, 0xB0, 0x40, + 0x0B, 0xE0, 0x02, 0xE0, 0x01, 0x74, 0x00, 0x0E, 0xC0, 0x02, 0x70, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x01, 0xF4, 0x02, 0x50, 0x00, + // Unicode: [0x007C, bar] + 0x80, 0x03, 0x0B, 0x2C, 0x74, 0xD0, 0x81, 0x03, 0x0E, 0x2C, 0xB0, 0xD0, 0x41, 0x03, 0x0E, 0x28, + 0xB0, 0xD0, 0x41, 0x07, + // Unicode: [0x007D, braceright] + 0x80, 0x0F, 0x90, 0x0B, 0xC0, 0x02, 0x74, 0x00, 0x0D, 0x80, 0x02, 0xB0, 0x00, 0x1D, 0x40, 0x07, + 0x80, 0x0B, 0xE0, 0x02, 0x1E, 0xC0, 0x02, 0x74, 0x00, 0x1D, 0x40, 0x07, 0xE0, 0x00, 0x38, 0x40, + 0x0B, 0xBC, 0x00, 0x05, 0x00, + // Unicode: [0x007E, asciitilde] + 0xFD, 0xA5, 0xDB, 0x2F, 0x01, 0x05 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_4.cpp new file mode 100644 index 00000000..cf8399aa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_18_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x04, 0x00, 0x78, 0x2D, 0xAF, 0x74, 0x2C +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_0.cpp new file mode 100644 index 00000000..fe0794a3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_0.cpp @@ -0,0 +1,367 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_20_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xE0, 0xC1, 0x03, 0x0F, 0x2C, 0x74, 0xD0, 0x81, 0x03, 0x0E, 0x2C, 0x70, 0x00, 0x00, 0x01, 0x1F, + 0x3C, 0x00, + // Unicode: [0x0022, quotedbl] + 0x8E, 0x3A, 0xAB, 0xDC, 0x35, + // Unicode: [0x0023, numbersign] + 0x00, 0x40, 0x07, 0x78, 0x00, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x1D, 0xD0, 0x01, 0x00, 0x38, 0x80, + 0x03, 0xD0, 0xFF, 0xFF, 0xFF, 0x42, 0xEA, 0xAA, 0xAF, 0x06, 0x80, 0x03, 0x3C, 0x00, 0x40, 0x0B, + 0x74, 0x00, 0x00, 0x1E, 0xE0, 0x00, 0xA4, 0xBE, 0xEA, 0x6B, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0xC0, 0x02, 0x2C, 0x00, 0x40, 0x07, 0x78, 0x00, 0x00, 0x0F, 0xB0, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x10, 0x00, 0x00, 0x03, 0x40, 0xFF, 0x02, 0xAE, 0xBE, 0x78, 0x18, 0xCF, 0x83, 0x51, 0x3C, + 0x0C, 0xC0, 0xDB, 0x00, 0xF4, 0x1F, 0x00, 0xE4, 0x1F, 0x00, 0xD6, 0x03, 0x70, 0x78, 0x0A, 0x83, + 0xF3, 0x34, 0x2D, 0xBE, 0xBB, 0x80, 0xFF, 0x02, 0x80, 0x01, 0x00, 0x04, 0x00, + // Unicode: [0x0025, percent] + 0xD0, 0x0B, 0xB0, 0x78, 0x1D, 0x38, 0x1C, 0x28, 0x1E, 0x1D, 0x5C, 0x07, 0x1C, 0xDE, 0x02, 0xF8, + 0xE7, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x8B, 0x1F, 0x80, 0xB7, 0x39, 0xE0, 0x35, + 0x74, 0x74, 0x28, 0x34, 0x2C, 0x38, 0x2C, 0x0E, 0xE0, 0x07, + // Unicode: [0x0026, ampersand] + 0x00, 0xE4, 0x0B, 0x00, 0xD0, 0xEB, 0x02, 0x00, 0x0F, 0x3C, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x02, 0x00, 0x80, 0x7F, 0x00, 0x40, 0x1F, 0x1F, 0xB4, 0x3C, 0xD0, 0xC3, 0xD3, + 0x01, 0xF4, 0x1E, 0x1E, 0x00, 0x7E, 0xD0, 0x02, 0xE0, 0x0B, 0xBC, 0xE5, 0xF7, 0x01, 0xFE, 0x06, + 0x7D, + // Unicode: [0x0027, quotesingle] + 0xEE, 0x7A, + // Unicode: [0x0028, parenleft] + 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xD0, 0x02, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0B, 0x00, + 0x1D, 0x00, 0x38, 0x00, 0xB0, 0x00, 0xD0, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, + 0x00, 0x80, 0x03, 0x00, 0x1E, 0x00, 0x74, 0x00, 0xD0, 0x02, 0x00, 0x0F, 0x00, 0xB4, 0x00, 0x80, + 0x07, 0x00, + // Unicode: [0x0029, parenright] + 0x00, 0x1E, 0x00, 0xF0, 0x00, 0x80, 0x07, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x1D, + 0x00, 0xB4, 0x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x38, 0x00, 0xE0, 0x00, 0xC0, 0x02, + 0x40, 0x07, 0x00, 0x0F, 0x00, 0x1D, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xB4, 0x00, 0xB4, 0x00, 0xB4, + 0x00, 0x00, + // Unicode: [0x002A, asterisk] + 0x40, 0x03, 0x44, 0x12, 0xAD, 0x7A, 0xE0, 0x07, 0xF9, 0x1E, 0xCA, 0x28, 0xD0, 0x00, 0x50, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x2C, 0x00, 0x00, 0x0B, 0x00, 0xD0, 0x01, 0x00, 0x74, 0x00, 0xAA, 0xAF, 0xDA, 0xFF, 0xFF, + 0x03, 0xB0, 0x00, 0x00, 0x2D, 0x00, 0x40, 0x07, 0x00, 0xE0, 0x01, 0x00, + // Unicode: [0x002C, comma] + 0x80, 0x81, 0x07, 0x0B, 0x0D, 0x2C, 0x34, 0x00, + // Unicode: [0x002D, hyphen] + 0xA9, 0xAA, 0xF9, 0xFF, 0x07, + // Unicode: [0x002E, period] + 0x84, 0xE7, 0x01, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0x74, 0x00, 0x00, 0x38, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x00, + 0x80, 0x07, 0x00, 0xC0, 0x03, 0x00, 0xD0, 0x01, 0x00, 0xE0, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x2C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x40, 0x07, 0x00, 0x80, 0x03, 0x00, + 0xD0, 0x02, 0x00, 0xE0, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x74, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1D, + 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0xFE, 0x06, 0xF0, 0xEA, 0x03, 0x1E, 0xE0, 0xD2, 0x02, 0xB0, 0x38, 0x00, 0x2C, 0x0B, 0x00, + 0xDB, 0x01, 0xC0, 0x76, 0x00, 0xB4, 0x0E, 0x00, 0x9D, 0x03, 0x80, 0xE3, 0x00, 0xB0, 0x78, 0x00, + 0x1D, 0x2D, 0xD0, 0x02, 0xBF, 0x3E, 0x40, 0xFE, 0x02, 0x00, + // Unicode: [0x0031, one] + 0xFC, 0xA3, 0x0B, 0x2D, 0x74, 0xE0, 0x81, 0x03, 0x0F, 0x2D, 0x74, 0xE0, 0x81, 0x03, 0x0F, 0x2C, + 0xB4, 0x00, + // Unicode: [0x0032, two] + 0x00, 0xF9, 0x06, 0xD0, 0xEB, 0x0B, 0x2D, 0xC0, 0x83, 0x03, 0xE0, 0xB0, 0x00, 0x3C, 0x00, 0x00, + 0x0B, 0x00, 0xE0, 0x01, 0x00, 0x2D, 0x00, 0xD0, 0x02, 0x00, 0x2D, 0x00, 0xE0, 0x02, 0x00, 0x2E, + 0x00, 0xF4, 0x01, 0x40, 0xAF, 0xAA, 0xF1, 0xFF, 0xBF, 0x00, + // Unicode: [0x0033, three] + 0x00, 0xF9, 0x0B, 0x40, 0xAF, 0x2F, 0xD0, 0x02, 0x78, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1D, 0x00, 0xE8, 0x07, 0x00, 0xFD, 0x02, 0x00, 0x40, 0x0B, 0x00, 0x00, 0x1E, 0x04, 0x00, + 0x1D, 0x2D, 0x00, 0x0E, 0x3C, 0x40, 0x0B, 0xF8, 0xEA, 0x03, 0x90, 0x6F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7F, 0x00, 0xC0, 0x3B, 0x00, 0xE0, 0x38, 0x00, 0x78, 0x2C, 0x00, + 0x1E, 0x2D, 0x80, 0x07, 0x1D, 0xD0, 0x01, 0x1E, 0xB4, 0x00, 0x0E, 0xBD, 0xAA, 0x6F, 0xFE, 0xFF, + 0xBF, 0x00, 0x40, 0x07, 0x00, 0x80, 0x07, 0x00, 0x80, 0x03, + // Unicode: [0x0035, five] + 0xE0, 0xFF, 0x3F, 0xBC, 0xAA, 0x06, 0x0B, 0x00, 0xD0, 0x01, 0x00, 0x74, 0x00, 0x00, 0x0E, 0x19, + 0x80, 0xFB, 0x7F, 0xF0, 0x06, 0x3D, 0x28, 0x00, 0x1E, 0x00, 0x40, 0x07, 0x00, 0xE0, 0x38, 0x00, + 0x2C, 0x1E, 0x80, 0x47, 0xAF, 0x7E, 0x40, 0xFE, 0x06, 0x00, + // Unicode: [0x0036, six] + 0x00, 0xF9, 0x06, 0xE0, 0xEA, 0x07, 0x1D, 0xD0, 0xC2, 0x02, 0xA0, 0x34, 0x00, 0x00, 0x0A, 0x15, + 0xC0, 0xFA, 0x7F, 0xF4, 0x06, 0x3D, 0x2D, 0x00, 0x5E, 0x07, 0x40, 0xE7, 0x00, 0xE0, 0x35, 0x00, + 0x3C, 0x2D, 0x80, 0x07, 0xAE, 0xBE, 0x00, 0xFE, 0x06, 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xAB, 0xAA, 0x7A, 0x00, 0xC0, 0x02, 0x00, 0x1E, 0x00, 0xB4, 0x00, 0x80, 0x03, 0x00, + 0x1D, 0x00, 0xF0, 0x00, 0x80, 0x07, 0x00, 0x2C, 0x00, 0xE0, 0x01, 0x40, 0x0B, 0x00, 0x3C, 0x00, + 0xE0, 0x01, 0x00, 0x0F, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0xF8, 0x1B, 0x40, 0xAF, 0x7E, 0xC0, 0x07, 0xF4, 0xD0, 0x01, 0xE0, 0xE0, 0x01, 0xF0, 0xD0, + 0x01, 0x74, 0xC0, 0x47, 0x2E, 0x40, 0xFF, 0x0B, 0xE0, 0x56, 0x2E, 0x78, 0x00, 0x38, 0x2C, 0x00, + 0x78, 0x2D, 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0xF8, 0xEA, 0x0B, 0x90, 0xBF, 0x01, + // Unicode: [0x0039, nine] + 0x00, 0xFE, 0x06, 0xF0, 0xEA, 0x07, 0x1E, 0xD0, 0xD2, 0x01, 0xB0, 0x38, 0x00, 0x38, 0x0F, 0x00, + 0xCB, 0x03, 0xD0, 0xE2, 0x01, 0xBD, 0xF4, 0xEA, 0x1E, 0xE4, 0x5B, 0x03, 0x00, 0xA0, 0x64, 0x00, + 0x1C, 0x2D, 0x80, 0x03, 0xAF, 0x7E, 0x00, 0xFE, 0x02, 0x00, + // Unicode: [0x003A, colon] + 0xDE, 0x57, 0x00, 0x00, 0x00, 0x00, 0x84, 0xE7, 0x01, + // Unicode: [0x003B, semicolon] + 0x40, 0x07, 0x78, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x40, 0x0B, 0x38, + 0xD0, 0x01, 0x0A, 0x10, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x7D, 0x40, 0x0B, 0xE0, 0x02, 0x78, 0x00, 0x1E, 0x00, 0x7D, 0x00, 0xF4, 0x00, 0xD0, 0x03, + 0x40, 0x0B, + // Unicode: [0x003D, equal] + 0xFD, 0xFF, 0x7F, 0xAA, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xDA, 0xFF, 0xFF, + 0x07, + // Unicode: [0x003E, greater] + 0xB8, 0x00, 0xB8, 0x00, 0xB8, 0x00, 0x78, 0x00, 0x3D, 0xD0, 0x03, 0x2E, 0xE0, 0x02, 0x1F, 0x00, + // Unicode: [0x003F, question] + 0x80, 0xBF, 0x40, 0xAF, 0x2E, 0x3C, 0x80, 0xD7, 0x01, 0x74, 0x00, 0x80, 0x07, 0x00, 0x2C, 0x00, + 0xF5, 0x01, 0xFF, 0x02, 0xB0, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x7C, 0x00, + 0xC0, 0x02, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x90, 0xFE, 0x06, 0x00, 0x80, 0x5B, 0xE5, 0x07, 0x40, 0x0B, 0x00, 0xE0, 0x01, 0x2D, 0x00, + 0x00, 0x38, 0xB0, 0x80, 0x7F, 0x0B, 0x87, 0x03, 0x5F, 0x7E, 0xB0, 0x2C, 0x38, 0x80, 0x07, 0xDA, + 0xD1, 0x01, 0x38, 0xA0, 0x0D, 0x1D, 0x80, 0x03, 0xEB, 0xE0, 0x00, 0x2C, 0x74, 0x0E, 0x1D, 0xD0, + 0x82, 0xE3, 0xC0, 0x97, 0x7A, 0x1E, 0x1D, 0xE4, 0x4B, 0x6E, 0xC0, 0x02, 0x00, 0x00, 0x00, 0xB4, + 0x00, 0x00, 0x00, 0x00, 0x6D, 0x40, 0x06, 0x00, 0x40, 0xFE, 0x6F, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, + // Unicode: [0x0041, A] + 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xF4, 0x0B, 0x00, 0x78, 0x0F, 0x00, 0x2D, 0x0F, 0x00, + 0x1E, 0x1E, 0x40, 0x0B, 0x1E, 0xC0, 0x07, 0x2D, 0xD0, 0x02, 0x2D, 0xF0, 0x01, 0x3C, 0xF4, 0xFF, + 0x3F, 0x7C, 0x55, 0x79, 0x1E, 0x00, 0xB4, 0x0F, 0x00, 0xB4, + // Unicode: [0x0042, B] + 0xC0, 0xFF, 0x1B, 0xD0, 0x56, 0x7E, 0xD0, 0x01, 0xB4, 0xE0, 0x01, 0xB0, 0xE0, 0x00, 0x74, 0xF0, + 0x40, 0x2E, 0xF0, 0xFF, 0x07, 0xB4, 0x55, 0x1F, 0x78, 0x00, 0x2C, 0x38, 0x00, 0x3C, 0x3C, 0x00, + 0x2C, 0x2C, 0x00, 0x1E, 0x6D, 0xA5, 0x0B, 0xFD, 0xBF, 0x01, + // Unicode: [0x0043, C] + 0x00, 0xE4, 0x6F, 0x00, 0xF4, 0xEB, 0x2F, 0xE0, 0x06, 0xD0, 0x47, 0x0B, 0x00, 0xB4, 0x3C, 0x00, + 0x00, 0xD0, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x00, 0x1E, 0x00, 0xE0, 0xD2, 0x07, 0x80, 0x0B, 0xF4, 0xAB, 0x2F, 0x00, 0xF8, 0x2B, + 0x00, + // Unicode: [0x0044, D] + 0xC0, 0xFF, 0x1B, 0x00, 0x6D, 0xE5, 0x0F, 0xD0, 0x01, 0xE0, 0x02, 0x1E, 0x00, 0x78, 0xE0, 0x00, + 0x40, 0x0B, 0x0F, 0x00, 0xB4, 0xB0, 0x00, 0x40, 0x4B, 0x07, 0x00, 0x74, 0x78, 0x00, 0x80, 0x83, + 0x03, 0x00, 0x2D, 0x3C, 0x00, 0xF0, 0xC0, 0x02, 0xD0, 0x07, 0x6D, 0xA5, 0x1B, 0xD0, 0xFF, 0x1B, + 0x00, + // Unicode: [0x0045, E] + 0xC0, 0xFF, 0x1F, 0xB4, 0x55, 0x01, 0x1D, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x00, 0x00, 0x2C, 0x00, + 0x00, 0xFF, 0x2F, 0xD0, 0x56, 0x01, 0x78, 0x00, 0x00, 0x0E, 0x00, 0xC0, 0x03, 0x00, 0xB0, 0x00, + 0x00, 0x6D, 0x55, 0x40, 0xFF, 0x3F, 0x00, + // Unicode: [0x0046, F] + 0xC0, 0xFF, 0x2F, 0xB4, 0x55, 0x05, 0x1D, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x00, 0x00, 0x2C, 0x00, + 0x00, 0xFF, 0x2F, 0xD0, 0x56, 0x01, 0x78, 0x00, 0x00, 0x0E, 0x00, 0xC0, 0x03, 0x00, 0xB0, 0x00, + 0x00, 0x2D, 0x00, 0x40, 0x07, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xE4, 0x6F, 0x00, 0xF4, 0xEB, 0x1F, 0xE0, 0x06, 0xD0, 0x47, 0x0B, 0x00, 0xB8, 0x3C, 0x00, + 0x00, 0xD5, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0xFE, 0xFF, 0x0F, 0x50, 0x95, 0xFB, + 0x00, 0x00, 0x78, 0x1E, 0x00, 0xE0, 0xD2, 0x07, 0x80, 0x0B, 0xF4, 0xAB, 0x2F, 0x00, 0xF8, 0x2B, + 0x00, + // Unicode: [0x0048, H] + 0xC0, 0x02, 0x40, 0x0B, 0x2D, 0x00, 0x74, 0xD0, 0x01, 0x80, 0x07, 0x0E, 0x00, 0x38, 0xE0, 0x00, + 0xC0, 0x03, 0x0B, 0x00, 0x2D, 0xF0, 0xFF, 0xFF, 0x42, 0x5B, 0x55, 0x1E, 0x78, 0x00, 0xE0, 0x81, + 0x03, 0x00, 0x0E, 0x3C, 0x00, 0xF0, 0xC0, 0x02, 0x00, 0x0B, 0x2D, 0x00, 0xB4, 0xD0, 0x01, 0x40, + 0x07, + // Unicode: [0x0049, I] + 0xC0, 0x42, 0x0B, 0x1D, 0x78, 0xE0, 0xC0, 0x03, 0x0B, 0x1D, 0x78, 0xE0, 0xC0, 0x03, 0x0B, 0x2D, + 0x74, 0x00, + // Unicode: [0x004A, J] + 0x00, 0x00, 0x0F, 0x00, 0xB0, 0x00, 0x40, 0x0B, 0x00, 0x74, 0x00, 0x80, 0x07, 0x00, 0x38, 0x00, + 0xC0, 0x03, 0x00, 0x2C, 0x00, 0xD0, 0x01, 0x00, 0x1E, 0x1D, 0xE0, 0xE0, 0x41, 0x0B, 0xBD, 0x3E, + 0x40, 0xBE, 0x00, + // Unicode: [0x004B, K] + 0xC0, 0x02, 0xF0, 0x41, 0x0B, 0xF0, 0x01, 0x1D, 0xF4, 0x01, 0x78, 0xF4, 0x01, 0xE0, 0xF4, 0x00, + 0xC0, 0xF7, 0x00, 0x00, 0xBF, 0x00, 0x00, 0xFD, 0x02, 0x00, 0x78, 0x1F, 0x00, 0xE0, 0xF4, 0x01, + 0xC0, 0x43, 0x0F, 0x00, 0x0B, 0xB8, 0x00, 0x2D, 0xC0, 0x07, 0x74, 0x00, 0x3D, 0x00, + // Unicode: [0x004C, L] + 0xC0, 0x02, 0xD0, 0x02, 0xD0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xB0, 0x00, 0x74, 0x00, + 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x2C, 0x00, 0x6D, 0x15, 0xFD, 0x7F, + // Unicode: [0x004D, M] + 0xC0, 0x03, 0x00, 0xD0, 0x43, 0x1F, 0x00, 0x80, 0x0B, 0xBD, 0x00, 0x40, 0x2F, 0xF8, 0x03, 0x00, + 0x7F, 0xE0, 0x0E, 0x00, 0xEE, 0xC1, 0x76, 0x00, 0x9D, 0x03, 0xCB, 0x02, 0x28, 0x0F, 0x1D, 0x0E, + 0x74, 0x2C, 0x78, 0x78, 0xB0, 0xB4, 0xE0, 0xD0, 0xE1, 0xD0, 0xC1, 0x03, 0xDB, 0x81, 0x07, 0x0B, + 0xF8, 0x02, 0x0E, 0x2D, 0xD0, 0x07, 0x3C, 0x74, 0x40, 0x0B, 0xB0, 0x00, + // Unicode: [0x004E, N] + 0xC0, 0x03, 0x00, 0x0F, 0xBD, 0x00, 0xB0, 0xD0, 0x0F, 0x40, 0x0B, 0xEE, 0x02, 0x74, 0xE0, 0x3C, + 0x80, 0x03, 0x4F, 0x07, 0x38, 0xB0, 0xF0, 0xC0, 0x42, 0x07, 0x1D, 0x2D, 0x78, 0xC0, 0xD3, 0x81, + 0x03, 0x78, 0x1E, 0x3C, 0x00, 0xEF, 0xC0, 0x02, 0xE0, 0x0F, 0x2D, 0x00, 0xBC, 0xD0, 0x01, 0x80, + 0x0B, + // Unicode: [0x004F, O] + 0x00, 0xE8, 0x6F, 0x00, 0xF4, 0xEB, 0x1F, 0xE0, 0x06, 0xD0, 0x47, 0x0B, 0x00, 0xB4, 0x3C, 0x00, + 0x00, 0xEF, 0x01, 0x00, 0xE0, 0x0E, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x40, 0xEB, + 0x00, 0x00, 0x78, 0x2E, 0x00, 0xE0, 0xC2, 0x07, 0x80, 0x0B, 0xF4, 0xAB, 0x2F, 0x00, 0xF8, 0x6F, + 0x00, + // Unicode: [0x0050, P] + 0xC0, 0xFF, 0x1B, 0xD0, 0x56, 0x3E, 0xD0, 0x01, 0xB4, 0xE0, 0x01, 0xB4, 0xE0, 0x00, 0x74, 0xF0, + 0x00, 0x38, 0xB0, 0x40, 0x1E, 0xF4, 0xFF, 0x07, 0xB8, 0x15, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x2C, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x1D, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xE8, 0x6F, 0x00, 0xF4, 0xEB, 0x1F, 0xE0, 0x06, 0xD0, 0x47, 0x0B, 0x00, 0xB4, 0x3C, 0x00, + 0x00, 0xEF, 0x01, 0x00, 0xE0, 0x0E, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x40, 0xEB, + 0x00, 0x00, 0x78, 0x2E, 0x00, 0xE0, 0xC2, 0x07, 0x80, 0x0B, 0xF4, 0xAB, 0x2F, 0x00, 0xF8, 0xFB, + 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x80, 0x0B, 0x00, 0x00, 0x90, 0x01, + // Unicode: [0x0052, R] + 0xC0, 0xFF, 0x1B, 0xD0, 0x56, 0x3E, 0xD0, 0x01, 0xB4, 0xE0, 0x01, 0xB4, 0xE0, 0x00, 0x74, 0xF0, + 0x00, 0x3C, 0xB0, 0x40, 0x1E, 0xF4, 0xFF, 0x07, 0xB8, 0xB9, 0x00, 0x38, 0xF0, 0x00, 0x3C, 0xE0, + 0x02, 0x2C, 0xC0, 0x03, 0x2D, 0x80, 0x07, 0x1D, 0x40, 0x0B, + // Unicode: [0x0053, S] + 0x80, 0xBF, 0x41, 0xAF, 0x7E, 0x3C, 0x40, 0xCB, 0x02, 0x60, 0x3C, 0x00, 0x80, 0x1B, 0x00, 0xE0, + 0x1B, 0x00, 0xE4, 0x0B, 0x00, 0xE0, 0x02, 0x00, 0x3C, 0x0A, 0x80, 0xF3, 0x00, 0x3D, 0xBD, 0xFA, + 0x41, 0xFE, 0x02, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0x57, 0xB9, 0x15, 0x80, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x2C, 0x00, 0xD0, + 0x02, 0x00, 0x1D, 0x00, 0xE0, 0x01, 0x00, 0x0E, 0x00, 0xF0, 0x00, 0x00, 0x0B, 0x00, 0xB4, 0x00, + 0x40, 0x07, 0x00, + // Unicode: [0x0055, U] + 0xB0, 0x00, 0xD0, 0xD1, 0x02, 0x80, 0x47, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x3C, 0x3C, 0x00, 0xB0, + 0xB0, 0x00, 0xD0, 0xD1, 0x02, 0x80, 0x47, 0x07, 0x00, 0x0E, 0x1E, 0x00, 0x3C, 0x38, 0x00, 0xB4, + 0xE0, 0x01, 0xE0, 0x41, 0x0B, 0xD0, 0x02, 0xFC, 0xFA, 0x02, 0x80, 0xBF, 0x01, 0x00, + // Unicode: [0x0056, V] + 0x0F, 0x00, 0xE0, 0x39, 0x00, 0xD0, 0xE2, 0x01, 0x80, 0x43, 0x07, 0x40, 0x0B, 0x2D, 0x00, 0x0F, + 0xF0, 0x00, 0x1D, 0x80, 0x03, 0x3C, 0x00, 0x1E, 0x74, 0x00, 0x74, 0xB0, 0x00, 0xD0, 0xE2, 0x01, + 0x00, 0xCB, 0x02, 0x00, 0xB8, 0x07, 0x00, 0xE0, 0x0B, 0x00, 0x40, 0x0F, 0x00, 0x00, + // Unicode: [0x0057, W] + 0x0F, 0x00, 0x1F, 0x00, 0xDE, 0x03, 0xD0, 0x07, 0xC0, 0xF2, 0x00, 0xFC, 0x02, 0x78, 0x38, 0x40, + 0xBB, 0x00, 0x0F, 0x1E, 0xE0, 0x2C, 0xD0, 0x81, 0x07, 0x1D, 0x0B, 0x3C, 0xD0, 0x81, 0xC3, 0x43, + 0x07, 0x74, 0x74, 0xE0, 0xE0, 0x00, 0x2D, 0x0E, 0x38, 0x2C, 0x00, 0xCB, 0x02, 0x9E, 0x03, 0xC0, + 0x3A, 0x40, 0xB7, 0x00, 0xF0, 0x0B, 0xD0, 0x0E, 0x00, 0xF8, 0x00, 0xF4, 0x02, 0x00, 0x2E, 0x00, + 0x7C, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xD0, 0x02, 0xD0, 0x02, 0x0F, 0xD0, 0x02, 0x78, 0xC0, 0x03, 0xC0, 0x83, 0x07, 0x00, 0x5E, 0x07, + 0x00, 0xF4, 0x0B, 0x00, 0x80, 0x0B, 0x00, 0x00, 0x2F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x9E, 0x0B, + 0x00, 0x2D, 0x3C, 0x00, 0x2D, 0xE0, 0x01, 0x3C, 0x40, 0x0F, 0x78, 0x00, 0x78, 0x00, + // Unicode: [0x0059, Y] + 0x0F, 0x00, 0x9E, 0x07, 0xD0, 0xD2, 0x02, 0x3C, 0xF0, 0x80, 0x07, 0x78, 0xB4, 0x00, 0x2D, 0x0F, + 0x00, 0xEF, 0x01, 0x80, 0x2F, 0x00, 0xD0, 0x03, 0x00, 0xB4, 0x00, 0x00, 0x1D, 0x00, 0x80, 0x07, + 0x00, 0xE0, 0x00, 0x00, 0x2C, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xE0, 0xFF, 0x7F, 0x90, 0xAA, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x80, 0x07, 0x00, 0xD0, 0x02, 0x00, + 0xB4, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x07, 0x00, 0xD0, 0x02, 0x00, 0xB4, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xAE, 0xAA, 0x02, 0xFF, 0xFF, 0x03, + // Unicode: [0x005B, bracketleft] + 0x00, 0x7F, 0x40, 0x6B, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x02, 0xD0, 0x02, 0xD0, 0x01, + 0xE0, 0x00, 0xE0, 0x00, 0xB0, 0x00, 0xB0, 0x00, 0x74, 0x00, 0x74, 0x00, 0x38, 0x00, 0x3C, 0x00, + 0x2C, 0x00, 0x2D, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x6E, 0x00, 0xBF, 0x00, + // Unicode: [0x005C, backslash] + 0x1D, 0x1D, 0x2D, 0x2C, 0x2C, 0x2C, 0x3C, 0x3C, 0x38, 0x38, 0x78, 0x78, 0x74, 0x74, 0x74, 0xB4, + 0xB0, 0xB0, 0xB0, 0xF0, 0xE0, 0xE0, + // Unicode: [0x005D, bracketright] + 0x00, 0xFE, 0x00, 0xF5, 0x00, 0xB0, 0x00, 0x74, 0x00, 0x74, 0x00, 0x38, 0x00, 0x38, 0x00, 0x2C, + 0x00, 0x2C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0B, 0x40, 0x0B, 0x40, 0x07, + 0x80, 0x03, 0x80, 0x03, 0xC0, 0x02, 0xC0, 0x02, 0xE8, 0x01, 0xFD, 0x01, + // Unicode: [0x005E, asciicircum] + 0x00, 0x80, 0x01, 0x00, 0xE0, 0x03, 0x00, 0xF4, 0x03, 0x00, 0x7C, 0x07, 0x00, 0x5E, 0x0B, 0x40, + 0x0B, 0x0F, 0xC0, 0x03, 0x1E, 0xE0, 0x01, 0x1D, 0xB0, 0x00, 0x2C, 0x38, 0x00, 0x3C, 0x2D, 0x00, + 0x78, + // Unicode: [0x005F, underscore] + 0xA8, 0xAA, 0x6A, 0xFD, 0xFF, 0x7F, + // Unicode: [0x0060, grave] + 0x0B, 0x7E, 0xA0, + // Unicode: [0x0061, a] + 0x00, 0xF9, 0xC6, 0x02, 0xBE, 0x7E, 0x0B, 0x1E, 0x80, 0x1F, 0x2E, 0x00, 0x7C, 0x3C, 0x00, 0xF0, + 0xB4, 0x00, 0xC0, 0xD3, 0x02, 0x40, 0x4B, 0x0B, 0x00, 0x2E, 0x7C, 0x00, 0x7E, 0xD0, 0x9B, 0xEF, + 0x01, 0xF9, 0x86, 0x03, + // Unicode: [0x0062, b] + 0xC0, 0x03, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x74, 0x00, 0x00, 0xE0, 0xE5, 0x2F, + 0x80, 0xB7, 0xFA, 0x02, 0x7F, 0x00, 0x1F, 0x7D, 0x00, 0xB4, 0xB4, 0x00, 0xD0, 0xE2, 0x01, 0x40, + 0x8B, 0x07, 0x00, 0x1E, 0x1F, 0x00, 0x3C, 0xFC, 0x01, 0x7D, 0xB4, 0xAF, 0x7E, 0xD0, 0xE1, 0x2F, + 0x00, + // Unicode: [0x0063, c] + 0x00, 0xF9, 0x06, 0x80, 0xAB, 0x2F, 0xE0, 0x01, 0x7C, 0x78, 0x00, 0x64, 0x3C, 0x00, 0x00, 0x2D, + 0x00, 0x00, 0x2D, 0x00, 0x00, 0x2D, 0x00, 0x19, 0x7C, 0x00, 0x1F, 0xF4, 0xEA, 0x07, 0x90, 0xAF, + 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x3C, 0x00, 0xF9, + 0xC6, 0x02, 0xF8, 0xFA, 0x2D, 0xE0, 0x01, 0xF8, 0x81, 0x0B, 0x00, 0x1F, 0x3C, 0x00, 0xF0, 0xD0, + 0x02, 0x00, 0x0F, 0x2D, 0x00, 0xB4, 0xD0, 0x02, 0x80, 0x0B, 0x7C, 0x00, 0x7E, 0x40, 0x6F, 0xBE, + 0x07, 0x90, 0x6F, 0x38, 0x00, + // Unicode: [0x0065, e] + 0x00, 0xF9, 0x07, 0x80, 0xAB, 0x2F, 0xE0, 0x01, 0x78, 0x78, 0x00, 0xB4, 0x3C, 0x00, 0xB4, 0xFD, + 0xFF, 0x7F, 0x6D, 0x55, 0x15, 0x2D, 0x00, 0x14, 0x7C, 0x00, 0x1E, 0xF4, 0xEA, 0x07, 0x90, 0xBF, + 0x00, + // Unicode: [0x0066, f] + 0x40, 0x1E, 0xF4, 0x06, 0x0E, 0xC0, 0x02, 0xFE, 0x4B, 0x6E, 0x81, 0x07, 0xF0, 0x00, 0x2C, 0x40, + 0x0B, 0xD0, 0x01, 0x78, 0x00, 0x0E, 0xC0, 0x03, 0xB0, 0x00, 0x00, + // Unicode: [0x0067, g] + 0x00, 0xF9, 0xC6, 0x02, 0x6E, 0xB9, 0x0B, 0x1E, 0x80, 0x1F, 0x1E, 0x00, 0x7C, 0x3C, 0x00, 0xF0, + 0xB4, 0x00, 0xC0, 0xD3, 0x02, 0x40, 0x4B, 0x0B, 0x00, 0x2E, 0x7C, 0x00, 0x7E, 0xD0, 0xAB, 0xEB, + 0x01, 0xF9, 0x86, 0x03, 0x00, 0x00, 0x0B, 0x0A, 0x00, 0x1D, 0xB8, 0x00, 0x2D, 0xD0, 0xAF, 0x2F, + 0x00, 0xF8, 0x1B, 0x00, + // Unicode: [0x0068, h] + 0xC0, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xD0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xE0, 0xE5, 0x0B, 0xE0, + 0xAE, 0x3F, 0xF0, 0x02, 0x78, 0xF4, 0x00, 0xB4, 0xB4, 0x00, 0x74, 0x78, 0x00, 0x74, 0x38, 0x00, + 0x38, 0x3C, 0x00, 0x38, 0x2C, 0x00, 0x2C, 0x2D, 0x00, 0x2D, 0x1D, 0x00, 0x1D, + // Unicode: [0x0069, i] + 0x80, 0x43, 0x0F, 0x14, 0x00, 0xE0, 0x81, 0x03, 0x0F, 0x2C, 0x74, 0xE0, 0x81, 0x03, 0x0F, 0x2C, + 0xB4, 0xD0, 0x01, + // Unicode: [0x006A, j] + 0x00, 0xE0, 0x00, 0xF4, 0x00, 0x50, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x2C, + 0x00, 0x2D, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0B, 0x40, 0x0B, 0x40, 0x07, 0x80, 0x07, + 0x80, 0x03, 0xC0, 0x03, 0xE8, 0x01, 0xBD, 0x00, + // Unicode: [0x006B, k] + 0xC0, 0x03, 0x00, 0xB0, 0x00, 0x00, 0x2D, 0x00, 0x40, 0x07, 0x00, 0xE0, 0x01, 0x1F, 0x38, 0xF0, + 0x01, 0x4B, 0x1F, 0xD0, 0xF6, 0x01, 0xB4, 0x0F, 0x00, 0xFE, 0x00, 0x80, 0xBB, 0x00, 0xF0, 0x78, + 0x00, 0x2C, 0x7D, 0x40, 0x0B, 0x3D, 0xD0, 0x01, 0x2E, 0x00, + // Unicode: [0x006C, l] + 0xC0, 0x03, 0x0B, 0x2D, 0x74, 0xE0, 0x81, 0x03, 0x0B, 0x2D, 0x74, 0xE0, 0x81, 0x03, 0x0F, 0x2C, + 0xB4, 0xD0, 0x01, + // Unicode: [0x006D, m] + 0xE0, 0xE5, 0x0B, 0xF8, 0x0B, 0xE0, 0x5B, 0x7E, 0x5B, 0x2E, 0xF0, 0x02, 0xF8, 0x01, 0x78, 0xF0, + 0x00, 0xB4, 0x00, 0x78, 0xB4, 0x00, 0x74, 0x00, 0x78, 0x78, 0x00, 0x78, 0x00, 0x38, 0x38, 0x00, + 0x38, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x00, 0x2C, 0x2C, 0x00, 0x2C, 0x00, 0x2D, 0x2D, 0x00, 0x2D, + 0x00, 0x1D, 0x1D, 0x00, 0x1D, 0x00, 0x1E, + // Unicode: [0x006E, n] + 0xE0, 0xE5, 0x0B, 0xE0, 0x5B, 0x3E, 0xF0, 0x02, 0x78, 0xF0, 0x00, 0xB4, 0xB4, 0x00, 0x74, 0x78, + 0x00, 0x74, 0x38, 0x00, 0x38, 0x3C, 0x00, 0x3C, 0x2C, 0x00, 0x2C, 0x2D, 0x00, 0x2D, 0x1D, 0x00, + 0x1D, + // Unicode: [0x006F, o] + 0x00, 0xF9, 0x0B, 0x80, 0xAF, 0x3F, 0xE0, 0x01, 0xB8, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0xF0, 0x2D, + 0x00, 0xF0, 0x2D, 0x00, 0xB4, 0x2D, 0x00, 0x78, 0x7C, 0x00, 0x2E, 0xF4, 0xEA, 0x0B, 0x90, 0xBF, + 0x01, + // Unicode: [0x0070, p] + 0x80, 0x97, 0xBF, 0x00, 0x78, 0xAB, 0x2F, 0xC0, 0x1F, 0xC0, 0x07, 0x7D, 0x00, 0xB4, 0xD0, 0x02, + 0x40, 0x0B, 0x1E, 0x00, 0xB4, 0xE0, 0x01, 0x80, 0x07, 0x1F, 0x00, 0x3C, 0xF0, 0x07, 0xF4, 0x41, + 0xEB, 0xEA, 0x07, 0x74, 0xF8, 0x0B, 0x80, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x03, 0x00, + 0x00, 0x2C, 0x00, 0x00, 0xD0, 0x02, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x00, 0xF9, 0xC6, 0x02, 0xBE, 0x7E, 0x0B, 0x1E, 0x80, 0x1F, 0x2E, 0x00, 0x7C, 0x3C, 0x00, 0xF0, + 0xB4, 0x00, 0xC0, 0xD3, 0x02, 0x40, 0x4B, 0x0B, 0x00, 0x2E, 0x7C, 0x00, 0x7E, 0xD0, 0xAB, 0xEB, + 0x01, 0xF9, 0x86, 0x03, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x74, 0x00, 0x00, 0xE0, + 0x01, 0x00, 0x80, 0x03, + // Unicode: [0x0072, r] + 0xE0, 0xA5, 0xE0, 0xBE, 0xF0, 0x06, 0xF0, 0x00, 0xB4, 0x00, 0x78, 0x00, 0x38, 0x00, 0x3C, 0x00, + 0x2C, 0x00, 0x2D, 0x00, 0x1D, 0x00, + // Unicode: [0x0073, s] + 0x80, 0xBF, 0x00, 0x6F, 0x3E, 0x74, 0x40, 0x47, 0x07, 0x10, 0xF0, 0x02, 0x00, 0xF8, 0x06, 0x00, + 0xF8, 0x41, 0x00, 0x2D, 0x1D, 0xD0, 0xC2, 0x9B, 0x1F, 0xE0, 0x6F, 0x00, + // Unicode: [0x0074, t] + 0xE0, 0x00, 0x3C, 0x00, 0x0B, 0xF8, 0x7F, 0xB9, 0x05, 0x1E, 0x80, 0x03, 0xF0, 0x00, 0x2C, 0x40, + 0x0B, 0xD0, 0x01, 0x78, 0x00, 0xAE, 0x01, 0xBE, 0x00, + // Unicode: [0x0075, u] + 0x38, 0x00, 0x38, 0x0F, 0x00, 0xCF, 0x02, 0xC0, 0xB6, 0x00, 0xB4, 0x1D, 0x00, 0x9D, 0x07, 0x80, + 0xE7, 0x00, 0xF0, 0x3C, 0x00, 0x3D, 0x1E, 0x80, 0x4B, 0x6F, 0xFE, 0x41, 0xBE, 0x75, 0x00, + // Unicode: [0x0076, v] + 0x1E, 0x00, 0xAD, 0x07, 0xC0, 0xD3, 0x02, 0x74, 0xB0, 0x00, 0x0F, 0x3C, 0xE0, 0x01, 0x1E, 0x2C, + 0x40, 0x87, 0x07, 0xD0, 0xB6, 0x00, 0xB0, 0x0E, 0x00, 0xF8, 0x02, 0x00, 0x3E, 0x00, 0x00, + // Unicode: [0x0077, w] + 0x0E, 0xC0, 0x07, 0xB0, 0x0E, 0xD0, 0x07, 0x74, 0x1E, 0xB0, 0x07, 0x3C, 0x1D, 0x74, 0x0B, 0x1D, + 0x1D, 0x2C, 0x0B, 0x0E, 0x2C, 0x1D, 0x4B, 0x07, 0x2C, 0x0A, 0x8E, 0x03, 0x68, 0x07, 0xCE, 0x01, + 0xB8, 0x02, 0xED, 0x00, 0xF8, 0x01, 0x7D, 0x00, 0xB4, 0x00, 0x3D, 0x00, + // Unicode: [0x0078, x] + 0xE0, 0x01, 0x2C, 0xF0, 0xC0, 0x03, 0x78, 0x78, 0x00, 0x6D, 0x07, 0x00, 0xBE, 0x00, 0x40, 0x0F, + 0x00, 0xF0, 0x07, 0x00, 0xDE, 0x02, 0xE0, 0xF0, 0x00, 0x1E, 0xB4, 0xD0, 0x02, 0x3C, 0x00, + // Unicode: [0x0079, y] + 0x1E, 0x00, 0x6D, 0x0B, 0x80, 0xD3, 0x02, 0x74, 0xF0, 0x00, 0x0B, 0x38, 0xE0, 0x01, 0x1E, 0x2C, + 0x40, 0x8B, 0x03, 0xC0, 0x76, 0x00, 0xF0, 0x0E, 0x00, 0xF8, 0x01, 0x00, 0x2D, 0x00, 0x80, 0x03, + 0x00, 0xB4, 0x00, 0x00, 0x0F, 0x00, 0xE0, 0x01, 0x00, 0x2C, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xF4, 0xFF, 0x53, 0x95, 0x0B, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x2E, 0x00, 0x2D, 0x00, + 0x2D, 0x00, 0x3C, 0x00, 0xBC, 0x55, 0xF1, 0xFF, 0x07, + // Unicode: [0x007B, braceleft] + 0x00, 0xF8, 0x00, 0xAF, 0x40, 0x07, 0x80, 0x07, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0xC0, 0x03, + 0xC0, 0x02, 0xE0, 0x01, 0x7D, 0x00, 0x7D, 0x00, 0xB4, 0x00, 0xB0, 0x00, 0xB4, 0x00, 0x74, 0x00, + 0x38, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x1D, 0x00, 0xBD, 0x01, 0xF8, 0x01, + // Unicode: [0x007C, bar] + 0x40, 0x0B, 0x74, 0x80, 0x07, 0x38, 0xC0, 0x02, 0x2D, 0xD0, 0x01, 0x1E, 0xE0, 0x00, 0x0F, 0xB0, + 0x40, 0x0B, 0x74, 0x80, 0x07, 0x38, 0xC0, 0x03, 0x2C, 0xD0, 0x02, + // Unicode: [0x007D, braceright] + 0x00, 0x7D, 0x00, 0xE4, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x00, 0xC0, 0x02, 0x40, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0xE0, 0x01, 0x40, 0x1F, 0x00, 0x7D, 0x00, 0x2D, 0x00, 0x38, 0x00, + 0xF0, 0x00, 0xC0, 0x02, 0x00, 0x0B, 0x00, 0x2D, 0x00, 0x74, 0x00, 0xE0, 0x01, 0xE8, 0x02, 0xF4, + 0x02, 0x00, + // Unicode: [0x007E, asciitilde] + 0xE0, 0x07, 0x8A, 0xFB, 0x7A, 0x1D, 0xF8, 0x01 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_4.cpp new file mode 100644 index 00000000..46b0e363 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Italic_20_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_20_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x04, 0x05, 0xE5, 0xF1, 0xF5, 0x1E, 0x4B, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_0.cpp new file mode 100644 index 00000000..9e5a8563 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_0.cpp @@ -0,0 +1,198 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_10_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x37, 0x33, 0x23, 0x07, + // Unicode: [0x0022, quotedbl] + 0x90, 0x6D, 0x02, + // Unicode: [0x0023, numbersign] + 0xC0, 0x30, 0x90, 0x34, 0xFC, 0xFF, 0x60, 0x28, 0x70, 0x18, 0xFE, 0x7F, 0x34, 0x0D, 0x24, 0x09, + // Unicode: [0x0024, dollar] + 0xA0, 0xC0, 0x3E, 0x5D, 0xD1, 0x06, 0xE4, 0x02, 0x75, 0x5D, 0x87, 0x2F, 0x50, 0x00, + // Unicode: [0x0025, percent] + 0x29, 0x1C, 0x66, 0x09, 0x68, 0x03, 0x80, 0x02, 0xD0, 0x29, 0x60, 0x55, 0x24, 0x69, + // Unicode: [0x0026, ampersand] + 0xE0, 0x02, 0x24, 0x02, 0x74, 0x00, 0xDD, 0x25, 0x0A, 0x1F, 0x4A, 0x1F, 0xF8, 0x76, + // Unicode: [0x0027, quotesingle] + 0x66, + // Unicode: [0x0028, parenleft] + 0x70, 0x28, 0x0C, 0x09, 0x0A, 0x06, 0x06, 0x06, 0x09, 0x0D, 0x18, 0x70, + // Unicode: [0x0029, parenright] + 0x09, 0x28, 0x34, 0x60, 0xA0, 0x90, 0x90, 0xA0, 0x60, 0x30, 0x28, 0x0D, + // Unicode: [0x002A, asterisk] + 0x88, 0xEA, 0x22, + // Unicode: [0x002B, plus] + 0x10, 0xC0, 0x00, 0xC3, 0xFF, 0x70, 0xC0, 0x00, + // Unicode: [0x002C, comma] + 0x69, 0x02, + // Unicode: [0x002D, hyphen] + 0xFF, + // Unicode: [0x002E, period] + 0x94, + // Unicode: [0x002F, slash] + 0x80, 0x01, 0x03, 0x0D, 0x24, 0x60, 0xC0, 0x01, 0x03, 0x09, 0x28, 0x60, 0xC0, 0x40, 0x03, + // Unicode: [0x0030, zero] + 0xF4, 0xC2, 0x75, 0x0D, 0x99, 0x90, 0x09, 0xD9, 0x90, 0x5C, 0x47, 0x2F, + // Unicode: [0x0031, one] + 0x2E, 0x8A, 0xA2, 0x28, 0x8A, 0xA2, + // Unicode: [0x0032, two] + 0xF8, 0xD1, 0x34, 0x05, 0x03, 0x34, 0xC0, 0x01, 0x0A, 0x28, 0xD0, 0x7F, + // Unicode: [0x0033, three] + 0xF8, 0xD1, 0x34, 0x00, 0x03, 0x1E, 0x40, 0x53, 0x60, 0x4D, 0x87, 0x1F, + // Unicode: [0x0034, four] + 0x80, 0x07, 0x7D, 0x60, 0x47, 0x72, 0x0C, 0xE7, 0xFF, 0x00, 0x07, 0x70, + // Unicode: [0x0035, five] + 0xFF, 0x0D, 0x30, 0xC0, 0x2E, 0x87, 0x02, 0x79, 0x68, 0x2F, + // Unicode: [0x0036, six] + 0xE4, 0x82, 0x61, 0x0C, 0x90, 0x2E, 0x1D, 0xCA, 0x90, 0x1C, 0x4A, 0x2F, + // Unicode: [0x0037, seven] + 0xFE, 0x07, 0x30, 0x40, 0x02, 0x1C, 0x90, 0x00, 0x06, 0x30, 0x80, 0x02, + // Unicode: [0x0038, eight] + 0xF4, 0xC2, 0xA1, 0x0C, 0x86, 0x3F, 0x0D, 0x9A, 0x90, 0x1D, 0x4A, 0x2F, + // Unicode: [0x0039, nine] + 0xF4, 0xC2, 0x61, 0x0D, 0xC9, 0xA1, 0xF4, 0x0A, 0x90, 0x1C, 0x46, 0x2F, + // Unicode: [0x003A, colon] + 0x49, 0x00, 0x94, + // Unicode: [0x003B, semicolon] + 0x4C, 0x00, 0xC0, 0x69, + // Unicode: [0x003C, less] + 0x60, 0x1C, 0x0A, 0x1D, 0x74, + // Unicode: [0x003D, equal] + 0xFE, 0x07, 0x00, 0xFE, 0x07, + // Unicode: [0x003E, greater] + 0x09, 0x28, 0xA0, 0x34, 0x0D, + // Unicode: [0x003F, question] + 0xB8, 0x25, 0x09, 0x24, 0x6D, 0x14, 0x50, 0x80, 0x02, + // Unicode: [0x0040, at] + 0x40, 0xBE, 0x00, 0x0A, 0x34, 0x64, 0x6E, 0xC6, 0x1C, 0x97, 0xD9, 0x30, 0x95, 0x4D, 0x23, 0x8C, + 0xEA, 0x81, 0x02, 0x00, 0xA0, 0x1B, 0x00, + // Unicode: [0x0041, A] + 0xD0, 0x01, 0xA8, 0x00, 0x33, 0x90, 0x18, 0xF8, 0x0B, 0x03, 0x93, 0x80, 0x01, + // Unicode: [0x0042, B] + 0xFD, 0xD2, 0xA0, 0x0D, 0xD6, 0x3F, 0x0D, 0xDA, 0xA0, 0xFD, 0x06, + // Unicode: [0x0043, C] + 0xE0, 0x0B, 0x0B, 0x9A, 0x00, 0x28, 0x00, 0x09, 0x00, 0x4B, 0x0A, 0xBE, 0x00, + // Unicode: [0x0044, D] + 0xFD, 0x46, 0x43, 0xD3, 0x80, 0x36, 0x90, 0x0D, 0x68, 0x43, 0xD3, 0x6F, 0x00, + // Unicode: [0x0045, E] + 0xFD, 0x36, 0xD0, 0x40, 0x7F, 0x0D, 0x34, 0xD0, 0x2F, + // Unicode: [0x0046, F] + 0xFD, 0x37, 0xD0, 0x40, 0x7F, 0x0D, 0x34, 0xD0, 0x00, + // Unicode: [0x0047, G] + 0xE0, 0x0B, 0x6C, 0x29, 0x09, 0x00, 0x4A, 0x7F, 0x09, 0x70, 0x2C, 0x29, 0xE0, 0x0B, + // Unicode: [0x0048, H] + 0x0D, 0x5C, 0x03, 0xD7, 0xC0, 0xF5, 0x7F, 0x0D, 0x5C, 0x03, 0xD7, 0xC0, 0x01, + // Unicode: [0x0049, I] + 0xDD, 0xDD, 0xDD, 0x0D, + // Unicode: [0x004A, J] + 0x80, 0x02, 0x0A, 0x28, 0xA0, 0x80, 0x26, 0x86, 0x0B, + // Unicode: [0x004B, K] + 0x0D, 0xDA, 0x28, 0xAD, 0xD0, 0x07, 0xAD, 0xD0, 0x28, 0x0D, 0x0A, + // Unicode: [0x004C, L] + 0x0D, 0x34, 0xD0, 0x40, 0x03, 0x0D, 0x34, 0xD0, 0x1F, + // Unicode: [0x004D, M] + 0x1D, 0xD0, 0x2D, 0xE0, 0x3D, 0xF4, 0xAD, 0xD8, 0xCD, 0xCD, 0x8D, 0xC7, 0x4D, 0xC3, + // Unicode: [0x004E, N] + 0x1D, 0x58, 0x0F, 0xD6, 0x8A, 0x35, 0x67, 0x4D, 0x5A, 0x83, 0xD7, 0xC0, 0x01, + // Unicode: [0x004F, O] + 0xE0, 0x0B, 0x2C, 0x28, 0x09, 0x70, 0x0A, 0x60, 0x09, 0x70, 0x2C, 0x28, 0xE0, 0x0B, + // Unicode: [0x0050, P] + 0xFD, 0xD2, 0xA0, 0x0D, 0xD6, 0x2F, 0x0D, 0xD0, 0x00, 0x0D, 0x00, + // Unicode: [0x0051, Q] + 0xE0, 0x0B, 0x2C, 0x28, 0x09, 0x70, 0x0A, 0x60, 0x09, 0x70, 0x2C, 0x28, 0xE0, 0x0F, 0x00, 0x28, + 0x00, 0x50, + // Unicode: [0x0052, R] + 0xFD, 0xD2, 0xA0, 0x0D, 0xD6, 0x2F, 0xCD, 0xD1, 0x34, 0x0D, 0x07, + // Unicode: [0x0053, S] + 0xF8, 0xD2, 0x74, 0x1D, 0x40, 0x1E, 0x00, 0xD7, 0x70, 0xF8, 0x02, + // Unicode: [0x0054, T] + 0xFE, 0x07, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, + // Unicode: [0x0055, U] + 0x0D, 0x5C, 0x03, 0xD7, 0xC0, 0x35, 0x70, 0x0D, 0x0C, 0x47, 0x43, 0x6F, 0x00, + // Unicode: [0x0056, V] + 0x0A, 0x68, 0x03, 0xC7, 0x91, 0xA0, 0x18, 0x30, 0x03, 0xA8, 0x00, 0x1D, 0x00, + // Unicode: [0x0057, W] + 0x0A, 0x0A, 0x9A, 0xF0, 0x60, 0x4C, 0x1A, 0xC3, 0x99, 0x26, 0xA8, 0xA4, 0x41, 0x0F, 0x1F, 0xB0, + 0xE0, 0x00, + // Unicode: [0x0058, X] + 0x0D, 0x89, 0x72, 0xB0, 0x02, 0x0D, 0xF0, 0x82, 0x72, 0x0D, 0x09, + // Unicode: [0x0059, Y] + 0x0A, 0xCA, 0x30, 0xA8, 0x02, 0x0F, 0xA0, 0x00, 0x0A, 0xA0, 0x00, + // Unicode: [0x005A, Z] + 0xFE, 0x03, 0x0A, 0x0D, 0x18, 0x28, 0x74, 0xD0, 0x3F, + // Unicode: [0x005B, bracketleft] + 0xAE, 0xA2, 0x28, 0x8A, 0xA2, 0x28, 0x8A, 0xA2, 0xB8, + // Unicode: [0x005C, backslash] + 0x0D, 0x30, 0x80, 0x01, 0x09, 0x34, 0xC0, 0x00, 0x06, 0x24, 0xD0, 0x00, 0x03, 0x18, 0x90, + // Unicode: [0x005D, bracketright] + 0x1E, 0x86, 0x61, 0x18, 0x86, 0x61, 0x18, 0x86, 0x79, + // Unicode: [0x005E, asciicircum] + 0x50, 0x00, 0x1E, 0xB0, 0x82, 0x32, 0x1C, 0x9A, 0xD0, + // Unicode: [0x005F, underscore] + 0xFE, 0x0B, + // Unicode: [0x0060, grave] + 0x81, 0x42, 0x01, + // Unicode: [0x0061, a] + 0xF4, 0xDD, 0xE1, 0x0A, 0xAD, 0xD0, 0x1D, 0x4E, 0xEF, + // Unicode: [0x0062, b] + 0x0D, 0x40, 0x03, 0xD0, 0x7E, 0xB4, 0x34, 0x0D, 0x5C, 0x03, 0xD7, 0xD2, 0xB4, 0x1F, + // Unicode: [0x0063, c] + 0xF4, 0xD2, 0x61, 0x0A, 0xA0, 0x00, 0x1D, 0x47, 0x2F, + // Unicode: [0x0064, d] + 0x00, 0x0C, 0xC0, 0xF4, 0xDD, 0xE1, 0x0A, 0xAD, 0xD0, 0x1D, 0x4E, 0xEF, + // Unicode: [0x0065, e] + 0xF4, 0x92, 0xA0, 0xFE, 0xAB, 0x00, 0x1D, 0x47, 0x2F, + // Unicode: [0x0066, f] + 0x38, 0xE7, 0x33, 0x0C, 0xC3, 0x30, + // Unicode: [0x0067, g] + 0xF4, 0xDE, 0xE1, 0x0A, 0xAD, 0xD0, 0x1D, 0x4E, 0xDF, 0x00, 0xCD, 0xA1, 0xF4, 0x02, + // Unicode: [0x0068, h] + 0x0D, 0xD0, 0x00, 0xED, 0xD2, 0xA1, 0x0D, 0xD9, 0x90, 0x0D, 0xD9, 0x90, + // Unicode: [0x0069, i] + 0x4D, 0xDD, 0xDD, 0xDD, + // Unicode: [0x006A, j] + 0x34, 0x44, 0xD3, 0x34, 0x4D, 0xD3, 0x34, 0xDD, 0x01, + // Unicode: [0x006B, k] + 0x0D, 0x34, 0xD0, 0x74, 0x77, 0x7D, 0xF4, 0xD1, 0x5D, 0xD3, + // Unicode: [0x006C, l] + 0xDD, 0xDD, 0xDD, 0xDD, + // Unicode: [0x006D, m] + 0xED, 0xE6, 0xD2, 0xE1, 0xA1, 0x0D, 0x09, 0xD9, 0x90, 0x90, 0x0D, 0x09, 0xD9, 0x90, 0x90, + // Unicode: [0x006E, n] + 0xED, 0xD2, 0xA1, 0x0D, 0xD9, 0x90, 0x0D, 0xD9, 0x90, + // Unicode: [0x006F, o] + 0xF4, 0xD2, 0xA1, 0x0A, 0xAD, 0xD0, 0x1D, 0x4A, 0x2F, + // Unicode: [0x0070, p] + 0xED, 0x47, 0x4B, 0xD3, 0xC0, 0x35, 0x70, 0x2D, 0x4D, 0xFB, 0xD1, 0x00, 0x34, 0x00, 0x0D, 0x00, + // Unicode: [0x0071, q] + 0xF4, 0xDD, 0xE1, 0x0A, 0xAD, 0xD0, 0x1D, 0x4E, 0xDF, 0x00, 0x0C, 0xC0, 0x00, 0x0C, + // Unicode: [0x0072, r] + 0xAD, 0x2D, 0x0D, 0x0D, 0x0D, 0x0D, + // Unicode: [0x0073, s] + 0xB8, 0x25, 0xDA, 0x06, 0xB4, 0x49, 0xE2, 0x07, + // Unicode: [0x0074, t] + 0x0C, 0x7E, 0x0C, 0x0C, 0x0C, 0x1C, 0x78, + // Unicode: [0x0075, u] + 0x09, 0x99, 0x90, 0x09, 0xD9, 0x90, 0x1C, 0x4A, 0xAF, + // Unicode: [0x0076, v] + 0x06, 0x96, 0x30, 0x4C, 0x82, 0x19, 0xE4, 0x00, 0x0B, + // Unicode: [0x0077, w] + 0x86, 0xC3, 0x89, 0x93, 0xCD, 0x66, 0x9C, 0x29, 0x78, 0x3C, 0x34, 0x2C, + // Unicode: [0x0078, x] + 0x8A, 0x72, 0x43, 0x07, 0x1D, 0xDC, 0x28, 0x0A, + // Unicode: [0x0079, y] + 0x0A, 0xDA, 0x30, 0x5C, 0x82, 0x1A, 0xF4, 0x00, 0x0B, 0x70, 0x40, 0x03, 0x28, 0x00, + // Unicode: [0x007A, z] + 0xFE, 0x41, 0x03, 0x07, 0x0A, 0x0D, 0xF8, 0x07, + // Unicode: [0x007B, braceleft] + 0x74, 0x1C, 0x1C, 0x18, 0x18, 0x0D, 0x0E, 0x18, 0x18, 0x1C, 0x1C, 0x78, + // Unicode: [0x007C, bar] + 0x72, 0x77, 0x77, 0x77, 0x77, + // Unicode: [0x007D, braceright] + 0x4B, 0xC3, 0x30, 0x0D, 0x8B, 0x32, 0x0C, 0xC3, 0x2C, + // Unicode: [0x007E, asciitilde] + 0x28, 0x96, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_4.cpp new file mode 100644 index 00000000..fb8a342f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_10_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_10_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x44, 0x94, 0x99 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_0.cpp new file mode 100644 index 00000000..c64acd29 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_0.cpp @@ -0,0 +1,309 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x7D, 0xDF, 0xB3, 0x2C, 0xCB, 0xB2, 0x18, 0xD5, 0xB3, + // Unicode: [0x0022, quotedbl] + 0x59, 0x76, 0xDE, 0x79, 0xD7, + // Unicode: [0x0023, numbersign] + 0x00, 0x78, 0xC0, 0x02, 0x00, 0x0F, 0xB4, 0x00, 0xC0, 0x03, 0x1E, 0xD0, 0xFF, 0xFF, 0xBF, 0xA4, + 0xBF, 0xFA, 0x1A, 0x80, 0x07, 0x2D, 0x00, 0xF0, 0x40, 0x07, 0x00, 0x2D, 0xE0, 0x01, 0xFD, 0xFF, + 0xFF, 0x4B, 0xFA, 0xEB, 0xAF, 0x01, 0x38, 0xD0, 0x02, 0x00, 0x0F, 0x78, 0x00, 0xD0, 0x02, 0x1E, + 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x02, 0x00, 0x0C, 0x40, 0xFE, 0x42, 0xEF, 0x3F, 0x1E, 0xE3, 0x7D, 0x0C, 0xE1, 0x36, 0x40, + 0xFF, 0x01, 0xE0, 0xBF, 0x00, 0xDC, 0x07, 0x30, 0xAD, 0xC7, 0xB4, 0x7E, 0xF7, 0xE1, 0xFF, 0x02, + 0x79, 0x01, 0xC0, 0x00, + // Unicode: [0x0025, percent] + 0xE4, 0x06, 0x78, 0xC0, 0xE6, 0xD0, 0x02, 0x1D, 0x1D, 0x1E, 0xC0, 0xE2, 0xB4, 0x00, 0xF4, 0xC7, + 0x03, 0x00, 0x00, 0x1E, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x80, 0x87, 0x1F, 0x00, 0x2D, 0x9E, 0x07, + 0xF0, 0xB0, 0x70, 0x80, 0x07, 0x4E, 0x07, 0x2D, 0x80, 0x1F, + // Unicode: [0x0026, ampersand] + 0x40, 0xBE, 0x01, 0x00, 0xBC, 0x3E, 0x00, 0xD0, 0x82, 0x06, 0x00, 0x3C, 0x00, 0x00, 0x80, 0x0B, + 0x00, 0x00, 0xEF, 0x03, 0x1A, 0x7C, 0xF4, 0xF5, 0xD0, 0x02, 0xFD, 0x07, 0x2D, 0x40, 0x3F, 0xC0, + 0x07, 0xF8, 0x07, 0xF8, 0xFB, 0xF7, 0x01, 0xF9, 0x0B, 0x7D, + // Unicode: [0x0027, quotesingle] + 0x59, 0xD7, 0x75, + // Unicode: [0x0028, parenleft] + 0x40, 0x0F, 0x7C, 0xE0, 0x41, 0x0B, 0x78, 0xC0, 0x03, 0x2D, 0xE0, 0x01, 0x1E, 0xE0, 0x01, 0x1E, + 0xE0, 0x01, 0x1E, 0xD0, 0x02, 0x3C, 0xC0, 0x07, 0xB4, 0x00, 0x1F, 0xD0, 0x03, 0xB8, + // Unicode: [0x0029, parenright] + 0x3D, 0x00, 0x3D, 0x00, 0x2E, 0x00, 0x0F, 0x80, 0x0B, 0xC0, 0x03, 0xF0, 0x01, 0x78, 0x00, 0x2D, + 0x40, 0x0B, 0xD0, 0x02, 0xB4, 0x00, 0x1E, 0x80, 0x07, 0xF0, 0x00, 0x2D, 0xC0, 0x07, 0xB4, 0x40, + 0x1F, 0xF0, 0x01, + // Unicode: [0x002A, asterisk] + 0xD0, 0x41, 0x32, 0xD6, 0xEE, 0xD1, 0x1F, 0xEE, 0x6E, 0x71, 0x05, 0x19, 0x00, + // Unicode: [0x002B, plus] + 0x80, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x80, 0xFA, 0xAA, 0xFF, 0xFF, 0x03, 0x1E, 0x00, 0x78, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, + // Unicode: [0x002C, comma] + 0x78, 0x3C, 0x2D, 0x0E, 0x0A, + // Unicode: [0x002D, hyphen] + 0xA9, 0xAA, 0xFD, 0xFF, + // Unicode: [0x002E, period] + 0xC9, 0xE7, 0x01, + // Unicode: [0x002F, slash] + 0x00, 0x3C, 0x40, 0x0B, 0xE0, 0x01, 0x3C, 0x00, 0x0F, 0xD0, 0x02, 0x78, 0x00, 0x1F, 0xC0, 0x03, + 0xB4, 0x00, 0x1E, 0xC0, 0x07, 0xF0, 0x00, 0x2D, 0x80, 0x07, 0xE0, 0x01, 0x3C, 0x40, 0x0B, 0xE0, + 0x01, 0x78, 0x00, + // Unicode: [0x0030, zero] + 0xD0, 0x6F, 0x80, 0xFF, 0x1F, 0x7D, 0xE0, 0xE2, 0x01, 0x3C, 0x1E, 0x80, 0xF7, 0x00, 0x78, 0x0F, + 0x80, 0xF7, 0x00, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x3C, 0x7D, 0xE0, 0x82, 0xFF, 0x1F, 0xD0, 0x6F, + 0x00, + // Unicode: [0x0031, one] + 0xFD, 0xF2, 0x0B, 0x2E, 0xB8, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, + 0x02, + // Unicode: [0x0032, two] + 0xE4, 0x1B, 0xF4, 0xFB, 0xE2, 0x41, 0xCF, 0x03, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x80, 0x0B, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0B, 0xC0, 0xAF, 0x6A, 0xFF, 0xFF, 0x02, + // Unicode: [0x0033, three] + 0xE4, 0x2F, 0xF4, 0xFB, 0xE2, 0x02, 0x5F, 0x01, 0x78, 0x00, 0xF0, 0x00, 0xFA, 0x01, 0xFC, 0x06, + 0x00, 0x3D, 0x00, 0xD0, 0x29, 0x40, 0xFB, 0x01, 0x5E, 0xBF, 0x3F, 0xE4, 0x2F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0xD0, 0x07, 0x00, 0xFD, 0x01, 0xC0, 0x7B, 0x00, 0x78, 0x1E, 0x40, 0x8B, 0x07, 0xF0, 0xE0, + 0x01, 0x1E, 0x78, 0xD0, 0x02, 0x1E, 0xBC, 0xEA, 0x6F, 0xFF, 0xFF, 0x0F, 0x00, 0x78, 0x00, 0x00, + 0x1E, 0x00, 0x80, 0x07, + // Unicode: [0x0035, five] + 0xFD, 0xFF, 0xD2, 0xAB, 0x1A, 0x2D, 0x00, 0xD0, 0x02, 0x00, 0xAD, 0x6F, 0xD0, 0xAF, 0x2F, 0x7D, + 0xD0, 0x43, 0x01, 0x78, 0x00, 0x80, 0x97, 0x01, 0x78, 0x3D, 0xD0, 0x83, 0xAF, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x0036, six] + 0x90, 0x6F, 0x40, 0xAF, 0x1F, 0x7C, 0xD0, 0xD2, 0x01, 0x00, 0x5E, 0x6A, 0xE0, 0xFE, 0x1F, 0x7E, + 0xE0, 0xE3, 0x02, 0x78, 0x1E, 0x80, 0xD7, 0x01, 0x78, 0x3C, 0xD0, 0x43, 0xAF, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x0037, seven] + 0xFD, 0xFF, 0x97, 0xAA, 0x7E, 0x00, 0xC0, 0x03, 0x00, 0x2D, 0x00, 0xF0, 0x00, 0x40, 0x0B, 0x00, + 0x78, 0x00, 0xD0, 0x02, 0x00, 0x1E, 0x00, 0xF0, 0x00, 0x80, 0x07, 0x00, 0x3C, 0x00, 0xD0, 0x02, + 0x00, + // Unicode: [0x0038, eight] + 0xE0, 0x6F, 0xC0, 0xAF, 0x1F, 0x2D, 0xD0, 0xE3, 0x01, 0x3C, 0x7C, 0xE0, 0x42, 0xFF, 0x0B, 0xBC, + 0xFA, 0xE1, 0x02, 0x3C, 0x0F, 0x80, 0xF7, 0x01, 0x78, 0x2E, 0xD0, 0xC3, 0xAF, 0x1F, 0xE0, 0x6F, + 0x00, + // Unicode: [0x0039, nine] + 0xE0, 0x6F, 0x80, 0xAF, 0x0F, 0x3D, 0xD0, 0xE2, 0x01, 0x3C, 0x1E, 0x80, 0xD3, 0x03, 0x7D, 0xF8, + 0xFA, 0x07, 0xFE, 0x7A, 0x00, 0x80, 0x83, 0x01, 0x38, 0x7C, 0xD0, 0x42, 0xAF, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x003A, colon] + 0xDE, 0x97, 0x00, 0x00, 0x00, 0x24, 0x9F, 0x07, + // Unicode: [0x003B, semicolon] + 0xB4, 0xB8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x78, 0x38, 0x2C, 0x0D, + // Unicode: [0x003C, less] + 0x80, 0x0B, 0x2E, 0xB8, 0xE0, 0x02, 0x2E, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + // Unicode: [0x003D, equal] + 0xAA, 0xAA, 0xEA, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xEA, 0xFF, 0xBF, + // Unicode: [0x003E, greater] + 0x7D, 0x00, 0x7D, 0x00, 0x7D, 0x00, 0x7D, 0x40, 0x1F, 0xF4, 0x41, 0x1F, 0xF4, 0x01, + // Unicode: [0x003F, question] + 0xE0, 0x6F, 0xE0, 0xFB, 0xD7, 0x03, 0x2D, 0x01, 0xB4, 0x00, 0xF5, 0x41, 0xFF, 0x02, 0x6D, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x2E, 0x00, 0xB4, 0x00, + // Unicode: [0x0040, at] + 0x00, 0xE4, 0xFF, 0x02, 0x00, 0xBE, 0x95, 0x1F, 0x80, 0x07, 0x00, 0x78, 0xE0, 0x01, 0x00, 0xB0, + 0x78, 0xE0, 0xEB, 0xE1, 0x2C, 0xB8, 0xFE, 0xE1, 0x1D, 0x2E, 0xF0, 0xE0, 0x0E, 0x0F, 0xF0, 0xE0, + 0x0E, 0x0B, 0xB0, 0xA0, 0x0E, 0x0F, 0xB8, 0x74, 0x0E, 0x6E, 0xFE, 0x2D, 0x1D, 0xF8, 0xD2, 0x0B, + 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x15, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x54, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xBC, 0x00, 0x00, 0xFD, 0x00, 0x00, 0xFF, 0x01, 0x40, 0xDF, 0x02, 0x80, 0xCB, 0x03, 0xC0, + 0x83, 0x0B, 0xD0, 0x42, 0x0F, 0xE0, 0x01, 0x1F, 0xF0, 0xFF, 0x2F, 0xF4, 0xAA, 0x3E, 0x78, 0x00, + 0x78, 0x3D, 0x00, 0xB4, + // Unicode: [0x0042, B] + 0xFE, 0x6F, 0xE0, 0xAA, 0x2F, 0x1E, 0xD0, 0xE3, 0x01, 0x3C, 0x1E, 0xE0, 0xE2, 0xFF, 0x0B, 0xAE, + 0xFA, 0xE1, 0x01, 0x3C, 0x1E, 0x80, 0xE7, 0x01, 0x7C, 0xAE, 0xFA, 0xE2, 0xFF, 0x0B, + // Unicode: [0x0043, C] + 0x00, 0xF9, 0x0A, 0x40, 0xFF, 0xFF, 0x41, 0x2F, 0x80, 0x1F, 0x2E, 0x00, 0x64, 0x3C, 0x00, 0x00, + 0xB4, 0x00, 0x00, 0xD0, 0x02, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xB8, 0x00, 0x90, 0xD1, 0x0B, 0xE0, + 0x07, 0xFD, 0xFA, 0x07, 0x40, 0xBE, 0x02, + // Unicode: [0x0044, D] + 0xFE, 0x6F, 0x80, 0xAB, 0xFE, 0xE1, 0x01, 0xF8, 0x78, 0x00, 0xB8, 0x1E, 0x00, 0xBD, 0x07, 0x00, + 0xEF, 0x01, 0xC0, 0x7B, 0x00, 0xF4, 0x1E, 0x00, 0xAE, 0x07, 0xE0, 0xE3, 0xAA, 0x7F, 0xF8, 0xBF, + 0x01, + // Unicode: [0x0045, E] + 0xFE, 0x7F, 0xAE, 0x6A, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFE, 0x2F, 0xAE, 0x1A, 0x1E, 0x00, + 0x1E, 0x00, 0x1E, 0x00, 0xAE, 0x6A, 0xFE, 0x7F, + // Unicode: [0x0046, F] + 0xFE, 0xBF, 0xAE, 0x6A, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFE, 0x2F, 0xAE, 0x1A, 0x1E, 0x00, + 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xF9, 0x0B, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x02, 0xF8, 0x81, 0x0B, 0x00, 0x15, 0x3C, 0x00, + 0x00, 0xD0, 0x02, 0xFE, 0x7F, 0x2D, 0x90, 0xEA, 0xC7, 0x03, 0x00, 0x3D, 0xB8, 0x00, 0xE0, 0x42, + 0x2F, 0x80, 0x0F, 0xD0, 0xFF, 0x7F, 0x00, 0x90, 0x6F, 0x00, + // Unicode: [0x0048, H] + 0x1E, 0x00, 0x9E, 0x07, 0x80, 0xE7, 0x01, 0xE0, 0x79, 0x00, 0x78, 0x1E, 0x00, 0x9E, 0xFF, 0xFF, + 0xE7, 0xAA, 0xFA, 0x79, 0x00, 0x78, 0x1E, 0x00, 0x9E, 0x07, 0x80, 0xE7, 0x01, 0xE0, 0x79, 0x00, + 0x78, + // Unicode: [0x0049, I] + 0x9E, 0xE7, 0x79, 0x9E, 0xE7, 0x79, 0x9E, 0xE7, 0x79, + // Unicode: [0x004A, J] + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, + 0x06, 0x3C, 0x1F, 0x3D, 0xFE, 0x2F, 0xF4, 0x07, + // Unicode: [0x004B, K] + 0x1E, 0xD0, 0xE7, 0x01, 0x1F, 0x1E, 0xBC, 0xE0, 0xE1, 0x02, 0x9E, 0x0B, 0xE0, 0x2F, 0x00, 0xFE, + 0x02, 0xE0, 0xB9, 0x00, 0x1E, 0x2F, 0xE0, 0xC1, 0x0B, 0x1E, 0xF4, 0xE2, 0x01, 0x7D, + // Unicode: [0x004C, L] + 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x78, 0x00, 0x1E, 0x80, 0x07, 0xE0, 0x01, 0x78, 0x00, 0x1E, 0x80, + 0x07, 0xE0, 0xAA, 0xF9, 0xBF, + // Unicode: [0x004D, M] + 0x2E, 0x00, 0xC0, 0xEB, 0x07, 0x00, 0xBD, 0xBE, 0x00, 0xE0, 0xEB, 0x1F, 0x40, 0xBF, 0xEE, 0x02, + 0xB8, 0xEB, 0x39, 0xD0, 0xBA, 0x5E, 0x0B, 0x9E, 0xEB, 0xF1, 0xB0, 0xB8, 0x1E, 0xAD, 0x87, 0xEB, + 0xC1, 0x2F, 0xB8, 0x1E, 0xF4, 0x81, 0xEB, 0x01, 0x0F, 0xB8, + // Unicode: [0x004E, N] + 0x2E, 0x00, 0xAD, 0x1F, 0x40, 0xEB, 0x0F, 0xD0, 0xBA, 0x0B, 0xB4, 0x9E, 0x0B, 0xAD, 0xC7, 0x47, + 0xEB, 0xD1, 0xD3, 0x7A, 0xE0, 0xB6, 0x1E, 0xE0, 0xAE, 0x07, 0xF4, 0xEB, 0x01, 0xF4, 0x7A, 0x00, + 0xB8, + // Unicode: [0x004F, O] + 0x00, 0xF9, 0x0A, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x02, 0xF4, 0x81, 0x0B, 0x00, 0x3D, 0x3C, 0x00, + 0xC0, 0xD7, 0x02, 0x00, 0x78, 0x2D, 0x00, 0x80, 0xC7, 0x03, 0x00, 0x7C, 0xB8, 0x00, 0xD0, 0x43, + 0x2F, 0x40, 0x1F, 0xD0, 0xAF, 0x7F, 0x00, 0x90, 0xAF, 0x00, + // Unicode: [0x0050, P] + 0xFE, 0x6F, 0xB8, 0xEA, 0xE7, 0x01, 0xBD, 0x07, 0xF0, 0x1E, 0xD0, 0xBB, 0xEA, 0xE7, 0xFF, 0x86, + 0x07, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xF9, 0x0A, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x02, 0xF4, 0x81, 0x0B, 0x00, 0x3D, 0x3C, 0x00, + 0xC0, 0xD7, 0x02, 0x00, 0x78, 0x2D, 0x00, 0x80, 0xC7, 0x03, 0x00, 0x7C, 0xB8, 0x00, 0xD0, 0x43, + 0x2F, 0x40, 0x1F, 0xD0, 0xAF, 0x7F, 0x00, 0x90, 0xEF, 0x07, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x00, + 0x7D, + // Unicode: [0x0052, R] + 0xFE, 0x6F, 0xB8, 0xEA, 0xE7, 0x01, 0xBD, 0x07, 0xF0, 0x1E, 0xD0, 0xBB, 0xEA, 0xE7, 0xFF, 0x86, + 0x87, 0x0B, 0x1E, 0x7D, 0x78, 0xE0, 0xE2, 0x01, 0x9F, 0x07, 0xF4, + // Unicode: [0x0053, S] + 0xE4, 0x2F, 0xF4, 0xFB, 0xE3, 0x01, 0xDF, 0x07, 0x10, 0x6E, 0x00, 0xE0, 0x6F, 0x00, 0xE9, 0x0B, + 0x00, 0xB8, 0x05, 0xD0, 0xBA, 0x80, 0xDB, 0xEF, 0x0F, 0xF9, 0x0B, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0x97, 0xFA, 0x6A, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x00, + 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0xF0, 0x00, + // Unicode: [0x0055, U] + 0x1E, 0x00, 0xEF, 0x01, 0xF0, 0x1E, 0x00, 0xEF, 0x01, 0xF0, 0x1E, 0x00, 0xEF, 0x01, 0xF0, 0x1E, + 0x00, 0xEF, 0x01, 0xF0, 0x2E, 0x00, 0xDF, 0x07, 0xB8, 0xF8, 0xFB, 0x03, 0xF9, 0x0B, + // Unicode: [0x0056, V] + 0x2D, 0x00, 0xF4, 0x3C, 0x00, 0xB8, 0x78, 0x00, 0x3C, 0xF4, 0x00, 0x2D, 0xF0, 0x01, 0x1E, 0xD0, + 0x02, 0x0F, 0xC0, 0x43, 0x0B, 0x80, 0x87, 0x07, 0x40, 0xDB, 0x02, 0x00, 0xEF, 0x01, 0x00, 0xFE, + 0x00, 0x00, 0xBC, 0x00, + // Unicode: [0x0057, W] + 0x2E, 0x40, 0x1F, 0x80, 0xD7, 0x03, 0xF8, 0x02, 0x7C, 0x7C, 0x80, 0x3F, 0xD0, 0x83, 0x07, 0xEC, + 0x03, 0x2E, 0xB4, 0xD0, 0x79, 0xE0, 0x01, 0x0F, 0x5E, 0x0B, 0x0F, 0xE0, 0xF1, 0xF0, 0xB4, 0x00, + 0x6D, 0x0B, 0x9E, 0x07, 0xC0, 0x7A, 0xD0, 0x3D, 0x00, 0xFC, 0x03, 0xFC, 0x02, 0x80, 0x2F, 0x80, + 0x1F, 0x00, 0xF4, 0x01, 0xF8, 0x00, + // Unicode: [0x0058, X] + 0x2E, 0x80, 0xCB, 0x07, 0x3D, 0xB4, 0xE0, 0x01, 0x5E, 0x0B, 0xD0, 0x3F, 0x00, 0xF8, 0x01, 0x80, + 0x1F, 0x00, 0xFD, 0x03, 0xE0, 0xB9, 0x40, 0x0B, 0x1F, 0x3C, 0xD0, 0xE3, 0x02, 0xB8, + // Unicode: [0x0059, Y] + 0x2D, 0x00, 0x1F, 0x1F, 0xD0, 0x42, 0x0B, 0x7C, 0x80, 0x47, 0x0B, 0xD0, 0xF2, 0x01, 0xE0, 0x2E, + 0x00, 0xF4, 0x03, 0x00, 0xB8, 0x00, 0x00, 0x1E, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x01, 0x00, 0x78, + 0x00, + // Unicode: [0x005A, Z] + 0xFF, 0xFF, 0xAA, 0xFE, 0x00, 0xB8, 0x00, 0x2D, 0x00, 0x1F, 0x80, 0x0B, 0xD0, 0x02, 0xF4, 0x01, + 0x78, 0x00, 0x2D, 0x00, 0xBF, 0xAA, 0xFF, 0xFF, + // Unicode: [0x005B, bracketleft] + 0xFD, 0xF5, 0xD6, 0x42, 0x0B, 0x2D, 0xB4, 0xD0, 0x42, 0x0B, 0x2D, 0xB4, 0xD0, 0x42, 0x0B, 0x2D, + 0xB4, 0xD0, 0x42, 0x0B, 0x2D, 0xB4, 0xD0, 0x5B, 0x7F, + // Unicode: [0x005C, backslash] + 0x0F, 0x00, 0x1E, 0x00, 0x2D, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xB4, 0x00, 0xF0, 0x00, + 0xE0, 0x01, 0xD0, 0x02, 0xD0, 0x02, 0xC0, 0x03, 0x80, 0x07, 0x40, 0x0B, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x2D, 0x00, 0x3C, 0x00, 0x78, + // Unicode: [0x005D, bracketright] + 0xFE, 0xF9, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF9, 0xFE, + // Unicode: [0x005E, asciicircum] + 0x00, 0x06, 0x00, 0xF8, 0x01, 0xC0, 0x2F, 0x00, 0xED, 0x07, 0xF0, 0xB5, 0x40, 0x0B, 0x0F, 0x78, + 0xE0, 0xD2, 0x03, 0x3C, 0x1E, 0x80, 0xF7, 0x00, 0xF4, + // Unicode: [0x005F, underscore] + 0xFE, 0xFF, 0x9F, 0xFF, 0xFF, 0x07, + // Unicode: [0x0060, grave] + 0x06, 0x7E, 0xE4, + // Unicode: [0x0061, a] + 0x80, 0x7F, 0x3D, 0xFC, 0xBE, 0x8F, 0x0B, 0xF4, 0xF3, 0x00, 0xF8, 0x2D, 0x00, 0x7D, 0x0B, 0x40, + 0xCF, 0x03, 0xE0, 0xE3, 0x02, 0xFD, 0xF0, 0xEB, 0x3F, 0xE0, 0x5F, 0x0F, + // Unicode: [0x0062, b] + 0x1E, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x01, 0x00, 0x78, 0xF9, 0x06, 0xEE, 0xFB, 0x87, 0x2F, 0xE0, + 0xE3, 0x02, 0xF0, 0x79, 0x00, 0x78, 0x1E, 0x00, 0x9E, 0x0B, 0xC0, 0xE7, 0x0B, 0xF8, 0xB8, 0xEF, + 0x1F, 0x5E, 0xBE, 0x01, + // Unicode: [0x0063, c] + 0x80, 0xBF, 0x00, 0xBF, 0x7F, 0xB8, 0x80, 0xCB, 0x03, 0x50, 0x3D, 0x00, 0xD0, 0x02, 0x00, 0x3C, + 0x00, 0x85, 0x0B, 0xB8, 0xF0, 0xFB, 0x07, 0xF8, 0x0B, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x3D, 0x00, 0x40, 0x0F, 0x00, 0xD0, 0x03, 0xBE, 0xF5, 0xF0, 0xFB, 0x3F, 0x2E, 0xD0, + 0xCF, 0x03, 0xE0, 0xB7, 0x00, 0xF4, 0x2D, 0x00, 0x3D, 0x0F, 0x80, 0x8F, 0x0B, 0xF4, 0xC3, 0xAF, + 0xFF, 0x80, 0xBF, 0x3D, + // Unicode: [0x0065, e] + 0x80, 0xBF, 0x00, 0xFC, 0xFE, 0x81, 0x0B, 0xF4, 0xF0, 0x00, 0x78, 0xFD, 0xFF, 0x5F, 0xAF, 0xAA, + 0xC6, 0x03, 0x00, 0xE0, 0x02, 0x3E, 0xF0, 0xFB, 0x07, 0xE0, 0x2F, 0x00, + // Unicode: [0x0066, f] + 0x40, 0x05, 0x7E, 0xF4, 0x41, 0x0B, 0xFE, 0x9B, 0x6F, 0xB4, 0x40, 0x0B, 0xB4, 0x40, 0x0B, 0xB4, + 0x40, 0x0B, 0xB4, 0x40, 0x0B, + // Unicode: [0x0067, g] + 0x80, 0xBF, 0x3D, 0xFC, 0xFA, 0x8F, 0x0B, 0xF4, 0xF3, 0x00, 0xF8, 0x2D, 0x00, 0x7D, 0x0F, 0x40, + 0xCF, 0x03, 0xE0, 0xE3, 0x02, 0xFD, 0xF0, 0xFB, 0x3E, 0xE0, 0x5B, 0x0F, 0x00, 0xD0, 0xA2, 0x01, + 0xB4, 0xF8, 0x40, 0x1F, 0xF8, 0xFE, 0x02, 0xE4, 0x1B, 0x00, + // Unicode: [0x0068, h] + 0x1E, 0x00, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0xE0, 0xF9, 0x07, 0xFE, 0xFF, 0xE2, 0x07, 0x3D, 0x2E, + 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, + 0x07, + // Unicode: [0x0069, i] + 0xC5, 0xEB, 0x01, 0x9E, 0xE7, 0x79, 0x9E, 0xE7, 0x79, 0x9E, 0x07, + // Unicode: [0x006A, j] + 0x50, 0xC0, 0x0B, 0x1E, 0x00, 0xE0, 0x81, 0x07, 0x1E, 0x78, 0xE0, 0x81, 0x07, 0x1E, 0x78, 0xE0, + 0x81, 0x07, 0x1E, 0x78, 0xE0, 0xE5, 0xE3, 0x07, + // Unicode: [0x006B, k] + 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x7D, 0x1E, 0x7D, 0x78, 0xBC, 0xE0, 0xB9, 0x80, + 0xBF, 0x00, 0xFE, 0x02, 0x78, 0x2F, 0xE0, 0xF1, 0x82, 0x47, 0x1F, 0x1E, 0xF4, 0x01, + // Unicode: [0x006C, l] + 0x9E, 0xE7, 0x79, 0x9E, 0xE7, 0x79, 0x9E, 0xE7, 0x79, 0x1E, + // Unicode: [0x006D, m] + 0x9E, 0x7F, 0xE0, 0x1F, 0xF8, 0xEB, 0xEB, 0xFA, 0xE2, 0x03, 0xFD, 0x40, 0x8F, 0x0B, 0xE0, 0x02, + 0x78, 0x1E, 0x80, 0x07, 0xE0, 0x79, 0x00, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x00, 0x9E, 0x07, 0xE0, + 0x01, 0x78, 0x1E, 0x80, 0x07, 0xE0, 0x79, 0x00, 0x1E, 0x80, 0x07, + // Unicode: [0x006E, n] + 0x9E, 0x7F, 0xE0, 0xAF, 0x2F, 0x3E, 0xD0, 0xE3, 0x02, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, + 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, + // Unicode: [0x006F, o] + 0x80, 0xBF, 0x01, 0xFC, 0xFE, 0x81, 0x0B, 0xF4, 0xF1, 0x00, 0xB8, 0x2D, 0x00, 0x6D, 0x0F, 0x40, + 0xCB, 0x03, 0xE0, 0xE2, 0x02, 0x3D, 0xF0, 0xFB, 0x07, 0xE0, 0x6F, 0x00, + // Unicode: [0x0070, p] + 0x5E, 0xBE, 0x81, 0xFB, 0xFE, 0xE1, 0x0B, 0xF8, 0xB8, 0x00, 0x7C, 0x1E, 0x00, 0x9E, 0x07, 0x80, + 0xE7, 0x02, 0xF0, 0xF9, 0x02, 0x3E, 0xEE, 0xFB, 0x87, 0x97, 0x6F, 0xE0, 0x01, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x80, 0x07, 0x00, 0xE0, 0x01, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x80, 0x7F, 0x3D, 0xFC, 0xBE, 0x8F, 0x0B, 0xF4, 0xF3, 0x00, 0xF8, 0x2D, 0x00, 0x7D, 0x0B, 0x40, + 0xCF, 0x03, 0xE0, 0xE3, 0x02, 0xFD, 0xF0, 0xFB, 0x3E, 0xE0, 0x5B, 0x0F, 0x00, 0xD0, 0x03, 0x00, + 0xF4, 0x00, 0x00, 0x3D, 0x00, 0x40, 0x0F, 0x00, 0xD0, 0x03, + // Unicode: [0x0072, r] + 0x5E, 0xE7, 0x7F, 0x7E, 0xE0, 0x02, 0x1E, 0xE0, 0x01, 0x1E, 0xE0, 0x01, 0x1E, 0xE0, 0x01, + // Unicode: [0x0073, s] + 0xE4, 0x0B, 0xBE, 0x3F, 0x1F, 0x78, 0x1F, 0x00, 0xFD, 0x06, 0x90, 0x3F, 0x00, 0xB8, 0x1F, 0xB4, + 0xBE, 0x7E, 0xE4, 0x1B, + // Unicode: [0x0074, t] + 0xB4, 0x40, 0x0B, 0xFE, 0x9F, 0xAF, 0xB4, 0x40, 0x0B, 0xB4, 0x40, 0x0B, 0xB4, 0x40, 0x0B, 0xF0, + 0x0A, 0xFD, + // Unicode: [0x0075, u] + 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, 0x80, 0xE7, 0x01, 0x78, 0x1E, + 0xC0, 0xD7, 0x03, 0x7D, 0xFC, 0xFA, 0x07, 0xFE, 0x79, + // Unicode: [0x0076, v] + 0x2E, 0x40, 0xDF, 0x03, 0xB8, 0x7C, 0xC0, 0x87, 0x0B, 0x3D, 0xF0, 0xE0, 0x01, 0x1E, 0x0F, 0xD0, + 0xB6, 0x00, 0xBC, 0x07, 0x80, 0x3F, 0x00, 0xF4, 0x02, + // Unicode: [0x0077, w] + 0x1E, 0xE0, 0x02, 0x6D, 0x0B, 0xFC, 0x80, 0xC7, 0x43, 0x7F, 0xF0, 0xE0, 0xD1, 0x1E, 0x2D, 0x74, + 0x38, 0x4B, 0x07, 0x2C, 0x8B, 0xE3, 0x00, 0xDE, 0xE1, 0x2D, 0x40, 0x3B, 0xB4, 0x07, 0xD0, 0x0F, + 0xFC, 0x00, 0xF0, 0x02, 0x2E, 0x00, + // Unicode: [0x0078, x] + 0x2E, 0xE0, 0xF1, 0xD1, 0x42, 0x8F, 0x07, 0xF8, 0x0B, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFE, 0x02, + 0x2D, 0x1F, 0x78, 0xB4, 0xB4, 0x80, 0x07, + // Unicode: [0x0079, y] + 0x2E, 0x00, 0xDF, 0x03, 0xB4, 0x7C, 0x80, 0x47, 0x0B, 0x3C, 0xF0, 0xE0, 0x01, 0x1E, 0x0F, 0xD0, + 0xB6, 0x00, 0xBC, 0x07, 0x80, 0x2F, 0x00, 0xF0, 0x01, 0x00, 0x0F, 0x00, 0xB8, 0x00, 0xC0, 0x07, + 0x00, 0x2D, 0x00, 0xE0, 0x01, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0xBF, 0xA8, 0xBE, 0x00, 0x3D, 0x00, 0x1F, 0x80, 0x0B, 0xD0, 0x03, 0xF0, 0x01, 0xB8, 0x00, + 0xBC, 0x6A, 0xFD, 0xBF, + // Unicode: [0x007B, braceleft] + 0x90, 0x0B, 0xBF, 0xB4, 0x40, 0x0B, 0xB0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF4, 0xE0, 0x07, 0x7E, + 0x40, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0B, 0xB4, 0x40, 0x0B, 0xF0, 0x0B, 0xB9, + // Unicode: [0x007C, bar] + 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + // Unicode: [0x007D, braceright] + 0x7D, 0x90, 0x1F, 0xE0, 0x02, 0x2D, 0xE0, 0x01, 0x1E, 0xE0, 0x01, 0x1E, 0xE0, 0x02, 0xF8, 0x80, + 0x0F, 0x2E, 0xE0, 0x01, 0x1E, 0xE0, 0x01, 0x1E, 0xD0, 0x02, 0x2E, 0xF9, 0xD1, 0x07, + // Unicode: [0x007E, asciitilde] + 0xE0, 0x46, 0xE3, 0xFF, 0xDB, 0x91, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_4.cpp new file mode 100644 index 00000000..3f407623 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_18_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x09, 0x46, 0xF2, 0xF5, 0xB8, 0x5E, 0x8B, 0x07 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_0.cpp new file mode 100644 index 00000000..28ce0d1d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_0.cpp @@ -0,0 +1,444 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_25_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x3D, 0x3D, 0x00, 0x28, 0xBE, 0xBE, + 0x7D, + // Unicode: [0x0022, quotedbl] + 0x5F, 0xFF, 0xF5, 0x5F, 0xFF, 0xF1, 0x0F, 0x0F, + // Unicode: [0x0023, numbersign] + 0x00, 0x80, 0x1F, 0xC0, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x2F, 0x00, 0x00, 0xFC, 0x00, 0x7D, 0x00, + 0x00, 0xF0, 0x02, 0xF4, 0x01, 0x00, 0xD0, 0x07, 0xE0, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0xA4, 0xFE, 0xAA, 0xBE, 0x2A, 0x00, 0xF0, 0x02, 0xF4, 0x01, 0x00, + 0xD0, 0x07, 0xE0, 0x03, 0x00, 0x80, 0x1F, 0xC0, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x2F, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0x2F, 0xF4, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xEA, 0xAB, 0xFA, 0xAB, 0x01, 0x80, + 0x0F, 0xC0, 0x0B, 0x00, 0x00, 0x3E, 0x00, 0x2F, 0x00, 0x00, 0xBC, 0x00, 0x7D, 0x00, 0x00, 0xF4, + 0x01, 0xF8, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x64, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x90, 0x5B, 0x00, 0xF8, 0xFF, 0x0B, 0xF8, 0xFB, 0xBF, + 0xF0, 0xD3, 0xF5, 0xD3, 0x4B, 0x87, 0x5F, 0x1F, 0x1D, 0x00, 0xFD, 0x74, 0x00, 0xF0, 0xEF, 0x01, + 0x40, 0xFF, 0x6F, 0x00, 0x90, 0xFF, 0x1B, 0x00, 0xB4, 0xFF, 0x00, 0xD0, 0xF1, 0x07, 0x40, 0x47, + 0x6F, 0x2A, 0x1D, 0xBD, 0xFD, 0x74, 0xF8, 0xF1, 0xEF, 0xFA, 0x02, 0xFE, 0xFF, 0x02, 0x90, 0xBF, + 0x01, 0x00, 0x74, 0x00, 0x00, 0xD0, 0x01, 0x00, + // Unicode: [0x0025, percent] + 0xE4, 0x0B, 0x00, 0x3E, 0xD0, 0xFB, 0x03, 0xF4, 0x01, 0x1F, 0xB8, 0xC0, 0x0B, 0xF0, 0x81, 0x0B, + 0x7E, 0x00, 0x2E, 0x7C, 0xF0, 0x02, 0xD0, 0xFF, 0x82, 0x0F, 0x00, 0xA0, 0x06, 0x7D, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x00, 0x00, 0xBC, 0x90, 0x06, 0x00, 0xE0, 0x83, + 0xFF, 0x02, 0x40, 0x2F, 0x3D, 0x7C, 0x00, 0xF8, 0xE0, 0x41, 0x0B, 0xD0, 0x07, 0x1E, 0xB4, 0x00, + 0x2F, 0xE0, 0x82, 0x0B, 0xF8, 0x01, 0xFC, 0x3F, 0xD0, 0x0B, 0x40, 0xBE, 0x01, + // Unicode: [0x0026, ampersand] + 0x00, 0xF9, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0xC0, 0x6F, 0xBE, 0x00, 0x00, 0xBD, 0xC0, + 0x0F, 0x00, 0xD0, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, + 0xFE, 0x1F, 0x00, 0x00, 0xF8, 0xF7, 0x07, 0xF8, 0xD1, 0x0B, 0xFD, 0xD1, 0x0B, 0x3F, 0x00, 0xBF, + 0x3F, 0xF0, 0x02, 0xC0, 0xFF, 0x01, 0x3F, 0x00, 0xF0, 0x0F, 0xF0, 0x0B, 0x80, 0xFF, 0x02, 0xFD, + 0x9A, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xC2, 0x2F, 0x90, 0xFF, 0x06, 0xF4, 0x0B, + // Unicode: [0x0027, quotesingle] + 0xDF, 0xF7, 0x7D, 0x0F, + // Unicode: [0x0028, parenleft] + 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x02, 0xF4, 0x03, 0xE0, 0x07, 0xD0, 0x0B, 0x80, 0x1F, 0x00, + 0x3F, 0x00, 0xBD, 0x00, 0xF4, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xF8, 0x00, 0xE0, 0x07, 0x40, 0x2F, 0x00, 0xFC, 0x00, 0xE0, + 0x07, 0x40, 0x2F, 0x00, 0xFC, 0x00, 0xD0, 0x0B, 0x00, 0x7F, 0x00, 0xF4, 0x03, 0x40, 0x3F, + // Unicode: [0x0029, parenright] + 0x7F, 0x00, 0xF4, 0x03, 0x40, 0x2F, 0x00, 0xF8, 0x01, 0xC0, 0x0F, 0x00, 0x7E, 0x00, 0xF0, 0x03, + 0x80, 0x1F, 0x00, 0x7D, 0x00, 0xF0, 0x02, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xF8, 0x00, 0xE0, 0x07, + 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, 0xE0, 0x03, 0xC0, 0x0B, 0x40, 0x2F, 0x00, 0x7E, 0x00, + 0xFC, 0x00, 0xF4, 0x02, 0xE0, 0x07, 0xD0, 0x0B, 0xC0, 0x1F, 0x80, 0x1F, 0x80, 0x2F, 0x00, + // Unicode: [0x002A, asterisk] + 0x80, 0x07, 0x04, 0x1E, 0xF1, 0x39, 0x9E, 0xEF, 0x7E, 0xE0, 0x1F, 0xE4, 0xFF, 0xF6, 0x7A, 0xAF, + 0xE2, 0x21, 0x80, 0x07, 0x00, 0x15, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0xA4, 0x01, 0x00, 0x40, 0x1F, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x40, 0x1F, 0x00, 0x00, 0xF4, + 0x01, 0x50, 0x95, 0x6F, 0x15, 0xFD, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0x7F, 0x00, 0xF4, 0x01, 0x00, + 0x40, 0x1F, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x40, 0x1F, 0x00, 0x00, 0xF4, 0x01, 0x00, + // Unicode: [0x002C, comma] + 0xF4, 0xD2, 0x87, 0x0F, 0x2F, 0x3D, 0xB4, 0xE0, 0x01, + // Unicode: [0x002D, hyphen] + 0x55, 0x55, 0x95, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x01, + // Unicode: [0x002E, period] + 0x28, 0xBE, 0xBE, 0x7D, + // Unicode: [0x002F, slash] + 0x00, 0x80, 0x0F, 0x00, 0xBC, 0x00, 0xD0, 0x0B, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x00, 0x2F, 0x00, + 0xF4, 0x02, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xC0, 0x0B, 0x00, 0xBD, 0x00, 0xD0, 0x07, 0x00, 0x3E, + 0x00, 0xF0, 0x03, 0x40, 0x2F, 0x00, 0xF4, 0x01, 0x80, 0x0F, 0x00, 0xFC, 0x00, 0xD0, 0x0B, 0x00, + 0x7D, 0x00, 0xE0, 0x03, 0x00, 0x3F, 0x00, 0xF0, 0x02, 0x40, 0x1F, 0x00, 0xF8, 0x01, 0xC0, 0x0F, + 0x00, 0xBC, 0x00, 0xD0, 0x07, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0xFE, 0x0B, 0x00, 0xFD, 0xFF, 0x07, 0xF0, 0xAF, 0xFF, 0x80, 0x2F, 0x80, 0x1F, 0xFC, 0x00, + 0xF0, 0xC3, 0x0B, 0x00, 0x3E, 0x7D, 0x00, 0xD0, 0xD7, 0x07, 0x00, 0x7D, 0x7D, 0x00, 0xD0, 0xD7, + 0x07, 0x00, 0x7D, 0x7D, 0x00, 0xD0, 0xD7, 0x07, 0x00, 0x7D, 0x7D, 0x00, 0xD0, 0xC7, 0x0B, 0x00, + 0x3E, 0xFC, 0x00, 0xF0, 0x43, 0x2F, 0x80, 0x1F, 0xF0, 0xAF, 0xFF, 0x00, 0xFD, 0xFF, 0x07, 0x00, + 0xFE, 0x0B, 0x00, + // Unicode: [0x0031, one] + 0xFF, 0xF7, 0x7F, 0xEA, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, + 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, + // Unicode: [0x0032, two] + 0x40, 0xFE, 0x02, 0x80, 0xFF, 0x7F, 0x80, 0xBF, 0xF9, 0x43, 0x2F, 0x80, 0x2F, 0x7E, 0x00, 0xBC, + 0xF8, 0x00, 0xF0, 0x03, 0x00, 0xC0, 0x0B, 0x00, 0x40, 0x2F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFD, + 0x00, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0x02, 0x00, 0xFC, 0x02, 0x00, 0xFC, 0x02, 0x00, 0xFC, 0x02, + 0x00, 0xFD, 0x02, 0x00, 0xFD, 0x57, 0x55, 0xF8, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x1F, + // Unicode: [0x0033, three] + 0x40, 0xFE, 0x06, 0x80, 0xFF, 0xBF, 0x80, 0xBF, 0xF9, 0x47, 0x3F, 0x40, 0x2F, 0x7D, 0x00, 0xF8, + 0x00, 0x00, 0xE0, 0x03, 0x00, 0xC0, 0x0B, 0x00, 0xD0, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0xF8, 0x6F, + 0x00, 0x50, 0xF9, 0x07, 0x00, 0x00, 0x2F, 0x00, 0x00, 0xF8, 0x54, 0x00, 0xD0, 0xE7, 0x07, 0x80, + 0x5F, 0x2F, 0x00, 0x3F, 0xFC, 0x9B, 0xBF, 0xC0, 0xFF, 0xBF, 0x00, 0xE4, 0x6F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0xFE, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0xC0, 0xEF, 0x03, 0x00, + 0xF8, 0xF9, 0x00, 0x40, 0x2F, 0x3E, 0x00, 0xF0, 0x82, 0x0F, 0x00, 0x7E, 0xE0, 0x03, 0xD0, 0x07, + 0xF8, 0x00, 0xBD, 0x00, 0x3E, 0xC0, 0x0F, 0x80, 0x0F, 0xF8, 0x56, 0xE5, 0x17, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x00, 0x3E, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0xFF, 0x7F, 0xF8, 0xFF, 0xFF, 0xE1, 0xAB, 0xAA, 0x82, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xE0, 0x43, 0x05, 0x80, 0xDF, 0xFF, 0x06, 0xFE, 0xFF, 0x7F, 0xF8, 0x07, 0xF9, + 0xE2, 0x07, 0x80, 0x4F, 0x05, 0x00, 0x7D, 0x00, 0x00, 0xF4, 0x01, 0x00, 0xD0, 0xF7, 0x02, 0x80, + 0x9F, 0x1F, 0x00, 0x3F, 0xFD, 0x96, 0x7F, 0xD0, 0xFF, 0xBF, 0x00, 0xE8, 0x6F, 0x00, + // Unicode: [0x0036, six] + 0x40, 0xFE, 0x02, 0x80, 0xFF, 0x7F, 0x80, 0x6F, 0xF9, 0x43, 0x2F, 0x40, 0x2F, 0x3E, 0x00, 0xB8, + 0xB8, 0x00, 0x00, 0xF0, 0x02, 0x00, 0xC0, 0x47, 0xBE, 0x01, 0xDF, 0xFF, 0x2F, 0xFC, 0x6F, 0xFE, + 0xF2, 0x0B, 0xD0, 0xCF, 0x0F, 0x00, 0x7E, 0x2F, 0x00, 0xF4, 0xB9, 0x00, 0xD0, 0xE7, 0x03, 0x40, + 0x1F, 0x2F, 0x00, 0x3F, 0xF8, 0x9A, 0xBF, 0x80, 0xFF, 0xBF, 0x00, 0xE4, 0x6F, 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0xFD, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x2F, 0x00, 0x40, 0x1F, 0x00, 0xC0, 0x0F, 0x00, 0xD0, 0x07, 0x00, 0xE0, 0x03, 0x00, 0xF4, + 0x02, 0x00, 0xF8, 0x01, 0x00, 0xBC, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x2F, 0x00, + 0x80, 0x0F, 0x00, 0xC0, 0x0B, 0x00, 0xE0, 0x07, 0x00, + // Unicode: [0x0038, eight] + 0x40, 0xFE, 0x1B, 0x00, 0xFE, 0xFF, 0x07, 0xF4, 0x5B, 0xFE, 0x81, 0x1F, 0x40, 0x2F, 0xFC, 0x00, + 0xF0, 0xC3, 0x0B, 0x00, 0x3E, 0xF8, 0x00, 0xF0, 0x42, 0x7F, 0xD0, 0x0F, 0xD0, 0xFF, 0x6F, 0x00, + 0xFD, 0xFF, 0x07, 0xF8, 0x57, 0xFD, 0xC1, 0x0B, 0x00, 0x3F, 0x7D, 0x00, 0xD0, 0xD7, 0x07, 0x00, + 0x7D, 0x7D, 0x00, 0xE0, 0xC7, 0x1F, 0x40, 0x3F, 0xF8, 0x5B, 0xFE, 0x01, 0xFE, 0xFF, 0x0B, 0x40, + 0xFE, 0x1B, 0x00, + // Unicode: [0x0039, nine] + 0x80, 0xFF, 0x02, 0xD0, 0xFF, 0x7F, 0xC0, 0x6F, 0xF9, 0x83, 0x2F, 0x40, 0x1F, 0x3F, 0x00, 0xBC, + 0xBC, 0x00, 0xE0, 0xF3, 0x02, 0x80, 0xCF, 0x0F, 0x00, 0x7E, 0x7E, 0x00, 0xFC, 0xF5, 0x07, 0xFD, + 0x87, 0xFF, 0xFF, 0x1F, 0xF8, 0xBF, 0x7D, 0x00, 0x15, 0xF4, 0x00, 0x00, 0xD0, 0x93, 0x02, 0x80, + 0x4B, 0x2F, 0x40, 0x1F, 0xF8, 0x96, 0x3F, 0xC0, 0xFF, 0x7F, 0x00, 0xE8, 0x6F, 0x00, + // Unicode: [0x003A, colon] + 0x7D, 0xBE, 0xBE, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xBE, 0xBE, 0x7D, + // Unicode: [0x003B, semicolon] + 0xB8, 0xF4, 0xC7, 0x1F, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1F, 0x3E, 0xBC, + 0xF4, 0xE1, 0x82, 0x07, 0x0F, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x50, 0x05, 0x80, 0x3F, 0x00, 0xBE, 0x00, 0xF8, 0x02, 0xE0, 0x0B, 0x80, 0x2F, 0x00, 0xFD, + 0x01, 0x40, 0x7F, 0x00, 0xD0, 0x1F, 0x00, 0xF4, 0x07, 0x00, 0xFD, 0x01, 0x40, 0x7F, + // Unicode: [0x003D, equal] + 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x50, 0x55, 0x55, 0x15, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, + // Unicode: [0x003E, greater] + 0x55, 0x00, 0xF4, 0x07, 0x40, 0x7F, 0x00, 0xF4, 0x07, 0x40, 0x7F, 0x00, 0xF4, 0x07, 0x80, 0x3F, + 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x2F, 0x00, + // Unicode: [0x003F, question] + 0x90, 0xBF, 0x01, 0xFE, 0xFF, 0xD2, 0x6F, 0xFE, 0xFA, 0x01, 0xFC, 0x2F, 0x00, 0x3E, 0x00, 0x80, + 0x0F, 0x00, 0xF0, 0x03, 0x40, 0xBE, 0xD0, 0xFF, 0x0B, 0xF4, 0x6F, 0x00, 0x7D, 0x00, 0x40, 0x1A, + 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xBE, 0x00, 0x80, 0x2F, 0x00, 0xD0, 0x07, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0xA4, 0xFF, 0x06, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x40, 0xBF, 0x01, 0x94, + 0x2F, 0x00, 0xF4, 0x02, 0x00, 0x40, 0x1F, 0x40, 0x2F, 0x00, 0x00, 0x81, 0x0F, 0xF0, 0x02, 0xFE, + 0xF7, 0xC2, 0x07, 0x2E, 0xF0, 0xFF, 0x7F, 0xE0, 0xD2, 0x07, 0x7F, 0xD0, 0x1F, 0xB4, 0xB8, 0xD0, + 0x07, 0xE0, 0x03, 0x3D, 0x1F, 0xBC, 0x00, 0xF8, 0x80, 0xCB, 0x07, 0x2F, 0x00, 0x2E, 0xE0, 0xF6, + 0xD0, 0x07, 0xC0, 0x0B, 0x7C, 0x3D, 0xF0, 0x02, 0xF8, 0x41, 0x4F, 0x0F, 0xFC, 0x96, 0xBF, 0xF4, + 0xC1, 0x07, 0xFD, 0xBF, 0xFD, 0x2F, 0xE0, 0x02, 0xF9, 0x06, 0xBE, 0x01, 0xF4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x06, 0x90, 0x02, 0x00, 0x00, 0xF8, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x06, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xF0, 0x0B, 0x00, 0x00, 0xF4, 0x0F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xBD, 0x2F, 0x00, + 0x00, 0x7E, 0x3F, 0x00, 0x00, 0x3F, 0x7D, 0x00, 0x40, 0x2F, 0xBC, 0x00, 0x80, 0x0F, 0xF8, 0x00, + 0xC0, 0x0B, 0xF4, 0x01, 0xD0, 0x07, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0xFF, 0xFF, 0x0B, + 0xF8, 0xFF, 0xFF, 0x0F, 0xFC, 0x55, 0x95, 0x1F, 0xBD, 0x00, 0x40, 0x2F, 0x7E, 0x00, 0x00, 0x3F, + 0x3F, 0x00, 0x00, 0x7E, + // Unicode: [0x0042, B] + 0xFF, 0xFF, 0x06, 0xFC, 0xFF, 0xBF, 0xF0, 0x56, 0xF9, 0xCB, 0x0B, 0x40, 0x3F, 0x2F, 0x00, 0xFC, + 0xBC, 0x00, 0xF0, 0xF3, 0x02, 0xE4, 0xC7, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x1B, 0xBC, 0x55, 0xFD, + 0xF1, 0x02, 0xC0, 0xCF, 0x0B, 0x00, 0x7D, 0x2F, 0x00, 0xF4, 0xBD, 0x00, 0xE0, 0xF7, 0x56, 0xE5, + 0xCF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0A, 0x00, + // Unicode: [0x0043, C] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFE, 0xAB, 0xFE, 0x07, 0xFD, 0x01, 0x80, + 0x3F, 0xFC, 0x01, 0x00, 0xFC, 0xFA, 0x02, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xC0, 0x0F, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x80, 0x2F, + 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0xFC, 0xD2, 0x1F, 0x00, 0xF8, 0x03, 0xFE, 0xAB, 0xFE, 0x07, + 0xD0, 0xFF, 0xFF, 0x06, 0x00, 0xE4, 0xBF, 0x01, 0x00, + // Unicode: [0x0044, D] + 0xFF, 0xFF, 0x06, 0xC0, 0xFF, 0xFF, 0x1F, 0xF0, 0x56, 0xF9, 0x1F, 0xBC, 0x00, 0xD0, 0x1F, 0x2F, + 0x00, 0xD0, 0xCF, 0x0B, 0x00, 0xE0, 0xF7, 0x02, 0x00, 0xF4, 0xBE, 0x00, 0x00, 0xBD, 0x2F, 0x00, + 0x40, 0xEF, 0x0B, 0x00, 0xD0, 0xFB, 0x02, 0x00, 0xF4, 0xBE, 0x00, 0x00, 0x7E, 0x2F, 0x00, 0xD0, + 0xCF, 0x0B, 0x00, 0xFD, 0xF1, 0x56, 0xF9, 0x1F, 0xFC, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x06, 0x00, + // Unicode: [0x0045, E] + 0xFF, 0xFF, 0xF7, 0xFF, 0x7F, 0x6F, 0x55, 0xF1, 0x02, 0x00, 0x2F, 0x00, 0xF0, 0x02, 0x00, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0xFF, 0xFF, 0xF2, 0x56, 0x15, 0x2F, 0x00, 0xF0, 0x02, 0x00, 0x2F, 0x00, + 0xF0, 0x02, 0x00, 0x6F, 0x55, 0xF1, 0xFF, 0x7F, 0xFF, 0xFF, 0x07, + // Unicode: [0x0046, F] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x55, 0xF5, 0x02, 0x00, 0x2F, 0x00, 0xF0, 0x02, 0x00, 0x2F, + 0x00, 0xF0, 0xFF, 0x1F, 0xFF, 0xFF, 0xF1, 0x56, 0x05, 0x2F, 0x00, 0xF0, 0x02, 0x00, 0x2F, 0x00, + 0xF0, 0x02, 0x00, 0x2F, 0x00, 0xF0, 0x02, 0x00, 0x2F, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0xE0, 0xBF, 0xEA, 0x7F, 0x40, 0xBF, 0x00, + 0xE0, 0x1F, 0xFC, 0x01, 0x00, 0xA8, 0xE1, 0x0B, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xF0, + 0x03, 0xF4, 0xFF, 0x7F, 0x3F, 0x40, 0xFF, 0xFF, 0xF7, 0x03, 0x50, 0x55, 0x7E, 0x7F, 0x00, 0x00, + 0xF0, 0xE3, 0x0B, 0x00, 0x40, 0x2F, 0xFC, 0x01, 0x00, 0xFC, 0x41, 0x7F, 0x00, 0xF4, 0x0B, 0xE0, + 0xBF, 0xEA, 0x2F, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xAF, 0x01, 0x00, + // Unicode: [0x0048, H] + 0x2F, 0x00, 0xC0, 0xFB, 0x02, 0x00, 0xBC, 0x2F, 0x00, 0xC0, 0xFB, 0x02, 0x00, 0xBC, 0x2F, 0x00, + 0xC0, 0xFB, 0x02, 0x00, 0xBC, 0x2F, 0x00, 0xC0, 0xFB, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, + 0x56, 0x55, 0xBD, 0x2F, 0x00, 0xC0, 0xFB, 0x02, 0x00, 0xBC, 0x2F, 0x00, 0xC0, 0xFB, 0x02, 0x00, + 0xBC, 0x2F, 0x00, 0xC0, 0xFB, 0x02, 0x00, 0xBC, 0x2F, 0x00, 0xC0, 0x0B, + // Unicode: [0x0049, I] + 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0x2F, + // Unicode: [0x004A, J] + 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x01, 0x00, 0x7E, 0x00, 0x80, 0x1F, 0x00, 0xE0, + 0x07, 0x00, 0xF8, 0x01, 0x00, 0x7E, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x01, 0x00, + 0x7E, 0x3E, 0x80, 0x9F, 0x1F, 0xF0, 0xD3, 0xAF, 0xBF, 0xE0, 0xFF, 0x0F, 0x90, 0xBF, 0x00, + // Unicode: [0x004B, K] + 0x2F, 0x00, 0xFC, 0xBE, 0x00, 0xF8, 0xF2, 0x02, 0xF8, 0xC2, 0x0B, 0xF8, 0x03, 0x2F, 0xF4, 0x03, + 0xBC, 0xF4, 0x07, 0xF0, 0xF6, 0x07, 0xC0, 0xFF, 0x07, 0x00, 0xFF, 0x0B, 0x00, 0xFC, 0x7F, 0x00, + 0xF0, 0xF6, 0x07, 0xC0, 0x4B, 0x7F, 0x00, 0x2F, 0xF8, 0x07, 0xBC, 0x80, 0x3F, 0xF0, 0x02, 0xF8, + 0xC3, 0x0B, 0x80, 0x2F, 0x2F, 0x00, 0xFC, 0x02, + // Unicode: [0x004C, L] + 0x2F, 0x00, 0xBC, 0x00, 0xF0, 0x02, 0xC0, 0x0B, 0x00, 0x2F, 0x00, 0xBC, 0x00, 0xF0, 0x02, 0xC0, + 0x0B, 0x00, 0x2F, 0x00, 0xBC, 0x00, 0xF0, 0x02, 0xC0, 0x0B, 0x00, 0x2F, 0x00, 0xBC, 0x00, 0xF0, + 0x56, 0xD5, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, + // Unicode: [0x004D, M] + 0x7F, 0x00, 0x00, 0xC0, 0xDF, 0x2F, 0x00, 0x00, 0xF8, 0xF7, 0x0F, 0x00, 0x00, 0xFF, 0xFD, 0x0B, + 0x00, 0xD0, 0x7F, 0xFF, 0x03, 0x00, 0xFC, 0xDF, 0xFF, 0x01, 0x40, 0xFF, 0xF7, 0xFA, 0x00, 0xF0, + 0xFA, 0xBD, 0x7D, 0x00, 0x7D, 0x7E, 0x2F, 0x3F, 0x80, 0x8F, 0xDF, 0x4B, 0x1F, 0xF4, 0xE1, 0xF7, + 0xC2, 0x0B, 0x3E, 0xF8, 0xBD, 0xD0, 0xC7, 0x0B, 0x7E, 0x2F, 0xF0, 0xFA, 0x80, 0xDF, 0x0B, 0xF8, + 0x2F, 0xE0, 0xF7, 0x02, 0xFC, 0x07, 0xF8, 0xBD, 0x00, 0xBE, 0x00, 0x7E, 0x2F, 0x40, 0x1F, 0x80, + 0x1F, + // Unicode: [0x004E, N] + 0x3F, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0xF8, 0xFF, 0x01, 0x80, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x0B, + 0x80, 0xFF, 0xF6, 0x01, 0xF8, 0x2F, 0x3E, 0x80, 0xFF, 0xC2, 0x0B, 0xF8, 0x2F, 0xF4, 0x81, 0xFF, + 0x02, 0x7E, 0xF8, 0x2F, 0xC0, 0x8B, 0xFF, 0x02, 0xF4, 0xFA, 0x2F, 0x00, 0xFE, 0xFF, 0x02, 0xC0, + 0xFF, 0x2F, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0xFE, 0x2F, 0x00, 0xC0, 0x0F, + // Unicode: [0x004F, O] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0xE0, 0xBF, 0xEA, 0x7F, 0x40, 0x7F, 0x00, + 0xE0, 0x0F, 0xFC, 0x01, 0x00, 0xF8, 0xE2, 0x0B, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0xE0, 0xF7, + 0x03, 0x00, 0x00, 0xBD, 0x3F, 0x00, 0x00, 0xD0, 0xFB, 0x03, 0x00, 0x00, 0xBD, 0x3F, 0x00, 0x00, + 0xE0, 0xE7, 0x0B, 0x00, 0x00, 0x3F, 0xFC, 0x01, 0x00, 0xF8, 0x42, 0x7F, 0x00, 0xE0, 0x0F, 0xE0, + 0xBF, 0xEA, 0x7F, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xBF, 0x01, 0x00, + // Unicode: [0x0050, P] + 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x1F, 0x6F, 0x95, 0x7F, 0x2F, 0x00, 0xBD, 0x2F, 0x00, 0xFC, 0x2F, + 0x00, 0xFC, 0x2F, 0x00, 0xBD, 0x6F, 0x95, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x06, 0x2F, 0x00, + 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, + 0x2F, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0xE0, 0xBF, 0xEA, 0x7F, 0x40, 0x7F, 0x00, + 0xE0, 0x0F, 0xFC, 0x01, 0x00, 0xF8, 0xE2, 0x0B, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0xE0, 0xF7, + 0x03, 0x00, 0x00, 0xBD, 0x3F, 0x00, 0x00, 0xD0, 0xFB, 0x03, 0x00, 0x00, 0xBD, 0x3F, 0x00, 0x00, + 0xE0, 0xE7, 0x0B, 0x00, 0x00, 0x3F, 0xFC, 0x01, 0x00, 0xF8, 0x42, 0x7F, 0x00, 0xE0, 0x0F, 0xE0, + 0xBF, 0xEA, 0x7F, 0x00, 0xF4, 0xFF, 0xFF, 0x00, 0x00, 0xE4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, + 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x02, 0x00, 0x00, 0x40, 0x7F, + // Unicode: [0x0052, R] + 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0x1F, 0x6F, 0x95, 0x7F, 0x2F, 0x00, 0xBD, 0x2F, 0x00, 0xFC, 0x2F, + 0x00, 0xFC, 0x2F, 0x00, 0xBD, 0x6F, 0x95, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x06, 0x2F, 0xF8, + 0x01, 0x2F, 0xF4, 0x03, 0x2F, 0xE0, 0x0B, 0x2F, 0xC0, 0x1F, 0x2F, 0x80, 0x2F, 0x2F, 0x00, 0x7F, + 0x2F, 0x00, 0xFD, + // Unicode: [0x0053, S] + 0x40, 0xFE, 0x06, 0xC0, 0xFF, 0xBF, 0xC0, 0xBF, 0xF9, 0x4B, 0x2F, 0x40, 0x7F, 0x7D, 0x00, 0xA4, + 0xF5, 0x02, 0x00, 0xC0, 0x2F, 0x00, 0x00, 0xFD, 0x6B, 0x00, 0x90, 0xFF, 0x1F, 0x00, 0x90, 0xFF, + 0x02, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xBD, 0x69, 0x00, 0xF4, 0xF6, 0x03, 0xE0, 0xC7, 0xBF, 0xF9, + 0x0F, 0xFC, 0xFF, 0x0F, 0x40, 0xFE, 0x06, 0x00, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xBE, 0x55, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, + 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, + 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x7D, 0x00, + 0x00, 0x7D, 0x00, + // Unicode: [0x0055, U] + 0x2F, 0x00, 0xD0, 0xF7, 0x02, 0x00, 0x7D, 0x2F, 0x00, 0xD0, 0xF7, 0x02, 0x00, 0x7D, 0x2F, 0x00, + 0xD0, 0xF7, 0x02, 0x00, 0x7D, 0x2F, 0x00, 0xD0, 0xF7, 0x02, 0x00, 0x7D, 0x2F, 0x00, 0xD0, 0xF7, + 0x02, 0x00, 0x7D, 0x2F, 0x00, 0xD0, 0xF7, 0x02, 0x00, 0x7E, 0x3F, 0x00, 0xE0, 0xE7, 0x0B, 0x80, + 0x2F, 0xFC, 0xAB, 0xFF, 0x01, 0xFF, 0xFF, 0x07, 0x40, 0xFE, 0x06, 0x00, + // Unicode: [0x0056, V] + 0xBD, 0x00, 0x00, 0xF4, 0xF2, 0x03, 0x00, 0xE0, 0x87, 0x1F, 0x00, 0xC0, 0x0F, 0xBD, 0x00, 0x40, + 0x2F, 0xE0, 0x03, 0x00, 0x3E, 0x40, 0x2F, 0x00, 0xBD, 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xF0, 0x03, 0x40, 0x2F, 0xD0, 0x0B, 0x00, 0xFC, 0x80, 0x1F, 0x00, 0xD0, 0x07, 0x2F, 0x00, 0x00, + 0x2F, 0x7D, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0xD0, 0xFB, 0x02, 0x00, 0x00, 0xFF, 0x07, 0x00, + 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xC0, 0x2F, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xBD, 0x00, 0xC0, 0x1F, 0x00, 0xF8, 0xF1, 0x03, 0x40, 0xBF, 0x00, 0xF0, 0x83, 0x0F, 0x00, 0xFE, + 0x03, 0xD0, 0x0B, 0x7E, 0x00, 0xFC, 0x0F, 0x40, 0x1F, 0xF4, 0x02, 0xF4, 0x7E, 0x00, 0x3E, 0xC0, + 0x0F, 0xE0, 0xF7, 0x02, 0xBC, 0x00, 0x7E, 0xC0, 0xCB, 0x0F, 0xF4, 0x02, 0xF4, 0x01, 0x1F, 0x7E, + 0xE0, 0x07, 0xC0, 0x0B, 0x3D, 0xF4, 0x81, 0x0F, 0x00, 0x3E, 0xF8, 0xC0, 0x0B, 0x2F, 0x00, 0xF4, + 0xF1, 0x02, 0x3E, 0x7D, 0x00, 0xD0, 0xD7, 0x07, 0xF4, 0xF9, 0x00, 0x00, 0xAF, 0x0F, 0xC0, 0xF7, + 0x02, 0x00, 0xF8, 0x2F, 0x00, 0xFF, 0x07, 0x00, 0xD0, 0x7F, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xFF, + 0x00, 0xD0, 0x2F, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x7F, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xBD, 0x00, 0xD0, 0x8F, 0x1F, 0x00, 0x7E, 0xF4, 0x03, 0xF4, 0x02, 0xBE, 0xC0, 0x0F, 0xC0, 0x1F, + 0x7E, 0x00, 0xF4, 0xF7, 0x02, 0x00, 0xFE, 0x0F, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xF4, 0x03, 0x00, + 0xC0, 0x7F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xF4, 0xF6, 0x02, 0xC0, 0x0F, 0x7E, 0x00, 0xBD, 0xD0, + 0x0F, 0xF0, 0x03, 0xF8, 0x82, 0x1F, 0x00, 0x7F, 0xBD, 0x00, 0xD0, 0x0F, + // Unicode: [0x0059, Y] + 0xBD, 0x00, 0x80, 0x1F, 0x7E, 0x00, 0xF0, 0x43, 0x2F, 0x00, 0x7E, 0x80, 0x1F, 0xC0, 0x0F, 0xD0, + 0x0B, 0xF8, 0x01, 0xE0, 0x07, 0x2F, 0x00, 0xF4, 0xE2, 0x07, 0x00, 0xF8, 0xBD, 0x00, 0x00, 0xFC, + 0x1F, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xF0, 0x03, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xF0, 0x03, 0x00, + // Unicode: [0x005A, Z] + 0xFE, 0xFF, 0xBF, 0xFE, 0xFF, 0xBF, 0x55, 0x55, 0xBF, 0x00, 0x40, 0x3F, 0x00, 0xC0, 0x1F, 0x00, + 0xE0, 0x0B, 0x00, 0xF4, 0x03, 0x00, 0xFC, 0x01, 0x00, 0xBE, 0x00, 0x40, 0x3F, 0x00, 0xC0, 0x1F, + 0x00, 0xE0, 0x0B, 0x00, 0xF4, 0x03, 0x00, 0xFC, 0x01, 0x00, 0xFE, 0x55, 0x55, 0xFE, 0xFF, 0xBF, + 0xFE, 0xFF, 0xBF, + // Unicode: [0x005B, bracketleft] + 0xFD, 0xDF, 0xFF, 0xBD, 0xD5, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, + 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, + 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x5B, 0xFD, 0xDF, 0xFF, + // Unicode: [0x005C, backslash] + 0x3E, 0x00, 0x80, 0x1F, 0x00, 0xD0, 0x0B, 0x00, 0xF0, 0x03, 0x00, 0xF8, 0x00, 0x00, 0x7D, 0x00, + 0x40, 0x2F, 0x00, 0xC0, 0x0F, 0x00, 0xE0, 0x07, 0x00, 0xF4, 0x01, 0x00, 0xBC, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x1F, 0x00, 0xD0, 0x0B, 0x00, 0xF0, 0x02, 0x00, 0xF8, 0x00, 0x00, 0x7D, 0x00, 0x40, + 0x2F, 0x00, 0xC0, 0x0F, 0x00, 0xE0, 0x03, 0x00, 0xF4, 0x01, 0x00, 0xBC, 0x00, 0x00, 0x3F, 0x00, + 0x80, 0x1F, 0x00, 0xD0, 0x07, 0x00, 0xF0, 0x02, 0x00, 0xF8, 0x00, 0x00, 0x7E, + // Unicode: [0x005D, bracketright] + 0xFE, 0xE7, 0x7F, 0xE5, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, + 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, + 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x57, 0x7E, 0xFE, 0xE7, 0x7F, + // Unicode: [0x005E, asciicircum] + 0x00, 0xF4, 0x02, 0x00, 0x00, 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x40, + 0x6F, 0x2F, 0x00, 0xE0, 0xC7, 0x0F, 0x00, 0xBC, 0xD0, 0x07, 0x80, 0x1F, 0xF0, 0x03, 0xF0, 0x03, + 0xF8, 0x01, 0x7E, 0x00, 0xFC, 0xC0, 0x0F, 0x00, 0x7E, 0xF4, 0x02, 0x40, 0x2F, 0x3F, 0x00, 0x80, + 0x1F, + // Unicode: [0x005F, underscore] + 0xAA, 0xAA, 0xAA, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + // Unicode: [0x0060, grave] + 0x06, 0xE0, 0x02, 0xFE, 0x02, 0xBE, 0x00, 0x0A, + // Unicode: [0x0061, a] + 0x40, 0xFE, 0x86, 0x0F, 0xFE, 0xFF, 0xF9, 0xF8, 0xAB, 0xFE, 0xDF, 0x1F, 0x40, 0xFF, 0xBE, 0x00, + 0xE0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xEF, + 0x07, 0x00, 0xFD, 0xFD, 0x01, 0xF4, 0x8F, 0xBF, 0xE5, 0xFF, 0xE0, 0xFF, 0xAF, 0x0F, 0xE4, 0x6F, + 0xF8, + // Unicode: [0x0062, b] + 0x2F, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x2F, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x2F, 0x00, + 0x00, 0xF0, 0x92, 0xBF, 0x01, 0xAF, 0xFF, 0xBF, 0xF0, 0xBF, 0xEA, 0x2F, 0xFF, 0x01, 0xF4, 0xF7, + 0x07, 0x00, 0xBE, 0x3F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xFC, 0x2F, 0x00, 0xC0, 0xFF, 0x03, 0x00, + 0xBC, 0x7F, 0x00, 0xE0, 0xFB, 0x1F, 0x40, 0x7F, 0xFF, 0xAB, 0xFE, 0xF2, 0xFA, 0xFF, 0x0B, 0x2F, + 0xF9, 0x1B, 0x00, + // Unicode: [0x0063, c] + 0x40, 0xFE, 0x0A, 0x80, 0xFF, 0xFF, 0x81, 0xBF, 0xF9, 0x4F, 0x3F, 0x00, 0xBE, 0x7E, 0x00, 0xA0, + 0xFD, 0x00, 0x00, 0xF0, 0x03, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x01, 0x80, + 0xD6, 0x0F, 0x80, 0x2F, 0xFE, 0x96, 0x3F, 0xE0, 0xFF, 0x7F, 0x00, 0xF9, 0x1B, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x80, 0x0F, 0xE4, 0x6F, 0xF8, 0xE0, 0xFF, 0xAF, 0x8F, 0xBF, 0xEA, 0xFF, 0xFD, 0x01, 0xF4, 0xEF, + 0x0B, 0x00, 0xFE, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, + 0xFC, 0x7E, 0x00, 0xD0, 0xDF, 0x1F, 0x40, 0xFF, 0xF8, 0x5B, 0xFE, 0x0F, 0xFE, 0xFF, 0xFA, 0x40, + 0xFE, 0x86, 0x0F, + // Unicode: [0x0065, e] + 0x40, 0xFE, 0x06, 0x00, 0xFE, 0xFF, 0x07, 0xF8, 0x9B, 0xFE, 0xD0, 0x0F, 0x40, 0x2F, 0x7E, 0x00, + 0xE0, 0xF3, 0x57, 0x55, 0x7E, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0xE0, + 0x07, 0x00, 0x15, 0xFD, 0x00, 0xF8, 0x82, 0xBF, 0xE5, 0x1F, 0xE0, 0xFF, 0x7F, 0x00, 0xE4, 0xAF, + 0x00, + // Unicode: [0x0066, f] + 0x00, 0x79, 0x80, 0x7F, 0xD0, 0x6F, 0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xFD, 0xBF, 0xFD, 0xBF, + 0xF4, 0x57, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + // Unicode: [0x0067, g] + 0x40, 0xFE, 0x86, 0x0F, 0xFE, 0xFF, 0xFA, 0xF8, 0x5B, 0xFE, 0xDF, 0x1F, 0x40, 0xFF, 0x7E, 0x00, + 0xD0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xEF, + 0x0B, 0x00, 0xFE, 0xFD, 0x01, 0xF4, 0x8F, 0xBF, 0xEA, 0xFF, 0xE0, 0xFF, 0x9F, 0x0F, 0xE4, 0x6F, + 0xF8, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xFC, 0xBD, 0x00, 0xD0, 0xCB, 0x2F, 0x00, 0x7F, 0xF4, + 0x6F, 0xFE, 0x02, 0xFD, 0xFF, 0x0B, 0x00, 0xFA, 0x1B, 0x00, + // Unicode: [0x0068, h] + 0x2F, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xF0, 0x02, 0x00, 0xC0, 0x0B, 0x00, 0x00, 0x2F, 0x00, 0x00, + 0xBC, 0xE4, 0x1B, 0xF0, 0xFA, 0xFF, 0xC2, 0xFF, 0xEA, 0x2F, 0xBF, 0x00, 0xFD, 0xFC, 0x00, 0xE0, + 0xF7, 0x02, 0x40, 0xDF, 0x0B, 0x00, 0x7D, 0x2F, 0x00, 0xF4, 0xBD, 0x00, 0xD0, 0xF7, 0x02, 0x40, + 0xDF, 0x0B, 0x00, 0x7D, 0x2F, 0x00, 0xF4, 0xBD, 0x00, 0xD0, 0xF7, 0x02, 0x40, 0x1F, + // Unicode: [0x0069, i] + 0x78, 0xFD, 0xFD, 0x64, 0x00, 0x00, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, + 0xBC, 0xBC, 0xBC, 0xBC, + // Unicode: [0x006A, j] + 0x80, 0x07, 0xFD, 0xD0, 0x0F, 0x64, 0x00, 0x00, 0x00, 0xC0, 0x0B, 0xBC, 0xC0, 0x0B, 0xBC, 0xC0, + 0x0B, 0xBC, 0xC0, 0x0B, 0xBC, 0xC0, 0x0B, 0xBC, 0xC0, 0x0B, 0xBC, 0xC0, 0x0B, 0xBC, 0xC0, 0x0B, + 0xBC, 0xC0, 0x0B, 0xBD, 0xE5, 0xEB, 0x3F, 0xBE, 0x01, + // Unicode: [0x006B, k] + 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x2F, + 0x80, 0x7F, 0x2F, 0xE0, 0x1F, 0x2F, 0xF4, 0x07, 0x2F, 0xFD, 0x02, 0x2F, 0xBF, 0x00, 0xAF, 0x2F, + 0x00, 0xFF, 0x0B, 0x00, 0xFF, 0x0B, 0x00, 0xAF, 0x2F, 0x00, 0x2F, 0xBF, 0x00, 0x2F, 0xFD, 0x01, + 0x2F, 0xF4, 0x07, 0x2F, 0xD0, 0x1F, 0x2F, 0x80, 0x7F, + // Unicode: [0x006C, l] + 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0xBE, 0xEF, 0xFB, 0x02, + // Unicode: [0x006D, m] + 0x2F, 0xFE, 0x06, 0xE4, 0x6F, 0xC0, 0xFF, 0xFF, 0x4B, 0xFF, 0xBF, 0xF0, 0x6F, 0xF5, 0xFB, 0x96, + 0x7F, 0xFC, 0x02, 0xF4, 0x1F, 0x40, 0x2F, 0x3F, 0x00, 0xF8, 0x02, 0xC0, 0xCF, 0x0B, 0x00, 0xBD, + 0x00, 0xE0, 0xF7, 0x02, 0x40, 0x1F, 0x00, 0xF8, 0xBD, 0x00, 0xD0, 0x07, 0x00, 0x7E, 0x2F, 0x00, + 0xF4, 0x01, 0x80, 0xDF, 0x0B, 0x00, 0x7D, 0x00, 0xE0, 0xF7, 0x02, 0x40, 0x1F, 0x00, 0xF8, 0xBD, + 0x00, 0xD0, 0x07, 0x00, 0x7E, 0x2F, 0x00, 0xF4, 0x01, 0x80, 0xDF, 0x0B, 0x00, 0x7D, 0x00, 0xE0, + 0x07, + // Unicode: [0x006E, n] + 0x2F, 0xFE, 0x06, 0xFC, 0xFF, 0xBF, 0xF0, 0x6F, 0xF5, 0xCB, 0x2F, 0x40, 0x3F, 0x3F, 0x00, 0xF8, + 0xBD, 0x00, 0xD0, 0xF7, 0x02, 0x40, 0xDF, 0x0B, 0x00, 0x7D, 0x2F, 0x00, 0xF4, 0xBD, 0x00, 0xD0, + 0xF7, 0x02, 0x40, 0xDF, 0x0B, 0x00, 0x7D, 0x2F, 0x00, 0xF4, 0xBD, 0x00, 0xD0, 0x07, + // Unicode: [0x006F, o] + 0x40, 0xFA, 0x0A, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0xAB, 0xFE, 0xD1, 0x1F, 0x40, 0x3F, 0x7E, 0x00, + 0xE0, 0xFB, 0x03, 0x00, 0xBC, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xEB, + 0x07, 0x00, 0xBE, 0xFD, 0x01, 0xF4, 0x83, 0xBF, 0xEA, 0x1F, 0xE0, 0xFF, 0x7F, 0x00, 0xE4, 0xAF, + 0x00, + // Unicode: [0x0070, p] + 0x2F, 0xF9, 0x1B, 0xF0, 0xFA, 0xFF, 0x0B, 0xFF, 0xAB, 0xFE, 0xF2, 0x1F, 0x40, 0x7F, 0x7F, 0x00, + 0xE0, 0xFB, 0x03, 0x00, 0xFC, 0x2F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xFB, + 0x07, 0x00, 0xBE, 0xFF, 0x01, 0xF4, 0xF7, 0xBF, 0xEA, 0x2F, 0xAF, 0xFF, 0xBF, 0xF0, 0x92, 0xBF, + 0x01, 0x2F, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x2F, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x2F, + 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x40, 0xFE, 0x86, 0x0F, 0xFE, 0xFF, 0xF9, 0xF8, 0xAB, 0xFE, 0xDF, 0x1F, 0x40, 0xFF, 0x7E, 0x00, + 0xD0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0xC0, 0xEF, + 0x0B, 0x00, 0xFD, 0xFD, 0x01, 0xF4, 0x8F, 0xBF, 0xEA, 0xFF, 0xE0, 0xFF, 0x9F, 0x0F, 0xE4, 0x6F, + 0xF8, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x80, 0x0F, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x0F, + // Unicode: [0x0072, r] + 0x2F, 0xE9, 0xEB, 0xFF, 0xFF, 0xFE, 0x07, 0x3F, 0xC0, 0x0B, 0xF0, 0x02, 0xBC, 0x00, 0x2F, 0xC0, + 0x0B, 0xF0, 0x02, 0xBC, 0x00, 0x2F, 0xC0, 0x0B, 0x00, + // Unicode: [0x0073, s] + 0x90, 0xBF, 0x01, 0xFE, 0xFF, 0xD2, 0x6F, 0xFE, 0xF9, 0x01, 0xBD, 0x7E, 0x00, 0x55, 0xBF, 0x01, + 0x40, 0xFF, 0x1B, 0x00, 0xFA, 0x2F, 0x00, 0xD0, 0x6F, 0x05, 0x80, 0xEF, 0x07, 0xE0, 0xF7, 0x5B, + 0xBE, 0xF4, 0xFF, 0x0F, 0xE4, 0xAF, 0x00, + // Unicode: [0x0074, t] + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x7E, 0x40, 0xFF, 0xBF, 0xFD, 0xFF, 0x92, 0x5F, 0x05, 0x7E, 0x00, + 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, + 0xBE, 0x15, 0xF0, 0xBF, 0x40, 0xFE, 0x02, + // Unicode: [0x0075, u] + 0xBD, 0x00, 0xE0, 0xD7, 0x0B, 0x00, 0x7E, 0xBD, 0x00, 0xE0, 0xD7, 0x0B, 0x00, 0x7E, 0xBD, 0x00, + 0xE0, 0xD7, 0x0B, 0x00, 0x7E, 0xBD, 0x00, 0xE0, 0xD7, 0x0B, 0x00, 0x7E, 0xBD, 0x00, 0xE0, 0xC7, + 0x0F, 0x00, 0x7E, 0xF8, 0x01, 0xF4, 0x47, 0xBF, 0xE5, 0x7F, 0xE0, 0xFF, 0xEF, 0x07, 0xE4, 0x6F, + 0x7E, + // Unicode: [0x0076, v] + 0x7E, 0x00, 0xC0, 0xDF, 0x0B, 0x00, 0xBD, 0xF8, 0x00, 0xE0, 0x47, 0x2F, 0x00, 0x2F, 0xF0, 0x03, + 0xF4, 0x01, 0x7E, 0x80, 0x0F, 0xD0, 0x0B, 0xBC, 0x00, 0xFC, 0xE0, 0x07, 0x80, 0x1F, 0x3F, 0x00, + 0xF4, 0xF6, 0x02, 0x00, 0xBF, 0x1F, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x80, 0x3F, + 0x00, + // Unicode: [0x0077, w] + 0x7E, 0x00, 0xFD, 0x00, 0xF8, 0xF5, 0x02, 0xF4, 0x07, 0xE0, 0xC3, 0x0B, 0xE0, 0x2F, 0xC0, 0x0B, + 0x3E, 0xC0, 0xBF, 0x40, 0x1F, 0xF4, 0x41, 0xEF, 0x03, 0x3E, 0xC0, 0x0B, 0x6D, 0x1F, 0xB8, 0x00, + 0x2E, 0xB8, 0xBC, 0xF0, 0x01, 0xF4, 0xF0, 0xE1, 0xD2, 0x03, 0xC0, 0xD7, 0x43, 0x8F, 0x0B, 0x00, + 0xAF, 0x0B, 0x7C, 0x1F, 0x00, 0xF8, 0x1E, 0xF0, 0x3E, 0x00, 0xD0, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0xFD, 0x02, 0x00, 0xF8, 0x02, 0xF0, 0x07, 0x00, + // Unicode: [0x0078, x] + 0xBD, 0x00, 0xFC, 0xF8, 0x01, 0x7E, 0xF4, 0x43, 0x2F, 0xE0, 0x8B, 0x0F, 0xC0, 0xEF, 0x07, 0x40, + 0xFF, 0x02, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x40, 0xFF, 0x02, 0x80, 0xEF, 0x07, 0xD0, 0xD7, + 0x0F, 0xF0, 0x82, 0x2F, 0xF8, 0x00, 0x7F, 0xBD, 0x00, 0xFD, + // Unicode: [0x0079, y] + 0xBE, 0x00, 0xC0, 0xDF, 0x0F, 0x00, 0xBD, 0xF8, 0x01, 0xE0, 0x47, 0x2F, 0x00, 0x3F, 0xF0, 0x03, + 0xF4, 0x01, 0x7E, 0x80, 0x0F, 0xD0, 0x0B, 0xBC, 0x00, 0xFC, 0xD0, 0x07, 0x40, 0x1F, 0x3E, 0x00, + 0xF0, 0xF6, 0x01, 0x00, 0xBE, 0x0F, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x80, 0x3F, + 0x00, 0x00, 0xF8, 0x01, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xBD, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0xF8, 0x01, 0x00, 0xC0, 0x0F, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, 0x55, 0xF5, 0x0B, 0x40, 0x3F, 0x00, 0xFC, 0x01, 0xE0, 0x0B, 0x40, + 0x3F, 0x00, 0xFC, 0x01, 0xE0, 0x0B, 0x40, 0x2F, 0x00, 0xFC, 0x01, 0xE0, 0x5B, 0x55, 0xFF, 0xFF, + 0xFB, 0xFF, 0xBF, + // Unicode: [0x007B, braceleft] + 0x40, 0xBE, 0xD0, 0xBF, 0xE0, 0x6B, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, + 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xE0, 0x07, 0xF4, 0x03, 0xBF, 0x00, 0xBF, 0x00, 0xF8, 0x03, + 0xE0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x6B, 0xD0, 0xBF, 0x40, 0xBE, + // Unicode: [0x007C, bar] + 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, + 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, + // Unicode: [0x007D, braceright] + 0xBE, 0x00, 0xFE, 0x03, 0xE9, 0x0B, 0xD0, 0x0B, 0xC0, 0x0B, 0xC0, 0x0B, 0xD0, 0x0B, 0xD0, 0x07, + 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xC0, 0x1F, 0x40, 0xBE, 0x40, 0xBE, 0xC0, 0x1F, + 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x0B, 0xC0, 0x0B, 0xC0, 0x0B, + 0xD0, 0x0B, 0xE9, 0x0B, 0xFE, 0x03, 0xBE, 0x00, + // Unicode: [0x007E, asciitilde] + 0xE0, 0x0B, 0xB4, 0xFC, 0xBF, 0x7E, 0xBE, 0xFE, 0x3F, 0x0F, 0xE4, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_4.cpp new file mode 100644 index 00000000..9be65290 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_25_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_25_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x28, 0xA0, 0x40, 0xE2, 0x8B, 0x2F, 0xBE, 0xBE, 0xF8, 0xE2, 0xDF, 0x47, 0x1F, 0x7D +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_0.cpp new file mode 100644 index 00000000..082e513e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_0.cpp @@ -0,0 +1,1341 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_50_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x2F, 0xFC, 0x2F, 0xFC, 0x2F, 0xFC, 0x2F, 0xFC, 0x2F, + 0xFC, 0x2F, 0xFC, 0x2F, 0xFC, 0x2F, 0xFC, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xF4, 0x1F, 0xFC, 0x3F, 0xFD, 0xBF, 0xFE, 0xBF, + 0xFD, 0x7F, 0xFC, 0x3F, 0xE0, 0x0B, + // Unicode: [0x0022, quotedbl] + 0x54, 0x05, 0x55, 0xD1, 0xBF, 0xE0, 0x7F, 0xFD, 0x0B, 0xFE, 0xC7, 0xBF, 0xE0, 0x7F, 0xFC, 0x0B, + 0xFE, 0xC7, 0xBF, 0xD0, 0x3F, 0xFC, 0x0B, 0xFD, 0xC3, 0x7F, 0xD0, 0x3F, 0xF8, 0x07, 0xFD, 0x83, + 0x7F, 0xD0, 0x3F, 0xF8, 0x07, 0xFC, 0x02, + // Unicode: [0x0023, numbersign] + 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, + 0x1F, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xC0, 0xFF, + 0x02, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xF0, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xBF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xFC, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, + 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xE0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x3F, 0x00, + 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x5F, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x9B, 0xBF, 0xFF, 0xBF, 0xC0, 0xFF, + 0x07, 0xBE, 0xF4, 0xFF, 0x43, 0xFF, 0x0B, 0xF8, 0x42, 0xFF, 0x1F, 0xFE, 0x0F, 0xE0, 0x0B, 0xF8, + 0xBF, 0xFC, 0x3F, 0x80, 0x2F, 0x90, 0xAA, 0xF2, 0xBF, 0x00, 0xBE, 0x00, 0x00, 0xC0, 0xFF, 0x03, + 0xF8, 0x02, 0x00, 0x00, 0xFF, 0x1F, 0xE0, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x81, 0x2F, 0x00, 0x00, + 0xD0, 0xFF, 0x2F, 0xBE, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xFF, + 0x6F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0x6F, + 0xFE, 0xFF, 0x01, 0x00, 0x00, 0xBE, 0xD0, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0x02, 0xFD, 0x3F, 0x00, + 0x00, 0xE0, 0x0B, 0xE0, 0xFF, 0x00, 0x00, 0x80, 0x2F, 0x80, 0xFF, 0xA7, 0xAA, 0x00, 0xBE, 0x00, + 0xFE, 0xCF, 0xFF, 0x07, 0xF8, 0x02, 0xF8, 0x3F, 0xFE, 0x2F, 0xE0, 0x0B, 0xF0, 0xBF, 0xF4, 0xFF, + 0x81, 0x2F, 0xE0, 0xFF, 0xC1, 0xFF, 0x1F, 0xBE, 0xF4, 0xFF, 0x03, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x90, 0xFE, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, + 0x02, 0x00, 0x00, + // Unicode: [0x0025, percent] + 0x00, 0xF9, 0x6B, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFF, + 0x0B, 0x00, 0xF4, 0xFF, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x07, 0x00, 0xFC, 0xAF, 0xFE, 0x1F, 0x00, + 0xC0, 0xFF, 0x02, 0x00, 0xFD, 0x07, 0xF0, 0x3F, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFE, 0x02, 0xD0, + 0x3F, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xFF, 0x02, 0xD0, 0x7F, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFF, + 0x02, 0xD0, 0x7F, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x02, 0xD0, 0x7F, 0x00, 0xFE, 0x0B, 0x00, + 0x00, 0xFE, 0x03, 0xE0, 0x3F, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x1B, 0xF8, 0x2F, 0xC0, 0xFF, + 0x02, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, + 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x54, + 0x05, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, + 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xFE, 0xBF, 0x01, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0xF4, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x40, 0xFF, 0x07, 0xF8, 0x1F, 0xF4, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0xFC, 0x07, 0xD0, + 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0xFD, 0x03, 0xC0, 0x7F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xFD, + 0x03, 0xC0, 0xBF, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xFE, 0x03, 0xC0, 0xBF, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0xFD, 0x03, 0xC0, 0x7F, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0xFC, 0x0B, 0xE0, 0x3F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xF4, 0xBF, 0xFE, 0x2F, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x02, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0026, ampersand] + 0x00, 0x00, 0x40, 0xFA, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xAF, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x1F, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xFD, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x40, 0x55, + 0x01, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0x3F, 0x00, 0xFD, 0xFF, 0x82, 0xFF, 0x2F, 0x00, 0xF8, 0x7F, 0x00, + 0xF8, 0xBF, 0x00, 0xF8, 0xFF, 0x02, 0xF4, 0xBF, 0x00, 0xF4, 0xFF, 0x00, 0x80, 0xFF, 0x2F, 0xF0, + 0xFF, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xF8, 0xFF, 0xE2, 0xFF, 0x01, 0xC0, 0xFF, 0x02, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, + 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x02, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x90, 0xFF, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, 0x6F, 0x00, + 0xE4, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xFF, 0x2F, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF4, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0xFF, + 0x2F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0x90, 0xFE, 0xAF, 0x01, + 0x00, 0x80, 0xFF, 0x2F, + // Unicode: [0x0027, quotesingle] + 0x54, 0xD5, 0xBF, 0xFD, 0xCB, 0xBF, 0xFC, 0xCB, 0xBF, 0xFC, 0xCB, 0x7F, 0xF8, 0x87, 0x7F, 0xF8, + 0x07, + // Unicode: [0x0028, parenleft] + 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0xF0, + 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, + 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x0F, + 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xE0, + 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0x0B, + 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x80, + 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x01, + 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0x0B, + 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, + 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x1F, + // Unicode: [0x0029, parenright] + 0xFE, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xBF, + 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, + 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x40, 0xFF, + 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, + 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x40, 0xFF, + 0x07, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, + 0x00, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, + 0xF8, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xF8, + 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, + 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0x1F, + 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xFC, + 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, + // Unicode: [0x002A, asterisk] + 0x00, 0x80, 0xAA, 0x00, 0x00, 0x00, 0xE0, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x80, 0x01, + 0xFD, 0x01, 0x08, 0xF4, 0x01, 0x7F, 0xD0, 0x07, 0xFF, 0xC2, 0x0F, 0xFE, 0xE3, 0xFF, 0xF3, 0xE3, + 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0x6F, 0x40, 0xFE, 0xFF, 0x6F, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, + 0xE0, 0xFF, 0xBF, 0x01, 0x90, 0xFF, 0xFF, 0xFF, 0x1B, 0xFE, 0x7F, 0x7F, 0xFF, 0x2F, 0xFF, 0xC7, + 0x0F, 0xFE, 0x43, 0x2F, 0xF0, 0x07, 0xBE, 0xC0, 0x02, 0xFD, 0x01, 0x0D, 0x00, 0x40, 0xBF, 0x00, + 0x00, 0x00, 0xE0, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x00, 0x90, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xAB, 0xAA, 0xAA, 0xFF, 0xAF, 0xAA, 0x6A, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, + // Unicode: [0x002C, comma] + 0x40, 0xAA, 0x0A, 0xF8, 0x7F, 0x80, 0xFF, 0x03, 0xFC, 0x2F, 0xD0, 0xFF, 0x00, 0xFE, 0x0B, 0xE0, + 0x7F, 0x00, 0xFF, 0x02, 0xF4, 0x1F, 0x80, 0xFF, 0x00, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xFD, 0x02, + 0xE0, 0x1F, 0x00, + // Unicode: [0x002D, hyphen] + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + // Unicode: [0x002E, period] + 0x40, 0x01, 0xF4, 0x1F, 0xFC, 0x3F, 0xFD, 0xBF, 0xFE, 0xBF, 0xFD, 0x7F, 0xFC, 0x3F, 0xE0, 0x0B, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xF0, + 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x00, + 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xFC, + 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, + 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x0F, + 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x40, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x40, 0xFF, + 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0x00, 0xE9, 0xBF, 0x06, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, + 0x00, 0xFD, 0xFF, 0x56, 0xF9, 0xFF, 0x07, 0xF0, 0xFF, 0x02, 0x00, 0xF8, 0xFF, 0x40, 0xFF, 0x0B, + 0x00, 0x00, 0xFE, 0x1F, 0xF8, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xC2, 0xFF, 0x02, 0x00, 0x00, 0xF8, + 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x0F, + 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0B, 0x00, 0x00, 0x00, + 0xFE, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFE, + 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0x00, + 0x00, 0xFF, 0xDB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xC7, + 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x3F, 0xF8, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x42, 0xFF, 0x0B, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0xFF, 0x02, 0x00, 0xF8, 0xBF, 0x00, 0xFD, 0xFF, 0x56, 0xF9, 0xFF, 0x07, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFC, 0xFF, + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE9, 0xBF, 0x06, 0x00, + 0x00, + // Unicode: [0x0031, one] + 0x54, 0x55, 0x85, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, 0xFE, 0xFF, 0xAF, 0xFF, 0xFF, + 0x0B, 0xC0, 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x0B, 0xC0, 0xFF, 0x02, 0xF0, + 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x0B, 0xC0, 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, + 0xFF, 0x0B, 0xC0, 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x0B, 0xC0, 0xFF, 0x02, + 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x0B, 0xC0, 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, + 0x00, 0xFF, 0x0B, 0xC0, 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x0B, 0xC0, 0xFF, + 0x02, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, + // Unicode: [0x0032, two] + 0x00, 0x00, 0xA9, 0x6B, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xC0, + 0xFF, 0x6F, 0x40, 0xFE, 0x7F, 0x40, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x03, 0xFE, 0x1F, 0x00, 0x00, + 0xFE, 0x1F, 0xFC, 0x2F, 0x00, 0x00, 0xF4, 0xBF, 0xF4, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0xD2, 0xFF, + 0x00, 0x00, 0x00, 0xFF, 0x4B, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xAB, 0xAA, 0xAA, 0xAA, 0xF6, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + // Unicode: [0x0033, three] + 0x00, 0x00, 0xA9, 0xAF, 0x05, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0xD0, 0xFF, 0xFF, + 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x80, + 0xFF, 0x6F, 0x40, 0xFE, 0xFF, 0x40, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0x07, 0xFE, 0x1F, 0x00, 0x00, + 0xFD, 0x2F, 0xFC, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0xF0, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xF9, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xA8, + 0xFE, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x6F, 0xAA, 0x02, 0x00, 0x00, 0xE0, 0xBF, 0xFD, + 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xCB, 0xFF, 0x03, 0x00, 0x00, + 0xFE, 0x1F, 0xFE, 0x2F, 0x00, 0x00, 0xFD, 0x3F, 0xF0, 0xFF, 0x07, 0x00, 0xFE, 0xBF, 0x40, 0xFF, + 0xFF, 0xEB, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x1A, 0x00, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFD, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF5, 0x3F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xD2, 0xFF, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0x43, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0x07, 0xFD, 0x0F, 0x00, + 0x00, 0x00, 0xFF, 0x0B, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0xD0, 0xFF, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xFC, 0x3F, + 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0x40, + 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xF4, 0x3F, + 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x40, 0xFF, 0x03, 0x80, + 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x3F, 0x00, + // Unicode: [0x0035, five] + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, + 0x40, 0xBA, 0x1A, 0x00, 0x80, 0xFF, 0x82, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, 0x6F, 0xFF, 0xFF, 0xFF, + 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, + 0xFF, 0x06, 0xE4, 0xFF, 0x1F, 0xF8, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0x83, 0xFF, 0x0F, 0x00, 0x00, + 0xF8, 0x7F, 0xF8, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x4B, 0xAA, 0x02, 0x00, 0x00, 0xF0, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x9F, + 0xAA, 0x01, 0x00, 0x00, 0xF0, 0xBF, 0xFC, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x87, 0xFF, 0x07, 0x00, + 0x00, 0xF8, 0x3F, 0xF4, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x02, 0xFE, 0xBF, 0x01, 0x90, 0xFF, 0x1F, + 0xC0, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x16, 0x00, + 0x00, + // Unicode: [0x0036, six] + 0x00, 0x00, 0xE4, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xEB, 0xFF, 0x3F, + 0x00, 0xF8, 0xFF, 0x01, 0x90, 0xFF, 0x0B, 0xD0, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0x00, 0xFE, 0x0B, + 0x00, 0x00, 0xFC, 0x1F, 0xF0, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x42, 0xFF, 0x02, 0x00, 0x00, 0x50, + 0x15, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0xFC, 0x0B, 0xF9, 0xFF, 0xFF, + 0x02, 0xD0, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xEB, 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, 0x1F, 0x00, 0xF9, 0xFF, 0xD2, 0xFF, 0x2F, 0x00, 0x00, + 0xFE, 0x3F, 0xFD, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0xBF, 0xFC, + 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xCB, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFC, 0x1F, 0x00, 0x00, + 0x00, 0xFE, 0x8F, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x4F, + 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xBF, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xFE, 0x0B, 0x00, + 0x00, 0xF8, 0x7F, 0xD0, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0x03, 0xF8, 0xBF, 0x01, 0x90, 0xFF, 0x1F, + 0x40, 0xFF, 0xFF, 0xEB, 0xFF, 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xF4, 0xFF, + 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x1A, 0x00, + 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0x00, 0xF9, 0xBF, 0x06, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0xFA, 0xFF, 0x7F, + 0x00, 0xFF, 0x7F, 0x00, 0xD0, 0xFF, 0x0F, 0xF4, 0xFF, 0x00, 0x00, 0xF0, 0xFF, 0x81, 0xFF, 0x07, + 0x00, 0x00, 0xFD, 0x2F, 0xFC, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xC3, 0xFF, 0x02, 0x00, 0x00, 0xF8, + 0x3F, 0xFC, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xC3, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x2F, 0xF8, 0x3F, + 0x00, 0x00, 0xC0, 0xFF, 0x42, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x01, 0x00, 0xF4, + 0xBF, 0x00, 0xFC, 0xBF, 0x01, 0xE4, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0xFF, 0x02, 0xE0, 0xFF, 0x6F, 0x95, 0xFF, 0xBF, 0x40, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0x1F, 0xFC, + 0x3F, 0x00, 0x00, 0xD0, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x0F, 0x00, 0x00, + 0x00, 0xFF, 0xFB, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, + 0x00, 0xF4, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xC7, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0x3F, + 0xF4, 0xFF, 0x06, 0x00, 0xFD, 0xFF, 0x01, 0xFE, 0xFF, 0xAF, 0xFF, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xBF, 0x01, + 0x00, 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, + // Unicode: [0x0039, nine] + 0x00, 0x40, 0xFA, 0xAF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0xBF, 0xFE, 0xFF, 0x0B, 0xE0, + 0xFF, 0x1B, 0x00, 0xFE, 0x7F, 0xC0, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x42, 0xFF, 0x0B, 0x00, 0x00, + 0xFD, 0x0F, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0x7F, 0xFC, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0xF2, 0x7F, + 0x00, 0x00, 0x00, 0xFD, 0xCF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x3F, 0xFF, 0x07, 0x00, 0x00, 0xC0, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xF7, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x9F, 0xFF, 0x03, + 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0xF1, 0xFF, 0x02, 0x00, 0xF4, 0xFF, + 0x87, 0xFF, 0x7F, 0x01, 0xF9, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0x01, 0xF8, 0xFF, 0xFF, 0x7F, 0xFD, 0x07, 0x40, 0xFF, 0xFF, 0x2F, 0xF8, 0x1F, + 0x00, 0x50, 0xAA, 0x06, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0xAA, 0x02, 0x00, 0x00, 0xF4, 0x2F, 0xFC, + 0x1F, 0x00, 0x00, 0xE0, 0x7F, 0xE0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x41, 0xFF, 0x0B, 0x00, 0x80, + 0xFF, 0x02, 0xFC, 0xBF, 0x01, 0xD0, 0xFF, 0x07, 0xD0, 0xFF, 0xBF, 0xFA, 0xFF, 0x0B, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x40, 0xFA, 0xBF, 0x01, 0x00, 0x00, + // Unicode: [0x003A, colon] + 0xE0, 0x0B, 0xFC, 0x3F, 0xFD, 0x7F, 0xFE, 0xBF, 0xFD, 0xBF, 0xFC, 0x7F, 0xF4, 0x1F, 0x40, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xF4, 0x1F, 0xFC, 0x3F, 0xFD, 0xBF, + 0xFE, 0xBF, 0xFD, 0x7F, 0xFC, 0x3F, 0xE0, 0x0B, + // Unicode: [0x003B, semicolon] + 0x00, 0xBE, 0x00, 0xF8, 0x3F, 0xD0, 0xFF, 0x0B, 0xFD, 0xBF, 0xD0, 0xFF, 0x0B, 0xFC, 0x7F, 0x40, + 0xFF, 0x01, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xAA, 0x40, 0xFF, 0x0B, 0xF4, 0x7F, 0x80, 0xFF, 0x03, 0xFC, + 0x1F, 0xD0, 0xFF, 0x00, 0xFD, 0x0B, 0xE0, 0x3F, 0x00, 0xFF, 0x02, 0xF4, 0x1F, 0x80, 0xBF, 0x00, + 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xFD, 0x02, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x00, 0x80, 0xAA, 0x1A, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, + 0xF8, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x1F, + 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x80, + 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0xBF, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x01, + // Unicode: [0x003D, equal] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + 0xAA, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + // Unicode: [0x003E, greater] + 0xAA, 0x2A, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xFF, + 0x00, 0x00, 0x40, 0xFF, 0x3F, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x00, + 0x00, 0xFD, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0x00, 0xF0, + 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x1F, 0x00, + 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x1F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x80, 0xFF, + 0x1F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, + // Unicode: [0x003F, question] + 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0x02, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF4, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0xFF, 0x6F, 0x00, + 0xF8, 0xFF, 0xD1, 0xFF, 0x02, 0x00, 0xF4, 0xBF, 0xF8, 0x3F, 0x00, 0x00, 0xF8, 0x3F, 0xFF, 0x0B, + 0x00, 0x00, 0xFD, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xE5, 0xFF, 0x0F, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xE0, 0xFF, + 0xAF, 0x01, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0x40, 0xBE, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0x6B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xFF, 0x16, 0x00, 0xA5, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x6F, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, + 0xD0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0x01, 0x80, 0xFF, 0x02, 0x00, 0xE4, 0xBF, 0x41, 0xAA, 0x01, 0xFD, 0x0B, 0x40, 0xFF, 0x03, 0x00, + 0xFE, 0xFF, 0x2F, 0xFE, 0x07, 0xE0, 0x3F, 0x00, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0xFE, 0x0F, + 0x80, 0xFF, 0x01, 0xFD, 0x0B, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFD, 0x07, 0xFC, 0x0F, + 0x40, 0xFF, 0xBF, 0xE5, 0xFF, 0xBF, 0x00, 0xF0, 0x2F, 0xF4, 0x1F, 0x00, 0xFE, 0x2F, 0x00, 0xF8, + 0xFF, 0x02, 0xC0, 0xBF, 0xE0, 0x3F, 0x00, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xFF, 0xC2, + 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xFC, 0x4B, 0xFF, 0x01, 0xF4, 0x3F, 0x00, + 0x00, 0xF0, 0x3F, 0x00, 0xF0, 0x2F, 0xFE, 0x03, 0xE0, 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC0, + 0xBF, 0xFC, 0x0B, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0xF1, 0x2F, 0x40, 0xFF, + 0x03, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0xFD, 0xD7, 0x7F, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xF4, 0x1F, + 0x00, 0xF8, 0x4F, 0xFF, 0x01, 0xF4, 0x3F, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0x2F, 0xFD, 0x07, + 0xD0, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0xC0, 0x7F, 0xF4, 0x1F, 0x40, 0xFF, 0x03, 0x00, 0x80, + 0xFF, 0x03, 0x80, 0xFF, 0xD0, 0x7F, 0x00, 0xFD, 0x2F, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0xFF, 0x42, + 0xFF, 0x01, 0xF0, 0xFF, 0x01, 0x80, 0xFF, 0x3F, 0x00, 0xFE, 0x03, 0xFD, 0x07, 0x80, 0xFF, 0x6F, + 0xE5, 0xFF, 0xFF, 0x01, 0xFE, 0x07, 0xF4, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, + 0x0B, 0xC0, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0xBF, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0xFE, 0x03, 0x00, + 0xFD, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x07, 0x00, 0xF4, 0x2F, 0x00, 0x40, 0xFE, 0x1B, 0x00, 0xA0, + 0xBF, 0x01, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x16, + 0x00, 0xA5, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFA, 0xFF, 0x1A, 0x00, + 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0x3F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x8B, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0x0B, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0x3F, + 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x80, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x00, + 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0xF8, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xD0, + 0xFF, 0x02, 0x00, 0xFD, 0xBF, 0xAA, 0xAA, 0xFA, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x1F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x03, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x81, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, + 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x9F, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFB, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, + // Unicode: [0x0042, B] + 0xFD, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xAF, 0xAA, 0xEA, 0xFF, 0xFF, + 0xD0, 0xFF, 0x01, 0x00, 0x90, 0xFF, 0x1F, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xD3, 0xFF, 0x01, + 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xF8, + 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x3F, 0xFD, 0x1F, + 0x00, 0x00, 0xD0, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x0F, 0xFD, 0x1F, 0x00, 0x40, 0xFE, + 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xD0, 0xFF, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xAA, 0xAA, 0xFA, + 0xFF, 0x07, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x3F, 0xFD, + 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xDF, + 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xDB, 0xFF, 0x01, 0x00, + 0x40, 0xFF, 0x7F, 0xFD, 0xAF, 0xAA, 0xAA, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0x6B, 0x00, 0x00, + // Unicode: [0x0043, C] + 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x6F, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0xBF, 0x05, 0x90, + 0xFF, 0xFF, 0x02, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xFC, 0xFF, 0x01, 0x00, + 0x00, 0xD0, 0xFF, 0x1F, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x43, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0x7F, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0xC5, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x55, 0x45, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0xE0, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x40, 0xFF, + 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0xBF, 0x01, 0x90, 0xFF, 0xFF, 0x02, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x6F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, + // Unicode: [0x0044, D] + 0xFD, 0xFF, 0xFF, 0xBF, 0x06, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xD0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, + 0xAF, 0xAA, 0xFA, 0xFF, 0xFF, 0x07, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFE, 0xFF, 0x07, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x41, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xD0, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0xFC, 0x7F, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x4F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xD3, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xF5, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0xF5, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x5F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x47, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, + 0x1F, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x7F, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFE, 0xFF, 0x07, 0xD0, 0xFF, 0xAA, 0xAA, 0xFE, 0xFF, 0x7F, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xAF, 0xAA, 0xAA, 0xAA, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, + 0xAF, 0xAA, 0xAA, 0x1A, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xAF, 0xAA, 0xAA, 0xAA, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + // Unicode: [0x0046, F] + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xAF, 0xAA, 0xAA, 0xAA, 0xD2, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0F, 0xD0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0F, 0xD0, 0xFF, 0xAA, 0xAA, 0xAA, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0x00, + // Unicode: [0x0047, G] + 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xBF, 0x01, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xFF, 0x5B, + 0x95, 0xFE, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0x1B, 0x00, 0x00, 0xF9, 0xFF, 0x0B, 0x00, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0xFD, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x81, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0xA9, 0xAA, 0xAA, 0xAA, 0x6A, 0xFF, 0x0B, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xBF, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xAF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xD7, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xF1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x3F, 0xF8, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0xFD, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x80, 0xFF, + 0xFF, 0x56, 0x54, 0xFE, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFE, 0xAF, 0x01, + 0x00, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xFD, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x6F, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0x7F, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xFF, 0xAB, 0xAA, 0xAA, 0xAA, 0xFA, + 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, + 0x6F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, + 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x2F, + // Unicode: [0x0049, I] + 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, + 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, + 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, + 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0x01, + // Unicode: [0x004A, J] + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x2F, + 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0xFA, 0x3F, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0xFD, 0xAF, 0xFF, 0x07, + 0x00, 0xF8, 0x7F, 0xFD, 0x3F, 0x00, 0xF4, 0xFF, 0xF0, 0xFF, 0x07, 0xF4, 0xFF, 0x42, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, + 0xFF, 0x07, 0x00, 0x00, 0xF9, 0xAF, 0x01, 0x00, + // Unicode: [0x004B, K] + 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0x01, + 0x00, 0x40, 0xFF, 0x3F, 0xF4, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0x03, 0xFD, 0x1F, 0x00, 0x00, 0xFE, + 0x7F, 0x40, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x07, 0xD0, 0xFF, 0x01, 0x00, 0xFE, 0x7F, 0x00, 0xF4, + 0x7F, 0x00, 0xD0, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0x00, 0xFD, 0xBF, 0x00, 0x40, 0xFF, 0x07, 0xC0, + 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x01, 0xFC, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0x80, 0xFF, 0x1F, 0x00, + 0x00, 0xFD, 0x1F, 0xF8, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x47, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, + 0xF5, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xBF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0xF4, 0xBF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0x9F, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x87, + 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x81, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xC0, 0xFF, 0x1F, + 0x00, 0x00, 0xFD, 0x1F, 0xD0, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0x07, 0xD0, 0xFF, 0x0F, 0x00, 0xD0, + 0xFF, 0x01, 0xD0, 0xFF, 0x0B, 0x00, 0xF4, 0x7F, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0x00, + 0xE0, 0xFF, 0x0B, 0x40, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x0B, 0xD0, 0xFF, 0x01, 0x00, 0xF0, 0xFF, + 0x07, 0xF4, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x47, 0xFF, + 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0x03, + // Unicode: [0x004C, L] + 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, + 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, + 0xAA, 0xAA, 0xAA, 0xF4, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + // Unicode: [0x004D, M] + 0xFD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xD7, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0x7F, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xD7, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0x7F, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xD7, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xD7, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0xFD, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x7F, 0xFD, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xD7, 0xFF, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, + 0xFB, 0x7F, 0xFD, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0x7F, 0xFF, 0xD7, 0xFF, 0xF5, 0x3F, 0x00, + 0x00, 0x80, 0xFF, 0xF6, 0x7F, 0xFD, 0x1F, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x4F, 0xFF, 0xD7, 0xFF, + 0xE1, 0xBF, 0x00, 0x00, 0xE0, 0xBF, 0xF4, 0x7F, 0xFD, 0x1F, 0xFC, 0x1F, 0x00, 0x00, 0xFF, 0x47, + 0xFF, 0xD7, 0xFF, 0x81, 0xFF, 0x02, 0x00, 0xF8, 0x2F, 0xF4, 0x7F, 0xFD, 0x1F, 0xF4, 0x3F, 0x00, + 0xC0, 0xFF, 0x41, 0xFF, 0xD7, 0xFF, 0x01, 0xFE, 0x0B, 0x00, 0xFD, 0x0F, 0xF4, 0x7F, 0xFD, 0x1F, + 0xD0, 0xFF, 0x00, 0xE0, 0x7F, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0xFC, 0x1F, 0x40, 0xFF, 0x03, 0xF4, + 0x7F, 0xFD, 0x1F, 0x40, 0xFF, 0x03, 0xF8, 0x2F, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0xF0, 0x7F, 0xC0, + 0xFF, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xFE, 0x0B, 0xFE, 0x0B, 0x40, 0xFF, 0xD7, 0xFF, 0x01, + 0xC0, 0xFF, 0xF1, 0x7F, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xF8, 0x6F, 0xFF, 0x02, 0x40, 0xFF, + 0xD7, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, + 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, + 0xC0, 0xFF, 0x3F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xBF, 0x00, + 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x40, 0xFF, 0x07, + // Unicode: [0x004E, N] + 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, + 0xFF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0xFF, + 0x07, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0xFF, 0x2F, + 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0xFF, 0xFF, 0x00, + 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0xFE, 0x2F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x9F, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0xD7, 0xFF, 0xE1, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0xFD, 0x2F, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0x81, 0xFF, 0x07, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0xF0, 0xFF, 0x00, 0x40, 0xFF, + 0xD7, 0xFF, 0x01, 0xFD, 0x2F, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x80, 0xFF, 0x07, 0x40, 0xFF, 0xD7, + 0xFF, 0x01, 0xF0, 0xFF, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xFD, 0x2F, 0x40, 0xFF, 0xD7, 0xFF, + 0x01, 0x80, 0xFF, 0x07, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xF0, 0xFF, 0x40, 0xFF, 0xD7, 0xFF, 0x01, + 0x00, 0xFD, 0x2F, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0x47, 0xFF, 0xD7, 0xFF, 0x01, 0x00, + 0xF0, 0xFF, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x80, + 0xFF, 0xFB, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xFD, + 0xFF, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, + 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0x7F, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, + // Unicode: [0x004F, O] + 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, + 0x5B, 0x00, 0xF9, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xC0, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x03, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0B, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0x0F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFD, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0x7F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xFE, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFC, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0x0F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0B, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x03, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0x00, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x1B, 0x00, 0xF9, 0xFF, 0x2F, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, + // Unicode: [0x0050, P] + 0xFD, 0xFF, 0xFF, 0xBF, 0x06, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xAF, 0xAA, 0xEA, 0xFF, 0x7F, 0xF4, + 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x5F, 0xFF, 0x07, 0x00, 0x00, + 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xDF, 0xFF, + 0x01, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xC0, + 0xFF, 0xF7, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x5F, 0xFF, 0x07, + 0x00, 0x40, 0xFF, 0x2F, 0xFD, 0xAF, 0xAA, 0xEA, 0xFF, 0x7F, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, + 0xBF, 0x06, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, + 0x5B, 0x00, 0xF9, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xC0, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x03, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0B, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0x0F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFD, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0x7F, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xFE, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xFC, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0x0F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x03, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0x00, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x1B, 0x00, 0xF9, 0xFF, 0x2F, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0xEA, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x7F, + // Unicode: [0x0052, R] + 0xFD, 0xFF, 0xFF, 0xBF, 0x06, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xAF, 0xAA, 0xEA, 0xFF, 0x7F, + 0xD0, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0x0B, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0xD1, 0xFF, 0x01, + 0x00, 0x00, 0xFD, 0x2F, 0xFD, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xFC, + 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x1F, + 0x00, 0x00, 0xC0, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x2F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, + 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0x0B, 0xFD, 0xAF, 0xAA, 0xEA, 0xFF, 0x7F, 0xD0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0B, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x01, 0xFC, 0xBF, 0x00, 0x00, 0xFD, + 0x1F, 0x40, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0xE0, 0xFF, 0x02, 0x00, 0xFD, 0x1F, 0x00, 0xFD, + 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x80, 0xFF, 0x0F, 0x00, 0xFD, 0x1F, 0x00, 0xF0, 0xFF, 0x02, 0xD0, + 0xFF, 0x01, 0x00, 0xFD, 0x3F, 0x00, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0x0B, 0xD0, 0xFF, 0x01, 0x00, + 0xF4, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x3F, 0xD0, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0x0B, + 0xFD, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x2F, 0xFD, 0x1F, 0x00, + 0x00, 0xD0, 0xFF, 0x07, + // Unicode: [0x0053, S] + 0x00, 0x40, 0xFA, 0xAF, 0x01, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, + 0xFF, 0x07, 0x40, 0xFF, 0xBF, 0xD0, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x83, 0xFF, 0x07, 0x00, 0x00, + 0xFF, 0x1F, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xBF, 0xFC, 0x2F, 0x00, 0x00, 0x50, 0x55, 0xF1, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0x1B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xE4, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xA9, 0x2A, 0x00, 0x00, + 0x80, 0xFF, 0xF3, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x8F, 0xFF, 0x0B, 0x00, 0x00, 0xFC, 0x2F, 0xFD, + 0xBF, 0x00, 0x00, 0xF8, 0x7F, 0xF0, 0xFF, 0x1B, 0x00, 0xFD, 0xFF, 0x40, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFF, 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xE0, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x1B, 0x00, 0x00, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xAA, 0xAA, 0xFE, 0xBF, 0xAA, 0xAA, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, + // Unicode: [0x0055, U] + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFC, + 0x3F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xF4, 0xFF, 0x00, + 0x00, 0x00, 0xFE, 0x2F, 0xF0, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x1F, 0xD0, 0xFF, 0x6F, 0x00, 0xF5, + 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, + 0xA4, 0xFF, 0x1B, 0x00, 0x00, + // Unicode: [0x0056, V] + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF6, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0xC3, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x1F, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, + 0xBF, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x03, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, + 0xC0, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x2F, 0x00, + 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0x07, + 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, + 0x2F, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x87, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x2F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFE, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, + 0x00, + // Unicode: [0x0057, W] + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFE, 0x1F, 0x00, 0x00, + 0x00, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, + 0x00, 0x00, 0xF8, 0x7F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x3F, + 0xF8, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0x2F, 0xF8, 0x7F, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0x1F, 0xF4, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, + 0x00, 0x00, 0xFE, 0x0F, 0xF0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0x0B, + 0xE0, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x07, 0xD0, 0xFF, 0x01, 0x00, + 0xE0, 0xBF, 0xFE, 0x0F, 0x00, 0x80, 0xFF, 0x07, 0xC0, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFE, 0x0F, + 0x00, 0x80, 0xFF, 0x03, 0x80, 0xFF, 0x03, 0x00, 0xF0, 0x3F, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0x02, + 0x80, 0xFF, 0x03, 0x00, 0xF4, 0x2F, 0xFC, 0x2F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, + 0xF8, 0x1F, 0xF8, 0x3F, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0xFC, 0x1F, 0xF4, 0x3F, + 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xFD, 0x0F, 0xF0, 0x7F, 0x00, 0xF0, 0x7F, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0xFE, 0x0B, 0xF0, 0xBF, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xFC, 0x1F, 0x00, + 0xFE, 0x07, 0xE0, 0xFF, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0x03, 0xD0, 0xFF, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x3F, 0x40, 0xFF, 0x02, 0xC0, 0xFF, 0x01, 0xFC, 0x1F, 0x00, + 0x00, 0xF4, 0x7F, 0x80, 0xFF, 0x01, 0x80, 0xFF, 0x02, 0xFD, 0x0F, 0x00, 0x00, 0xF0, 0x7F, 0xC0, + 0xFF, 0x00, 0x40, 0xFF, 0x03, 0xFE, 0x0B, 0x00, 0x00, 0xE0, 0xBF, 0xC0, 0xFF, 0x00, 0x40, 0xFF, + 0x03, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xD0, 0xBF, 0x00, 0x00, 0xFF, 0x07, 0xFF, 0x03, 0x00, + 0x00, 0xC0, 0xFF, 0xE1, 0x7F, 0x00, 0x00, 0xFE, 0x4B, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xF1, + 0x3F, 0x00, 0x00, 0xFD, 0x8F, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xF6, 0x2F, 0x00, 0x00, 0xFC, + 0xDF, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFB, 0x1F, 0x00, 0x00, 0xF8, 0xEF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xF0, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0x02, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0xC0, + 0xFF, 0x0F, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xE1, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0xFF, + 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0xF4, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x0B, + 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x03, 0x00, + 0xFE, 0x2F, 0x00, 0x00, 0xFF, 0x2F, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0x00, 0xF8, 0x7F, + 0x00, 0x00, 0x80, 0xFF, 0x0B, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0xF0, 0xFF, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0xFE, 0x2F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xF2, 0xFF, 0x01, 0x00, 0x00, 0xC0, + 0xFF, 0x43, 0xFF, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0x07, 0xF8, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x0B, + 0xD0, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0xF0, + 0xFF, 0x01, 0x00, 0xFC, 0x3F, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0xF8, 0xBF, + 0x00, 0xF4, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0xF0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x3F, 0xE0, + 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xC2, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0x1F, + // Unicode: [0x0059, Y] + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xF5, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xC2, 0xFF, + 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0xFD, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0xF0, 0xFF, 0x01, + 0x00, 0x00, 0xFF, 0x1F, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0xFC, 0x3F, 0x00, 0x00, + 0xFC, 0x3F, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0xE0, 0xFF, + 0x00, 0x00, 0xF4, 0xBF, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0x03, 0x80, 0xFF, 0x03, 0x00, + 0x00, 0xFD, 0x1F, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xF1, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, + // Unicode: [0x005B, bracketleft] + 0xFE, 0xFF, 0xAF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, 0xFE, 0xAF, 0xAA, 0xFF, 0x02, + 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, + 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, + 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, + 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, + 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, + 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, + 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, + 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0xBF, 0xAA, 0xFE, + 0xFF, 0xAF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, + // Unicode: [0x005C, backslash] + 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xE0, + 0xBF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, + 0x3F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, + 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, + 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xBF, + // Unicode: [0x005D, bracketright] + 0xFE, 0xFF, 0xAF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, 0xA9, 0xFE, 0x2F, 0x00, 0xFE, + 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, + 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, + 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, + 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, + 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, + 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, + 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, + 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0xA6, 0xFA, 0xBF, 0xFE, + 0xFF, 0xAF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, + // Unicode: [0x005E, asciicircum] + 0x00, 0x00, 0x40, 0xAA, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xCF, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xF4, 0xBF, 0x00, 0x00, + 0x00, 0xF4, 0xBF, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0xF0, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0x0B, + 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xFC, 0x3F, 0x00, 0x40, + 0xFF, 0x0B, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xD0, 0xFF, + 0x02, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0x0F, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0x7F, 0x40, + 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFC, 0x2F, + 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xF7, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x2F, + // Unicode: [0x005F, underscore] + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + // Unicode: [0x0060, grave] + 0x05, 0x00, 0x00, 0x2E, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xFE, 0x1F, 0x00, 0xFE, 0xFF, 0x01, 0xF8, + 0xFF, 0x1B, 0x80, 0xFF, 0x7F, 0x00, 0xF8, 0xBF, 0x00, 0x80, 0xBF, 0x00, 0x00, 0xB4, 0x00, 0x00, + 0x40, + // Unicode: [0x0061, a] + 0x00, 0x00, 0xE9, 0xBF, 0x06, 0xE0, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, + 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFE, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFE, 0x2F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xF8, 0xFF, 0x01, 0x00, + 0x00, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0x00, 0x00, 0xE9, + 0xBF, 0x01, 0xE0, 0xFF, + // Unicode: [0x0062, b] + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0xE9, 0xBF, 0x06, 0x00, 0xD0, 0xFF, 0x41, 0xFE, 0xFF, 0xFF, 0x01, 0x40, + 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF4, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0x42, 0xFF, 0xFF, 0x07, + 0x00, 0xD0, 0xFF, 0x1F, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xBF, 0xF4, 0xFF, 0x03, 0x00, 0x00, + 0xD0, 0xFF, 0xD3, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0x5F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF4, + 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF6, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDF, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x2F, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0xFD, 0x6F, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0xFD, 0xFF, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xFF, + 0x43, 0xFF, 0xFF, 0x6F, 0x00, 0xFD, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF4, + 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0xD0, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0x0B, 0x40, 0xFF, 0x07, + 0xF9, 0xFF, 0xFF, 0x06, 0x00, 0xFD, 0x1F, 0x40, 0xFA, 0xAF, 0x01, 0x00, 0x00, + // Unicode: [0x0063, c] + 0x00, 0x00, 0xE9, 0xFF, 0x16, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x0B, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, + 0x00, 0xFE, 0xBF, 0x01, 0xD0, 0xFF, 0x2F, 0xF4, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0xC3, 0xFF, 0x0B, + 0x00, 0x00, 0xFC, 0xBF, 0xFD, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xEF, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, + 0xF4, 0xFF, 0xF8, 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0x47, 0xFF, 0x2F, 0x00, 0x00, 0xFE, 0x3F, 0xE0, + 0xFF, 0x1B, 0x00, 0xFD, 0xFF, 0x01, 0xFC, 0xFF, 0xBF, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0x2F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xBF, 0x01, 0x00, + 0x00, 0x90, 0xFE, 0x6F, 0x00, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, + 0x00, 0xE9, 0xBF, 0x01, 0xE0, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x6F, 0xE0, 0xFF, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, + 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFE, 0x2F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x0F, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFE, 0x2F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xF8, 0xFF, 0x01, 0x00, 0x00, + 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0x00, 0x00, 0xE9, 0xBF, + 0x01, 0xE0, 0xFF, + // Unicode: [0x0065, e] + 0x00, 0x00, 0xE5, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x00, 0xF8, 0xFF, 0x06, 0x40, 0xFE, 0xBF, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0x7F, 0xF0, + 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x3F, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0x9F, 0xFF, 0x07, 0x00, + 0x00, 0x40, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFE, 0xBF, 0xAA, 0xAA, 0xAA, 0xFA, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xA8, 0x2A, 0xF8, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0xFD, 0xBF, + 0x00, 0x00, 0xF8, 0xFF, 0x01, 0xFE, 0xFF, 0x01, 0x90, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0xEF, 0xFF, + 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0xF9, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x90, 0xFF, 0x6B, 0x00, 0x00, + // Unicode: [0x0066, f] + 0x00, 0x00, 0x94, 0x0A, 0x00, 0xE0, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0x00, 0xF0, 0xFF, 0x3F, 0x00, + 0xFE, 0xFF, 0x0F, 0xC0, 0xFF, 0x1B, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x80, 0xFF, + 0x07, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0xF8, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xA9, 0xFF, 0xAF, 0x6A, 0x80, 0xFF, 0x07, 0x00, + 0xE0, 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, + 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, 0xFF, + 0x01, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x01, + 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x01, 0x00, + 0xF8, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xF8, + 0x7F, 0x00, 0x00, + // Unicode: [0x0067, g] + 0x00, 0x00, 0xE9, 0xBF, 0x05, 0xE0, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x6F, 0xE0, 0xFF, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, + 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFE, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFE, 0x2F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xF8, 0xFF, 0x01, 0x00, + 0x00, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0x00, 0x00, 0xE9, + 0xBF, 0x01, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xA4, 0x2A, 0x00, 0x00, 0x00, 0xF4, 0xBF, + 0xF8, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x3F, 0xF0, 0xFF, + 0x07, 0x00, 0x40, 0xFF, 0x2F, 0xD0, 0xFF, 0x6F, 0x00, 0xE4, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x7F, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x6B, 0x00, 0x00, + // Unicode: [0x0068, h] + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0xE4, 0xBF, 0x01, + 0x00, 0xFD, 0x1F, 0xF8, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xEF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, 0x5F, 0x40, 0xFE, + 0xFF, 0xD2, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0x3F, 0xFD, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0xD7, 0xFF, + 0x07, 0x00, 0x00, 0xF8, 0xBF, 0xFD, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x02, 0x00, 0x00, + 0xF0, 0xFF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, + 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, + 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, + 0x0F, + // Unicode: [0x0069, i] + 0x40, 0x01, 0xF8, 0x0B, 0xFD, 0x2F, 0xFF, 0x3F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFD, 0x2F, 0xE4, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, + 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, + 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, + 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, 0xFD, 0x1F, + // Unicode: [0x006A, j] + 0x00, 0x00, 0x05, 0x00, 0x80, 0xBF, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFF, 0x3F, 0x00, 0xFC, 0xFF, + 0x01, 0xE0, 0xFF, 0x03, 0x40, 0xFF, 0x0B, 0x00, 0xE4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, + 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, + 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, + 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, + 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, + 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, + 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, + 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0xD0, 0xFF, 0x47, 0xFA, 0xFF, 0x0F, 0xFD, 0xFF, 0x2F, 0xF4, + 0xFF, 0x3F, 0xD0, 0xFF, 0x2F, 0x40, 0xFF, 0x1B, 0x00, + // Unicode: [0x006B, k] + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFF, 0xBF, 0xFD, 0x1F, 0x00, 0x80, + 0xFF, 0x3F, 0xFD, 0x1F, 0x00, 0xE0, 0xFF, 0x0F, 0xFD, 0x1F, 0x00, 0xF4, 0xFF, 0x07, 0xFD, 0x1F, + 0x00, 0xFD, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0xFF, 0x7F, 0x00, 0xFD, 0x1F, 0x80, 0xFF, 0x1F, 0x00, + 0xFD, 0x1F, 0xE0, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0xF4, 0xFF, 0x02, 0x00, 0xFD, 0x1F, 0xFD, 0xBF, + 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xEF, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xEF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x2F, + 0x00, 0x00, 0xFD, 0x1F, 0xFD, 0xBF, 0x00, 0x00, 0xFD, 0x1F, 0xF8, 0xFF, 0x02, 0x00, 0xFD, 0x1F, + 0xE0, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0x80, 0xFF, 0x1F, 0x00, 0xFD, 0x1F, 0x00, 0xFF, 0x7F, 0x00, + 0xFD, 0x1F, 0x00, 0xFD, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0xF4, 0xFF, 0x07, 0xFD, 0x1F, 0x00, 0xD0, + 0xFF, 0x0F, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xBF, + // Unicode: [0x006C, l] + 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, + 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, + 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, + 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, + 0x1F, + // Unicode: [0x006D, m] + 0xFD, 0x1F, 0x90, 0xFE, 0x1B, 0x00, 0x00, 0x90, 0xFF, 0x1A, 0x00, 0xD0, 0xFF, 0x91, 0xFF, 0xFF, + 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0x1B, 0x00, 0xFD, 0x5F, 0xFF, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, + 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0x05, 0xE4, 0xFF, 0xFF, + 0xBF, 0x01, 0xE4, 0xFF, 0x0F, 0xFD, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0xF8, 0xFF, + 0xD1, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0x3F, 0xFD, 0x7F, 0x00, 0x00, + 0x80, 0xFF, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xD3, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, + 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, + 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, + 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, + 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, + 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, + 0xF4, 0x7F, + // Unicode: [0x006E, n] + 0xFD, 0x1F, 0x90, 0xFE, 0x1B, 0x00, 0xD0, 0xFF, 0x91, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0x5F, 0xFF, + 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD0, 0xFF, 0xFF, 0x05, 0xE4, 0xFF, 0x2F, 0xFD, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0xD3, 0xFF, 0x0F, + 0x00, 0x00, 0xFD, 0x7F, 0xFD, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xDB, 0xFF, 0x03, 0x00, 0x00, 0xF0, + 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0xDF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, + 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, + 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xDF, + 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, + // Unicode: [0x006F, o] + 0x00, 0x00, 0xA4, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0x07, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, + 0x0F, 0xF8, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x2F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xFD, 0x3F, 0xFD, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0xF0, 0xBF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x2F, + 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xFD, 0x3F, 0xF8, 0xBF, 0x00, 0x00, + 0x40, 0xFF, 0x2F, 0xF4, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x0F, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, + 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xE4, + 0xFF, 0x1A, 0x00, 0x00, + // Unicode: [0x0070, p] + 0xFD, 0x1F, 0x40, 0xFA, 0xAF, 0x01, 0x00, 0xF4, 0x7F, 0x90, 0xFF, 0xFF, 0x6F, 0x00, 0xD0, 0xFF, + 0xE1, 0xFF, 0xFF, 0xFF, 0x0B, 0x40, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x0B, 0xF4, 0xFF, 0xFF, 0x06, 0x90, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0x01, 0x00, + 0xF4, 0xFF, 0x47, 0xFF, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x2F, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0xF4, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x6F, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF6, 0xFF, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xDB, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFF, 0x5F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFE, + 0x3F, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xBF, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0xD0, + 0xFF, 0xFF, 0x1B, 0x40, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0x9F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF4, 0x7F, 0xF4, 0xFF, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0x01, 0xFE, + 0xFF, 0xBF, 0x01, 0x40, 0xFF, 0x07, 0x90, 0xFE, 0x6B, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x00, 0x00, 0xE9, 0xBF, 0x06, 0xE0, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x6F, 0xE0, 0xFF, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, + 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFE, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFE, 0x2F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xF8, 0xFF, 0x01, 0x00, + 0x00, 0xFF, 0xFF, 0xF4, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xFF, 0xE0, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0x00, 0x00, 0xE9, + 0xBF, 0x01, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + // Unicode: [0x0072, r] + 0xFD, 0x1F, 0x90, 0x6E, 0xFF, 0x07, 0xFE, 0xDB, 0xFF, 0xF1, 0xFF, 0xF6, 0xBF, 0xFF, 0xBF, 0xFD, + 0xFF, 0xFF, 0x6F, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xBF, 0x01, 0xF4, 0xFF, 0x07, 0x00, 0xFD, 0xBF, + 0x00, 0x40, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xFD, 0x2F, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x40, 0xFF, + 0x07, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0x00, 0x00, + // Unicode: [0x0073, s] + 0x00, 0x90, 0xFE, 0x6F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF4, 0xFF, 0xAF, 0xFF, 0xFF, 0x02, 0xFF, 0x6F, 0x00, + 0xF9, 0xFF, 0xC1, 0xFF, 0x02, 0x00, 0xF8, 0xBF, 0xF4, 0xBF, 0x00, 0x00, 0xFC, 0x2F, 0xFD, 0x2F, + 0x00, 0x00, 0xAA, 0x0A, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0xBF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x02, + 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE9, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFE, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xA8, 0x6A, 0x00, + 0x00, 0xF4, 0x7F, 0xFE, 0x2F, 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0xC3, 0xFF, + 0x2F, 0x00, 0xF9, 0xFF, 0xD0, 0xFF, 0xFF, 0xFE, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0xD0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF9, 0xBF, 0x06, + 0x00, + // Unicode: [0x0074, t] + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xA9, 0xFF, 0xAB, 0xAA, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xAA, 0x00, 0xFD, 0xFF, 0xFF, + 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x40, 0xFA, 0xFF, + // Unicode: [0x0075, u] + 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, + 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, + 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, + 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, + 0x00, 0x00, 0x00, 0xFF, 0xEB, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0x00, 0x00, + 0xFF, 0xEB, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0xFF, + 0x01, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0xCB, 0xFF, 0x03, 0x00, 0x00, + 0xFC, 0xBF, 0xFC, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x8B, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xBF, 0xF0, + 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0B, 0xE0, 0xFF, 0xFF, 0xFF, 0xF2, 0xBF, 0x00, 0xF4, 0xFF, 0xFF, 0x07, 0xFF, 0x0B, + 0x00, 0xA4, 0xFF, 0x06, 0xF0, 0xBF, + // Unicode: [0x0076, v] + 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xF8, 0x7F, + 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0xFD, 0x2F, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0xFF, + 0x0B, 0x80, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x07, 0x40, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0x03, 0x00, + 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xFE, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x2F, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0xD0, 0xFF, 0x01, 0xFE, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0xFF, 0x0B, 0x00, 0x00, 0x80, + 0xFF, 0x43, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0x87, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xCB, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x0F, 0x00, 0x00, + // Unicode: [0x0077, w] + 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0xF2, 0xBF, 0x00, 0x00, 0xD0, 0xFF, + 0x07, 0x00, 0x40, 0xFF, 0x87, 0xFF, 0x03, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0x0F, 0xFD, + 0x1F, 0x00, 0x00, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0x2F, 0xF0, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0x03, + 0x00, 0xF0, 0x7F, 0x80, 0xFF, 0x02, 0x00, 0xF8, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x00, 0xFE, 0x0F, + 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0x02, 0xF4, 0x7F, 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0x00, + 0xFE, 0x07, 0xC0, 0xFF, 0x01, 0x40, 0xFF, 0xFD, 0x0F, 0x00, 0xFC, 0x0F, 0x00, 0xFE, 0x0B, 0x00, + 0xFE, 0xE3, 0x7F, 0x00, 0xF4, 0x3F, 0x00, 0xF4, 0x3F, 0x00, 0xF8, 0x4B, 0xFF, 0x01, 0xE0, 0xBF, + 0x00, 0xC0, 0xFF, 0x01, 0xF0, 0x2F, 0xFD, 0x0B, 0x80, 0xFF, 0x01, 0x00, 0xFE, 0x07, 0xD0, 0x7F, + 0xF0, 0x3F, 0x00, 0xFF, 0x03, 0x00, 0xF4, 0x2F, 0x80, 0xFF, 0x80, 0xFF, 0x01, 0xFD, 0x0B, 0x00, + 0xC0, 0xFF, 0x00, 0xFF, 0x02, 0xFD, 0x07, 0xF8, 0x1F, 0x00, 0x00, 0xFE, 0x07, 0xFC, 0x07, 0xF0, + 0x2F, 0xE0, 0x3F, 0x00, 0x00, 0xF4, 0x2F, 0xF4, 0x1F, 0xC0, 0xFF, 0xC0, 0xBF, 0x00, 0x00, 0xC0, + 0xBF, 0xE0, 0x3F, 0x00, 0xFE, 0x47, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xC3, 0xBF, 0x00, 0xF4, 0x1F, + 0xFE, 0x03, 0x00, 0x00, 0xF8, 0x5F, 0xFF, 0x01, 0xC0, 0xBF, 0xF8, 0x0B, 0x00, 0x00, 0xD0, 0xBF, + 0xFD, 0x03, 0x00, 0xFE, 0xF3, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFA, 0x0F, 0x00, 0xF8, 0xEF, 0x7F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, + 0x40, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, + // Unicode: [0x0078, x] + 0xFD, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xF0, 0xFF, 0x02, 0x00, + 0xFC, 0x2F, 0xD0, 0xFF, 0x03, 0x00, 0xFE, 0x1F, 0x80, 0xFF, 0x0B, 0x00, 0xFF, 0x0B, 0x00, 0xFF, + 0x1F, 0x80, 0xFF, 0x03, 0x00, 0xFD, 0x3F, 0xD0, 0xFF, 0x01, 0x00, 0xF8, 0xBF, 0xF0, 0xBF, 0x00, + 0x00, 0xF4, 0xFF, 0xF9, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x0B, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFC, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0x3F, 0xF8, 0xBF, 0x00, 0x00, 0xFD, + 0x1F, 0xF0, 0xFF, 0x01, 0x00, 0xFF, 0x0B, 0xD0, 0xFF, 0x03, 0x80, 0xFF, 0x03, 0x80, 0xFF, 0x0B, + 0xD0, 0xFF, 0x02, 0x40, 0xFF, 0x1F, 0xF0, 0xFF, 0x00, 0x00, 0xFE, 0x3F, 0xF8, 0x7F, 0x00, 0x00, + 0xFC, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0xF4, 0xFF, + // Unicode: [0x0079, y] + 0xFD, 0x3F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xF1, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0x83, 0xFF, + 0x0B, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x01, + 0x00, 0x00, 0xFC, 0x2F, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFF, 0x0F, 0x00, 0x80, 0xFF, + 0x03, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0xFF, 0x0F, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0x7F, + 0x40, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFC, + 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xE3, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0xDF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, + 0xFF, 0xFF, 0xFF, 0x7F, 0xAA, 0xAA, 0xAA, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, + 0x80, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0x00, 0xF8, + 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0x0F, + 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, + 0x00, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0xD0, + 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0xBF, 0xAA, 0xAA, 0x6A, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, + // Unicode: [0x007B, braceleft] + 0x00, 0x00, 0xF9, 0x7F, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, + 0x00, 0xFC, 0xFF, 0x7F, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, + 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xFD, 0x0F, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFC, 0x1F, 0x00, + 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x40, 0xFF, 0x0F, 0x00, 0xE4, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFE, 0x6F, 0x00, 0x00, + 0xFE, 0x6F, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xE4, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x0F, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xFE, 0x0F, 0x00, + 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0xFC, 0xFF, 0x7F, + 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xF9, 0x7F, + // Unicode: [0x007C, bar] + 0xAA, 0xEA, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, + 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, + 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, + 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, + 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, + // Unicode: [0x007D, braceright] + 0xFE, 0x6F, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0x1F, 0x00, + 0xFD, 0xFF, 0x3F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xF8, 0x3F, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF8, 0x3F, 0x00, + 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0x1B, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0xF9, 0xBF, + 0x00, 0x00, 0xF9, 0xBF, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0x1B, 0x00, 0xF4, 0xBF, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF8, 0x2F, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xF4, 0x3F, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0xFD, 0xFF, 0x3F, 0x00, + 0xFE, 0xFF, 0x1F, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFE, 0x6F, 0x00, 0x00, + // Unicode: [0x007E, asciitilde] + 0x00, 0xF9, 0x2F, 0x00, 0x40, 0xBF, 0x80, 0xFF, 0xFF, 0x02, 0xC0, 0x7F, 0xF0, 0xFF, 0xFF, 0x6F, + 0xF4, 0x3F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0x0B, + 0xF9, 0xFF, 0xFF, 0x07, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0x01, 0xFF, 0x00, 0x00, 0xF9, 0x2B, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_4.cpp new file mode 100644 index 00000000..130d211b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Medium_50_2bpp_4.cpp @@ -0,0 +1,10 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_50_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x40, 0x01, 0x00, 0x14, 0x00, 0x40, 0x01, 0xF4, 0x1F, 0x40, 0xFF, 0x01, 0xF4, 0x1F, 0xFC, 0x3F, + 0xC0, 0xFF, 0x07, 0xFC, 0x7F, 0xFD, 0xBF, 0xD0, 0xFF, 0x0B, 0xFD, 0xBF, 0xFE, 0xBF, 0xE0, 0xFF, + 0x0B, 0xFD, 0xBF, 0xFD, 0x7F, 0xD0, 0xFF, 0x0B, 0xFD, 0xBF, 0xFC, 0x3F, 0x80, 0xFF, 0x03, 0xF8, + 0x3F, 0xE0, 0x0B, 0x00, 0xBE, 0x00, 0xE0, 0x1B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_0.cpp new file mode 100644 index 00000000..9f2fc6a6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_0.cpp @@ -0,0 +1,251 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_14_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xAA, 0xAA, 0xAA, 0x0A, 0xA9, + // Unicode: [0x0022, quotedbl] + 0x69, 0xA9, 0x59, + // Unicode: [0x0023, numbersign] + 0x00, 0x07, 0x0A, 0xC0, 0xC1, 0x01, 0x34, 0x30, 0xE0, 0xFF, 0xFF, 0x80, 0x82, 0x02, 0x60, 0xA0, + 0x00, 0x1C, 0x1C, 0xF8, 0xFF, 0x7F, 0xA0, 0xD0, 0x00, 0x28, 0x24, 0x00, 0x07, 0x0A, 0x00, + // Unicode: [0x0024, dollar] + 0x40, 0x00, 0x24, 0x80, 0x6F, 0x6C, 0x3A, 0x97, 0xC4, 0x25, 0xD0, 0x1B, 0x40, 0x2F, 0x90, 0x9D, + 0x25, 0xA7, 0xD9, 0xE0, 0x1B, 0x90, 0x00, + // Unicode: [0x0025, percent] + 0xA8, 0x80, 0x91, 0x24, 0x0D, 0x49, 0x72, 0x80, 0x4A, 0x02, 0x00, 0x1C, 0x00, 0xA0, 0x00, 0x40, + 0x93, 0x06, 0x28, 0xC3, 0xD0, 0x30, 0x0C, 0x07, 0x69, + // Unicode: [0x0026, ampersand] + 0x90, 0x1B, 0x00, 0x8B, 0x03, 0x70, 0x10, 0x00, 0x0D, 0x00, 0xF4, 0x02, 0xC5, 0xE1, 0x70, 0x0D, + 0xB8, 0xD2, 0x00, 0x1E, 0x6C, 0xB9, 0x42, 0xBE, 0xA1, + // Unicode: [0x0027, quotesingle] + 0x99, 0x09, + // Unicode: [0x0028, parenleft] + 0x80, 0x82, 0x42, 0x03, 0x0A, 0x1C, 0x34, 0xD0, 0x40, 0x02, 0x09, 0x34, 0xD0, 0x00, 0x07, 0x28, + 0xD0, 0x00, 0x0A, 0x70, + // Unicode: [0x0029, parenright] + 0x1D, 0xD0, 0x00, 0x0A, 0x34, 0xC0, 0x01, 0x0A, 0x28, 0x90, 0x40, 0x02, 0x0A, 0x28, 0x70, 0xD0, + 0x80, 0x42, 0x07, 0x07, + // Unicode: [0x002A, asterisk] + 0x30, 0x98, 0x89, 0x8B, 0xAA, 0x31, 0x41, 0x00, + // Unicode: [0x002B, plus] + 0x40, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xFE, 0x7F, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, + // Unicode: [0x002C, comma] + 0x5C, 0x62, 0x0C, + // Unicode: [0x002D, hyphen] + 0xFD, 0x1F, + // Unicode: [0x002E, period] + 0xD8, + // Unicode: [0x002F, slash] + 0x80, 0x02, 0x06, 0x1C, 0x34, 0xA0, 0x80, 0x02, 0x07, 0x0D, 0x24, 0xA0, 0xC0, 0x41, 0x03, 0x0D, + 0x28, 0x70, 0xC0, 0x00, + // Unicode: [0x0030, zero] + 0xF4, 0x46, 0x97, 0xA3, 0x80, 0x1E, 0x90, 0x03, 0xF4, 0x00, 0x3D, 0x40, 0x1F, 0x90, 0x0A, 0x68, + 0x97, 0x43, 0x6F, 0x00, + // Unicode: [0x0031, one] + 0x3D, 0x0D, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0x03, + // Unicode: [0x0032, two] + 0xE0, 0x0B, 0x68, 0x29, 0x1C, 0x34, 0x04, 0x30, 0x00, 0x34, 0x00, 0x2C, 0x00, 0x0E, 0x80, 0x07, + 0xE0, 0x01, 0x78, 0x00, 0xFD, 0x7F, + // Unicode: [0x0033, three] + 0xE0, 0x0B, 0x78, 0x29, 0x1C, 0x30, 0x00, 0x30, 0x00, 0x28, 0xC0, 0x0B, 0x00, 0x29, 0x00, 0x70, + 0x0D, 0x70, 0x68, 0x38, 0xE0, 0x1B, + // Unicode: [0x0034, four] + 0x00, 0x3C, 0x00, 0xF8, 0x00, 0x74, 0x03, 0x70, 0x0D, 0xA0, 0x34, 0xD0, 0xD0, 0xC0, 0x41, 0x43, + 0xFF, 0x7F, 0x00, 0x34, 0x00, 0xD0, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0x9F, 0x01, 0x60, 0x00, 0x18, 0x00, 0xEA, 0x87, 0x57, 0x57, 0x40, 0x03, 0xD0, 0x06, 0x64, + 0x47, 0x47, 0x7F, 0x00, + // Unicode: [0x0036, six] + 0xE4, 0x07, 0x47, 0xA7, 0x80, 0x19, 0x00, 0xE7, 0xC7, 0x57, 0x77, 0x40, 0x1B, 0xD0, 0x0A, 0x74, + 0x47, 0x4B, 0xBE, 0x00, + // Unicode: [0x0037, seven] + 0xFE, 0x3F, 0x00, 0x0D, 0x80, 0x02, 0x30, 0x00, 0x09, 0xC0, 0x01, 0x34, 0x00, 0x0A, 0xC0, 0x01, + 0x24, 0x00, 0x07, 0x00, + // Unicode: [0x0038, eight] + 0xF8, 0x87, 0x47, 0x77, 0x80, 0x1A, 0xA0, 0x1D, 0x1D, 0xFE, 0xA2, 0xD0, 0x0E, 0xD0, 0x07, 0xB4, + 0x46, 0x8B, 0x7F, 0x00, + // Unicode: [0x0039, nine] + 0xF4, 0x46, 0x47, 0x63, 0x80, 0x1E, 0x90, 0x07, 0xB8, 0x47, 0x8F, 0x7F, 0x03, 0x90, 0x09, 0x68, + 0x47, 0x47, 0x6F, 0x00, + // Unicode: [0x003A, colon] + 0x8D, 0x00, 0x00, 0xD8, + // Unicode: [0x003B, semicolon] + 0x1C, 0x06, 0x00, 0x00, 0x80, 0x32, 0x49, 0x01, + // Unicode: [0x003C, less] + 0x40, 0x81, 0x83, 0x83, 0x03, 0x2C, 0xC0, 0x02, 0x2C, + // Unicode: [0x003D, equal] + 0xFE, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, + // Unicode: [0x003E, greater] + 0x09, 0xE0, 0x00, 0x0E, 0xE0, 0xD0, 0xD1, 0xD1, 0x01, + // Unicode: [0x003F, question] + 0xE4, 0x07, 0x47, 0x97, 0x80, 0x02, 0xA0, 0x00, 0x1D, 0xBC, 0x01, 0x07, 0x00, 0x00, 0x60, 0x00, + 0x1C, 0x00, + // Unicode: [0x0040, at] + 0x00, 0xF9, 0x06, 0xD0, 0x02, 0x29, 0x34, 0x79, 0xA6, 0x5C, 0x87, 0xC3, 0x89, 0x41, 0xC3, 0xC6, + 0x40, 0xC2, 0xC3, 0x80, 0xD2, 0xC3, 0xD1, 0x62, 0x46, 0x2F, 0x2F, 0x09, 0x00, 0x00, 0x68, 0x40, + 0x00, 0x90, 0x6F, 0x00, + // Unicode: [0x0041, A] + 0x40, 0x0B, 0x00, 0x3E, 0x00, 0xEC, 0x01, 0x34, 0x0A, 0xA0, 0x34, 0xC0, 0xC1, 0x41, 0x03, 0x0A, + 0xFE, 0x3F, 0x1C, 0xC0, 0x35, 0x00, 0x0A, + // Unicode: [0x0042, B] + 0xFF, 0xCB, 0x41, 0x77, 0x80, 0x1E, 0x70, 0xFF, 0xCB, 0x41, 0x77, 0x40, 0x1E, 0xD0, 0x07, 0xED, + 0xFF, 0x02, + // Unicode: [0x0043, C] + 0x80, 0xBF, 0x00, 0x5B, 0x39, 0x28, 0x00, 0xCA, 0x01, 0x00, 0x0D, 0x00, 0xD0, 0x00, 0x00, 0x1C, + 0x00, 0x80, 0x02, 0xA0, 0xB0, 0x95, 0x03, 0xF8, 0x0B, + // Unicode: [0x0044, D] + 0xFF, 0x0B, 0x1C, 0xE4, 0x70, 0x00, 0xCA, 0x01, 0x34, 0x07, 0xC0, 0x1D, 0x00, 0x77, 0x00, 0xCD, + 0x01, 0x28, 0x07, 0x39, 0xFC, 0x2F, 0x00, + // Unicode: [0x0045, E] + 0xFF, 0x77, 0x00, 0x07, 0x70, 0x00, 0xFF, 0x73, 0x00, 0x07, 0x70, 0x00, 0x07, 0xF0, 0x7F, + // Unicode: [0x0046, F] + 0xFF, 0x7B, 0x00, 0x07, 0x70, 0x00, 0xFF, 0x72, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, + // Unicode: [0x0047, G] + 0x80, 0xBF, 0x00, 0x6C, 0xE5, 0x81, 0x02, 0xA0, 0x70, 0x00, 0x00, 0x0D, 0xFC, 0x5F, 0x03, 0x40, + 0xC7, 0x01, 0xD0, 0xA0, 0x00, 0x2C, 0xB0, 0xD5, 0x02, 0xE0, 0x1F, 0x00, + // Unicode: [0x0048, H] + 0x07, 0xA0, 0x07, 0xA0, 0x07, 0xA0, 0x07, 0xA0, 0xFF, 0xBF, 0x07, 0xA0, 0x07, 0xA0, 0x07, 0xA0, + 0x07, 0xA0, 0x07, 0xA0, + // Unicode: [0x0049, I] + 0x77, 0x77, 0x77, 0x77, 0x77, + // Unicode: [0x004A, J] + 0x00, 0x0D, 0xD0, 0x00, 0x0D, 0xD0, 0x00, 0x0D, 0xD0, 0x00, 0x9D, 0xD0, 0x5C, 0x4A, 0x2F, + // Unicode: [0x004B, K] + 0x07, 0xEC, 0xC1, 0x72, 0x28, 0x9C, 0x02, 0x3B, 0xC0, 0x0F, 0x70, 0x0E, 0x1C, 0x0A, 0x07, 0xCB, + 0x01, 0x0B, + // Unicode: [0x004C, L] + 0x07, 0x1C, 0x70, 0xC0, 0x01, 0x07, 0x1C, 0x70, 0xC0, 0x01, 0x07, 0xFC, 0x0B, + // Unicode: [0x004D, M] + 0x0B, 0x00, 0xFE, 0x00, 0xF0, 0x2F, 0x40, 0xBF, 0x03, 0xEC, 0x67, 0xD0, 0x7D, 0x09, 0xD6, 0xC7, + 0x35, 0x7D, 0xA4, 0xD2, 0x07, 0x0F, 0x7D, 0xA0, 0xD0, + // Unicode: [0x004E, N] + 0x0B, 0xA0, 0x1F, 0xA0, 0x3B, 0xA0, 0xA7, 0xA0, 0xC7, 0xA1, 0x47, 0xA3, 0x07, 0xAA, 0x07, 0xAC, + 0x07, 0xB4, 0x07, 0xA0, + // Unicode: [0x004F, O] + 0x80, 0xBF, 0x00, 0x6C, 0xE4, 0x80, 0x02, 0xA0, 0x70, 0x00, 0x74, 0x0D, 0x00, 0x5C, 0x03, 0x00, + 0xC7, 0x01, 0xD0, 0xA1, 0x00, 0x28, 0xB0, 0x91, 0x03, 0xE0, 0x2F, 0x00, + // Unicode: [0x0050, P] + 0xFF, 0xC6, 0x41, 0x77, 0x80, 0x1E, 0xA0, 0x07, 0xDD, 0xFF, 0x71, 0x00, 0x1C, 0x00, 0x07, 0xC0, + 0x01, 0x00, + // Unicode: [0x0051, Q] + 0x80, 0xBF, 0x00, 0x6C, 0xE4, 0x80, 0x02, 0xA0, 0x70, 0x00, 0x74, 0x0D, 0x00, 0x5C, 0x03, 0x00, + 0xC7, 0x01, 0xD0, 0xA0, 0x00, 0x28, 0xB0, 0x91, 0x03, 0xE0, 0x7F, 0x00, 0x00, 0x74, 0x00, 0x00, + 0x78, + // Unicode: [0x0052, R] + 0xFF, 0xC6, 0x41, 0x77, 0x80, 0x1E, 0xA0, 0x07, 0xDD, 0xFF, 0x71, 0x2C, 0x1C, 0x1D, 0x07, 0xCA, + 0x01, 0x07, + // Unicode: [0x0053, S] + 0xF8, 0x86, 0x96, 0x73, 0x80, 0x2C, 0x00, 0xAD, 0x01, 0xE4, 0x02, 0xD0, 0x19, 0x70, 0x1A, 0x0E, + 0xBE, 0x01, + // Unicode: [0x0054, T] + 0xFE, 0x3F, 0x70, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0x70, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, + 0x70, 0x00, + // Unicode: [0x0055, U] + 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x0A, 0x70, + 0x5D, 0x29, 0xE4, 0x0B, + // Unicode: [0x0056, V] + 0x0E, 0x40, 0x73, 0x00, 0x8A, 0x02, 0x1C, 0x0D, 0x34, 0x70, 0x60, 0x80, 0xC2, 0x00, 0x8D, 0x02, + 0x70, 0x07, 0x80, 0x0F, 0x00, 0x2D, 0x00, + // Unicode: [0x0057, W] + 0x0A, 0xB0, 0x00, 0xD7, 0x40, 0x0F, 0x34, 0x1C, 0xE8, 0x81, 0x82, 0x82, 0x29, 0x1C, 0x24, 0x4C, + 0xD2, 0x40, 0x93, 0x34, 0x09, 0x70, 0x06, 0xA7, 0x00, 0x7A, 0xA0, 0x07, 0xD0, 0x03, 0x3D, 0x00, + 0x2C, 0xC0, 0x02, + // Unicode: [0x0058, X] + 0x07, 0x68, 0x43, 0xC7, 0xA2, 0xD0, 0x0E, 0xE0, 0x01, 0x78, 0x40, 0x3B, 0x70, 0x2C, 0x0D, 0xDD, + 0x01, 0x0A, + // Unicode: [0x0059, Y] + 0x0D, 0xA0, 0x1C, 0x34, 0x34, 0x28, 0x70, 0x0D, 0x90, 0x0A, 0xC0, 0x03, 0x80, 0x02, 0x80, 0x02, + 0x80, 0x02, 0x80, 0x02, + // Unicode: [0x005A, Z] + 0xFD, 0x3F, 0x00, 0x0B, 0xD0, 0x00, 0x1C, 0x80, 0x02, 0x74, 0x00, 0x0B, 0xD0, 0x00, 0x1C, 0x40, + 0xFF, 0x0F, + // Unicode: [0x005B, bracketleft] + 0xDF, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x7C, + // Unicode: [0x005C, backslash] + 0x07, 0xA0, 0x00, 0x09, 0xD0, 0x00, 0x1C, 0x80, 0x02, 0x34, 0x00, 0x03, 0x70, 0x00, 0x0A, 0xD0, + 0x00, 0x1C, 0x80, 0x02, 0x24, 0x40, 0x03, 0x70, + // Unicode: [0x005D, bracketright] + 0x3D, 0x0D, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xC3, 0x30, 0x0C, 0xF7, + // Unicode: [0x005E, asciicircum] + 0x00, 0x02, 0x80, 0x07, 0xC0, 0x0E, 0xA0, 0x1C, 0x70, 0x28, 0x34, 0x70, 0x18, 0xA0, 0x0D, 0xD0, + // Unicode: [0x005F, underscore] + 0xFE, 0xFF, 0x54, 0x55, + // Unicode: [0x0060, grave] + 0x06, 0x0A, + // Unicode: [0x0061, a] + 0xE0, 0xDB, 0xE1, 0xD5, 0xC7, 0x01, 0x5D, 0x03, 0x70, 0x0D, 0xC0, 0x71, 0x40, 0x87, 0x47, 0x1E, + 0xF8, 0x76, + // Unicode: [0x0062, b] + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0xE7, 0x1B, 0x6F, 0x39, 0x0B, 0xA0, 0x07, 0x90, 0x07, 0xA0, + 0x0B, 0xA0, 0x6F, 0x39, 0xE7, 0x1B, + // Unicode: [0x0063, c] + 0xE0, 0x1B, 0x78, 0x74, 0x1C, 0x50, 0x0D, 0x00, 0x0D, 0x00, 0x1C, 0x50, 0x78, 0x74, 0xE0, 0x1B, + // Unicode: [0x0064, d] + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0xF8, 0x76, 0x78, 0xF5, 0x71, 0x40, 0xD7, 0x00, 0x5C, + 0x03, 0x70, 0x1C, 0xD0, 0xE1, 0x91, 0x07, 0xBE, 0x1D, + // Unicode: [0x0065, e] + 0xE0, 0x1F, 0x68, 0x74, 0x0C, 0xD0, 0xFD, 0xFF, 0x0D, 0x00, 0x1C, 0x90, 0x78, 0x74, 0xE0, 0x1B, + // Unicode: [0x0066, f] + 0xE0, 0xE0, 0x81, 0x82, 0x7F, 0x28, 0xA0, 0x80, 0x02, 0x0A, 0x28, 0xA0, 0x80, 0x02, + // Unicode: [0x0067, g] + 0xE0, 0xDB, 0xE1, 0x91, 0xC7, 0x01, 0x5D, 0x03, 0x70, 0x0D, 0xC0, 0x71, 0x40, 0x87, 0x57, 0x1F, + 0xF8, 0x76, 0x00, 0xC0, 0x61, 0x40, 0x47, 0x47, 0x0B, 0xE4, 0x0B, + // Unicode: [0x0068, h] + 0x07, 0xC0, 0x01, 0x70, 0x00, 0x9C, 0x2F, 0x5F, 0xDD, 0x02, 0x7E, 0x40, 0x1F, 0xD0, 0x07, 0xF4, + 0x01, 0x7D, 0x40, 0x03, + // Unicode: [0x0069, i] + 0x67, 0x70, 0x77, 0x77, 0x77, 0x07, + // Unicode: [0x006A, j] + 0x70, 0x60, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x74, 0x2D, + // Unicode: [0x006B, k] + 0x07, 0x70, 0x00, 0x07, 0x70, 0xB0, 0xC7, 0x72, 0x0A, 0x3F, 0xF0, 0x03, 0xA7, 0x70, 0x2C, 0x07, + 0x0B, + // Unicode: [0x006C, l] + 0x77, 0x77, 0x77, 0x77, 0x77, 0x07, + // Unicode: [0x006D, m] + 0xE7, 0x4B, 0x6F, 0x7C, 0xB4, 0x82, 0xB3, 0x80, 0x03, 0xDC, 0x01, 0x0D, 0x70, 0x07, 0x34, 0xC0, + 0x1D, 0xD0, 0x00, 0x77, 0x40, 0x03, 0xDC, 0x01, 0x0D, 0x70, + // Unicode: [0x006E, n] + 0xEB, 0xCB, 0x47, 0xB7, 0x40, 0x1E, 0xD0, 0x07, 0xF4, 0x01, 0x7D, 0x40, 0x1F, 0xD0, + // Unicode: [0x006F, o] + 0xD0, 0x1F, 0xE0, 0xD5, 0xC2, 0x01, 0x4D, 0x03, 0x70, 0x0D, 0xC0, 0x71, 0x40, 0x83, 0x57, 0x0B, + 0xF4, 0x07, + // Unicode: [0x0070, p] + 0xE7, 0x1B, 0x6F, 0x39, 0x0B, 0xA0, 0x07, 0x90, 0x07, 0xA0, 0x0B, 0xA0, 0x6F, 0x39, 0xE7, 0x1B, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + // Unicode: [0x0071, q] + 0xE0, 0xDB, 0xE1, 0xD5, 0xC7, 0x01, 0x5D, 0x03, 0x70, 0x0D, 0xC0, 0x71, 0x40, 0x87, 0x57, 0x1F, + 0xF8, 0x76, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, + // Unicode: [0x0072, r] + 0xA7, 0x6F, 0x0B, 0x07, 0x07, 0x07, 0x07, 0x07, + // Unicode: [0x0073, s] + 0xF9, 0x71, 0x74, 0x07, 0xE5, 0x06, 0xE4, 0x13, 0xA0, 0x4B, 0x97, 0x2F, + // Unicode: [0x0074, t] + 0x28, 0xA0, 0xE0, 0x2F, 0x0A, 0x28, 0xA0, 0x80, 0x02, 0x0A, 0x28, 0x80, 0x0B, + // Unicode: [0x0075, u] + 0x07, 0xF4, 0x01, 0x7D, 0x40, 0x1F, 0xD0, 0x07, 0xF4, 0x01, 0xEE, 0xD1, 0xE3, 0xEB, + // Unicode: [0x0076, v] + 0x0A, 0x70, 0x0D, 0x34, 0x1C, 0x28, 0x28, 0x1C, 0x30, 0x0D, 0xA0, 0x0A, 0xD0, 0x07, 0xC0, 0x03, + // Unicode: [0x0077, w] + 0x0A, 0x2C, 0x70, 0x43, 0x0F, 0xCD, 0xA0, 0x83, 0x62, 0x9C, 0x71, 0x24, 0x93, 0x0C, 0x9D, 0x70, + 0x02, 0x1F, 0x7C, 0x80, 0x03, 0x0E, + // Unicode: [0x0078, x] + 0x0E, 0x1C, 0x8B, 0x42, 0x37, 0x80, 0x07, 0xE0, 0x01, 0xED, 0xC0, 0xA1, 0x28, 0x74, + // Unicode: [0x0079, y] + 0x0A, 0x60, 0x0D, 0x34, 0x1C, 0x28, 0x34, 0x1C, 0x70, 0x0D, 0xA0, 0x0A, 0xD0, 0x07, 0xC0, 0x02, + 0xC0, 0x01, 0xD0, 0x00, 0xA0, 0x00, 0x70, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0x0B, 0x70, 0x80, 0x02, 0x1D, 0xB0, 0x80, 0x03, 0x1D, 0xD0, 0xBF, + // Unicode: [0x007B, braceleft] + 0xE0, 0xD1, 0x41, 0x03, 0x0D, 0x34, 0xC0, 0x40, 0x43, 0x0B, 0x1D, 0xD0, 0x00, 0x03, 0x0D, 0x34, + 0xD0, 0x40, 0x03, 0xB8, + // Unicode: [0x007C, bar] + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x0A, + // Unicode: [0x007D, braceright] + 0x1B, 0x29, 0x24, 0x24, 0x28, 0x28, 0x28, 0xB4, 0xA0, 0x28, 0x28, 0x28, 0x24, 0x24, 0x28, 0x1F, + // Unicode: [0x007E, asciitilde] + 0xB8, 0x64, 0xE6, 0x07 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_4.cpp new file mode 100644 index 00000000..477f86aa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_14_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_14_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x48, 0x62, 0x8D, 0x72 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_0.cpp new file mode 100644 index 00000000..4d9c033a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_0.cpp @@ -0,0 +1,275 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_16_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x4D, 0xD3, 0x34, 0x4D, 0xD3, 0x34, 0x40, 0xD7, 0x01, + // Unicode: [0x0022, quotedbl] + 0x44, 0xDD, 0xDD, 0xC9, + // Unicode: [0x0023, numbersign] + 0x00, 0x0D, 0x34, 0x00, 0x34, 0xA0, 0x00, 0xA0, 0xC0, 0x01, 0xFE, 0xFF, 0xBF, 0x50, 0x57, 0x5E, + 0x00, 0x0D, 0x38, 0x00, 0x34, 0xA0, 0x00, 0xA0, 0xC0, 0x02, 0xFD, 0xFF, 0xBF, 0x50, 0x57, 0x5D, + 0x00, 0x0D, 0x38, 0x00, 0x38, 0xA0, 0x00, + // Unicode: [0x0024, dollar] + 0x80, 0x00, 0x80, 0x00, 0xF8, 0x0B, 0x9E, 0x2D, 0x8B, 0x24, 0x8B, 0x00, 0xAE, 0x00, 0xE4, 0x0B, + 0x80, 0x3D, 0x80, 0x74, 0x8A, 0x70, 0x9E, 0x39, 0xF4, 0x0B, 0x80, 0x00, 0x40, 0x00, + // Unicode: [0x0025, percent] + 0xF8, 0x02, 0x0A, 0x0D, 0x47, 0x03, 0x0D, 0xC7, 0x02, 0xF4, 0xD1, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x5D, 0x1E, 0x00, 0xCA, 0x71, 0x40, 0xC3, 0x60, 0xC0, 0xC1, 0x70, 0xA0, 0x40, + 0x2A, + // Unicode: [0x0026, ampersand] + 0x80, 0x2F, 0x00, 0xE0, 0xB5, 0x00, 0xA0, 0x50, 0x00, 0xD0, 0x01, 0x00, 0xD0, 0x07, 0x00, 0x78, + 0x1D, 0x28, 0x1D, 0x74, 0x1D, 0x0D, 0xD0, 0x0B, 0x1D, 0xC0, 0x07, 0x78, 0xF5, 0x1E, 0xE0, 0x2F, + 0x78, + // Unicode: [0x0027, quotesingle] + 0xD4, 0x9D, + // Unicode: [0x0028, parenleft] + 0x40, 0x07, 0x2C, 0xE0, 0x00, 0x07, 0x38, 0x80, 0x02, 0x1C, 0xC0, 0x01, 0x1D, 0xD0, 0x01, 0x1C, + 0xC0, 0x01, 0x2C, 0x80, 0x03, 0x74, 0x00, 0x0A, 0xD0, 0x01, 0x74, + // Unicode: [0x0029, parenright] + 0x1D, 0x40, 0x07, 0xE0, 0x00, 0x1C, 0x80, 0x02, 0x34, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x07, 0x70, 0x40, 0x03, 0x38, 0xC0, 0x02, 0x0E, 0x74, 0xC0, 0x02, + // Unicode: [0x002A, asterisk] + 0x60, 0x60, 0x56, 0xF9, 0x96, 0x6F, 0x66, 0x06, 0x06, + // Unicode: [0x002B, plus] + 0x00, 0x01, 0x00, 0x0D, 0x00, 0x34, 0x00, 0xD0, 0x00, 0xFE, 0xFF, 0x52, 0x5D, 0x01, 0x34, 0x00, + 0xD0, 0x00, 0x40, 0x03, 0x00, + // Unicode: [0x002C, comma] + 0x14, 0xD7, 0x28, 0x03, + // Unicode: [0x002D, hyphen] + 0xFF, 0x5F, 0x55, 0x01, + // Unicode: [0x002E, period] + 0x77, + // Unicode: [0x002F, slash] + 0x00, 0x0B, 0x70, 0x40, 0x03, 0x28, 0xC0, 0x02, 0x1C, 0xD0, 0x00, 0x0E, 0xB0, 0x00, 0x07, 0x34, + 0x80, 0x03, 0x28, 0xC0, 0x01, 0x0D, 0xE0, 0x00, 0x0A, 0x70, 0x00, + // Unicode: [0x0030, zero] + 0xE4, 0x1B, 0x7C, 0x39, 0x0E, 0xB0, 0x0A, 0xA0, 0x0B, 0xD0, 0x07, 0xD0, 0x07, 0xD0, 0x0B, 0xD0, + 0x0A, 0xA0, 0x0E, 0xB0, 0x6C, 0x39, 0xE4, 0x1B, + // Unicode: [0x0031, one] + 0xBD, 0xB4, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, + // Unicode: [0x0032, two] + 0xD0, 0x1F, 0xD0, 0xD6, 0xC2, 0x02, 0x0D, 0x07, 0x34, 0x00, 0xD0, 0x00, 0xC0, 0x02, 0x80, 0x07, + 0x40, 0x07, 0x40, 0x0B, 0x40, 0x07, 0x80, 0x5B, 0x45, 0xFF, 0xBF, + // Unicode: [0x0033, three] + 0xE4, 0x0B, 0x6D, 0x2D, 0x0B, 0x74, 0x00, 0x34, 0x00, 0x29, 0xE0, 0x0B, 0x40, 0x2D, 0x00, 0x74, + 0x02, 0x70, 0x0B, 0x74, 0x6D, 0x3D, 0xE4, 0x0B, + // Unicode: [0x0034, four] + 0x00, 0xF4, 0x00, 0xC0, 0x0F, 0x00, 0xDA, 0x00, 0x38, 0x0D, 0xD0, 0xD1, 0x00, 0x07, 0x0D, 0x28, + 0xD0, 0xD0, 0xFF, 0xBF, 0x54, 0xE5, 0x01, 0x00, 0x0D, 0x00, 0xD0, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0x7F, 0x5A, 0x15, 0x0A, 0x00, 0x0A, 0x00, 0xDA, 0x1F, 0x6E, 0x79, 0x09, 0xE0, 0x00, 0xD0, + 0x01, 0xD0, 0x0E, 0xE0, 0x6C, 0x79, 0xE0, 0x1B, + // Unicode: [0x0036, six] + 0xE0, 0x1B, 0x68, 0x79, 0x0D, 0xA0, 0x0A, 0x00, 0xD6, 0x1F, 0x6A, 0x79, 0x0E, 0xE0, 0x0A, 0xD0, + 0x0A, 0xD0, 0x0D, 0xE0, 0x78, 0x79, 0xE0, 0x1F, + // Unicode: [0x0037, seven] + 0xFD, 0xFF, 0x54, 0xE5, 0x00, 0xA0, 0x00, 0x34, 0x00, 0x28, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x40, 0x03, 0x80, 0x02, 0xD0, 0x01, 0xE0, 0x00, + // Unicode: [0x0038, eight] + 0xE4, 0x1B, 0x6D, 0x79, 0x0A, 0xA0, 0x0A, 0xA0, 0x1D, 0x74, 0xF4, 0x1F, 0x6D, 0x79, 0x0B, 0xE0, + 0x07, 0xD0, 0x0B, 0xE0, 0x6D, 0x79, 0xE4, 0x1B, + // Unicode: [0x0039, nine] + 0xE4, 0x1B, 0x6C, 0x39, 0x0E, 0xB0, 0x0A, 0xA0, 0x0A, 0xD0, 0x0E, 0xE0, 0x2D, 0xF8, 0xF4, 0xDB, + 0x40, 0x90, 0x09, 0xA0, 0x6C, 0x39, 0xE0, 0x1B, + // Unicode: [0x003A, colon] + 0x77, 0x00, 0x00, 0x70, 0x07, + // Unicode: [0x003B, semicolon] + 0x28, 0x0A, 0x00, 0x00, 0x00, 0xA1, 0x5C, 0x93, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x05, 0x78, 0xE0, 0x80, 0x03, 0x1D, 0x40, 0x07, 0xD0, 0x01, 0xB4, + // Unicode: [0x003D, equal] + 0xFD, 0xFF, 0x53, 0x55, 0x05, 0x00, 0x40, 0xFF, 0xFF, 0x54, 0x55, 0x01, + // Unicode: [0x003E, greater] + 0x05, 0x78, 0x40, 0x07, 0x74, 0xC0, 0x83, 0xC3, 0xC2, 0x02, + // Unicode: [0x003F, question] + 0xE0, 0x1B, 0x6C, 0x39, 0x0D, 0xB0, 0x00, 0xB0, 0x00, 0x78, 0xE0, 0x1B, 0xA0, 0x00, 0x50, 0x00, + 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, + // Unicode: [0x0040, at] + 0x00, 0xE4, 0x2B, 0x00, 0xB4, 0x45, 0x1E, 0xD0, 0x01, 0x40, 0x43, 0x03, 0x00, 0xA0, 0x1C, 0xF4, + 0x2A, 0xDD, 0xE0, 0xE5, 0xD2, 0x4A, 0x07, 0x1C, 0x6D, 0x38, 0xC0, 0x91, 0x86, 0x02, 0x0D, 0x6A, + 0x74, 0xE4, 0x34, 0x0A, 0xBE, 0xB8, 0xC1, 0x01, 0x00, 0x00, 0xB4, 0x00, 0x01, 0x00, 0xF9, 0x2F, + 0x00, + // Unicode: [0x0041, A] + 0x00, 0x1E, 0x00, 0xF0, 0x02, 0x40, 0x37, 0x00, 0x28, 0x0B, 0xC0, 0xE1, 0x00, 0x0D, 0x1C, 0xA0, + 0x80, 0x42, 0xFF, 0x3F, 0x78, 0x55, 0xC7, 0x02, 0xA0, 0x1D, 0x00, 0x0D, + // Unicode: [0x0042, B] + 0xFE, 0x1B, 0x5A, 0x79, 0x0A, 0xB0, 0x0A, 0xA0, 0x0A, 0x74, 0xFE, 0x1F, 0x5A, 0x75, 0x0A, 0xE0, + 0x0A, 0xE0, 0x5A, 0xB5, 0xFE, 0x2F, + // Unicode: [0x0043, C] + 0x40, 0xFE, 0x02, 0xB8, 0xE5, 0x47, 0x07, 0x80, 0xB3, 0x00, 0x40, 0x1D, 0x00, 0x40, 0x07, 0x00, + 0xD0, 0x01, 0x00, 0xB0, 0x00, 0x40, 0x74, 0x00, 0x38, 0xB8, 0xD5, 0x07, 0xE4, 0x2F, 0x00, + // Unicode: [0x0044, D] + 0xFE, 0x1B, 0xA0, 0x55, 0x0F, 0x0A, 0x80, 0xA2, 0x00, 0x74, 0x0A, 0x00, 0xAB, 0x00, 0xB0, 0x0A, + 0x00, 0xAB, 0x00, 0x74, 0x0A, 0x80, 0xA2, 0x55, 0x0F, 0xFE, 0x1B, 0x00, + // Unicode: [0x0045, E] + 0xFE, 0x9F, 0x56, 0xA1, 0x00, 0x28, 0x00, 0x0A, 0x80, 0xFF, 0xA2, 0x15, 0x28, 0x00, 0x0A, 0x80, + 0x56, 0xE1, 0xFF, 0x01, + // Unicode: [0x0046, F] + 0xFE, 0xAF, 0x56, 0xA1, 0x00, 0x28, 0x00, 0x0A, 0x80, 0xFF, 0xA2, 0x15, 0x28, 0x00, 0x0A, 0x80, + 0x02, 0xA0, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x40, 0xFE, 0x02, 0xE0, 0x96, 0x1F, 0x74, 0x00, 0x38, 0x2C, 0x00, 0x10, 0x1D, 0x00, 0x00, 0x1D, + 0xF4, 0xBF, 0x1D, 0x50, 0xB5, 0x2C, 0x00, 0x74, 0x74, 0x00, 0x38, 0xE0, 0x96, 0x1F, 0x40, 0xFE, + 0x02, + // Unicode: [0x0048, H] + 0x0A, 0x80, 0x2A, 0x00, 0xAA, 0x00, 0xA8, 0x02, 0xA0, 0x0A, 0x80, 0xFA, 0xFF, 0xAB, 0x55, 0xA9, + 0x02, 0xA0, 0x0A, 0x80, 0x2A, 0x00, 0xAA, 0x00, 0x28, + // Unicode: [0x0049, I] + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x0A, + // Unicode: [0x004A, J] + 0x00, 0x38, 0x00, 0x0E, 0x80, 0x03, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x80, 0x03, 0xE0, 0x1D, 0x28, + 0x9B, 0x47, 0xBE, 0x00, + // Unicode: [0x004B, K] + 0x0A, 0xB4, 0x0A, 0x2C, 0x0A, 0x0B, 0x8A, 0x03, 0xEA, 0x00, 0x7E, 0x00, 0xEA, 0x00, 0xCA, 0x03, + 0x0A, 0x0B, 0x0A, 0x2C, 0x0A, 0xB4, + // Unicode: [0x004C, L] + 0x0A, 0xA0, 0x00, 0x0A, 0xA0, 0x00, 0x0A, 0xA0, 0x00, 0x0A, 0xA0, 0x00, 0x0A, 0xA0, 0x15, 0xFE, + 0x0B, + // Unicode: [0x004D, M] + 0x0E, 0x00, 0xB4, 0x1E, 0x00, 0xB8, 0x3E, 0x00, 0xBC, 0x7A, 0x00, 0xBA, 0xAA, 0x00, 0xB7, 0xCA, + 0x41, 0xB3, 0x8A, 0xC2, 0xB1, 0x4A, 0xD7, 0xB0, 0x0A, 0xBA, 0xB0, 0x0A, 0x3D, 0xB0, 0x0A, 0x28, + 0xB0, + // Unicode: [0x004E, N] + 0x0E, 0x40, 0xBB, 0x00, 0xED, 0x07, 0xB4, 0x36, 0xD0, 0x8A, 0x42, 0x2B, 0x1C, 0xAD, 0xD0, 0xB4, + 0x02, 0xDA, 0x0A, 0xB0, 0x2B, 0x40, 0xAF, 0x00, 0x38, + // Unicode: [0x004F, O] + 0x40, 0xFE, 0x02, 0xE0, 0x56, 0x1F, 0x74, 0x00, 0x38, 0x2C, 0x00, 0x70, 0x1D, 0x00, 0xA0, 0x1D, + 0x00, 0xE0, 0x1D, 0x00, 0xA0, 0x2C, 0x00, 0xB0, 0x74, 0x00, 0x38, 0xE0, 0x56, 0x1F, 0x40, 0xFE, + 0x02, + // Unicode: [0x0050, P] + 0xFE, 0x1B, 0x5A, 0x79, 0x0A, 0xB0, 0x0A, 0xB0, 0x0A, 0x74, 0xFE, 0x1F, 0x5A, 0x00, 0x0A, 0x00, + 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, + // Unicode: [0x0051, Q] + 0x40, 0xFE, 0x02, 0xE0, 0x56, 0x1F, 0x74, 0x00, 0x38, 0x2C, 0x00, 0xB0, 0x1D, 0x00, 0xA0, 0x1D, + 0x00, 0xE0, 0x1D, 0x00, 0xA0, 0x2C, 0x00, 0x70, 0x74, 0x00, 0x38, 0xE0, 0x56, 0x1F, 0x40, 0xFE, + 0x0B, 0x00, 0x00, 0x2D, 0x00, 0x00, 0xB4, + // Unicode: [0x0052, R] + 0xFE, 0x1B, 0x5A, 0x79, 0x0A, 0xB0, 0x0A, 0xB0, 0x0A, 0x78, 0xFE, 0x1F, 0x5A, 0x07, 0x0A, 0x0E, + 0x0A, 0x1D, 0x0A, 0x38, 0x0A, 0xB4, + // Unicode: [0x0053, S] + 0xF4, 0x0B, 0x5E, 0x2D, 0x0B, 0x64, 0x0B, 0x00, 0x6E, 0x00, 0xE4, 0x0B, 0x00, 0x3D, 0x00, 0x70, + 0x0B, 0x70, 0x6E, 0x39, 0xF4, 0x0B, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0x94, 0x57, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, + 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, + // Unicode: [0x0055, U] + 0x0A, 0xC0, 0x2A, 0x00, 0xAB, 0x00, 0xAC, 0x02, 0xB0, 0x0A, 0xC0, 0x2A, 0x00, 0xAB, 0x00, 0xAC, + 0x02, 0xB0, 0x0E, 0xD0, 0xF1, 0xE5, 0x02, 0xFE, 0x02, + // Unicode: [0x0056, V] + 0x0D, 0x00, 0x1D, 0x07, 0x80, 0x83, 0x02, 0x70, 0xD0, 0x01, 0x0D, 0xB0, 0x80, 0x02, 0x38, 0x70, + 0x00, 0x1C, 0x0D, 0x00, 0xCA, 0x02, 0x40, 0x77, 0x00, 0xC0, 0x0B, 0x00, 0xE0, 0x01, 0x00, + // Unicode: [0x0057, W] + 0x0D, 0xC0, 0x02, 0x74, 0x07, 0xF4, 0x00, 0xCA, 0x02, 0x7A, 0xC0, 0xE2, 0xC0, 0x29, 0x74, 0x34, + 0x34, 0x0E, 0x0E, 0x1C, 0x4A, 0x87, 0x02, 0x8A, 0xC1, 0x71, 0x80, 0x73, 0xA0, 0x0D, 0xD0, 0x0E, + 0xB4, 0x02, 0xF0, 0x02, 0x7C, 0x00, 0x78, 0x00, 0x0E, 0x00, + // Unicode: [0x0058, X] + 0x0B, 0xE0, 0x1D, 0x74, 0x38, 0x2C, 0xB0, 0x0D, 0xD0, 0x07, 0xC0, 0x03, 0xD0, 0x07, 0x70, 0x0E, + 0x28, 0x2C, 0x1D, 0x74, 0x0B, 0xE0, + // Unicode: [0x0059, Y] + 0x1D, 0x80, 0xB2, 0x40, 0x47, 0x03, 0x0A, 0x28, 0x1D, 0xD0, 0x28, 0x00, 0x3E, 0x00, 0xB4, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, + // Unicode: [0x005A, Z] + 0xFD, 0xFF, 0x54, 0xB5, 0x00, 0x38, 0x00, 0x1D, 0x00, 0x0B, 0x80, 0x03, 0xD0, 0x02, 0xE0, 0x00, + 0x74, 0x00, 0x6C, 0x55, 0xFD, 0xFF, + // Unicode: [0x005B, bracketleft] + 0xFF, 0x76, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x5F, 0x01, + // Unicode: [0x005C, backslash] + 0x0A, 0x40, 0x03, 0xD0, 0x01, 0xB0, 0x00, 0x28, 0x00, 0x0D, 0x00, 0x07, 0x80, 0x02, 0xE0, 0x00, + 0x74, 0x00, 0x1C, 0x00, 0x0A, 0x40, 0x03, 0xC0, 0x01, 0xB0, 0x00, 0x38, 0x00, 0x0D, 0x00, 0x07, + // Unicode: [0x005D, bracketright] + 0xBD, 0xA4, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, + 0xA0, 0xBD, 0x14, + // Unicode: [0x005E, asciicircum] + 0x00, 0x05, 0x00, 0xF0, 0x00, 0x80, 0x2F, 0x00, 0x6C, 0x03, 0xD0, 0x70, 0x00, 0x0B, 0x0E, 0x74, + 0xC0, 0x81, 0x02, 0x28, 0x1D, 0x40, 0x07, + // Unicode: [0x005F, underscore] + 0xFD, 0xFF, 0x47, 0x55, 0x15, + // Unicode: [0x0060, grave] + 0x01, 0x1E, 0xB4, 0x40, + // Unicode: [0x0061, a] + 0x90, 0x2F, 0x4B, 0x5B, 0xBE, 0x2C, 0x80, 0xDB, 0x01, 0xB0, 0x1D, 0x00, 0xDB, 0x01, 0xB0, 0x2C, + 0x40, 0x4B, 0x5B, 0xBE, 0x90, 0x2F, 0x0B, + // Unicode: [0x0062, b] + 0x0A, 0x00, 0x28, 0x00, 0xA0, 0x00, 0x80, 0xE6, 0x0B, 0xBA, 0xF5, 0x78, 0x00, 0xEB, 0x00, 0xB8, + 0x02, 0xD0, 0x0E, 0x80, 0x7B, 0x00, 0xAB, 0x5B, 0x8F, 0xE6, 0x0B, + // Unicode: [0x0063, c] + 0x90, 0x6F, 0xD0, 0x96, 0xC7, 0x02, 0x68, 0x07, 0x00, 0x1D, 0x00, 0x74, 0x00, 0xC0, 0x02, 0x28, + 0x6D, 0x79, 0x90, 0x6F, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x00, 0x0B, 0xF9, 0xB2, 0xB4, 0xE5, 0xCB, 0x02, 0xB8, 0x1D, + 0x00, 0xDB, 0x01, 0xB0, 0x1D, 0x00, 0xCB, 0x02, 0xB4, 0xB4, 0xE5, 0x0B, 0xF9, 0xB2, + // Unicode: [0x0065, e] + 0x90, 0x6F, 0x40, 0x5B, 0x1E, 0x2C, 0x80, 0xD3, 0x01, 0x34, 0xFD, 0xFF, 0xD7, 0x55, 0x15, 0x2C, + 0x80, 0x42, 0x5B, 0x1E, 0x90, 0x6F, 0x00, + // Unicode: [0x0066, f] + 0xD0, 0xD2, 0x46, 0x83, 0xBF, 0x78, 0xE1, 0x80, 0x03, 0x0E, 0x38, 0xE0, 0x80, 0x03, 0x0E, + // Unicode: [0x0067, g] + 0x90, 0x2F, 0x4B, 0x5B, 0xBE, 0x2C, 0x40, 0xDB, 0x01, 0xB0, 0x1D, 0x00, 0xDB, 0x01, 0xB0, 0x2C, + 0x80, 0x4B, 0x5B, 0xBE, 0x90, 0x2F, 0x0B, 0x00, 0xB0, 0x28, 0x40, 0x47, 0x5B, 0x2E, 0x90, 0x7F, + 0x00, + // Unicode: [0x0068, h] + 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0xDA, 0x1F, 0x7E, 0x79, 0x0E, 0xE0, 0x0A, 0xD0, 0x0A, 0xD0, + 0x0A, 0xD0, 0x0A, 0xD0, 0x0A, 0xD0, 0x0A, 0xD0, + // Unicode: [0x0069, i] + 0xAA, 0xA0, 0xAA, 0xAA, 0xAA, 0xAA, + // Unicode: [0x006A, j] + 0xA0, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xB4, 0x2D, + // Unicode: [0x006B, k] + 0x0A, 0x80, 0x02, 0xA0, 0x00, 0x28, 0xB4, 0x4A, 0x8B, 0xB2, 0xA0, 0x0B, 0xF8, 0x01, 0xBA, 0x80, + 0xB2, 0xA0, 0xB4, 0x28, 0xB4, + // Unicode: [0x006C, l] + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + // Unicode: [0x006D, m] + 0xDA, 0x1F, 0xF9, 0x82, 0x5B, 0xEE, 0xD1, 0xE2, 0x00, 0x1E, 0xD0, 0x28, 0x40, 0x03, 0x70, 0x0A, + 0xD0, 0x00, 0x9C, 0x02, 0x34, 0x00, 0xA7, 0x00, 0x0D, 0xC0, 0x29, 0x40, 0x03, 0x70, 0x0A, 0xD0, + 0x00, 0x1C, + // Unicode: [0x006E, n] + 0xDA, 0x1B, 0x6E, 0x79, 0x0E, 0xE0, 0x0A, 0xD0, 0x0A, 0xD0, 0x0A, 0xD0, 0x0A, 0xD0, 0x0A, 0xD0, + 0x0A, 0xD0, + // Unicode: [0x006F, o] + 0x90, 0x6F, 0x40, 0x5B, 0x1E, 0x2C, 0x80, 0xD3, 0x01, 0x70, 0x1D, 0x00, 0xDB, 0x01, 0x70, 0x2C, + 0x80, 0x43, 0x5B, 0x1E, 0x90, 0x6F, 0x00, + // Unicode: [0x0070, p] + 0x9A, 0x2F, 0xE8, 0xD6, 0xE3, 0x01, 0xAC, 0x03, 0xE0, 0x0A, 0x40, 0x3B, 0x00, 0xEE, 0x01, 0xAC, + 0x6E, 0x3D, 0x9A, 0x2F, 0x28, 0x00, 0xA0, 0x00, 0x80, 0x02, 0x00, 0x0A, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x90, 0x2F, 0x4B, 0x5B, 0xBE, 0x2C, 0x80, 0xDB, 0x01, 0xB0, 0x1D, 0x00, 0xDB, 0x01, 0xB0, 0x2C, + 0x80, 0x4B, 0x5B, 0xBE, 0x90, 0x2F, 0x0B, 0x00, 0xB0, 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x00, + 0x0B, + // Unicode: [0x0072, r] + 0xDA, 0xFA, 0xE6, 0x80, 0x02, 0x0A, 0x28, 0xA0, 0x80, 0x02, 0x0A, 0x00, + // Unicode: [0x0073, s] + 0xF8, 0x86, 0x97, 0x73, 0x80, 0x79, 0x00, 0xF8, 0x06, 0x90, 0x67, 0xC0, 0x79, 0x79, 0xF8, 0x07, + // Unicode: [0x0074, t] + 0x34, 0x40, 0x03, 0xFE, 0x87, 0x17, 0x34, 0x40, 0x03, 0x34, 0x40, 0x03, 0x34, 0x40, 0x17, 0xE0, + 0x07, + // Unicode: [0x0075, u] + 0x0B, 0xD0, 0x0B, 0xD0, 0x0B, 0xD0, 0x0B, 0xD0, 0x0B, 0xD0, 0x0A, 0xE0, 0x0E, 0xE0, 0x6D, 0xF9, + 0xE4, 0xDB, + // Unicode: [0x0076, v] + 0x0E, 0xC0, 0x76, 0x40, 0xC7, 0x02, 0x0A, 0x0D, 0x1C, 0x70, 0x34, 0x80, 0xA2, 0x00, 0xDD, 0x01, + 0xF0, 0x03, 0x80, 0x0B, 0x00, + // Unicode: [0x0077, w] + 0x0A, 0x74, 0x80, 0x36, 0xE0, 0x02, 0xC7, 0xC1, 0x0E, 0x0D, 0x0A, 0x73, 0x34, 0x34, 0x89, 0xA2, + 0xC0, 0x18, 0xCD, 0x01, 0x76, 0x70, 0x03, 0xF8, 0x80, 0x0B, 0xD0, 0x02, 0x1D, 0x00, + // Unicode: [0x0078, x] + 0x1D, 0x34, 0x0B, 0x47, 0xE7, 0x80, 0x1F, 0xC0, 0x02, 0xF8, 0x41, 0xE7, 0xA0, 0xB0, 0x0D, 0x38, + // Unicode: [0x0079, y] + 0x0E, 0xC0, 0x76, 0x40, 0x87, 0x02, 0x0A, 0x0D, 0x1C, 0xB0, 0x34, 0x80, 0xA3, 0x00, 0xDD, 0x00, + 0xE0, 0x02, 0x40, 0x07, 0x00, 0x0E, 0x00, 0x2C, 0x00, 0x34, 0x00, 0xA0, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0x2F, 0x55, 0x07, 0xB0, 0x00, 0x0E, 0xD0, 0x01, 0x2C, 0x80, 0x07, 0xB0, 0x15, 0xFD, 0x2F, + // Unicode: [0x007B, braceleft] + 0xD0, 0x07, 0x1B, 0x70, 0x00, 0x07, 0xB0, 0x00, 0x0A, 0xA0, 0x00, 0x0B, 0x39, 0xD0, 0x02, 0xB0, + 0x00, 0x0A, 0xA0, 0x00, 0x0B, 0x70, 0x00, 0x07, 0xB0, 0x00, 0x7D, 0x00, 0x01, + // Unicode: [0x007C, bar] + 0xD9, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0x0D, + // Unicode: [0x007D, braceright] + 0x2F, 0xD4, 0x01, 0x07, 0x1C, 0x74, 0xD0, 0x40, 0x03, 0x1D, 0xE0, 0x41, 0x4B, 0x07, 0x0D, 0x34, + 0xD0, 0x01, 0x07, 0x1C, 0x74, 0xBC, 0x10, 0x00, + // Unicode: [0x007E, asciitilde] + 0xF8, 0xA1, 0x5D, 0x3F, 0x04, 0x04 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_4.cpp new file mode 100644 index 00000000..a550d3ba --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_16_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_16_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0xC7, 0x71, 0xC7, 0x71 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_0.cpp new file mode 100644 index 00000000..cc19d932 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_0.cpp @@ -0,0 +1,305 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x6D, 0xD7, 0x75, 0x1C, 0xC7, 0x71, 0x1C, 0x00, 0xB4, 0x2D, + // Unicode: [0x0022, quotedbl] + 0x89, 0x35, 0xDB, 0x58, 0x63, + // Unicode: [0x0023, numbersign] + 0x00, 0x38, 0xD0, 0x01, 0xC0, 0x02, 0x0E, 0x00, 0x1C, 0xA0, 0x40, 0xFF, 0xFF, 0xFF, 0x50, 0x5E, + 0xB9, 0x05, 0xA0, 0x40, 0x03, 0x00, 0x0B, 0x38, 0x00, 0x74, 0xC0, 0x02, 0xFD, 0xFF, 0xFF, 0x43, + 0x79, 0xE5, 0x15, 0xC0, 0x02, 0x0D, 0x00, 0x2C, 0xE0, 0x00, 0xD0, 0x01, 0x0B, 0x00, + // Unicode: [0x0024, dollar] + 0x40, 0x02, 0x90, 0x7F, 0xD0, 0xBA, 0x8B, 0x93, 0x38, 0x4B, 0x42, 0x38, 0x09, 0xD0, 0x2B, 0x00, + 0xF9, 0x0B, 0x40, 0xFB, 0x00, 0x49, 0x57, 0x24, 0x9D, 0x93, 0x74, 0xBD, 0xBB, 0x90, 0xBF, 0x00, + 0x24, 0x00, 0x40, 0x00, + // Unicode: [0x0025, percent] + 0xE4, 0x02, 0x38, 0xB0, 0x28, 0x74, 0xD0, 0xD0, 0xE0, 0x40, 0x43, 0xD3, 0x01, 0x2C, 0xCA, 0x02, + 0x90, 0x4B, 0x07, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x2C, 0xB9, 0x00, 0x38, 0x5C, + 0x0A, 0x74, 0x34, 0x34, 0xA0, 0xC0, 0xA0, 0xD0, 0x01, 0xBD, 0x00, + // Unicode: [0x0026, ampersand] + 0x40, 0xBE, 0x00, 0x00, 0x9F, 0x0B, 0x00, 0x1D, 0x38, 0x00, 0x74, 0x00, 0x00, 0xC0, 0x03, 0x00, + 0x00, 0x2E, 0x00, 0x40, 0xEF, 0x02, 0x19, 0x0F, 0x2D, 0x2C, 0x1D, 0xD0, 0x7A, 0x74, 0x00, 0xBD, + 0xC0, 0x02, 0xF4, 0x02, 0x6E, 0xB9, 0x2D, 0x90, 0x6F, 0xD0, 0x02, + // Unicode: [0x0027, quotesingle] + 0xD9, 0xDD, + // Unicode: [0x0028, parenleft] + 0x80, 0x07, 0x1D, 0xB0, 0x80, 0x03, 0x2C, 0xD0, 0x01, 0x0E, 0xB0, 0x00, 0x0B, 0xB0, 0x00, 0x0B, + 0xB0, 0x00, 0x0B, 0xE0, 0x00, 0x1D, 0xC0, 0x02, 0x38, 0x40, 0x0B, 0xE0, 0x01, 0x38, + // Unicode: [0x0029, parenright] + 0x0B, 0xD0, 0x02, 0x78, 0x00, 0x0B, 0xD0, 0x01, 0x2C, 0x80, 0x02, 0x38, 0x40, 0x03, 0x74, 0x40, + 0x07, 0x34, 0x80, 0x03, 0x38, 0xC0, 0x02, 0x1D, 0xF0, 0x40, 0x07, 0x2C, 0xE0, 0x00, + // Unicode: [0x002A, asterisk] + 0xD0, 0x40, 0x31, 0xD6, 0xAE, 0xD1, 0x0B, 0xDE, 0x5E, 0x34, 0x01, 0x09, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0xFD, 0xFF, 0x4B, 0xE5, 0x55, 0x00, + 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x0E, 0x00, + // Unicode: [0x002C, comma] + 0x3C, 0xD7, 0x28, 0x07, + // Unicode: [0x002D, hyphen] + 0xFF, 0x7F, 0x55, 0x15, + // Unicode: [0x002E, period] + 0xBF, + // Unicode: [0x002F, slash] + 0x00, 0x1D, 0x40, 0x03, 0xE0, 0x00, 0x2C, 0x40, 0x07, 0xD0, 0x00, 0x38, 0x00, 0x0B, 0xD0, 0x01, + 0x34, 0x00, 0x0E, 0xC0, 0x02, 0x74, 0x00, 0x1D, 0x80, 0x03, 0xB0, 0x00, 0x1D, 0x40, 0x07, 0xE0, + 0x00, 0x2C, 0x00, + // Unicode: [0x0030, zero] + 0xE0, 0x2F, 0xE0, 0xEA, 0xD3, 0x02, 0xAD, 0x03, 0xE0, 0x0E, 0x80, 0x2F, 0x00, 0xBD, 0x00, 0xF4, + 0x02, 0xD0, 0x0E, 0x80, 0x3B, 0x00, 0xDE, 0x02, 0x2D, 0xAE, 0x3E, 0xE0, 0x2F, 0x00, + // Unicode: [0x0031, one] + 0xFD, 0xE4, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + // Unicode: [0x0032, two] + 0xE4, 0x1B, 0xF4, 0xE6, 0xE1, 0x00, 0xCE, 0x02, 0x74, 0x01, 0xE0, 0x00, 0x80, 0x03, 0x40, 0x07, + 0x40, 0x0B, 0x40, 0x0B, 0x40, 0x0B, 0x40, 0x0B, 0x80, 0x5F, 0x55, 0xFF, 0xFF, 0x02, + // Unicode: [0x0033, three] + 0xE4, 0x2F, 0xF4, 0xE6, 0xE2, 0x00, 0x1E, 0x00, 0x34, 0x00, 0xB5, 0x00, 0x7F, 0x00, 0x94, 0x07, + 0x00, 0x38, 0x00, 0xC0, 0x2D, 0x00, 0xE7, 0x00, 0x5D, 0x6F, 0x2E, 0xE0, 0x2F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0xD0, 0x03, 0x00, 0xFC, 0x00, 0x80, 0x3B, 0x00, 0x74, 0x0E, 0x00, 0x8B, 0x03, 0xE0, 0xE0, + 0x00, 0x1D, 0x38, 0xD0, 0x02, 0x0E, 0x3C, 0x80, 0x43, 0xFF, 0xFF, 0x4B, 0x55, 0x79, 0x01, 0x00, + 0x0E, 0x00, 0x80, 0x03, + // Unicode: [0x0035, five] + 0xFD, 0xFF, 0xD1, 0x55, 0x15, 0x0D, 0x00, 0xD0, 0x00, 0x00, 0x9D, 0x7F, 0xD0, 0x5B, 0x1E, 0x1D, + 0x80, 0x03, 0x00, 0x34, 0x00, 0x40, 0x97, 0x00, 0x38, 0x1D, 0xC0, 0x82, 0x5B, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x0036, six] + 0x90, 0x6F, 0x40, 0x5B, 0x1E, 0x2C, 0x80, 0xD2, 0x00, 0x00, 0x8A, 0x7F, 0xA0, 0x5B, 0x1E, 0x2E, + 0x80, 0xE3, 0x00, 0x74, 0x0E, 0x40, 0xD7, 0x00, 0x74, 0x2C, 0x80, 0x43, 0x5B, 0x1E, 0x90, 0x6F, + 0x00, + // Unicode: [0x0037, seven] + 0xFD, 0xFF, 0x53, 0x55, 0x0E, 0x00, 0x2C, 0x00, 0x74, 0x00, 0xA0, 0x00, 0xD0, 0x01, 0x80, 0x03, + 0x00, 0x07, 0x00, 0x0E, 0x00, 0x2C, 0x00, 0x74, 0x00, 0xB0, 0x00, 0xD0, 0x01, 0x00, + // Unicode: [0x0038, eight] + 0xE0, 0x6F, 0xC0, 0x5B, 0x1E, 0x1E, 0x80, 0xE3, 0x00, 0x38, 0x6C, 0xE0, 0x01, 0xFF, 0x07, 0x7C, + 0xE5, 0xE1, 0x00, 0x38, 0x0B, 0x40, 0xB7, 0x00, 0x74, 0x1E, 0xC0, 0xC3, 0x5B, 0x1F, 0xE0, 0x6F, + 0x00, + // Unicode: [0x0039, nine] + 0xE0, 0x2F, 0xE0, 0xE6, 0xD3, 0x01, 0xAC, 0x03, 0xE0, 0x0E, 0x80, 0x77, 0x00, 0xCE, 0x47, 0x3E, + 0xFD, 0xDB, 0x00, 0x41, 0x13, 0x00, 0xCE, 0x02, 0x2C, 0x6E, 0x3D, 0x90, 0x2F, 0x00, + // Unicode: [0x003A, colon] + 0xFB, 0x00, 0x00, 0x00, 0xBF, + // Unicode: [0x003B, semicolon] + 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x38, 0x2C, 0x1C, 0x09, + // Unicode: [0x003C, less] + 0x00, 0x05, 0x78, 0xF0, 0xC1, 0x03, 0x0F, 0xE0, 0x01, 0x78, 0x00, 0x1E, 0x80, 0x07, + // Unicode: [0x003D, equal] + 0xFD, 0xFF, 0x1F, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0x55, 0x55, + 0x01, + // Unicode: [0x003E, greater] + 0x05, 0xE0, 0x02, 0xB4, 0x00, 0x2D, 0x40, 0x0B, 0x78, 0xE0, 0x81, 0x07, 0x1E, 0x00, + // Unicode: [0x003F, question] + 0xF8, 0x0B, 0x6E, 0x3E, 0x07, 0x74, 0x02, 0xB0, 0x00, 0x74, 0x00, 0x3D, 0xF4, 0x1B, 0x74, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x00, 0x74, 0x00, + // Unicode: [0x0040, at] + 0x00, 0xA0, 0xBF, 0x01, 0x00, 0x6E, 0x95, 0x0B, 0x80, 0x02, 0x00, 0x28, 0xA0, 0x00, 0x00, 0x70, + 0x34, 0xE0, 0xDB, 0xA1, 0x1C, 0x78, 0xF9, 0xD0, 0x0D, 0x1D, 0xB0, 0xD0, 0x0E, 0x0B, 0xA0, 0xA0, + 0x0A, 0x07, 0x70, 0xA0, 0x0A, 0x0B, 0x74, 0x70, 0x0A, 0x1E, 0xB9, 0x29, 0x1D, 0xF8, 0xD2, 0x0B, + 0x28, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x04, 0x00, 0x40, 0xFF, 0x0B, 0x00, + // Unicode: [0x0041, A] + 0x00, 0x7C, 0x00, 0x00, 0xBD, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xDB, 0x01, 0x40, 0xC7, 0x02, 0x80, + 0x83, 0x03, 0xC0, 0x42, 0x07, 0xD0, 0x01, 0x0B, 0xF0, 0x00, 0x0F, 0xF4, 0xFF, 0x1F, 0x78, 0x55, + 0x2D, 0x3C, 0x00, 0x38, 0x2D, 0x00, 0x74, + // Unicode: [0x0042, B] + 0xFE, 0x6F, 0x78, 0xD5, 0xE7, 0x00, 0xAC, 0x03, 0xB0, 0x0E, 0xC0, 0x3A, 0x90, 0xE7, 0xFF, 0x87, + 0x57, 0x79, 0x0E, 0x80, 0x3B, 0x00, 0xEE, 0x00, 0xB8, 0x57, 0xB9, 0xFE, 0x6F, 0x00, + // Unicode: [0x0043, C] + 0x00, 0xF9, 0x0B, 0x00, 0xAE, 0xF9, 0x01, 0x1F, 0x40, 0x0F, 0x1E, 0x00, 0xB4, 0x2C, 0x00, 0x00, + 0xB0, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x2C, 0x00, 0x00, 0xE0, 0x01, 0x40, + 0x0A, 0x1F, 0x40, 0x0F, 0xF0, 0x96, 0x1F, 0x00, 0xF9, 0x0A, 0x00, + // Unicode: [0x0044, D] + 0xFE, 0x6F, 0x80, 0x57, 0xB9, 0xE0, 0x00, 0xB4, 0x38, 0x00, 0x74, 0x0E, 0x00, 0xAC, 0x03, 0x00, + 0xEE, 0x00, 0x80, 0x3B, 0x00, 0xE0, 0x0E, 0x00, 0xAC, 0x03, 0x40, 0xE7, 0x00, 0xB4, 0x78, 0x95, + 0x0B, 0xFE, 0x6F, 0x00, + // Unicode: [0x0045, E] + 0xFE, 0xBF, 0x57, 0xE5, 0x00, 0x38, 0x00, 0x0E, 0x80, 0x03, 0xE0, 0xFF, 0x7A, 0x15, 0x0E, 0x80, + 0x03, 0xE0, 0x00, 0x78, 0x55, 0xFE, 0x3F, + // Unicode: [0x0046, F] + 0xFE, 0x7F, 0x5E, 0x15, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0xFE, 0x1F, 0x5E, 0x05, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xF9, 0x0A, 0x00, 0xB8, 0xEA, 0x07, 0xF0, 0x01, 0xF4, 0x80, 0x07, 0x00, 0x29, 0x2C, 0x00, + 0x00, 0xC0, 0x02, 0x00, 0x00, 0x1D, 0xE0, 0xFF, 0xC7, 0x02, 0x54, 0x39, 0x2C, 0x00, 0xC0, 0x83, + 0x07, 0x00, 0x2D, 0xF0, 0x01, 0xF4, 0x00, 0xB8, 0xEA, 0x03, 0x00, 0xF9, 0x06, 0x00, + // Unicode: [0x0048, H] + 0x0E, 0x00, 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xEE, 0x00, 0xE0, 0xFE, + 0xFF, 0xEF, 0x55, 0xE5, 0x0E, 0x00, 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xEE, 0x00, 0xE0, 0x0E, 0x00, + 0x0E, + // Unicode: [0x0049, I] + 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x0E, + // Unicode: [0x004A, J] + 0x00, 0x2C, 0x00, 0x0B, 0xC0, 0x02, 0xB0, 0x00, 0x2C, 0x00, 0x0B, 0xC0, 0x02, 0xB0, 0x00, 0xAC, + 0x01, 0xBB, 0xD0, 0xBA, 0x3E, 0xF8, 0x06, + // Unicode: [0x004B, K] + 0x0E, 0xD0, 0x3A, 0xC0, 0xE3, 0xC0, 0x83, 0x83, 0x07, 0x8E, 0x07, 0xB8, 0x07, 0xE0, 0x0B, 0x80, + 0x7B, 0x00, 0x8E, 0x07, 0x38, 0x78, 0xE0, 0xC0, 0x87, 0x03, 0x3D, 0x0E, 0xD0, 0x02, + // Unicode: [0x004C, L] + 0x0E, 0x80, 0x03, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x80, 0x03, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x80, + 0x03, 0xE0, 0x00, 0x78, 0x15, 0xFE, 0x1F, + // Unicode: [0x004D, M] + 0x1E, 0x00, 0xC0, 0xBB, 0x00, 0x40, 0xEF, 0x07, 0x00, 0xBE, 0x2F, 0x00, 0xFC, 0xDE, 0x00, 0xB8, + 0x3B, 0x0B, 0xB0, 0xEE, 0x38, 0xD0, 0xB8, 0xD3, 0xC1, 0xE2, 0x0E, 0x4A, 0x87, 0x3B, 0x74, 0x0A, + 0xEE, 0xC0, 0x1E, 0xB8, 0x03, 0x3D, 0xE0, 0x0E, 0xB0, 0x80, 0x03, + // Unicode: [0x004E, N] + 0x1E, 0x00, 0x9D, 0x0F, 0x40, 0xE7, 0x0B, 0xD0, 0x79, 0x07, 0x74, 0x8E, 0x03, 0x9D, 0xD3, 0x42, + 0xE7, 0xE0, 0xD1, 0x39, 0xB0, 0x74, 0x0E, 0x74, 0x9D, 0x03, 0xB8, 0xE7, 0x00, 0xFC, 0x39, 0x00, + 0x7D, 0x0E, 0x00, 0x1E, + // Unicode: [0x004F, O] + 0x00, 0xF9, 0x06, 0x00, 0xB8, 0xE5, 0x07, 0xF0, 0x01, 0xF0, 0x80, 0x07, 0x00, 0x2C, 0x2C, 0x00, + 0x80, 0xC3, 0x02, 0x00, 0x74, 0x1D, 0x00, 0x40, 0xC7, 0x02, 0x00, 0x74, 0x2C, 0x00, 0x80, 0x83, + 0x07, 0x00, 0x2C, 0xF0, 0x01, 0xF0, 0x00, 0xB8, 0xE5, 0x07, 0x00, 0xF9, 0x06, 0x00, + // Unicode: [0x0050, P] + 0xFE, 0x2F, 0x78, 0xE5, 0xE3, 0x00, 0x9D, 0x03, 0xB0, 0x0E, 0xC0, 0x3A, 0x40, 0xEB, 0x40, 0x8F, + 0xFF, 0x1F, 0x5E, 0x01, 0x38, 0x00, 0xE0, 0x00, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xF9, 0x06, 0x00, 0xB8, 0xE5, 0x07, 0xF0, 0x01, 0xF0, 0x80, 0x07, 0x00, 0x2C, 0x2C, 0x00, + 0x80, 0xC3, 0x02, 0x00, 0x74, 0x1D, 0x00, 0x40, 0xC7, 0x02, 0x00, 0x74, 0x2C, 0x00, 0x80, 0x83, + 0x07, 0x00, 0x2C, 0xF0, 0x01, 0xF0, 0x00, 0xB8, 0xE5, 0x07, 0x00, 0xF9, 0x2E, 0x00, 0x00, 0x40, + 0x0F, 0x00, 0x00, 0xD0, 0x03, + // Unicode: [0x0052, R] + 0xFE, 0x2F, 0x78, 0xE5, 0xE3, 0x00, 0x9D, 0x03, 0xB0, 0x0E, 0xC0, 0x3A, 0x40, 0xEB, 0x40, 0x8F, + 0xFF, 0x1F, 0x5E, 0x0E, 0x38, 0xB4, 0xE0, 0x80, 0x87, 0x03, 0x3C, 0x0E, 0xD0, 0x02, + // Unicode: [0x0053, S] + 0xE4, 0x1B, 0xF4, 0xE5, 0xE2, 0x00, 0xDE, 0x02, 0x10, 0x1E, 0x00, 0xF4, 0x06, 0x40, 0xFE, 0x02, + 0x40, 0x3E, 0x00, 0xD0, 0x15, 0x00, 0xEB, 0x00, 0x5D, 0x6F, 0x2E, 0xE4, 0x2F, 0x00, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0x53, 0x6D, 0x05, 0xB0, 0x00, 0xC0, 0x02, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0xB0, 0x00, + 0xC0, 0x02, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0xB0, 0x00, 0xC0, 0x02, 0x00, 0x0B, 0x00, + // Unicode: [0x0055, U] + 0x0E, 0x00, 0xEB, 0x00, 0xB0, 0x0E, 0x00, 0xEB, 0x00, 0xB0, 0x0E, 0x00, 0xEB, 0x00, 0xB0, 0x0E, + 0x00, 0xEB, 0x00, 0xB0, 0x0E, 0x00, 0xDB, 0x01, 0xB0, 0x2C, 0x80, 0x87, 0xAB, 0x2E, 0x90, 0x6F, + 0x00, + // Unicode: [0x0056, V] + 0x1D, 0x00, 0xB0, 0x2C, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x74, 0x00, 0x1D, 0xB0, 0x00, 0x0E, 0xE0, + 0x00, 0x0B, 0xD0, 0x41, 0x07, 0xC0, 0x82, 0x03, 0x80, 0xC3, 0x02, 0x00, 0xD7, 0x01, 0x00, 0xEA, + 0x00, 0x00, 0xBD, 0x00, 0x00, 0x7C, 0x00, + // Unicode: [0x0057, W] + 0x1D, 0x40, 0x0F, 0x80, 0xB7, 0x00, 0x3D, 0x00, 0xCB, 0x02, 0xF8, 0x01, 0x1D, 0x0E, 0xB0, 0x0B, + 0x74, 0x74, 0xD0, 0x39, 0xE0, 0xC0, 0x82, 0xD3, 0xC1, 0x02, 0x0B, 0x0B, 0x47, 0x07, 0x38, 0x1C, + 0x2C, 0x0D, 0xD0, 0x35, 0xE0, 0x28, 0x00, 0xAB, 0x40, 0x77, 0x00, 0xE8, 0x01, 0xEC, 0x01, 0xD0, + 0x07, 0xE0, 0x03, 0x40, 0x0F, 0x40, 0x0B, 0x00, + // Unicode: [0x0058, X] + 0x0F, 0x80, 0xB7, 0x40, 0x87, 0x03, 0x0F, 0x2C, 0x1D, 0xE0, 0x2D, 0x00, 0x3F, 0x00, 0xB4, 0x00, + 0xF0, 0x03, 0xE0, 0x2D, 0xC0, 0xE2, 0x81, 0x03, 0x4F, 0x07, 0x74, 0x0F, 0x80, 0x03, + // Unicode: [0x0059, Y] + 0x1D, 0x00, 0xCF, 0x03, 0x74, 0x74, 0x80, 0x03, 0x0B, 0x1D, 0xD0, 0xE1, 0x00, 0x6C, 0x07, 0x40, + 0x3F, 0x00, 0xF0, 0x01, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x0E, + 0x00, + // Unicode: [0x005A, Z] + 0xFC, 0xFF, 0x53, 0x95, 0x0B, 0x00, 0x0E, 0x00, 0x2D, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xB0, 0x00, + 0xE0, 0x01, 0xD0, 0x02, 0xC0, 0x03, 0x40, 0x07, 0x00, 0x5F, 0x55, 0xFD, 0xFF, 0x03, + // Unicode: [0x005B, bracketleft] + 0xBE, 0x5E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0xBE, 0x55, + // Unicode: [0x005C, backslash] + 0x0E, 0x00, 0x1D, 0x00, 0x2C, 0x00, 0x38, 0x00, 0x74, 0x00, 0xB0, 0x00, 0xA0, 0x00, 0xE0, 0x00, + 0xD0, 0x01, 0xC0, 0x02, 0x80, 0x03, 0x40, 0x07, 0x00, 0x07, 0x00, 0x0B, 0x00, 0x0E, 0x00, 0x1D, + 0x00, 0x2C, 0x00, 0x38, 0x00, 0x74, 0x00, 0x70, + // Unicode: [0x005D, bracketright] + 0x7F, 0x75, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, + 0x74, 0x74, 0x74, 0x7F, 0x15, + // Unicode: [0x005E, asciicircum] + 0x00, 0x06, 0x00, 0xF8, 0x00, 0xC0, 0x1F, 0x00, 0xDD, 0x02, 0xB0, 0x74, 0x40, 0x07, 0x0B, 0x38, + 0xE0, 0xD0, 0x01, 0x2C, 0x0E, 0x80, 0xB3, 0x00, 0x74, + // Unicode: [0x005F, underscore] + 0xAA, 0xAA, 0xF6, 0xFF, 0x7F, + // Unicode: [0x0060, grave] + 0x06, 0x6D, 0xE0, + // Unicode: [0x0061, a] + 0xE0, 0x2F, 0xCB, 0x9B, 0xBB, 0x1E, 0x80, 0xBB, 0x00, 0xB4, 0x0B, 0x00, 0x7B, 0x00, 0xB0, 0x0B, + 0x00, 0xEB, 0x01, 0xB8, 0xBC, 0xA5, 0x0B, 0xFE, 0xB2, + // Unicode: [0x0062, b] + 0x0E, 0x00, 0x80, 0x03, 0x00, 0xE0, 0x00, 0x00, 0x38, 0xF9, 0x02, 0xEE, 0xE6, 0x87, 0x0F, 0xD0, + 0xE2, 0x01, 0xE0, 0x39, 0x00, 0x74, 0x0E, 0x00, 0x9D, 0x07, 0x80, 0xE7, 0x03, 0xB4, 0xB8, 0x9B, + 0x0F, 0x4E, 0xBE, 0x00, + // Unicode: [0x0063, c] + 0xE0, 0x2F, 0xF0, 0xE6, 0xE7, 0x01, 0xEC, 0x02, 0x50, 0x0B, 0x00, 0x2C, 0x00, 0xB0, 0x00, 0x94, + 0x07, 0xB0, 0xBC, 0xF9, 0x81, 0xBF, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x00, 0x0B, 0xFE, 0xB1, 0xBC, 0xB9, 0xEB, 0x01, 0xB8, 0x0B, + 0x40, 0xBB, 0x00, 0xB0, 0x07, 0x00, 0xBB, 0x00, 0xB0, 0x1E, 0x80, 0xCB, 0x5B, 0xBA, 0xE0, 0x2F, + 0x0B, + // Unicode: [0x0065, e] + 0xE0, 0x6F, 0xC0, 0x9B, 0x1F, 0x1E, 0x80, 0xB3, 0x00, 0x74, 0xFF, 0xFF, 0xB7, 0x55, 0x15, 0x0B, + 0x40, 0xE1, 0x01, 0x2C, 0xBC, 0xF9, 0x01, 0xFE, 0x02, + // Unicode: [0x0066, f] + 0x90, 0x07, 0x1F, 0x74, 0xE0, 0x7F, 0xB9, 0x41, 0x07, 0x74, 0x40, 0x07, 0x74, 0x40, 0x07, 0x74, + 0x40, 0x07, 0x74, 0x00, + // Unicode: [0x0067, g] + 0xE0, 0x2F, 0xCB, 0x5B, 0xBA, 0x1E, 0x80, 0xBB, 0x00, 0xB0, 0x07, 0x00, 0xBB, 0x00, 0xB0, 0x0B, + 0x40, 0xEB, 0x01, 0xB8, 0xBC, 0xB9, 0x0B, 0xFE, 0xB1, 0x00, 0x00, 0x9B, 0x00, 0xB0, 0x2D, 0x80, + 0x87, 0x9B, 0x2E, 0x90, 0x6F, 0x00, + // Unicode: [0x0068, h] + 0x0E, 0x00, 0xE0, 0x00, 0x00, 0x0E, 0x00, 0xE0, 0xF8, 0x06, 0xBE, 0xF9, 0xE1, 0x02, 0x3C, 0x1E, + 0x80, 0xE3, 0x00, 0x74, 0x0E, 0x40, 0xE7, 0x00, 0x74, 0x0E, 0x40, 0xE7, 0x00, 0x74, 0x0E, 0x40, + 0x07, + // Unicode: [0x0069, i] + 0x8E, 0x07, 0x38, 0x8E, 0xE3, 0x38, 0x8E, 0xE3, 0x38, 0x0E, + // Unicode: [0x006A, j] + 0xE0, 0x80, 0x07, 0x00, 0x38, 0xE0, 0x80, 0x03, 0x0E, 0x38, 0xE0, 0x80, 0x03, 0x0E, 0x38, 0xE0, + 0x80, 0x03, 0x0E, 0x38, 0xF5, 0xB4, 0x01, + // Unicode: [0x006B, k] + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xB8, 0x0E, 0x2D, 0x4E, 0x0B, 0xDE, 0x02, 0xFE, 0x00, + 0xFE, 0x00, 0xDE, 0x02, 0x4E, 0x0B, 0x0E, 0x2D, 0x0E, 0xB8, + // Unicode: [0x006C, l] + 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x0E, + // Unicode: [0x006D, m] + 0x9E, 0x6F, 0xE0, 0x1B, 0xF8, 0x96, 0xB7, 0xE5, 0xE1, 0x02, 0xBC, 0x00, 0x8E, 0x03, 0xE0, 0x01, + 0x74, 0x0E, 0x40, 0x03, 0xD0, 0x39, 0x00, 0x0D, 0x40, 0xE7, 0x00, 0x34, 0x00, 0x9D, 0x03, 0xD0, + 0x00, 0x74, 0x0E, 0x40, 0x03, 0xD0, 0x39, 0x00, 0x0D, 0x40, 0x07, + // Unicode: [0x006E, n] + 0x9E, 0x6F, 0xE0, 0x5B, 0x1E, 0x2E, 0xC0, 0xE3, 0x00, 0x38, 0x0E, 0x40, 0xE7, 0x00, 0x74, 0x0E, + 0x40, 0xE7, 0x00, 0x74, 0x0E, 0x40, 0xE7, 0x00, 0x74, + // Unicode: [0x006F, o] + 0x90, 0x6F, 0x80, 0x9B, 0x1F, 0x1E, 0x80, 0xB3, 0x00, 0xB4, 0x0B, 0x00, 0xBB, 0x00, 0xB0, 0x0B, + 0x40, 0xEB, 0x01, 0x38, 0xBC, 0xF9, 0x01, 0xFE, 0x06, + // Unicode: [0x0070, p] + 0x4E, 0xBE, 0x80, 0xBB, 0xF9, 0xE1, 0x03, 0xB4, 0x78, 0x00, 0x78, 0x0E, 0x00, 0x9D, 0x03, 0x40, + 0xE7, 0x01, 0xE0, 0xF9, 0x00, 0x2D, 0xEE, 0xE6, 0x83, 0x93, 0x2F, 0xE0, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x0E, 0x00, 0x80, 0x03, 0x00, 0xE0, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0xE0, 0x2F, 0xCB, 0x9B, 0xBB, 0x1E, 0x80, 0xBB, 0x00, 0xB4, 0x0B, 0x00, 0xBB, 0x00, 0xB0, 0x0B, + 0x40, 0xEB, 0x01, 0xB8, 0xBC, 0xB9, 0x0B, 0xFE, 0xB1, 0x00, 0x00, 0x0B, 0x00, 0xB0, 0x00, 0x00, + 0x0B, 0x00, 0xB0, 0x00, 0x00, 0x0B, + // Unicode: [0x0072, r] + 0x8E, 0xE7, 0x2E, 0x2E, 0xE0, 0x01, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + // Unicode: [0x0073, s] + 0xF4, 0x0B, 0x6E, 0x2E, 0x0B, 0x74, 0x1E, 0x00, 0xBD, 0x01, 0x90, 0x2F, 0x00, 0x78, 0x0B, 0x74, + 0x6E, 0x3D, 0xE4, 0x1B, + // Unicode: [0x0074, t] + 0x74, 0x40, 0x07, 0x74, 0xE0, 0xFF, 0xB9, 0x45, 0x07, 0x74, 0x40, 0x07, 0x74, 0x40, 0x07, 0x74, + 0x00, 0x5F, 0xD0, 0x0F, + // Unicode: [0x0075, u] + 0x0E, 0x80, 0x3B, 0x00, 0xEE, 0x00, 0xB8, 0x03, 0xE0, 0x0E, 0x80, 0x3B, 0x00, 0xEE, 0x00, 0x78, + 0x07, 0xF0, 0xB8, 0xF5, 0x83, 0x6F, 0x0E, + // Unicode: [0x0076, v] + 0x1E, 0x00, 0xDB, 0x02, 0x74, 0x38, 0x80, 0x43, 0x07, 0x2C, 0xB0, 0xE0, 0x00, 0x0E, 0x0B, 0xD0, + 0x75, 0x00, 0xAC, 0x03, 0x40, 0x2F, 0x00, 0xF0, 0x01, + // Unicode: [0x0077, w] + 0x0E, 0xE0, 0x01, 0x5D, 0x07, 0xB8, 0x40, 0xC3, 0x02, 0x3B, 0xA0, 0xE0, 0xD0, 0x1D, 0x1C, 0x34, + 0x28, 0x4B, 0x03, 0x1C, 0x87, 0xE3, 0x00, 0xDA, 0xD0, 0x28, 0x40, 0x2B, 0xB0, 0x07, 0xC0, 0x07, + 0xF8, 0x00, 0xF0, 0x00, 0x2D, 0x00, + // Unicode: [0x0078, x] + 0x1D, 0xE0, 0x38, 0x74, 0xB4, 0x2C, 0xE0, 0x0E, 0xC0, 0x07, 0xC0, 0x0B, 0xE0, 0x1E, 0x74, 0x2C, + 0x28, 0x74, 0x1D, 0xE0, + // Unicode: [0x0079, y] + 0x1E, 0x00, 0xDB, 0x02, 0x74, 0x38, 0x80, 0x43, 0x07, 0x1C, 0xB0, 0xD0, 0x00, 0x0E, 0x0B, 0xD0, + 0x75, 0x00, 0xB8, 0x03, 0x40, 0x2F, 0x00, 0xF0, 0x00, 0x00, 0x0B, 0x00, 0x74, 0x00, 0x80, 0x03, + 0x00, 0x2C, 0x00, 0xE0, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0x7F, 0x54, 0x79, 0x00, 0x2D, 0x00, 0x0F, 0x80, 0x07, 0xD0, 0x02, 0xE0, 0x00, 0x78, 0x00, + 0x7C, 0x15, 0xFD, 0x7F, + // Unicode: [0x007B, braceleft] + 0xE0, 0xD3, 0x86, 0x03, 0x0E, 0x38, 0xD0, 0x41, 0x07, 0x1D, 0x38, 0x78, 0xF0, 0x01, 0x0E, 0x74, + 0xD0, 0x41, 0x07, 0x0D, 0x38, 0xE0, 0x40, 0x07, 0xF8, 0x40, 0x01, + // Unicode: [0x007C, bar] + 0x5D, 0xD7, 0x75, 0x5D, 0xD7, 0x75, 0x5D, 0xD7, 0x75, 0x5D, 0xD7, 0x75, + // Unicode: [0x007D, braceright] + 0x2E, 0x50, 0x0B, 0xE0, 0x00, 0x0E, 0xA0, 0x00, 0x0B, 0xB0, 0x00, 0x0B, 0xE0, 0x00, 0x7D, 0x80, + 0x07, 0x0E, 0xB0, 0x00, 0x0B, 0xB0, 0x00, 0x0A, 0xE0, 0x00, 0x0E, 0xB4, 0xE0, 0x07, 0x05, 0x00, + // Unicode: [0x007E, asciitilde] + 0xBD, 0x75, 0x9B, 0x3F, 0x01, 0x05 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_4.cpp new file mode 100644 index 00000000..acc35552 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_Regular_18_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x00, 0x40, 0x3C, 0x5E, 0xBB, 0x38, 0x1D +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_0.cpp new file mode 100644 index 00000000..cb4dee9f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_0.cpp @@ -0,0 +1,315 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x7D, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x28, 0x78, 0xBD, 0x78, + // Unicode: [0x0022, quotedbl] + 0x69, 0xDA, 0xB6, 0x2D, 0xCB, 0xB2, + // Unicode: [0x0023, numbersign] + 0x00, 0xB8, 0xC0, 0x07, 0x00, 0x1F, 0xF4, 0x00, 0xC0, 0x07, 0x3D, 0xD0, 0xFF, 0xFF, 0xFF, 0xF4, + 0xFF, 0xFF, 0x3F, 0xD4, 0x5B, 0x7D, 0x05, 0xF0, 0x41, 0x0F, 0x50, 0x7D, 0xE5, 0x17, 0xFE, 0xFF, + 0xFF, 0x8F, 0xFF, 0xFF, 0xFF, 0x03, 0x7C, 0xD0, 0x03, 0x00, 0x1F, 0xF4, 0x00, 0xD0, 0x03, 0x2E, + 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x02, 0x00, 0x0C, 0x40, 0xFE, 0x46, 0xFF, 0x7F, 0x3F, 0xF7, 0xBF, 0x4C, 0xF5, 0x37, 0x40, + 0xFF, 0x06, 0xE4, 0xFF, 0x01, 0xEC, 0x0F, 0x30, 0xFE, 0xCB, 0xF8, 0xBE, 0xFB, 0xE2, 0xFF, 0x02, + 0xB5, 0x01, 0xC0, 0x00, + // Unicode: [0x0025, percent] + 0xE4, 0x06, 0xF8, 0x00, 0xEF, 0x03, 0x1F, 0xD0, 0xE2, 0xE1, 0x02, 0xB0, 0x79, 0x7D, 0x00, 0xF8, + 0xCB, 0x0B, 0x00, 0x10, 0xF4, 0x00, 0x00, 0x00, 0x1F, 0x15, 0x00, 0xE0, 0xE2, 0x2F, 0x00, 0x7D, + 0x2D, 0x0E, 0x80, 0x4B, 0x87, 0x07, 0xF4, 0xC0, 0xF6, 0x00, 0x1F, 0xD0, 0x1B, + // Unicode: [0x0026, ampersand] + 0x40, 0xBE, 0x01, 0x00, 0xFD, 0x7F, 0x00, 0xD0, 0xC3, 0x0B, 0x00, 0x7D, 0x00, 0x00, 0xC0, 0x1F, + 0x00, 0x00, 0xFE, 0x07, 0x2A, 0xB8, 0xF8, 0xF5, 0xD1, 0x07, 0xFD, 0x0B, 0x7D, 0x40, 0x7F, 0xC0, + 0x1B, 0xF9, 0x0B, 0xF8, 0xFF, 0xFB, 0x02, 0xF9, 0x1B, 0xBE, + // Unicode: [0x0027, quotesingle] + 0x69, 0xDB, 0xB2, + // Unicode: [0x0028, parenleft] + 0x40, 0x1F, 0xF4, 0x01, 0x2F, 0xE0, 0x03, 0xBC, 0x40, 0x0F, 0xE0, 0x03, 0xBC, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x01, 0x7C, 0x00, 0x2F, 0x80, 0x0B, 0xD0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0x7D, 0x00, + 0x7E, 0x00, 0x3E, + // Unicode: [0x0029, parenright] + 0x7D, 0x00, 0x3E, 0x00, 0x2F, 0x40, 0x1F, 0x80, 0x0B, 0xD0, 0x03, 0xF0, 0x01, 0xBC, 0x00, 0x2E, + 0x80, 0x0B, 0xE0, 0x02, 0xB8, 0x00, 0x2F, 0xC0, 0x07, 0xF4, 0x00, 0x3E, 0xD0, 0x07, 0xF8, 0x40, + 0x1F, 0xF4, 0x02, + // Unicode: [0x002A, asterisk] + 0x80, 0x01, 0x71, 0xE5, 0xEE, 0xD3, 0x1F, 0xFD, 0x6F, 0x77, 0x06, 0x2D, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x1F, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0xE0, 0xFF, 0xBF, 0xFE, 0xFF, 0x4B, 0xF5, 0x15, 0x00, + 0x1F, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, + // Unicode: [0x002C, comma] + 0xB8, 0x7C, 0x3C, 0x2D, 0x0E, + // Unicode: [0x002D, hyphen] + 0xFE, 0xFF, 0xFE, 0xFF, + // Unicode: [0x002E, period] + 0xDE, 0xEF, 0x01, + // Unicode: [0x002F, slash] + 0x00, 0xF8, 0x00, 0xBC, 0x00, 0x7C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x2E, 0x00, 0x1F, 0x40, 0x0F, + 0x80, 0x0F, 0x80, 0x0B, 0xC0, 0x07, 0xD0, 0x07, 0xE0, 0x03, 0xE0, 0x02, 0xF0, 0x01, 0xF4, 0x01, + 0xF4, 0x00, 0xB8, 0x00, 0x7C, 0x00, 0x7D, 0x00, + // Unicode: [0x0030, zero] + 0xD0, 0x6F, 0x80, 0xFF, 0x1F, 0xBD, 0xF5, 0xE3, 0x03, 0x7D, 0x2F, 0xC0, 0xFB, 0x01, 0xBC, 0x1F, + 0x80, 0xFB, 0x01, 0xBC, 0x2F, 0xC0, 0xEB, 0x03, 0x7D, 0xBD, 0xF5, 0x83, 0xFF, 0x1F, 0xD0, 0x6F, + 0x00, + // Unicode: [0x0031, one] + 0xFD, 0xF7, 0x4F, 0x3E, 0xF8, 0xE0, 0x83, 0x0F, 0x3E, 0xF8, 0xE0, 0x83, 0x0F, 0x3E, 0xF8, 0xE0, + 0x03, + // Unicode: [0x0032, two] + 0x90, 0x7F, 0x40, 0xFF, 0x2F, 0xFC, 0xE5, 0xC7, 0x07, 0x7D, 0x14, 0xD0, 0x07, 0x00, 0x3E, 0x00, + 0xF4, 0x02, 0xC0, 0x0F, 0x00, 0x7F, 0x00, 0xFD, 0x00, 0xF4, 0x03, 0xD0, 0xFF, 0xBF, 0xFD, 0xFF, + 0x0B, + // Unicode: [0x0033, three] + 0xE4, 0x2F, 0xF4, 0xFF, 0xF3, 0x47, 0x5F, 0x05, 0x7C, 0x00, 0xF8, 0x00, 0xFF, 0x01, 0xFC, 0x07, + 0x00, 0x7E, 0x00, 0xE0, 0x7E, 0x80, 0xFB, 0x47, 0x6F, 0xFF, 0x3F, 0xE4, 0x2F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0xF8, 0x02, 0x40, 0xBF, 0x00, 0xF4, 0x2F, 0x40, 0x9F, 0x0B, 0xF0, 0xE2, 0x02, 0x2E, 0xB8, + 0xE0, 0x03, 0x2E, 0xFC, 0xFF, 0x7F, 0xFF, 0xFF, 0x5F, 0x55, 0xBD, 0x01, 0x00, 0x2F, 0x00, 0xC0, + 0x0B, + // Unicode: [0x0035, five] + 0xFD, 0xFF, 0xD2, 0xFF, 0x2F, 0x7D, 0x55, 0xD0, 0x03, 0x00, 0x7D, 0xBF, 0xD0, 0xFF, 0x2F, 0xBD, + 0xE0, 0x57, 0x01, 0xBC, 0x00, 0xC0, 0x9B, 0x02, 0xBC, 0xBD, 0xE5, 0x87, 0xFF, 0x2F, 0x90, 0x6F, + 0x00, + // Unicode: [0x0036, six] + 0x90, 0x6F, 0x80, 0xFF, 0x1F, 0x7C, 0xE0, 0xD3, 0x02, 0x00, 0x6E, 0x7F, 0xE0, 0xFF, 0x2F, 0xBE, + 0xE0, 0xE3, 0x03, 0x7C, 0x2E, 0xC0, 0xD7, 0x03, 0x7C, 0xBC, 0xE5, 0x43, 0xFF, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x0037, seven] + 0xFD, 0xFF, 0xD7, 0xFF, 0x7F, 0x00, 0xD0, 0x03, 0x00, 0x2E, 0x00, 0xF4, 0x01, 0x80, 0x0B, 0x00, + 0x7C, 0x00, 0xE0, 0x03, 0x00, 0x1F, 0x00, 0xF4, 0x00, 0xC0, 0x0B, 0x00, 0x3D, 0x00, 0xE0, 0x02, + 0x00, + // Unicode: [0x0038, eight] + 0xE0, 0x6F, 0xC0, 0xFF, 0x2F, 0x7E, 0xE0, 0xE3, 0x03, 0x3D, 0x7D, 0xE0, 0x43, 0xFF, 0x1F, 0xF8, + 0xFF, 0xE1, 0x07, 0x3E, 0x2F, 0xC0, 0xF7, 0x02, 0x7C, 0x7E, 0xE4, 0xC7, 0xFF, 0x2F, 0xE0, 0x6F, + 0x00, + // Unicode: [0x0039, nine] + 0xE0, 0x6F, 0xC0, 0xFF, 0x1F, 0x7E, 0xE4, 0xE2, 0x02, 0x3D, 0x2E, 0xD0, 0xE3, 0x07, 0x7E, 0xFC, + 0xFF, 0x07, 0xBE, 0x7D, 0x00, 0xC0, 0x93, 0x02, 0x3D, 0xBD, 0xF4, 0x82, 0xFF, 0x1F, 0x90, 0x6F, + 0x00, + // Unicode: [0x003A, colon] + 0xDE, 0xEF, 0x01, 0x00, 0x00, 0x78, 0xBF, 0x07, + // Unicode: [0x003B, semicolon] + 0x2D, 0x7E, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x3D, 0x1E, 0x0F, 0x0B, + // Unicode: [0x003C, less] + 0x40, 0x3F, 0xF4, 0x07, 0x7F, 0xF0, 0x07, 0xFD, 0x00, 0xFD, 0x00, 0xFD, 0x00, 0xFD, + // Unicode: [0x003D, equal] + 0xFD, 0xFF, 0x6F, 0xFF, 0xFF, 0x4B, 0x55, 0x55, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x6F, 0xFF, 0xFF, + 0x0B, + // Unicode: [0x003E, greater] + 0x7E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x80, 0x1F, 0xF8, 0x81, 0x1F, 0xF8, 0x01, + // Unicode: [0x003F, question] + 0xE0, 0x6F, 0xE0, 0xFF, 0xD7, 0x47, 0x2F, 0x05, 0xF8, 0x00, 0xF4, 0x82, 0xFF, 0x03, 0xBE, 0x01, + 0xB8, 0x00, 0x00, 0x00, 0x40, 0x0B, 0x00, 0x3F, 0x00, 0xB8, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x40, 0xAA, 0x01, 0x00, 0xE4, 0xFF, 0x7F, 0x00, 0xF4, 0x06, 0xE4, 0x07, 0xF4, 0x01, 0x00, + 0x3D, 0xF4, 0xD0, 0xEB, 0xE2, 0xE1, 0xE1, 0xFF, 0x4B, 0xDB, 0xD3, 0x47, 0x1F, 0x6D, 0x8B, 0x0B, + 0x7C, 0xB4, 0x1E, 0x1F, 0xF0, 0xE0, 0x79, 0xBC, 0xE0, 0xC3, 0xE3, 0xE1, 0xEB, 0xEF, 0x47, 0x0B, + 0xBE, 0xF4, 0x06, 0x7C, 0x00, 0x00, 0x00, 0xD0, 0x1B, 0x50, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, + 0x40, 0xAA, 0x01, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xFD, 0x00, 0x00, 0xF8, 0x07, 0x00, 0xF0, 0x3F, 0x00, 0xD0, 0xFB, 0x01, 0x80, 0xCF, 0x0B, + 0x00, 0x2F, 0x3E, 0x00, 0x3D, 0xF4, 0x01, 0xBC, 0xC0, 0x0B, 0xF4, 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, + 0xC1, 0x0B, 0xC0, 0x4F, 0x1F, 0x00, 0x7D, + // Unicode: [0x0042, B] + 0xFE, 0xBF, 0xE0, 0xFF, 0x3F, 0x2E, 0xE0, 0xE7, 0x02, 0x7C, 0x2E, 0xE0, 0xE3, 0xFF, 0x1F, 0xFE, + 0xFF, 0xE2, 0x02, 0x7D, 0x2E, 0x80, 0xEB, 0x02, 0xBD, 0xFE, 0xFF, 0xE7, 0xFF, 0x1B, + // Unicode: [0x0043, C] + 0x00, 0xFA, 0x0B, 0x40, 0xFF, 0xFF, 0x41, 0xBF, 0xE5, 0x1F, 0x3E, 0x00, 0xBD, 0xBC, 0x00, 0x00, + 0xF4, 0x01, 0x00, 0xD0, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0xF4, 0xD2, 0x6F, 0xF9, + 0x07, 0xFD, 0xFF, 0x07, 0x80, 0xFE, 0x02, + // Unicode: [0x0044, D] + 0xFE, 0x6F, 0x00, 0xFE, 0xFF, 0x07, 0x2E, 0xD4, 0x1F, 0x2E, 0x00, 0x2F, 0x2E, 0x00, 0x3E, 0x2E, + 0x00, 0x7D, 0x2E, 0x00, 0x7D, 0x2E, 0x00, 0x3E, 0x2E, 0x00, 0x2F, 0x2E, 0xD4, 0x1F, 0xFE, 0xFF, + 0x07, 0xFE, 0x6F, 0x00, + // Unicode: [0x0045, E] + 0xFE, 0xBF, 0xFE, 0xBF, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0xFE, 0x3F, 0xFE, 0x3F, 0x2E, 0x00, + 0x2E, 0x00, 0x2E, 0x00, 0xFE, 0xBF, 0xFE, 0xBF, + // Unicode: [0x0046, F] + 0xFE, 0xFF, 0xFE, 0xFF, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0xFE, 0x2F, 0xFE, 0x2F, 0x2E, 0x00, + 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xFA, 0x0A, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x5B, 0xFE, 0x81, 0x1F, 0x00, 0x1A, 0xBC, 0x00, + 0x00, 0xD0, 0x07, 0xFE, 0x7F, 0x7D, 0xE0, 0xFF, 0xC7, 0x0B, 0x00, 0x3E, 0xF8, 0x01, 0xF0, 0x42, + 0xBF, 0xD5, 0x0F, 0xD0, 0xFF, 0x7F, 0x00, 0xA0, 0xAF, 0x00, + // Unicode: [0x0048, H] + 0x2E, 0x00, 0xAF, 0x0B, 0xC0, 0xEB, 0x02, 0xF0, 0xBA, 0x00, 0xBC, 0x2E, 0x00, 0xAF, 0xFF, 0xFF, + 0xEB, 0xFF, 0xFF, 0xBA, 0x00, 0xBC, 0x2E, 0x00, 0xAF, 0x0B, 0xC0, 0xEB, 0x02, 0xF0, 0xBA, 0x00, + 0xBC, + // Unicode: [0x0049, I] + 0xAE, 0xEB, 0xBA, 0xAE, 0xEB, 0xBA, 0xAE, 0xEB, 0xBA, + // Unicode: [0x004A, J] + 0x00, 0xF0, 0x02, 0xC0, 0x0B, 0x00, 0x2F, 0x00, 0xBC, 0x00, 0xF0, 0x02, 0xC0, 0x0B, 0x00, 0x2F, + 0x00, 0xBC, 0x69, 0xF0, 0xF2, 0xE6, 0x87, 0xFF, 0x0F, 0xE4, 0x0B, + // Unicode: [0x004B, K] + 0x2E, 0xC0, 0xEF, 0x02, 0x3F, 0x2E, 0xF8, 0xE1, 0xE2, 0x07, 0x6E, 0x1F, 0xE0, 0xBF, 0x00, 0xFE, + 0x0B, 0xE0, 0xFA, 0x02, 0x2E, 0x7E, 0xE0, 0x82, 0x1F, 0x2E, 0xF0, 0xE7, 0x02, 0xFC, + // Unicode: [0x004C, L] + 0x2E, 0x80, 0x0B, 0xE0, 0x02, 0xB8, 0x00, 0x2E, 0x80, 0x0B, 0xE0, 0x02, 0xB8, 0x00, 0x2E, 0x80, + 0x0B, 0xE0, 0xFF, 0xFB, 0xFF, + // Unicode: [0x004D, M] + 0x7E, 0x00, 0xC0, 0xEF, 0x0B, 0x00, 0xFE, 0xFE, 0x01, 0xF0, 0xEF, 0x2F, 0x40, 0xFF, 0xFE, 0x03, + 0xFC, 0xEF, 0xBA, 0xD0, 0xFB, 0x6E, 0x0F, 0x9E, 0xEF, 0xE2, 0xF5, 0xF8, 0x2E, 0xBD, 0x8B, 0xEF, + 0xC2, 0x3F, 0xF8, 0x2E, 0xF8, 0x82, 0xEF, 0x02, 0x1F, 0xF8, + // Unicode: [0x004E, N] + 0x3E, 0x00, 0xBE, 0x2F, 0x80, 0xEF, 0x1F, 0xE0, 0xFB, 0x1F, 0xF8, 0xAE, 0x0F, 0xBE, 0xCB, 0x8B, + 0xEF, 0xD2, 0xE7, 0xBB, 0xE0, 0xFB, 0x2E, 0xF0, 0xBF, 0x0B, 0xF4, 0xEF, 0x02, 0xF8, 0xBB, 0x00, + 0xFC, + // Unicode: [0x004F, O] + 0x00, 0xF9, 0x0B, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x5B, 0xFD, 0x81, 0x0F, 0x00, 0x3F, 0xBC, 0x00, + 0xD0, 0xD7, 0x07, 0x00, 0x7C, 0x7D, 0x00, 0xC0, 0xC7, 0x0B, 0x00, 0x7D, 0xF8, 0x01, 0xF0, 0x43, + 0xBF, 0xD5, 0x1F, 0xD0, 0xFF, 0x7F, 0x00, 0x90, 0xBF, 0x00, + // Unicode: [0x0050, P] + 0xFE, 0x6F, 0xE0, 0xFF, 0x2F, 0x2E, 0xE0, 0xE7, 0x02, 0x7D, 0x2E, 0xE0, 0xE7, 0xFF, 0x2F, 0xFE, + 0x6F, 0xE0, 0x02, 0x00, 0x2E, 0x00, 0xE0, 0x02, 0x00, 0x2E, 0x00, 0xE0, 0x02, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xF9, 0x0B, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0x5B, 0xFD, 0x81, 0x0F, 0x00, 0x3F, 0xBC, 0x00, + 0xD0, 0xD7, 0x07, 0x00, 0x7C, 0x7D, 0x00, 0xC0, 0xC7, 0x0B, 0x00, 0x7D, 0xF8, 0x01, 0xF0, 0x43, + 0xBF, 0xD5, 0x1F, 0xD0, 0xFF, 0x7F, 0x00, 0x90, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, + 0x7E, + // Unicode: [0x0052, R] + 0xFE, 0x6F, 0xE0, 0xFF, 0x2F, 0x2E, 0xE0, 0xE7, 0x02, 0x7C, 0x2E, 0xD0, 0xE7, 0xFF, 0x2F, 0xFE, + 0x7F, 0xE0, 0xE2, 0x03, 0x2E, 0xBD, 0xE0, 0x82, 0x1F, 0x2E, 0xF0, 0xE2, 0x02, 0x7E, + // Unicode: [0x0053, S] + 0xE4, 0x2F, 0xF4, 0xFF, 0xF7, 0x47, 0xEF, 0x0B, 0x54, 0x7E, 0x00, 0xF4, 0x6F, 0x00, 0xF9, 0x1F, + 0x00, 0xBD, 0x1A, 0xE0, 0xFF, 0xD1, 0xDB, 0xFF, 0x1F, 0xF9, 0x1B, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0xDB, 0xFF, 0xBF, 0x00, 0x1F, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, 0xF0, 0x01, 0x00, + 0x1F, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, 0xF0, 0x01, + // Unicode: [0x0055, U] + 0x2E, 0x40, 0x9F, 0x0B, 0xD0, 0xE7, 0x02, 0xF4, 0xB9, 0x00, 0x7D, 0x2E, 0x40, 0x9F, 0x0B, 0xD0, + 0xE7, 0x02, 0xF4, 0xB9, 0x00, 0x7D, 0x3E, 0x40, 0x5F, 0x6F, 0xF9, 0x83, 0xFF, 0x7F, 0x40, 0xFE, + 0x02, + // Unicode: [0x0056, V] + 0x3E, 0x00, 0xF4, 0xF5, 0x01, 0xE0, 0x83, 0x0F, 0xC0, 0x0B, 0x7D, 0x40, 0x1F, 0xF0, 0x02, 0x2E, + 0x80, 0x0F, 0x7C, 0x00, 0x7D, 0xF8, 0x00, 0xF0, 0xF2, 0x02, 0x40, 0xDF, 0x07, 0x00, 0xFC, 0x0F, + 0x00, 0xE0, 0x1F, 0x00, 0x40, 0x3F, 0x00, + // Unicode: [0x0057, W] + 0x7D, 0x40, 0x2F, 0x80, 0xDF, 0x07, 0xF8, 0x03, 0xBC, 0xBC, 0x80, 0x7F, 0xD0, 0x87, 0x0F, 0xFC, + 0x0B, 0x3E, 0xF4, 0xD0, 0xFB, 0xE0, 0x02, 0x1F, 0x6E, 0x0F, 0x1F, 0xE0, 0xF2, 0xF1, 0xF5, 0x00, + 0x7D, 0x0F, 0x6E, 0x0F, 0xD0, 0xBB, 0xD0, 0xBB, 0x00, 0xFC, 0x07, 0xFC, 0x07, 0x80, 0x3F, 0xC0, + 0x3F, 0x00, 0xF4, 0x03, 0xF8, 0x02, + // Unicode: [0x0058, X] + 0x3F, 0x80, 0x5F, 0x2F, 0xF4, 0x82, 0x1F, 0x3E, 0xC0, 0xDF, 0x07, 0xD0, 0xBF, 0x00, 0xE0, 0x0F, + 0x00, 0xF8, 0x03, 0x40, 0xFF, 0x02, 0xF0, 0xFA, 0x01, 0x3E, 0xFC, 0xD0, 0x07, 0xBD, 0xFC, 0x00, + 0x7E, + // Unicode: [0x0059, Y] + 0x7E, 0x00, 0x3E, 0x2F, 0xD0, 0x47, 0x1F, 0xF8, 0xC0, 0x4B, 0x1F, 0xD0, 0xE7, 0x02, 0xE0, 0x7F, + 0x00, 0xF4, 0x0B, 0x00, 0xF8, 0x01, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, 0x00, 0xF8, + 0x00, + // Unicode: [0x005A, Z] + 0xFF, 0xFF, 0xFD, 0xFF, 0x07, 0x80, 0x0F, 0x40, 0x1F, 0x40, 0x2F, 0x00, 0x3F, 0x00, 0x7E, 0x00, + 0xBD, 0x00, 0xBC, 0x00, 0xF8, 0x01, 0xF0, 0xFF, 0xDF, 0xFF, 0x7F, + // Unicode: [0x005B, bracketleft] + 0xFE, 0xFB, 0xEF, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, 0x82, 0x0B, 0x2E, + 0xB8, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, 0xBF, 0xFF, + // Unicode: [0x005C, backslash] + 0x2E, 0x00, 0x3E, 0x00, 0x7D, 0x00, 0x7C, 0x00, 0xB8, 0x00, 0xF4, 0x00, 0xF4, 0x01, 0xF0, 0x01, + 0xE0, 0x02, 0xD0, 0x03, 0xD0, 0x07, 0xC0, 0x0B, 0x80, 0x0B, 0x40, 0x0F, 0x00, 0x1F, 0x00, 0x2F, + 0x00, 0x2E, 0x00, 0x3D, 0x00, 0x7C, 0x00, 0xBC, + // Unicode: [0x005D, bracketright] + 0xFF, 0xFE, 0x0B, 0x2F, 0xBC, 0xF0, 0xC2, 0x0B, 0x2F, 0xBC, 0xF0, 0xC2, 0x0B, 0x2F, 0xBC, 0xF0, + 0xC2, 0x0B, 0x2F, 0xBC, 0xF0, 0xC2, 0xFB, 0xEF, 0xBF, + // Unicode: [0x005E, asciicircum] + 0x00, 0x68, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xFF, 0x01, 0x40, 0xFF, 0x02, 0xC0, 0xDB, 0x03, 0xD0, + 0xC7, 0x0B, 0xE0, 0x82, 0x0F, 0xF4, 0x01, 0x2F, 0xF8, 0x00, 0x3E, 0x7D, 0x00, 0x7D, + // Unicode: [0x005F, underscore] + 0x55, 0x55, 0xD5, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x01, + // Unicode: [0x0060, grave] + 0x1A, 0xF8, 0x42, 0x1E, + // Unicode: [0x0061, a] + 0x80, 0x6F, 0x3E, 0xFD, 0xFF, 0x8F, 0x6F, 0xF9, 0xF7, 0x02, 0xFC, 0x7D, 0x00, 0x7E, 0x1F, 0x80, + 0xDF, 0x0B, 0xF0, 0xE3, 0x07, 0xFE, 0xF4, 0xFF, 0x3F, 0xE0, 0x9B, 0x0F, + // Unicode: [0x0062, b] + 0x15, 0x00, 0x80, 0x0B, 0x00, 0xE0, 0x02, 0x00, 0xB8, 0x00, 0x00, 0x6E, 0xBE, 0x81, 0xFF, 0xFF, + 0xE1, 0x5F, 0xFD, 0xF8, 0x01, 0x7D, 0x2E, 0x00, 0xAF, 0x0B, 0xC0, 0xEB, 0x07, 0xF4, 0xF9, 0x57, + 0x3F, 0xFE, 0xFF, 0x87, 0x9B, 0x6F, 0x00, + // Unicode: [0x0063, c] + 0x80, 0xBF, 0x00, 0xFF, 0x7F, 0xF8, 0xD1, 0xDB, 0x07, 0x54, 0x7D, 0x00, 0xD0, 0x07, 0x00, 0x7D, + 0x40, 0x85, 0x1F, 0xBD, 0xF4, 0xFF, 0x07, 0xF8, 0x0B, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, 0xBE, 0xF9, 0xF4, 0xFF, 0x3F, 0xBE, 0xE5, + 0xDF, 0x0B, 0xF0, 0xF7, 0x01, 0xF8, 0x7D, 0x00, 0x7E, 0x2F, 0xC0, 0x8F, 0x1F, 0xF8, 0xD3, 0xFF, + 0xFF, 0x80, 0x6F, 0x3E, + // Unicode: [0x0065, e] + 0x80, 0xBF, 0x01, 0xFC, 0xFF, 0x81, 0x1F, 0xFD, 0xF4, 0x01, 0x7D, 0xFD, 0xFF, 0x5F, 0xAF, 0xAA, + 0xD6, 0x07, 0x50, 0xE0, 0x47, 0x3F, 0xF0, 0xFF, 0x07, 0xE0, 0x2F, 0x00, + // Unicode: [0x0066, f] + 0x80, 0x0B, 0xBF, 0xF4, 0x42, 0x0F, 0xFE, 0xEB, 0xBF, 0xF8, 0x40, 0x0F, 0xF4, 0x40, 0x0F, 0xF4, + 0x40, 0x0F, 0xF4, 0x40, 0x0F, + // Unicode: [0x0067, g] + 0x80, 0x6F, 0x3E, 0xFD, 0xFF, 0x8F, 0x1F, 0xF8, 0xF7, 0x01, 0xFC, 0x7D, 0x00, 0x7E, 0x1F, 0x80, + 0xDF, 0x0B, 0xF0, 0xE3, 0x5B, 0xFE, 0xF4, 0xFF, 0x3E, 0xE0, 0x9B, 0x0F, 0x00, 0xE0, 0xA3, 0x02, + 0xBC, 0xF8, 0x96, 0x1F, 0xFC, 0xFF, 0x02, 0xE8, 0x1B, 0x00, + // Unicode: [0x0068, h] + 0x2E, 0x00, 0xE0, 0x02, 0x00, 0x2E, 0x00, 0xE0, 0xE6, 0x0B, 0xFE, 0xFF, 0xE3, 0x5B, 0x7E, 0x3E, + 0xC0, 0xEB, 0x02, 0xB8, 0x2E, 0x80, 0xEB, 0x02, 0xB8, 0x2E, 0x80, 0xEB, 0x02, 0xB8, 0x2E, 0x80, + 0x0B, + // Unicode: [0x0069, i] + 0xED, 0xEF, 0x02, 0xAE, 0xEB, 0xBA, 0xAE, 0xEB, 0xBA, 0xAE, 0x0B, + // Unicode: [0x006A, j] + 0xE0, 0xC2, 0x0F, 0x2E, 0x00, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, 0x82, 0x0B, 0x2E, 0xB8, 0xE0, + 0x82, 0x0B, 0x2E, 0xB8, 0xF4, 0xFA, 0xE7, 0x0B, + // Unicode: [0x006B, k] + 0x2E, 0x00, 0xB8, 0x00, 0xE0, 0x02, 0x80, 0x0B, 0xFD, 0x2E, 0xFC, 0xB8, 0xF8, 0xE1, 0xFA, 0x81, + 0xFF, 0x01, 0xFE, 0x07, 0xB8, 0x7E, 0xE0, 0xE2, 0x87, 0x0B, 0x3F, 0x2E, 0xF4, 0x03, + // Unicode: [0x006C, l] + 0xAE, 0xEB, 0xBA, 0xAE, 0xEB, 0xBA, 0xAE, 0xEB, 0xBA, 0x2E, + // Unicode: [0x006D, m] + 0x6E, 0xBE, 0x90, 0x2F, 0xF8, 0xFF, 0xEF, 0xFF, 0xE3, 0x0B, 0xFE, 0x82, 0x9F, 0x0F, 0xF0, 0x03, + 0xBC, 0x2E, 0x80, 0x0B, 0xE0, 0xBA, 0x00, 0x2E, 0x80, 0xEB, 0x02, 0xB8, 0x00, 0xAE, 0x0B, 0xE0, + 0x02, 0xB8, 0x2E, 0x80, 0x0B, 0xE0, 0xBA, 0x00, 0x2E, 0x80, 0x0B, + // Unicode: [0x006E, n] + 0x6E, 0xBE, 0xE0, 0xFF, 0x3F, 0xBE, 0xE0, 0xE7, 0x03, 0xBC, 0x2E, 0x80, 0xEB, 0x02, 0xB8, 0x2E, + 0x80, 0xEB, 0x02, 0xB8, 0x2E, 0x80, 0xEB, 0x02, 0xB8, + // Unicode: [0x006F, o] + 0x80, 0xBF, 0x01, 0xFC, 0xFF, 0x81, 0x6F, 0xFD, 0xF1, 0x02, 0xBC, 0x7D, 0x00, 0x6E, 0x1F, 0x80, + 0xCB, 0x0B, 0xF0, 0xE2, 0x57, 0x7F, 0xF0, 0xFF, 0x07, 0xE0, 0x6F, 0x00, + // Unicode: [0x0070, p] + 0x6E, 0xBE, 0x81, 0xFF, 0xFF, 0xE1, 0x5F, 0xFD, 0xF8, 0x01, 0x7D, 0x2E, 0x00, 0xAF, 0x0B, 0xC0, + 0xEB, 0x07, 0xF4, 0xF9, 0x57, 0x3F, 0xFE, 0xFF, 0x87, 0x9B, 0x6F, 0xE0, 0x02, 0x00, 0xB8, 0x00, + 0x00, 0x2E, 0x00, 0x80, 0x0B, 0x00, 0xE0, 0x02, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x80, 0x6F, 0x3E, 0xFD, 0xFF, 0x8F, 0x6F, 0xF9, 0xF7, 0x02, 0xFC, 0x7D, 0x00, 0x7E, 0x1F, 0x80, + 0xDF, 0x0B, 0xF0, 0xE3, 0x5B, 0xFE, 0xF4, 0xFF, 0x3F, 0xE0, 0x9B, 0x0F, 0x00, 0xE0, 0x03, 0x00, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, + // Unicode: [0x0072, r] + 0x6E, 0xEA, 0xBF, 0xFE, 0xEA, 0x07, 0x3E, 0xE0, 0x02, 0x2E, 0xE0, 0x02, 0x2E, 0xE0, 0x02, + // Unicode: [0x0073, s] + 0xE4, 0x1B, 0xFE, 0x7F, 0x2F, 0xBC, 0x2F, 0x50, 0xFD, 0x0A, 0xE4, 0x7F, 0x05, 0xF8, 0x2F, 0xF8, + 0xFE, 0xBF, 0xE4, 0x1B, + // Unicode: [0x0074, t] + 0xF4, 0x01, 0x7D, 0xE0, 0xFF, 0xF9, 0x7F, 0xF4, 0x01, 0x7D, 0x40, 0x1F, 0xD0, 0x07, 0xF4, 0x01, + 0x7D, 0x00, 0xFF, 0x41, 0x7E, + // Unicode: [0x0075, u] + 0x2F, 0xC0, 0xFB, 0x02, 0xBC, 0x2F, 0xC0, 0xFB, 0x02, 0xBC, 0x2F, 0xC0, 0xFB, 0x02, 0xBC, 0x3E, + 0xC0, 0xEB, 0x0B, 0xBE, 0xFC, 0xFF, 0x0B, 0xBE, 0xBD, + // Unicode: [0x0076, v] + 0x3E, 0x40, 0x5F, 0x1F, 0xE0, 0xC3, 0x0B, 0xBC, 0xE0, 0x43, 0x1F, 0xF0, 0xE1, 0x03, 0xB8, 0xBC, + 0x00, 0x7D, 0x1F, 0x00, 0xFF, 0x02, 0x80, 0x7F, 0x00, 0xD0, 0x0F, 0x00, + // Unicode: [0x0077, w] + 0x2E, 0xE0, 0x03, 0x7D, 0x0F, 0xFC, 0x81, 0xCB, 0x47, 0xBF, 0xF0, 0xF1, 0xE1, 0x3E, 0x3C, 0xB8, + 0x78, 0x4F, 0x0B, 0x3D, 0x8F, 0xE7, 0x01, 0xDF, 0xD2, 0x7E, 0x80, 0x7F, 0xF4, 0x0F, 0xD0, 0x1F, + 0xFC, 0x02, 0xF0, 0x03, 0x7E, 0x00, + // Unicode: [0x0078, x] + 0x7E, 0xD0, 0xC7, 0x0F, 0x2F, 0xF4, 0xFA, 0x00, 0xFE, 0x07, 0xC0, 0x2F, 0x00, 0xFC, 0x02, 0xE0, + 0x7F, 0x40, 0xDF, 0x0F, 0xB8, 0xF4, 0xD2, 0x07, 0x7E, + // Unicode: [0x0079, y] + 0x3E, 0x00, 0x6F, 0x1F, 0xD0, 0xC3, 0x0B, 0xB8, 0xD0, 0x47, 0x1F, 0xF0, 0xE2, 0x03, 0xF8, 0xBC, + 0x00, 0xBD, 0x0F, 0x00, 0xFF, 0x02, 0x40, 0x7F, 0x00, 0xC0, 0x0F, 0x00, 0xF0, 0x01, 0x00, 0x3E, + 0x00, 0xC0, 0x0B, 0x00, 0xF4, 0x01, 0x00, 0x2F, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0xFF, 0xFD, 0xFF, 0x00, 0xBD, 0x00, 0x2F, 0x80, 0x0F, 0xD0, 0x07, 0xF4, 0x02, 0xFC, 0x00, + 0xFD, 0xFF, 0xFD, 0xFF, + // Unicode: [0x007B, braceleft] + 0xD0, 0x4B, 0xBF, 0xF8, 0x81, 0x0B, 0xF8, 0x40, 0x0F, 0xF4, 0x40, 0x0F, 0xF8, 0xF0, 0x07, 0x7F, + 0x80, 0x0F, 0xF4, 0x40, 0x0F, 0xF4, 0x80, 0x0F, 0xB8, 0x80, 0x1F, 0xF4, 0x0B, 0xBD, + // Unicode: [0x007C, bar] + 0x55, 0xDF, 0xF7, 0x7D, 0xDF, 0xF7, 0x7D, 0xDF, 0xF7, 0x7D, 0xDF, 0xF7, 0x3D, + // Unicode: [0x007D, braceright] + 0x7E, 0xE0, 0x1F, 0xF0, 0x02, 0x2E, 0xE0, 0x02, 0x2F, 0xF0, 0x01, 0x1F, 0xE0, 0x02, 0xF9, 0xD0, + 0x0F, 0x2E, 0xF0, 0x01, 0x1F, 0xF0, 0x02, 0x2E, 0xE0, 0x02, 0x2F, 0xFE, 0xE1, 0x07, + // Unicode: [0x007E, asciitilde] + 0x00, 0x00, 0x45, 0xBF, 0xF5, 0xFC, 0xFF, 0xD7, 0x92, 0x1F +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_4.cpp new file mode 100644 index 00000000..8b9dfeb8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_18_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x1E, 0x1E, 0xDE, 0xDF, 0xDB, 0xEB, 0xE1, 0xE1, 0x01 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_0.cpp new file mode 100644 index 00000000..afa8bf2f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_0.cpp @@ -0,0 +1,354 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_20_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x2E, 0x2E, 0x2E, 0x2E, 0x15, 0x00, 0x3E, 0x7F, 0x2E, + // Unicode: [0x0022, quotedbl] + 0x3D, 0x2F, 0x8F, 0xC7, 0xE3, 0xF1, 0x78, + // Unicode: [0x0023, numbersign] + 0x00, 0xA0, 0x01, 0x19, 0x00, 0xD0, 0x07, 0xBC, 0x00, 0x40, 0x1F, 0xF0, 0x02, 0x00, 0x3E, 0xD0, + 0x07, 0xF4, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xFF, 0x0B, 0xE5, 0x5B, 0xBD, 0x15, 0x80, 0x0F, + 0xF4, 0x01, 0x00, 0x3E, 0xE0, 0x03, 0xF4, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xFF, 0x4B, 0xE5, + 0x5B, 0xBE, 0x15, 0x80, 0x0F, 0xF4, 0x01, 0x00, 0x2F, 0xE0, 0x03, 0x00, 0xBC, 0x80, 0x0F, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x09, 0x00, 0x90, 0x07, 0x40, 0xFF, 0x2F, 0xF4, 0xFF, 0x2F, 0x7E, 0xD9, 0xCF, 0x4F, 0x52, + 0xE1, 0x9B, 0x00, 0xF4, 0x7F, 0x00, 0xF4, 0xFF, 0x02, 0x90, 0xFF, 0x02, 0x90, 0xFC, 0xA5, 0x24, + 0x7E, 0x7E, 0xC9, 0x4F, 0xFF, 0xFF, 0x42, 0xFF, 0x2F, 0x00, 0x79, 0x00, 0x00, 0x09, 0x00, + // Unicode: [0x0025, percent] + 0xE0, 0x0B, 0xD0, 0x07, 0xB8, 0x2F, 0xF0, 0x02, 0x3C, 0x3C, 0xF8, 0x01, 0x2D, 0x3C, 0xBC, 0x00, + 0x3C, 0x3D, 0x3E, 0x00, 0xF8, 0x5F, 0x1F, 0x00, 0x90, 0x86, 0x0F, 0x00, 0x00, 0xD0, 0x07, 0x00, + 0x00, 0xF0, 0x92, 0x1F, 0x00, 0xF4, 0xF1, 0x7E, 0x00, 0xBC, 0xB4, 0xB4, 0x00, 0x3E, 0xB4, 0xB4, + 0x40, 0x2F, 0xF0, 0x79, 0x80, 0x0F, 0x90, 0x1F, + // Unicode: [0x0026, ampersand] + 0x00, 0xF9, 0x06, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0xBC, 0xF5, 0x02, 0x40, 0x2F, 0x54, 0x00, 0xC0, + 0x0F, 0x00, 0x00, 0xD0, 0x0F, 0x00, 0x00, 0xFE, 0x0F, 0x54, 0xE0, 0xDB, 0x0F, 0x3F, 0xBC, 0xD0, + 0xEF, 0x47, 0x2F, 0xD0, 0xBF, 0xD0, 0x0B, 0xD0, 0x1F, 0xF0, 0x5B, 0xFE, 0x1F, 0xF4, 0xFF, 0xEF, + 0x1F, 0xE0, 0xAF, 0xD0, 0x0F, + // Unicode: [0x0027, quotesingle] + 0x3D, 0xCF, 0xF3, + // Unicode: [0x0028, parenleft] + 0x00, 0x3E, 0xE0, 0x07, 0xBE, 0xC0, 0x0F, 0xF8, 0x01, 0x3F, 0xD0, 0x0B, 0xF4, 0x01, 0x3E, 0x80, + 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x3E, 0x80, 0x0F, 0xE0, 0x07, 0xF4, 0x01, 0xBC, 0x00, 0x7E, 0x40, + 0x2F, 0x80, 0x1F, 0xC0, 0x0F, 0xD0, 0x0B, + // Unicode: [0x0029, parenright] + 0xBD, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0xD0, 0x0B, 0x80, 0x1F, 0x40, 0x2F, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x7D, 0x00, 0x7D, 0x00, 0xBD, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x3E, + 0x00, 0x2F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF4, 0x02, 0xFC, 0x00, + // Unicode: [0x002A, asterisk] + 0x40, 0x01, 0x80, 0x03, 0xAC, 0x77, 0xF9, 0xBF, 0xE4, 0x1F, 0xBD, 0xBF, 0x98, 0x63, 0x80, 0x03, + // Unicode: [0x002B, plus] + 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x00, 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, + 0x4F, 0xE5, 0x57, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, + // Unicode: [0x002C, comma] + 0x54, 0xF8, 0xBC, 0x3C, 0x2D, 0x1E, + // Unicode: [0x002D, hyphen] + 0x55, 0x55, 0xF9, 0xFF, 0xEF, 0xFF, 0x3F, + // Unicode: [0x002E, period] + 0x3E, 0x7F, 0x2E, + // Unicode: [0x002F, slash] + 0x00, 0xBC, 0x00, 0xBD, 0x00, 0x7D, 0x00, 0x3E, 0x00, 0x2F, 0x40, 0x2F, 0x40, 0x1F, 0x80, 0x0F, + 0xC0, 0x0B, 0xD0, 0x0B, 0xD0, 0x07, 0xE0, 0x03, 0xF0, 0x02, 0xF4, 0x02, 0xF4, 0x01, 0xF8, 0x00, + 0xBC, 0x00, 0xBC, 0x00, 0x7D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x2F, 0x00, + // Unicode: [0x0030, zero] + 0x40, 0x59, 0x00, 0xF8, 0xBF, 0x80, 0xFF, 0xBF, 0xF4, 0x47, 0x3F, 0x7E, 0x40, 0x9F, 0x0F, 0xC0, + 0xFB, 0x03, 0xF0, 0xBE, 0x00, 0xFC, 0x3F, 0x00, 0xAF, 0x0F, 0xC0, 0xEB, 0x03, 0xF4, 0xF6, 0x02, + 0x7E, 0xFC, 0xEA, 0x0F, 0xFD, 0xFF, 0x01, 0xF9, 0x1B, 0x00, + // Unicode: [0x0031, one] + 0xFD, 0xDB, 0xBF, 0xE8, 0x0B, 0xBD, 0xD0, 0x0B, 0xBD, 0xD0, 0x0B, 0xBD, 0xD0, 0x0B, 0xBD, 0xD0, + 0x0B, 0xBD, 0xD0, 0x0B, 0xBD, + // Unicode: [0x0032, two] + 0x40, 0x05, 0x40, 0xFF, 0x0B, 0xFD, 0xFF, 0xE2, 0x47, 0x7F, 0x2F, 0xD0, 0x57, 0x01, 0x7D, 0x00, + 0xE0, 0x07, 0x40, 0x2F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xD0, 0x1F, 0x40, 0x7F, 0x00, 0xFE, 0x55, + 0xF5, 0xFF, 0xBF, 0xFF, 0xFF, 0x0B, + // Unicode: [0x0033, three] + 0xE0, 0x6F, 0x80, 0xFF, 0x2F, 0xBE, 0xF5, 0xE7, 0x03, 0xBD, 0x00, 0xD0, 0x07, 0x40, 0x3E, 0x80, + 0xFF, 0x01, 0xF8, 0x1B, 0x00, 0xF5, 0x07, 0x00, 0xBC, 0x1A, 0xC0, 0xFB, 0x03, 0xBC, 0xBE, 0xE5, + 0xC7, 0xFF, 0x2F, 0x90, 0x6F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0xF0, 0x0B, 0x00, 0xF8, 0x0B, 0x00, 0xFD, 0x0B, 0x00, 0xEF, 0x0B, 0x80, 0xCF, 0x0B, 0xD0, + 0xC7, 0x0B, 0xF0, 0xC2, 0x0B, 0xF8, 0xC0, 0x0B, 0x7E, 0xC0, 0x0B, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, + 0xBF, 0x55, 0xD5, 0x5F, 0x00, 0xC0, 0x0B, 0x00, 0xC0, 0x0B, + // Unicode: [0x0035, five] + 0x54, 0x55, 0x45, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0xF4, 0x01, 0x00, 0x7D, 0x00, 0x40, 0x9F, 0x6F, + 0xD0, 0xFF, 0xBF, 0xF4, 0x5B, 0x7F, 0xBC, 0x40, 0x2F, 0x00, 0xC0, 0x0B, 0x00, 0xF0, 0xF6, 0x02, + 0xBD, 0xFC, 0xD6, 0x1F, 0xFD, 0xFF, 0x02, 0xF8, 0x1B, 0x00, + // Unicode: [0x0036, six] + 0x00, 0x04, 0x00, 0xF4, 0x7F, 0x40, 0xFF, 0x7F, 0xF0, 0x47, 0x3F, 0x7D, 0x40, 0x4A, 0x0F, 0x05, + 0xE0, 0xF7, 0x2F, 0xF8, 0xFF, 0x2F, 0xFE, 0x91, 0x9F, 0x1F, 0xD0, 0xDB, 0x03, 0xF0, 0xF6, 0x01, + 0x7D, 0xF8, 0xD6, 0x0F, 0xFD, 0xFF, 0x01, 0xF8, 0x1B, 0x00, + // Unicode: [0x0037, seven] + 0x54, 0x55, 0x45, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0x01, 0x00, 0x3E, 0x00, 0xC0, 0x0B, 0x00, 0xF8, + 0x00, 0x00, 0x2F, 0x00, 0xD0, 0x07, 0x00, 0xBC, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0x00, 0xBD, + 0x00, 0x80, 0x0F, 0x00, 0xF0, 0x02, 0x00, 0x7E, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x90, 0xBF, 0x01, 0xFE, 0xFF, 0xD1, 0x5F, 0xFD, 0xF4, 0x01, 0x7E, 0x7D, 0x40, 0x1F, 0x6F, 0xF4, + 0x02, 0xFF, 0x2F, 0xE0, 0xFF, 0x1F, 0xBD, 0xD0, 0x9F, 0x0F, 0xD0, 0xEB, 0x03, 0xF0, 0xFA, 0x01, + 0xBD, 0xFD, 0xE5, 0x1F, 0xFE, 0xFF, 0x01, 0xF9, 0x1B, 0x00, + // Unicode: [0x0039, nine] + 0x00, 0x15, 0x00, 0xF8, 0x7F, 0x80, 0xFF, 0x7F, 0xF4, 0x46, 0x2F, 0x7E, 0x80, 0x8F, 0x0F, 0xD0, + 0xE7, 0x07, 0xF8, 0xF5, 0x97, 0x7F, 0xF8, 0xFF, 0x1F, 0xE4, 0xDB, 0x07, 0x00, 0xF4, 0xA5, 0x01, + 0x3E, 0xFC, 0xD5, 0x0B, 0xFD, 0xFF, 0x00, 0xF9, 0x0B, 0x00, + // Unicode: [0x003A, colon] + 0x2E, 0x7F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x2E, + // Unicode: [0x003B, semicolon] + 0x7D, 0xBE, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x7D, 0x3D, 0x1E, 0x0F, 0x05, + // Unicode: [0x003C, less] + 0x00, 0xA9, 0x40, 0x7F, 0xD0, 0x1F, 0xF4, 0x07, 0xFD, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3F, + 0x00, 0xFE, + // Unicode: [0x003D, equal] + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x5B, 0x55, 0x55, 0x01, 0x00, 0x00, 0x55, 0x55, 0xD5, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x02, + // Unicode: [0x003E, greater] + 0xAA, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0x7F, 0x80, 0x2F, 0xE0, 0x0B, 0xF8, 0x02, + 0xBE, 0x00, + // Unicode: [0x003F, question] + 0x90, 0xBF, 0x40, 0xFF, 0x3F, 0xFC, 0xE5, 0xDB, 0x07, 0xFC, 0x00, 0xC0, 0x0F, 0x40, 0xBE, 0xD0, + 0xFF, 0x03, 0xFD, 0x06, 0xD0, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0xE0, 0x0B, + 0x00, 0x7D, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x40, 0xAA, 0x1A, 0x00, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xE0, 0x1B, 0x50, 0x3F, 0x00, 0x7F, + 0x00, 0x00, 0x2E, 0xE0, 0x42, 0x6F, 0x5F, 0x0F, 0x3D, 0xF8, 0xFF, 0x83, 0xC7, 0x87, 0x1F, 0xFD, + 0xE0, 0xF6, 0xF0, 0x02, 0x2E, 0xB8, 0x2D, 0x7D, 0x80, 0x0B, 0x9E, 0x4B, 0x1F, 0xF0, 0xC1, 0xE3, + 0xD2, 0x07, 0x7E, 0xB8, 0xB4, 0xF0, 0xFF, 0xFE, 0x0F, 0x3D, 0xE0, 0x0B, 0xBE, 0x00, 0x2E, 0x00, + 0x00, 0x00, 0x40, 0x7F, 0x00, 0x05, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF9, 0x6F, 0x00, + 0x00, + // Unicode: [0x0041, A] + 0x00, 0xF8, 0x03, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0xE0, 0xFB, 0x00, 0x00, 0x6F, + 0x1F, 0x00, 0xF4, 0xF1, 0x02, 0x80, 0x0F, 0x3E, 0x00, 0xBC, 0xD0, 0x07, 0xE0, 0x07, 0xFC, 0x00, + 0xFF, 0xFF, 0x1F, 0xF4, 0xFF, 0xFF, 0x82, 0x5F, 0x55, 0x3F, 0xFC, 0x00, 0xE0, 0xD7, 0x0B, 0x00, + 0xBD, + // Unicode: [0x0042, B] + 0xFE, 0xFF, 0x82, 0xFF, 0xFF, 0xE3, 0x57, 0xFD, 0xF9, 0x01, 0xBD, 0x7E, 0x40, 0xAF, 0x1F, 0xE0, + 0xE7, 0xFF, 0x7F, 0xF8, 0xFF, 0x1F, 0x7E, 0x90, 0x9F, 0x1F, 0xC0, 0xEF, 0x07, 0xF0, 0xFB, 0x55, + 0xBE, 0xFE, 0xFF, 0x9F, 0xFF, 0xBF, 0x00, + // Unicode: [0x0043, C] + 0x00, 0xF9, 0x2B, 0x00, 0xF8, 0xFF, 0x1F, 0xE0, 0xAF, 0xFE, 0x47, 0x3F, 0x00, 0xFE, 0xF8, 0x01, + 0x40, 0xC5, 0x0B, 0x00, 0x00, 0xBD, 0x00, 0x00, 0xD0, 0x0B, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xC0, + 0x1F, 0x00, 0x54, 0xF4, 0x03, 0xE0, 0x0F, 0xFE, 0xA6, 0x7F, 0x80, 0xFF, 0xFF, 0x01, 0x90, 0xBF, + 0x02, + // Unicode: [0x0044, D] + 0xFE, 0xBF, 0x01, 0xF8, 0xFF, 0x7F, 0xE0, 0x57, 0xF9, 0x83, 0x1F, 0x80, 0x2F, 0x7E, 0x00, 0xF8, + 0xF9, 0x01, 0xD0, 0xE7, 0x07, 0x40, 0xAF, 0x1F, 0x00, 0xBD, 0x7E, 0x00, 0xF4, 0xF9, 0x01, 0xE0, + 0xE7, 0x07, 0xE0, 0x8B, 0x5F, 0xE5, 0x0F, 0xFE, 0xFF, 0x1F, 0xF8, 0xFF, 0x06, 0x00, + // Unicode: [0x0045, E] + 0xFE, 0xFF, 0xF9, 0xFF, 0xE7, 0x57, 0x85, 0x1F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0xFF, 0x8F, + 0xFF, 0x3F, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x5F, 0x15, 0xFE, 0xFF, 0xF9, 0xFF, 0x07, + // Unicode: [0x0046, F] + 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0x57, 0x95, 0x1F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0xFF, 0x8B, + 0xFF, 0x2F, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xF9, 0x2B, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xFE, 0xEA, 0x7F, 0xD0, 0x1F, 0x80, 0x3F, 0xF8, + 0x01, 0x00, 0x05, 0x2F, 0x00, 0x00, 0xD0, 0x0B, 0xFC, 0xFF, 0xF6, 0x02, 0xFF, 0xBF, 0xBC, 0x00, + 0x40, 0x2F, 0x7F, 0x00, 0xE0, 0x47, 0x3F, 0x00, 0xFD, 0x80, 0xBF, 0xEA, 0x1F, 0x80, 0xFF, 0xFF, + 0x01, 0x40, 0xFE, 0x06, 0x00, + // Unicode: [0x0048, H] + 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, + 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x7E, 0x55, 0xFD, 0x7E, 0x00, 0xFC, 0x7E, 0x00, + 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0xFC, + // Unicode: [0x0049, I] + 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, + // Unicode: [0x004A, J] + 0x00, 0xD0, 0x0B, 0x00, 0xBD, 0x00, 0xD0, 0x0B, 0x00, 0xBD, 0x00, 0xD0, 0x0B, 0x00, 0xBD, 0x00, + 0xD0, 0x0B, 0x00, 0xBD, 0x00, 0xD0, 0x4B, 0x05, 0xBD, 0xBD, 0xD0, 0xC7, 0xAF, 0x7F, 0xF4, 0xFF, + 0x02, 0xF9, 0x07, + // Unicode: [0x004B, K] + 0x7E, 0x40, 0x7F, 0x7E, 0xC0, 0x1F, 0x7E, 0xE0, 0x0B, 0x7E, 0xF8, 0x02, 0x7E, 0xFD, 0x00, 0x7E, + 0x3F, 0x00, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x7E, 0x7F, 0x00, 0x7E, 0xFD, 0x00, 0x7E, 0xF8, + 0x02, 0x7E, 0xE0, 0x0B, 0x7E, 0xC0, 0x2F, 0x7E, 0x40, 0x7F, + // Unicode: [0x004C, L] + 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, + 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x15, 0xFE, 0xBF, 0xFE, 0xBF, + // Unicode: [0x004D, M] + 0xBE, 0x00, 0x00, 0xBE, 0xFE, 0x01, 0x40, 0xBF, 0xFE, 0x02, 0x80, 0xBF, 0xFE, 0x03, 0xC0, 0xBF, + 0xFE, 0x07, 0xD0, 0xBF, 0xBE, 0x0F, 0xF0, 0xBE, 0x7E, 0x1F, 0xF4, 0xBD, 0x7E, 0x2E, 0xB8, 0xBD, + 0x7E, 0x7D, 0x7D, 0xBD, 0x7E, 0xBC, 0x3E, 0xBD, 0x7E, 0xF8, 0x1F, 0xBD, 0x7E, 0xF0, 0x0F, 0xBD, + 0x7E, 0xE0, 0x0B, 0xBD, 0x7E, 0xD0, 0x07, 0xBD, + // Unicode: [0x004E, N] + 0xBE, 0x00, 0xF4, 0xF9, 0x07, 0xD0, 0xE7, 0x2F, 0x40, 0x9F, 0xFF, 0x01, 0x7D, 0xFE, 0x1F, 0xF4, + 0xF9, 0xBD, 0xD0, 0xE7, 0xD7, 0x47, 0x9F, 0x1F, 0x3E, 0x7D, 0x7E, 0xF0, 0xF6, 0xF9, 0x41, 0xFF, + 0xE7, 0x07, 0xF8, 0x9F, 0x1F, 0xC0, 0x7F, 0x7E, 0x00, 0xFD, 0xF9, 0x01, 0xE0, 0x07, + // Unicode: [0x004F, O] + 0x00, 0xF9, 0x1B, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xFE, 0xAA, 0x7F, 0xD0, 0x0F, 0x40, 0x3F, 0xF8, + 0x01, 0x80, 0x2F, 0x2F, 0x00, 0xC0, 0xDB, 0x0B, 0x00, 0xF0, 0xF7, 0x02, 0x00, 0xFC, 0xBC, 0x00, + 0x00, 0x2F, 0x7E, 0x00, 0xE0, 0x4B, 0x3F, 0x00, 0xFD, 0x80, 0xBF, 0xE9, 0x1F, 0x80, 0xFF, 0xFF, + 0x01, 0x40, 0xFE, 0x06, 0x00, + // Unicode: [0x0050, P] + 0xFE, 0xBF, 0x81, 0xFF, 0xFF, 0xE1, 0x57, 0xFD, 0xF8, 0x01, 0x7E, 0x7E, 0x40, 0xAF, 0x1F, 0xE0, + 0xE7, 0x57, 0xFD, 0xF8, 0xFF, 0x1F, 0xFE, 0xBF, 0x81, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x01, + 0x00, 0x7E, 0x00, 0x80, 0x1F, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xF9, 0x1B, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xFE, 0xAA, 0x7F, 0xD0, 0x0F, 0x40, 0x3F, 0xF8, + 0x01, 0x80, 0x2F, 0x2F, 0x00, 0xC0, 0xDB, 0x0B, 0x00, 0xF0, 0xF7, 0x02, 0x00, 0xFC, 0xBC, 0x00, + 0x00, 0x2F, 0x7E, 0x00, 0xE0, 0x4B, 0x3F, 0x00, 0xFD, 0x80, 0xBF, 0xE9, 0x1F, 0x80, 0xFF, 0xFF, + 0x01, 0x40, 0xFE, 0xBF, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x1A, + // Unicode: [0x0052, R] + 0xFE, 0xBF, 0x81, 0xFF, 0xFF, 0xE1, 0x57, 0xFD, 0xF9, 0x01, 0xBD, 0x7E, 0x40, 0xAF, 0x1F, 0xD0, + 0xEB, 0x07, 0xFD, 0xF9, 0xFF, 0x2F, 0xFE, 0xFF, 0x81, 0x5F, 0x3F, 0xE0, 0x87, 0x2F, 0xF8, 0xC1, + 0x1F, 0x7E, 0xD0, 0x8B, 0x1F, 0xE0, 0x07, + // Unicode: [0x0053, S] + 0xA0, 0xBF, 0xC0, 0xFF, 0x3F, 0xBE, 0xF5, 0xFB, 0x03, 0xBD, 0x7F, 0x00, 0xE0, 0x6F, 0x00, 0xF8, + 0xBF, 0x00, 0xF9, 0x7F, 0x00, 0xF4, 0x0F, 0x00, 0xFC, 0x7F, 0xC0, 0xEF, 0x5F, 0xBE, 0xF8, 0xFF, + 0x03, 0xF9, 0x0B, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, 0x4F, 0xE5, 0x57, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, + 0x00, 0xE0, 0x03, 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x03, 0x00, 0xF8, + 0x00, 0x00, 0x3E, 0x00, 0x80, 0x0F, 0x00, + // Unicode: [0x0055, U] + 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, + 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x3E, 0x00, 0xBD, 0x7E, 0x00, 0xBD, 0xBD, 0x00, + 0x7E, 0xFC, 0xEB, 0x2F, 0xF4, 0xFF, 0x0F, 0x80, 0xBF, 0x01, + // Unicode: [0x0056, V] + 0x7E, 0x00, 0xD0, 0xDB, 0x0B, 0x00, 0x7E, 0xF8, 0x00, 0xF0, 0x43, 0x1F, 0x40, 0x2F, 0xF0, 0x03, + 0xF8, 0x01, 0x7E, 0xC0, 0x0F, 0xD0, 0x0B, 0xBD, 0x00, 0xFC, 0xE0, 0x07, 0x80, 0x1F, 0x2F, 0x00, + 0xF4, 0xF6, 0x01, 0x00, 0xBF, 0x0F, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x80, 0x3F, + 0x00, + // Unicode: [0x0057, W] + 0xBD, 0x00, 0xFD, 0x00, 0xFC, 0xBC, 0x00, 0xFE, 0x01, 0xBD, 0xFC, 0x00, 0xFF, 0x01, 0x7E, 0xF8, + 0x41, 0xFF, 0x02, 0x3E, 0xF4, 0x41, 0xEF, 0x03, 0x2F, 0xF0, 0x82, 0xDB, 0x47, 0x2F, 0xE0, 0xC3, + 0xCB, 0x47, 0x1F, 0xE0, 0xD3, 0xC7, 0x8B, 0x0F, 0xD0, 0xD7, 0x83, 0xCF, 0x0B, 0xC0, 0xEB, 0x42, + 0xDF, 0x07, 0x80, 0xFF, 0x01, 0xFF, 0x03, 0x40, 0xFF, 0x01, 0xFE, 0x03, 0x40, 0xFF, 0x00, 0xFE, + 0x02, 0x00, 0xBF, 0x00, 0xFD, 0x01, + // Unicode: [0x0058, X] + 0x7F, 0x00, 0xBE, 0xFD, 0x00, 0x3F, 0xF8, 0x82, 0x1F, 0xF0, 0xD7, 0x0B, 0xD0, 0xFF, 0x03, 0x80, + 0xFF, 0x01, 0x00, 0xBF, 0x00, 0x00, 0xBF, 0x00, 0x80, 0xFF, 0x01, 0xD0, 0xFB, 0x03, 0xF0, 0xE3, + 0x0B, 0xF8, 0xC1, 0x1F, 0xFD, 0x40, 0x3F, 0x7F, 0x00, 0xBE, + // Unicode: [0x0059, Y] + 0xBE, 0x00, 0xFC, 0xF1, 0x03, 0xF4, 0x42, 0x2F, 0xE0, 0x07, 0xFC, 0xD0, 0x0B, 0xD0, 0x87, 0x0F, + 0x00, 0x7F, 0x2F, 0x00, 0xF4, 0x3F, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xFD, 0x00, 0x00, 0xF0, 0x02, + 0x00, 0xC0, 0x0B, 0x00, 0x00, 0x2F, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xF0, 0x02, 0x00, + // Unicode: [0x005A, Z] + 0xFF, 0xFF, 0xFB, 0xFF, 0xBF, 0x55, 0xF5, 0x07, 0x80, 0x2F, 0x00, 0xFD, 0x00, 0xE0, 0x07, 0x80, + 0x2F, 0x00, 0xFD, 0x00, 0xE0, 0x07, 0x40, 0x2F, 0x00, 0xFC, 0x00, 0xE0, 0x5B, 0x15, 0xFF, 0xFF, + 0xFB, 0xFF, 0xBF, + // Unicode: [0x005B, bracketleft] + 0xFD, 0xDB, 0xBF, 0x7D, 0xD5, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, + 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x5B, 0xFD, 0xDB, + 0xBF, + // Unicode: [0x005C, backslash] + 0x7D, 0x00, 0xF0, 0x02, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xF4, 0x01, 0xC0, 0x0B, 0x00, 0x3F, 0x00, + 0xF8, 0x00, 0xD0, 0x07, 0x00, 0x2F, 0x00, 0xF8, 0x00, 0xE0, 0x07, 0x40, 0x1F, 0x00, 0xBC, 0x00, + 0xE0, 0x03, 0x80, 0x1F, 0x00, 0x7D, 0x00, 0xF0, 0x02, 0x80, 0x0F, 0x00, 0x7D, 0x00, 0xF4, 0x02, + 0xC0, 0x0B, + // Unicode: [0x005D, bracketright] + 0xFE, 0xE7, 0x7F, 0xE5, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, + 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x07, 0x7D, 0xD0, 0x57, 0x7E, 0xFE, 0xE7, + 0x7F, + // Unicode: [0x005E, asciicircum] + 0x00, 0x29, 0x00, 0x00, 0xBF, 0x00, 0x40, 0xFF, 0x00, 0xC0, 0xFF, 0x02, 0xD0, 0xF7, 0x03, 0xE0, + 0xD3, 0x07, 0xF4, 0xC2, 0x0F, 0xF8, 0x80, 0x1F, 0xBD, 0x00, 0x2F, 0x7E, 0x00, 0x7E, 0x2F, 0x00, + 0xBD, + // Unicode: [0x005F, underscore] + 0xAA, 0xAA, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + // Unicode: [0x0060, grave] + 0x06, 0xB8, 0xD1, 0x2F, 0xB4, 0x00, 0x01, + // Unicode: [0x0061, a] + 0x40, 0xBE, 0xF8, 0x81, 0xFF, 0xEF, 0x87, 0xBF, 0xF9, 0x1F, 0x7F, 0x40, 0x7F, 0xBD, 0x00, 0xF8, + 0xF5, 0x02, 0xE0, 0xD7, 0x0B, 0x80, 0x1F, 0x3F, 0x40, 0x7F, 0xF8, 0x57, 0xFF, 0x81, 0xFF, 0xFF, + 0x07, 0xE4, 0x9B, 0x1F, + // Unicode: [0x0062, b] + 0x29, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0xF9, 0x06, 0xBE, + 0xFF, 0x1F, 0xFE, 0x9B, 0x3F, 0xBE, 0x00, 0xBE, 0x7E, 0x00, 0xBC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, + 0xBC, 0xBE, 0x00, 0xBE, 0xFE, 0x97, 0x3F, 0xBE, 0xFF, 0x1F, 0x7E, 0xF9, 0x06, + // Unicode: [0x0063, c] + 0x40, 0xBE, 0x02, 0xF8, 0xFF, 0x83, 0x7F, 0xF9, 0xF2, 0x03, 0xA8, 0xBD, 0x00, 0x40, 0x2F, 0x00, + 0xD0, 0x0B, 0x00, 0xF0, 0x03, 0xA8, 0xF8, 0x97, 0x2F, 0xF8, 0xFF, 0x03, 0xE4, 0x2F, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x54, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x7E, 0x40, 0xBE, 0xF8, + 0x81, 0xFF, 0xEF, 0x87, 0xBF, 0xF9, 0x1F, 0x7F, 0x40, 0x7F, 0xBD, 0x00, 0xF8, 0xF5, 0x02, 0xE0, + 0xD7, 0x0B, 0x80, 0x1F, 0x3F, 0x40, 0x7F, 0xF8, 0x57, 0xFF, 0x81, 0xFF, 0xFF, 0x07, 0xE4, 0x9B, + 0x1F, + // Unicode: [0x0065, e] + 0x40, 0xFE, 0x02, 0xE0, 0xFF, 0x1F, 0xF8, 0x96, 0x3F, 0xBC, 0x00, 0x7D, 0xFD, 0xAA, 0xBF, 0xFD, + 0xFF, 0xBF, 0xBD, 0x00, 0x00, 0xFC, 0x00, 0x2A, 0xF8, 0x97, 0x2F, 0xE0, 0xFF, 0x0F, 0x40, 0xFE, + 0x02, + // Unicode: [0x0066, f] + 0x00, 0x04, 0xE0, 0x07, 0xFF, 0xD1, 0x0B, 0xF4, 0x82, 0xFF, 0xE7, 0xFF, 0xD1, 0x1B, 0xF4, 0x02, + 0xBD, 0x40, 0x2F, 0xD0, 0x0B, 0xF4, 0x02, 0xBD, 0x40, 0x2F, 0xD0, 0x0B, + // Unicode: [0x0067, g] + 0x40, 0xBE, 0xF9, 0x81, 0xFF, 0xFF, 0x87, 0x7F, 0xF5, 0x1F, 0x3F, 0x40, 0x7F, 0xBD, 0x00, 0xF8, + 0xF5, 0x02, 0xE0, 0xD7, 0x0B, 0x80, 0x1F, 0x7F, 0x40, 0x7F, 0xF8, 0x9B, 0xFF, 0x81, 0xFF, 0xEF, + 0x07, 0xE4, 0x8B, 0x1F, 0x00, 0x00, 0x3E, 0xF8, 0x01, 0xFC, 0xD0, 0x6F, 0xFE, 0x02, 0xFE, 0xFF, + 0x02, 0x90, 0xBF, 0x01, + // Unicode: [0x0068, h] + 0x15, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x01, 0x00, 0x7E, 0xFE, 0x82, 0xFF, 0xFF, + 0xE3, 0x6F, 0xFD, 0xFA, 0x02, 0xBD, 0x7E, 0x00, 0xBF, 0x1F, 0xC0, 0xEF, 0x07, 0xF0, 0xFB, 0x01, + 0xFC, 0x7E, 0x00, 0xBF, 0x1F, 0xC0, 0xEF, 0x07, 0xF0, 0x03, + // Unicode: [0x0069, i] + 0x7E, 0x7F, 0x2D, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, + // Unicode: [0x006A, j] + 0xE0, 0x07, 0x7F, 0xD0, 0x02, 0x00, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, + 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x07, 0x7E, 0xE0, 0x57, 0x3F, 0xFE, 0xE2, 0x0B, + // Unicode: [0x006B, k] + 0x15, 0x00, 0x80, 0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x01, 0x00, 0x7E, 0xD0, 0x8F, 0x1F, 0xFD, + 0xE1, 0xC7, 0x1F, 0xF8, 0xF9, 0x01, 0xBE, 0x2F, 0x80, 0xFF, 0x03, 0xE0, 0xFB, 0x02, 0xF8, 0xF9, + 0x01, 0x7E, 0xFC, 0x81, 0x1F, 0xFD, 0xE1, 0x07, 0xFD, 0x01, + // Unicode: [0x006C, l] + 0x15, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, + // Unicode: [0x006D, m] + 0x7E, 0xFE, 0x42, 0xBE, 0x81, 0xFF, 0xFF, 0xF7, 0xFF, 0xE2, 0x6F, 0xFD, 0x5F, 0xFD, 0xF9, 0x02, + 0xFD, 0x01, 0xBD, 0x7E, 0x00, 0x3F, 0x40, 0xAF, 0x1F, 0xC0, 0x0F, 0xC0, 0xEB, 0x07, 0xF0, 0x03, + 0xF0, 0xFA, 0x01, 0xFC, 0x00, 0xBC, 0x7E, 0x00, 0x3F, 0x00, 0xAF, 0x1F, 0xC0, 0x0F, 0xC0, 0xEB, + 0x07, 0xF0, 0x03, 0xF0, 0x02, + // Unicode: [0x006E, n] + 0x7E, 0xFE, 0x82, 0xFF, 0xFF, 0xE3, 0x5F, 0xFD, 0xFA, 0x01, 0xBD, 0x7E, 0x00, 0xBF, 0x1F, 0xC0, + 0xEF, 0x07, 0xF0, 0xFB, 0x01, 0xFC, 0x7E, 0x00, 0xBF, 0x1F, 0xC0, 0xEF, 0x07, 0xF0, 0x03, + // Unicode: [0x006F, o] + 0x40, 0xFE, 0x06, 0xE0, 0xFF, 0x1F, 0xF4, 0x9B, 0x7F, 0xFC, 0x01, 0xBD, 0xBD, 0x00, 0xFC, 0xBD, + 0x00, 0xF8, 0xBD, 0x00, 0xFC, 0xFC, 0x00, 0xBD, 0xF4, 0x9B, 0x7F, 0xE0, 0xFF, 0x1F, 0x40, 0xFE, + 0x02, + // Unicode: [0x0070, p] + 0x7E, 0xF9, 0x06, 0xBE, 0xFF, 0x1F, 0xFE, 0x9B, 0x3F, 0xBE, 0x00, 0xBE, 0x7E, 0x00, 0xBC, 0x7E, + 0x00, 0xFC, 0x7E, 0x00, 0xBC, 0xBE, 0x00, 0xBE, 0xFE, 0x97, 0x3F, 0xBE, 0xFF, 0x1F, 0x7E, 0xF9, + 0x06, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x40, 0xBE, 0xF9, 0x81, 0xFF, 0xFF, 0x87, 0xBF, 0xF9, 0x1F, 0x7F, 0x40, 0x7F, 0xBD, 0x00, 0xF8, + 0xF5, 0x02, 0xE0, 0xD7, 0x0B, 0x80, 0x1F, 0x7F, 0x40, 0x7F, 0xF8, 0x9B, 0xFF, 0x81, 0xFF, 0xEF, + 0x07, 0xE4, 0x8B, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF8, 0x01, 0x00, 0xE0, 0x07, 0x00, 0x80, + 0x1F, 0x00, 0x00, 0x7E, + // Unicode: [0x0072, r] + 0x7E, 0xAD, 0xEF, 0xEB, 0xFF, 0xF9, 0x02, 0x7E, 0x80, 0x1F, 0xE0, 0x07, 0xF8, 0x01, 0x7E, 0x80, + 0x1F, 0xE0, 0x07, 0x00, + // Unicode: [0x0073, s] + 0xE4, 0x2F, 0xF4, 0xFF, 0xE3, 0x97, 0xEF, 0x0F, 0x64, 0xFE, 0x06, 0xE0, 0xFF, 0x02, 0xE4, 0xAF, + 0x06, 0xF8, 0x7F, 0xF5, 0xF7, 0xFF, 0x07, 0xFE, 0x06, + // Unicode: [0x0074, t] + 0xF4, 0x02, 0xBD, 0x40, 0x2F, 0xF8, 0xFF, 0xFE, 0x3F, 0xBD, 0x45, 0x2F, 0xD0, 0x0B, 0xF4, 0x02, + 0xBD, 0x40, 0x2F, 0xC0, 0x5F, 0xE0, 0x3F, 0xE0, 0x0F, + // Unicode: [0x0075, u] + 0x3E, 0x00, 0xBF, 0x0F, 0xC0, 0xEF, 0x03, 0xF0, 0xFB, 0x00, 0xFC, 0x3E, 0x00, 0xBF, 0x0F, 0xC0, + 0xEF, 0x03, 0xF0, 0xFB, 0x01, 0xFD, 0xFD, 0xD5, 0x3F, 0xFE, 0xFF, 0x0F, 0xFD, 0xF2, 0x03, + // Unicode: [0x0076, v] + 0x7E, 0x00, 0xBD, 0xBD, 0x00, 0x7E, 0xFC, 0x00, 0x3F, 0xF8, 0x41, 0x1F, 0xF0, 0x82, 0x0F, 0xE0, + 0xC3, 0x0B, 0xD0, 0xD7, 0x07, 0xC0, 0xEB, 0x03, 0x80, 0xFF, 0x02, 0x40, 0xFF, 0x01, 0x00, 0xFF, + 0x00, + // Unicode: [0x0077, w] + 0x3E, 0xC0, 0x0F, 0xF0, 0xF6, 0x41, 0x7F, 0xD0, 0xC7, 0x0B, 0xFE, 0x82, 0x0F, 0x2E, 0xF8, 0x0F, + 0x2E, 0xF8, 0xF0, 0x3D, 0x7C, 0xD0, 0xD7, 0xF3, 0xF5, 0x00, 0x9F, 0x8B, 0xDB, 0x02, 0xB8, 0x1F, + 0xBD, 0x0B, 0xD0, 0x3F, 0xF4, 0x1F, 0x00, 0xBF, 0xC0, 0x3F, 0x00, 0xF8, 0x02, 0xBE, 0x00, + // Unicode: [0x0078, x] + 0xBE, 0x80, 0x1F, 0x7E, 0xF4, 0x42, 0x3F, 0x3F, 0x80, 0xFF, 0x07, 0x80, 0xBF, 0x00, 0xD0, 0x0F, + 0x00, 0xF8, 0x0B, 0x80, 0xFF, 0x07, 0xF4, 0xF6, 0x03, 0x3E, 0xF8, 0xD2, 0x07, 0xF8, 0x01, + // Unicode: [0x0079, y] + 0x7E, 0x00, 0xBD, 0xBD, 0x00, 0x7E, 0xFC, 0x01, 0x3F, 0xF4, 0x42, 0x1F, 0xF0, 0x83, 0x0F, 0xE0, + 0xC7, 0x0B, 0xD0, 0xDB, 0x07, 0x80, 0xFF, 0x02, 0x40, 0xFF, 0x01, 0x00, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x3F, 0x00, 0x40, 0x2F, 0x00, 0x80, 0x1F, 0x00, 0xD0, 0x0B, 0x00, 0xE0, 0x07, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0xFF, 0xF6, 0xFF, 0x4B, 0x95, 0x2F, 0x40, 0x2F, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0xBE, 0x00, + 0xBD, 0x00, 0xFC, 0x55, 0xF5, 0xFF, 0xDF, 0xFF, 0x3F, + // Unicode: [0x007B, braceleft] + 0x80, 0x2F, 0xF8, 0x0B, 0x7F, 0xD0, 0x07, 0xF4, 0x02, 0xBC, 0x00, 0x2F, 0xC0, 0x0B, 0xF0, 0x02, + 0xBE, 0xE0, 0x0B, 0xF8, 0x02, 0xF8, 0x02, 0xBC, 0x00, 0x2F, 0xC0, 0x0B, 0xF0, 0x02, 0xBD, 0x40, + 0x1F, 0xC0, 0x5F, 0xE0, 0x2F, 0xE0, 0x0B, + // Unicode: [0x007C, bar] + 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, + 0xBD, 0xBD, + // Unicode: [0x007D, braceright] + 0xBD, 0x40, 0xFF, 0x40, 0x7E, 0x40, 0x1F, 0xD0, 0x07, 0xF4, 0x01, 0x3E, 0x80, 0x0F, 0xE0, 0x03, + 0xF4, 0x02, 0xF8, 0x03, 0xFE, 0xD0, 0x0B, 0xF8, 0x00, 0x3E, 0x80, 0x0F, 0xD0, 0x07, 0xF4, 0x01, + 0x7D, 0x90, 0x1F, 0xFD, 0x43, 0x2F, 0x00, + // Unicode: [0x007E, asciitilde] + 0x40, 0x05, 0x14, 0xFD, 0x9B, 0xCF, 0xFF, 0xFF, 0xF5, 0x90, 0x1F +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_4.cpp new file mode 100644 index 00000000..3778db8f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_20_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_20_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x3E, 0x7D, 0xBC, 0x7F, 0xBE, 0xFD, 0x2E, 0x7D, 0xB8 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_0.cpp new file mode 100644 index 00000000..f55ef999 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_0.cpp @@ -0,0 +1,464 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_25_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xFE, 0xF5, 0xD7, 0x4F, 0x3F, 0xFD, 0xF4, 0xD3, 0x4F, 0x3F, 0xFD, 0xF4, 0xC3, 0x0F, 0x3F, 0x00, + 0xF0, 0xE2, 0x9F, 0x7F, 0xB8, 0x00, + // Unicode: [0x0022, quotedbl] + 0x15, 0xD5, 0x8F, 0xFF, 0xE2, 0xBF, 0xF8, 0x2F, 0xBE, 0x8B, 0x0F, + // Unicode: [0x0023, numbersign] + 0x00, 0x40, 0x1A, 0x40, 0x1A, 0x00, 0x00, 0xBE, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x01, 0xFC, 0x01, + 0x00, 0xF0, 0x07, 0xF4, 0x03, 0x00, 0xD0, 0x0F, 0xE0, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF4, 0x03, 0xF4, 0x03, 0x00, + 0xD0, 0x0F, 0xE0, 0x0B, 0x00, 0x80, 0x2F, 0x80, 0x2F, 0x00, 0x00, 0xBF, 0x00, 0x7F, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, + 0x2F, 0xC0, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0xFD, 0x00, 0x00, 0xF4, + 0x03, 0xF8, 0x02, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x60, 0x00, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x6F, 0x00, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, + 0xF4, 0xDB, 0xFA, 0xEB, 0x0F, 0xCB, 0xBF, 0x3F, 0x2C, 0x00, 0xFE, 0xB2, 0x00, 0xF4, 0xFF, 0x02, + 0x40, 0xFF, 0xBF, 0x01, 0xE4, 0xFF, 0x2F, 0x00, 0xF4, 0xFF, 0x02, 0xC0, 0xF6, 0x0F, 0x00, 0x8B, + 0xBF, 0x7F, 0x2C, 0xFE, 0xFD, 0xB2, 0xFD, 0xF2, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x07, 0x90, 0xBF, + 0x02, 0x00, 0xB0, 0x00, 0x00, 0xC0, 0x02, 0x00, + // Unicode: [0x0025, percent] + 0xE4, 0x1B, 0x00, 0xBE, 0x40, 0xFF, 0x1F, 0xD0, 0x0F, 0xF0, 0xD6, 0x0B, 0xFC, 0x02, 0xBC, 0xE0, + 0x43, 0x3F, 0x00, 0x2F, 0xBC, 0xF0, 0x07, 0x80, 0xFF, 0x1F, 0xBE, 0x00, 0x40, 0xBF, 0xD1, 0x1F, + 0x00, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0x47, 0xBF, 0x01, + 0x00, 0xFE, 0xF4, 0xFF, 0x00, 0xC0, 0x1F, 0x2F, 0xBD, 0x00, 0xF8, 0xC2, 0x07, 0x2E, 0x40, 0x7F, + 0xF0, 0x81, 0x0B, 0xE0, 0x0B, 0xFC, 0xF5, 0x02, 0xFD, 0x00, 0xFD, 0x3F, 0xC0, 0x1F, 0x00, 0xF9, + 0x02, + // Unicode: [0x0026, ampersand] + 0x00, 0xF9, 0x1B, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0xD0, 0xBF, 0xFF, 0x00, 0x00, 0xFD, 0xC0, + 0x1F, 0x00, 0xD0, 0x0F, 0x54, 0x00, 0x00, 0xFD, 0x02, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, + 0xFD, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0xFC, 0xD2, 0x1F, 0xFD, 0xE2, 0x0F, 0xBF, 0x40, 0xFF, + 0xBF, 0xF0, 0x07, 0xD0, 0xFF, 0x03, 0xBF, 0x00, 0xF4, 0x1F, 0xE0, 0x1F, 0x90, 0xFF, 0x03, 0xFD, + 0xFF, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xD7, 0x3F, 0x80, 0xFE, 0x06, 0xF4, 0x0F, + // Unicode: [0x0027, quotesingle] + 0xD5, 0xFF, 0xBE, 0xAF, 0x0B, + // Unicode: [0x0028, parenleft] + 0x00, 0xF4, 0x07, 0xD0, 0x2F, 0x00, 0xFF, 0x00, 0xF8, 0x07, 0xC0, 0x2F, 0x00, 0xFE, 0x00, 0xF0, + 0x0B, 0x40, 0x7F, 0x00, 0xF8, 0x03, 0xC0, 0x2F, 0x00, 0xFC, 0x01, 0xC0, 0x1F, 0x00, 0xFD, 0x00, + 0xD0, 0x0F, 0x00, 0xFD, 0x00, 0xD0, 0x0F, 0x00, 0xFD, 0x01, 0xC0, 0x1F, 0x00, 0xFC, 0x02, 0x80, + 0x2F, 0x00, 0xF4, 0x03, 0x40, 0x7F, 0x00, 0xE0, 0x0B, 0x00, 0xFD, 0x01, 0xC0, 0x3F, 0x00, 0xF4, + 0x0B, 0x00, 0xFE, 0x01, 0x80, 0x3F, + // Unicode: [0x0029, parenright] + 0xFD, 0x01, 0x80, 0x7F, 0x00, 0xE0, 0x0F, 0x00, 0xFC, 0x02, 0x40, 0x7F, 0x00, 0xF0, 0x0B, 0x00, + 0xFD, 0x00, 0xC0, 0x1F, 0x00, 0xF8, 0x02, 0x80, 0x3F, 0x00, 0xF4, 0x03, 0x00, 0x7F, 0x00, 0xF0, + 0x07, 0x00, 0x7F, 0x00, 0xF0, 0x07, 0x00, 0x7F, 0x00, 0xF0, 0x07, 0x40, 0x7F, 0x00, 0xF4, 0x03, + 0x80, 0x3F, 0x00, 0xFC, 0x02, 0xD0, 0x1F, 0x00, 0xFE, 0x00, 0xF4, 0x07, 0x80, 0x3F, 0x00, 0xFD, + 0x01, 0xF4, 0x0B, 0xC0, 0x2F, 0x00, + // Unicode: [0x002A, asterisk] + 0x40, 0x05, 0x00, 0x2E, 0x90, 0x74, 0xD8, 0xEF, 0xFE, 0xF9, 0xBF, 0x91, 0xBF, 0xF0, 0xFF, 0xAF, + 0xDB, 0xB9, 0x84, 0x4B, 0x00, 0x2E, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0xA8, 0x00, 0x00, 0xF4, 0x03, 0x00, 0xD0, 0x0F, 0x00, 0x40, 0x3F, 0x00, 0x00, 0xFD, 0x00, + 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0x00, 0x00, 0xF4, 0x03, + 0x00, 0xD0, 0x0F, 0x00, 0x40, 0x3F, 0x00, 0x00, 0xFD, 0x00, 0x00, + // Unicode: [0x002C, comma] + 0xF0, 0x47, 0x3F, 0xF8, 0x82, 0x0F, 0xBC, 0xD0, 0x07, 0x3E, 0x00, + // Unicode: [0x002D, hyphen] + 0xFD, 0xFF, 0x7F, 0xFD, 0xFF, 0x7F, 0xFD, 0xFF, 0x7F, + // Unicode: [0x002E, period] + 0xBD, 0xF8, 0xE7, 0x5F, 0x2F, + // Unicode: [0x002F, slash] + 0x00, 0xD0, 0x0F, 0x00, 0xBE, 0x00, 0xF0, 0x07, 0x40, 0x7F, 0x00, 0xF4, 0x03, 0x80, 0x2F, 0x00, + 0xFC, 0x02, 0xC0, 0x1F, 0x00, 0xFD, 0x00, 0xE0, 0x0B, 0x00, 0xBF, 0x00, 0xF0, 0x07, 0x40, 0x3F, + 0x00, 0xF8, 0x03, 0x80, 0x2F, 0x00, 0xFC, 0x01, 0xD0, 0x0F, 0x00, 0xFE, 0x00, 0xE0, 0x0B, 0x00, + 0x7F, 0x00, 0xF4, 0x03, 0x80, 0x3F, 0x00, 0xF8, 0x02, 0xC0, 0x1F, 0x00, 0xFD, 0x01, 0xD0, 0x0F, + 0x00, 0xBE, 0x00, 0xF0, 0x07, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0x50, 0x00, 0x00, 0xE4, 0xFF, 0x01, 0xE0, 0xFF, 0xBF, 0x40, 0xFF, 0xFF, 0x1F, 0xF8, 0x07, + 0xFD, 0xC3, 0x1F, 0x40, 0x7F, 0xFD, 0x00, 0xF0, 0xEB, 0x0F, 0x00, 0xBE, 0xBE, 0x00, 0xE0, 0xEB, + 0x0B, 0x00, 0xBE, 0xBE, 0x00, 0xE0, 0xEB, 0x0F, 0x00, 0xBE, 0xFD, 0x00, 0xE0, 0xDB, 0x0F, 0x00, + 0x7F, 0xFC, 0x02, 0xF4, 0x87, 0xBF, 0xE5, 0x2F, 0xF0, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0x07, 0x00, + 0xFE, 0x1B, 0x00, + // Unicode: [0x0031, one] + 0x55, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFE, 0xE0, 0x0F, 0xFE, 0xE0, 0x0F, 0xFE, 0xE0, + 0x0F, 0xFE, 0xE0, 0x0F, 0xFE, 0xE0, 0x0F, 0xFE, 0xE0, 0x0F, 0xFE, 0xE0, 0x0F, + // Unicode: [0x0032, two] + 0x40, 0xFE, 0x06, 0xC0, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0x47, 0xBF, 0xD0, 0x2F, 0xBE, 0x00, 0xFE, + 0xFC, 0x02, 0xF4, 0x03, 0x00, 0xE0, 0x0F, 0x00, 0xC0, 0x2F, 0x00, 0x40, 0x7F, 0x00, 0x40, 0xBF, + 0x00, 0x40, 0xFF, 0x00, 0x40, 0xFF, 0x01, 0x40, 0xFF, 0x01, 0x80, 0xFF, 0x00, 0x80, 0xBF, 0x00, + 0x80, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x07, + // Unicode: [0x0033, three] + 0x40, 0xFE, 0x06, 0x80, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0x47, 0xBF, 0xD0, 0x3F, 0xFE, 0x00, 0xFD, + 0x54, 0x01, 0xF4, 0x03, 0x00, 0xD0, 0x0F, 0x00, 0xD0, 0x2F, 0x00, 0xFD, 0x2F, 0x00, 0xF4, 0x2F, + 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x90, 0x3F, 0x00, 0x00, 0xFC, 0xA5, 0x01, 0xF0, 0xE7, 0x0B, 0xC0, + 0x5F, 0xBF, 0x80, 0x7F, 0xFC, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0x00, 0xE4, 0x6F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x07, 0x00, + 0xFC, 0xFE, 0x01, 0x80, 0x2F, 0x7F, 0x00, 0xF4, 0xC7, 0x1F, 0x00, 0x7F, 0xF0, 0x07, 0xE0, 0x0B, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0xD0, 0x1F, 0xC0, 0x1F, 0xF8, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, + 0xAF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xFC, 0x01, + 0x00, 0x00, 0x7F, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0xFF, 0xBF, 0xF8, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0x8B, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0xF8, 0x01, 0x00, 0xE0, 0x97, 0xAF, 0x80, 0xFF, 0xFF, 0x0F, 0xFE, 0xFF, 0xBF, 0xF8, 0x0B, 0xF8, + 0xA7, 0x0A, 0xC0, 0x2F, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xF8, 0xFE, 0x02, 0xF0, 0xEB, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFF, 0x2F, 0xF4, 0xFF, 0x2F, 0x00, 0xFA, 0x1B, 0x00, + // Unicode: [0x0036, six] + 0x00, 0xE9, 0x0A, 0x00, 0xF8, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x40, 0xBF, 0xD0, 0x2F, 0xF8, 0x02, + 0xF4, 0xC3, 0x1F, 0x00, 0x15, 0xFC, 0x00, 0x00, 0xD0, 0x4F, 0xBE, 0x01, 0xBD, 0xFE, 0xBF, 0xD0, + 0xFF, 0xFF, 0x2F, 0xFD, 0x07, 0xF8, 0xD3, 0x1F, 0x00, 0x7F, 0xFC, 0x00, 0xF0, 0xCB, 0x1F, 0x00, + 0x7F, 0xF8, 0x02, 0xF0, 0x47, 0x7F, 0x90, 0x3F, 0xE0, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, 0x0B, 0x00, + 0xF9, 0x1B, 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xBE, 0x00, 0x40, 0x3F, 0x00, + 0x80, 0x2F, 0x00, 0xC0, 0x1F, 0x00, 0xE0, 0x0B, 0x00, 0xF0, 0x07, 0x00, 0xF4, 0x03, 0x00, 0xFC, + 0x02, 0x00, 0xFD, 0x00, 0x00, 0xBE, 0x00, 0x40, 0x7F, 0x00, 0x80, 0x2F, 0x00, 0xD0, 0x1F, 0x00, + 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0xA9, 0x06, 0x00, 0xFD, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0x81, 0x7F, 0xD0, 0x3F, 0xFC, 0x02, + 0xF4, 0xC3, 0x1F, 0x40, 0x3F, 0xFC, 0x02, 0xF4, 0x43, 0x7F, 0xD0, 0x1F, 0xD0, 0xFF, 0x7F, 0x00, + 0xFD, 0xFF, 0x0B, 0xF8, 0xAF, 0xFE, 0xC2, 0x2F, 0x80, 0x7F, 0xFD, 0x00, 0xF0, 0xE7, 0x0F, 0x00, + 0xBF, 0xFD, 0x00, 0xF0, 0xC7, 0x6F, 0x90, 0x7F, 0xF8, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0x0B, 0x40, + 0xFE, 0x1B, 0x00, + // Unicode: [0x0039, nine] + 0x40, 0xFE, 0x06, 0x00, 0xFD, 0xFF, 0x03, 0xF4, 0xFF, 0xBF, 0xC0, 0x7F, 0xD0, 0x1F, 0xFD, 0x01, + 0xF8, 0xD2, 0x0F, 0x40, 0x3F, 0xFD, 0x00, 0xF4, 0xD3, 0x1F, 0x40, 0x7F, 0xFC, 0x07, 0xFD, 0x47, + 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0x07, 0xE4, 0x2F, 0x3F, 0x00, 0x00, 0xF0, 0x43, 0x05, 0x00, + 0x3F, 0xF8, 0x02, 0xF4, 0x42, 0x7F, 0xD0, 0x1F, 0xF0, 0xFF, 0xFF, 0x00, 0xFD, 0xFF, 0x07, 0x00, + 0xFA, 0x0B, 0x00, + // Unicode: [0x003A, colon] + 0xB9, 0xF8, 0xE7, 0x5F, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x8B, 0x7F, 0xFE, + 0xF5, 0x02, + // Unicode: [0x003B, semicolon] + 0xF4, 0xF1, 0xDF, 0x3F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3F, 0xBE, 0xFC, + 0xF0, 0xD2, 0x87, 0x0F, 0x1F, 0x00, + // Unicode: [0x003C, less] + 0x00, 0xFD, 0x07, 0xF4, 0x1F, 0xD0, 0x7F, 0x40, 0xFF, 0x01, 0xFD, 0x07, 0xE0, 0x2F, 0x00, 0xFC, + 0x07, 0x00, 0xFF, 0x01, 0xC0, 0x7F, 0x00, 0xF0, 0x1F, 0x00, 0xFC, 0x07, + // Unicode: [0x003D, equal] + 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x0F, + // Unicode: [0x003E, greater] + 0xFD, 0x07, 0x40, 0xFF, 0x01, 0xD0, 0x7F, 0x00, 0xF4, 0x1F, 0x00, 0xFD, 0x07, 0x80, 0xFF, 0x00, + 0xFD, 0x03, 0xF4, 0x0F, 0xD0, 0x7F, 0x40, 0xFF, 0x01, 0xFD, 0x07, 0x00, + // Unicode: [0x003F, question] + 0x90, 0xBF, 0x01, 0xF8, 0xFF, 0x0F, 0xFE, 0xFF, 0x2F, 0xBF, 0x80, 0x7F, 0x6A, 0x00, 0x7F, 0x00, + 0x40, 0x7F, 0x40, 0xE5, 0x3F, 0xE0, 0xFF, 0x1F, 0xE0, 0xFF, 0x02, 0xE0, 0x0B, 0x00, 0xE0, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xD0, 0x07, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x2F, 0x00, 0x00, 0x90, 0xFF, 0xFF, + 0xFF, 0x01, 0x00, 0xF4, 0x5F, 0x00, 0xF9, 0x07, 0x00, 0xFE, 0x01, 0x00, 0xD0, 0x1F, 0x40, 0x3F, + 0x00, 0x00, 0x40, 0x2F, 0xD0, 0x0F, 0xE4, 0xDB, 0x0F, 0x3E, 0xE0, 0x07, 0xFE, 0xFF, 0x0F, 0x7D, + 0xF4, 0x82, 0xBF, 0xFE, 0x0B, 0x7D, 0xF8, 0xD1, 0x1F, 0xF0, 0x0B, 0x7D, 0xFC, 0xE0, 0x0B, 0xE0, + 0x07, 0x7D, 0xBC, 0xE0, 0x07, 0xE0, 0x07, 0x7E, 0xBC, 0xF0, 0x07, 0xF0, 0x03, 0x3E, 0xBD, 0xF0, + 0x07, 0xF8, 0x43, 0x1F, 0xBC, 0xE0, 0xAF, 0xFF, 0xD7, 0x0F, 0xFC, 0xD0, 0xFF, 0xDB, 0xFF, 0x03, + 0xF8, 0x41, 0xBE, 0x41, 0xBF, 0x00, 0xF4, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0x56, 0x3A, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x90, + 0xFF, 0x1A, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0xFD, 0x7F, 0x00, + 0x00, 0xBE, 0xBF, 0x00, 0x00, 0x7F, 0xFD, 0x00, 0x40, 0x3F, 0xFC, 0x01, 0xC0, 0x2F, 0xF8, 0x02, + 0xD0, 0x1F, 0xF4, 0x03, 0xE0, 0x0F, 0xF0, 0x0B, 0xF0, 0x0B, 0xE0, 0x0F, 0xF4, 0xFF, 0xFF, 0x1F, + 0xF8, 0xFF, 0xFF, 0x2F, 0xFC, 0xAB, 0xEA, 0x3F, 0xFD, 0x01, 0x40, 0x7F, 0xFE, 0x00, 0x00, 0xBF, + 0xBF, 0x00, 0x00, 0xFE, + // Unicode: [0x0042, B] + 0xFD, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0x1F, 0xFD, 0xEB, 0xFF, 0xD3, 0x1F, 0x80, 0x7F, 0xFD, 0x01, + 0xF0, 0xDB, 0x1F, 0x00, 0x7F, 0xFD, 0x01, 0xF9, 0xD3, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0x7F, 0xD0, + 0xAF, 0xEA, 0x2F, 0xFD, 0x01, 0xF4, 0xD7, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x40, + 0xFF, 0xFD, 0xEB, 0xFF, 0xD7, 0xFF, 0xFF, 0x2F, 0xFD, 0xFF, 0x6F, 0x00, + // Unicode: [0x0043, C] + 0x00, 0xE4, 0xAF, 0x01, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0xFF, 0x03, 0xFD, 0x5B, 0xF5, + 0x3F, 0xFD, 0x07, 0x00, 0xFE, 0xF9, 0x07, 0x00, 0x50, 0xF5, 0x0B, 0x00, 0x00, 0xC0, 0x2F, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x02, 0x00, 0x00, 0xF0, 0x0B, 0x00, 0x00, 0x80, 0x7F, + 0x00, 0x00, 0x55, 0xFD, 0x07, 0x00, 0xFE, 0xD2, 0xBF, 0x51, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x07, + 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0xE4, 0xBF, 0x01, 0x00, + // Unicode: [0x0044, D] + 0xFD, 0xFF, 0x1B, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0x0B, 0xFD, 0x01, 0xF4, 0x1F, + 0xFD, 0x01, 0xC0, 0x3F, 0xFD, 0x01, 0x40, 0xBF, 0xFD, 0x01, 0x00, 0xBF, 0xFD, 0x01, 0x00, 0xFE, + 0xFD, 0x01, 0x00, 0xFE, 0xFD, 0x01, 0x00, 0xFE, 0xFD, 0x01, 0x00, 0xBF, 0xFD, 0x01, 0x40, 0xBF, + 0xFD, 0x01, 0xC0, 0x3F, 0xFD, 0x01, 0xF4, 0x1F, 0xFD, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0x01, + 0xFD, 0xFF, 0x1B, 0x00, + // Unicode: [0x0045, E] + 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, 0xDF, 0xBF, 0xAA, 0xF6, 0x07, 0x00, 0xFD, 0x01, 0x40, 0x7F, 0x00, + 0xD0, 0x1F, 0x00, 0xF4, 0xFF, 0x3F, 0xFD, 0xFF, 0x4F, 0xBF, 0xAA, 0xD2, 0x1F, 0x00, 0xF4, 0x07, + 0x00, 0xFD, 0x01, 0x40, 0x7F, 0x00, 0xD0, 0xBF, 0xAA, 0xF6, 0xFF, 0xFF, 0xFD, 0xFF, 0x3F, + // Unicode: [0x0046, F] + 0xFD, 0xFF, 0xBF, 0xFD, 0xFF, 0xBF, 0xFD, 0xAB, 0x6A, 0xFD, 0x01, 0x00, 0xFD, 0x01, 0x00, 0xFD, + 0x01, 0x00, 0xFD, 0x01, 0x00, 0xFD, 0xFF, 0x0B, 0xFD, 0xFF, 0x0B, 0xFD, 0xAA, 0x0A, 0xFD, 0x01, + 0x00, 0xFD, 0x01, 0x00, 0xFD, 0x01, 0x00, 0xFD, 0x01, 0x00, 0xFD, 0x01, 0x00, 0xFD, 0x01, 0x00, + 0xFD, 0x01, 0x00, + // Unicode: [0x0047, G] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xBF, 0x01, 0xE0, 0xFF, 0xFF, 0x7F, 0x40, 0xFF, 0x56, + 0xFD, 0x0F, 0xFD, 0x07, 0x00, 0xFE, 0xE2, 0x1F, 0x00, 0x40, 0x05, 0xFF, 0x00, 0x00, 0x00, 0xF0, + 0x0B, 0xA0, 0xAA, 0x6A, 0x7F, 0x00, 0xFF, 0xFF, 0xF7, 0x0B, 0xF0, 0xFF, 0x7F, 0xBF, 0x00, 0x00, + 0xF4, 0xE7, 0x1F, 0x00, 0x80, 0x3F, 0xFD, 0x07, 0x00, 0xFE, 0x42, 0xFF, 0x56, 0xF9, 0x0F, 0xE0, + 0xFF, 0xFF, 0x3F, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xAF, 0x01, 0x00, + // Unicode: [0x0048, H] + 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, + 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0xFF, 0xFF, 0x7F, + 0xFD, 0xFF, 0xFF, 0x7F, 0xFD, 0xAB, 0xEA, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, + 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, 0xFD, 0x01, 0x40, 0x7F, + 0xFD, 0x01, 0x40, 0x7F, + // Unicode: [0x0049, I] + 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, + 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0x01, + // Unicode: [0x004A, J] + 0x00, 0x80, 0x3F, 0x00, 0xE0, 0x0F, 0x00, 0xF8, 0x03, 0x00, 0xFE, 0x00, 0x80, 0x3F, 0x00, 0xE0, + 0x0F, 0x00, 0xF8, 0x03, 0x00, 0xFE, 0x00, 0x80, 0x3F, 0x00, 0xE0, 0x0F, 0x00, 0xF8, 0x57, 0x00, + 0xFE, 0xBF, 0x80, 0xBF, 0x7F, 0xF4, 0xDB, 0xFF, 0xFF, 0xE1, 0xFF, 0x2F, 0x90, 0xBF, 0x01, + // Unicode: [0x004B, K] + 0xFD, 0x01, 0xE0, 0x5F, 0x7F, 0x00, 0xFE, 0xD2, 0x1F, 0xE0, 0x2F, 0xF4, 0x07, 0xFD, 0x02, 0xFD, + 0xD1, 0x3F, 0x40, 0x7F, 0xFC, 0x03, 0xD0, 0x9F, 0x7F, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0xFD, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xD0, 0x9F, 0x7F, 0x00, 0xF4, 0xC7, 0x7F, 0x00, 0xFD, 0xD1, 0x7F, + 0x40, 0x7F, 0xD0, 0x3F, 0xD0, 0x1F, 0xE0, 0x2F, 0xF4, 0x07, 0xE0, 0x2F, 0xFD, 0x01, 0xE0, 0x2F, + // Unicode: [0x004C, L] + 0xFD, 0x01, 0xD0, 0x1F, 0x00, 0xFD, 0x01, 0xD0, 0x1F, 0x00, 0xFD, 0x01, 0xD0, 0x1F, 0x00, 0xFD, + 0x01, 0xD0, 0x1F, 0x00, 0xFD, 0x01, 0xD0, 0x1F, 0x00, 0xFD, 0x01, 0xD0, 0x1F, 0x00, 0xFD, 0x01, + 0xD0, 0x1F, 0x00, 0xFD, 0xAA, 0xDA, 0xFF, 0xFF, 0xFD, 0xFF, 0x0F, + // Unicode: [0x004D, M] + 0xFD, 0x03, 0x00, 0x40, 0xBF, 0xFD, 0x07, 0x00, 0xC0, 0xBF, 0xFD, 0x0B, 0x00, 0xD0, 0xBF, 0xFD, + 0x1F, 0x00, 0xE0, 0xBF, 0xFD, 0x2F, 0x00, 0xF4, 0xBF, 0xFD, 0x3F, 0x00, 0xF8, 0xBF, 0xFD, 0xBE, + 0x00, 0xFC, 0xBE, 0xFD, 0xFD, 0x00, 0xBD, 0xBE, 0xFD, 0xF9, 0x01, 0x7F, 0xBE, 0xFD, 0xF5, 0x43, + 0x2F, 0xBE, 0xFD, 0xF1, 0x87, 0x1F, 0xBE, 0xFD, 0xD1, 0xDB, 0x0F, 0xBE, 0xFD, 0xC1, 0xEF, 0x07, + 0xBE, 0xFD, 0x81, 0xFF, 0x03, 0xBE, 0xFD, 0x01, 0xFF, 0x02, 0xBE, 0xFD, 0x01, 0xFE, 0x01, 0xBE, + 0xFD, 0x01, 0xBD, 0x00, 0xBE, + // Unicode: [0x004E, N] + 0xFD, 0x02, 0x00, 0xBF, 0xFD, 0x07, 0x00, 0xBF, 0xFD, 0x0F, 0x00, 0xBF, 0xFD, 0x2F, 0x00, 0xBF, + 0xFD, 0x7F, 0x00, 0xBF, 0xFD, 0xFF, 0x00, 0xBF, 0xFD, 0xFD, 0x02, 0xBF, 0xFD, 0xF5, 0x07, 0xBF, + 0xFD, 0xE1, 0x0F, 0xBF, 0xFD, 0xC1, 0x2F, 0xBF, 0xFD, 0x41, 0x7F, 0xBF, 0xFD, 0x01, 0xFE, 0xBF, + 0xFD, 0x01, 0xFC, 0xBF, 0xFD, 0x01, 0xF4, 0xBF, 0xFD, 0x01, 0xE0, 0xBF, 0xFD, 0x01, 0xC0, 0xBF, + 0xFD, 0x01, 0x40, 0xBF, + // Unicode: [0x004F, O] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x40, 0xFF, 0x56, + 0xF9, 0x0F, 0xFC, 0x07, 0x00, 0xFD, 0xE2, 0x1F, 0x00, 0x80, 0x7F, 0xBF, 0x00, 0x00, 0xF4, 0xFB, + 0x0B, 0x00, 0x00, 0xBF, 0x7F, 0x00, 0x00, 0xF0, 0xFB, 0x0B, 0x00, 0x00, 0xBF, 0xBF, 0x00, 0x00, + 0xF4, 0xEB, 0x1F, 0x00, 0x80, 0x7F, 0xFC, 0x07, 0x00, 0xFD, 0x42, 0xFF, 0x46, 0xF9, 0x0F, 0xE0, + 0xFF, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xBF, 0x01, 0x00, + // Unicode: [0x0050, P] + 0xFD, 0xFF, 0x1B, 0xD0, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0x7F, 0xFD, 0x01, + 0xF4, 0xD7, 0x1F, 0x40, 0x7F, 0xFD, 0x01, 0xF8, 0xD7, 0xBF, 0xFE, 0x2F, 0xFD, 0xFF, 0xBF, 0xD0, + 0xFF, 0xBF, 0x01, 0xFD, 0x01, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xFD, 0x01, 0x00, 0xD0, 0x1F, 0x00, + 0x00, 0xFD, 0x01, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x40, 0xFF, 0x56, + 0xF9, 0x0F, 0xFC, 0x07, 0x00, 0xFD, 0xE2, 0x1F, 0x00, 0x80, 0x7F, 0xBF, 0x00, 0x00, 0xF4, 0xFB, + 0x0B, 0x00, 0x00, 0xBF, 0x7F, 0x00, 0x00, 0xF0, 0xFB, 0x0B, 0x00, 0x00, 0xBF, 0xBF, 0x00, 0x00, + 0xF4, 0xE7, 0x1F, 0x00, 0x80, 0x3F, 0xFC, 0x07, 0x00, 0xFD, 0x42, 0xFF, 0x46, 0xF9, 0x0F, 0xE0, + 0xFF, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0xE4, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0xF4, + 0x0F, 0x00, 0x00, 0x00, 0xFD, 0x02, 0x00, 0x00, 0x80, 0xBF, + // Unicode: [0x0052, R] + 0xFD, 0xFF, 0x1B, 0xD0, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0x7F, 0xFD, 0x01, + 0xF0, 0xDB, 0x1F, 0x00, 0x7F, 0xFD, 0x01, 0xF8, 0xD7, 0xAF, 0xFA, 0x2F, 0xFD, 0xFF, 0xBF, 0xD0, + 0xFF, 0xFF, 0x01, 0xFD, 0xF1, 0x0F, 0xD0, 0x1F, 0xFD, 0x02, 0xFD, 0x81, 0x7F, 0xD0, 0x1F, 0xF4, + 0x0B, 0xFD, 0x01, 0xFE, 0xD1, 0x1F, 0xC0, 0x3F, 0xFD, 0x01, 0xF8, 0x07, + // Unicode: [0x0053, S] + 0x40, 0xFE, 0x06, 0xD0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0x4F, 0xBF, 0x80, 0x7F, 0xFE, 0x00, 0xA9, + 0xFA, 0x07, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xFE, 0x6F, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0xA4, 0xFF, + 0x03, 0x00, 0xE4, 0x2F, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0xF8, 0xF7, 0x0B, 0xF4, 0xCB, 0xFF, 0xFF, + 0x1F, 0xFC, 0xFF, 0x1F, 0x40, 0xFE, 0x0A, 0x00, + // Unicode: [0x0054, T] + 0xFD, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xBF, 0xA8, 0xFE, 0xAB, 0x06, 0x80, 0x3F, 0x00, 0x00, 0xF8, + 0x03, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x03, 0x00, + 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x80, 0x3F, + 0x00, 0x00, 0xF8, 0x03, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x03, 0x00, + // Unicode: [0x0055, U] + 0xFD, 0x01, 0x80, 0x6F, 0x7F, 0x00, 0xE0, 0xDB, 0x1F, 0x00, 0xF8, 0xF6, 0x07, 0x00, 0xBE, 0xFD, + 0x01, 0x80, 0x6F, 0x7F, 0x00, 0xE0, 0xDB, 0x1F, 0x00, 0xF8, 0xF6, 0x07, 0x00, 0xBE, 0xFD, 0x01, + 0x80, 0x6F, 0x7F, 0x00, 0xE0, 0xDB, 0x1F, 0x00, 0xF8, 0xF6, 0x07, 0x00, 0xBF, 0xFC, 0x02, 0xD0, + 0x1F, 0xFE, 0x56, 0xFE, 0x03, 0xFF, 0xFF, 0x7F, 0x40, 0xFE, 0xFF, 0x07, 0x00, 0xF9, 0x1B, 0x00, + // Unicode: [0x0056, V] + 0xFD, 0x01, 0x00, 0xF8, 0xC7, 0x2F, 0x00, 0xC0, 0x3F, 0xF8, 0x03, 0x00, 0xFD, 0x41, 0x7F, 0x00, + 0xE0, 0x0F, 0xF0, 0x0B, 0x00, 0xBF, 0x00, 0xFE, 0x00, 0xF4, 0x07, 0xD0, 0x1F, 0x80, 0x3F, 0x00, + 0xF8, 0x02, 0xFC, 0x02, 0x40, 0x3F, 0xD0, 0x1F, 0x00, 0xF0, 0x07, 0xBE, 0x00, 0x00, 0xBE, 0xF0, + 0x07, 0x00, 0xD0, 0x5F, 0x3F, 0x00, 0x00, 0xFC, 0xFA, 0x02, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, + 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xD0, 0x7F, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xFD, 0x01, 0xD0, 0x3F, 0x00, 0xFC, 0xF3, 0x0B, 0x40, 0xFF, 0x01, 0xF0, 0x8B, 0x3F, 0x00, 0xFE, + 0x07, 0xD0, 0x1F, 0xFD, 0x00, 0xFC, 0x2F, 0x80, 0x3F, 0xF4, 0x07, 0xF4, 0xFF, 0x00, 0xBE, 0xC0, + 0x2F, 0xE0, 0xFB, 0x07, 0xFC, 0x01, 0xBE, 0x80, 0x9F, 0x1F, 0xF4, 0x07, 0xF4, 0x03, 0x3F, 0xBE, + 0xD0, 0x0F, 0xC0, 0x1F, 0xBD, 0xF4, 0x83, 0x2F, 0x00, 0xBE, 0xF8, 0xC1, 0x1F, 0x7F, 0x00, 0xF8, + 0xF2, 0x07, 0xBE, 0xFD, 0x00, 0xD0, 0xDF, 0x0F, 0xF4, 0xF6, 0x02, 0x00, 0xBF, 0x2F, 0xD0, 0xEF, + 0x07, 0x00, 0xF8, 0x7F, 0x00, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFF, + 0x02, 0xD0, 0xBF, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xFF, 0x01, 0x00, + // Unicode: [0x0058, X] + 0xFE, 0x01, 0xC0, 0x2F, 0xFF, 0x00, 0xF8, 0x43, 0xBF, 0x40, 0x7F, 0x80, 0x7F, 0xF0, 0x0B, 0xC0, + 0x3F, 0xFE, 0x01, 0xD0, 0xEF, 0x2F, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xF8, + 0x0B, 0x00, 0x40, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0xFD, 0xFE, 0x02, 0xC0, 0x2F, 0xFE, + 0x01, 0xF8, 0x03, 0xFF, 0x40, 0x7F, 0x40, 0xBF, 0xF0, 0x0F, 0x80, 0x7F, 0xFE, 0x01, 0xD0, 0x3F, + // Unicode: [0x0059, Y] + 0xFD, 0x01, 0x80, 0x7F, 0xFC, 0x03, 0xC0, 0x2F, 0xF4, 0x07, 0xE0, 0x1F, 0xF0, 0x0F, 0xF0, 0x0B, + 0xD0, 0x1F, 0xF4, 0x07, 0x80, 0x3F, 0xFC, 0x02, 0x40, 0x7F, 0xFD, 0x00, 0x00, 0xFE, 0xBF, 0x00, + 0x00, 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xE0, 0x0B, 0x00, + 0x00, 0xE0, 0x0B, 0x00, 0x00, 0xE0, 0x0B, 0x00, 0x00, 0xE0, 0x0B, 0x00, 0x00, 0xE0, 0x0B, 0x00, + 0x00, 0xE0, 0x0B, 0x00, + // Unicode: [0x005A, Z] + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x40, 0xBF, 0x00, 0xC0, 0x3F, 0x00, + 0xE0, 0x1F, 0x00, 0xF4, 0x0B, 0x00, 0xFC, 0x02, 0x00, 0xFE, 0x01, 0x40, 0x7F, 0x00, 0xD0, 0x2F, + 0x00, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x00, 0xFD, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, + // Unicode: [0x005B, bracketleft] + 0xAA, 0xAA, 0xFF, 0xEB, 0xFF, 0xFA, 0x02, 0xBE, 0x80, 0x2F, 0xE0, 0x0B, 0xF8, 0x02, 0xBE, 0x80, + 0x2F, 0xE0, 0x0B, 0xF8, 0x02, 0xBE, 0x80, 0x2F, 0xE0, 0x0B, 0xF8, 0x02, 0xBE, 0x80, 0x2F, 0xE0, + 0x0B, 0xF8, 0x02, 0xBE, 0x80, 0x2F, 0xE0, 0x0B, 0xF8, 0x02, 0xBE, 0x80, 0xFF, 0xEB, 0xFF, 0xFA, + 0xBF, + // Unicode: [0x005C, backslash] + 0xFE, 0x00, 0x40, 0x3F, 0x00, 0xC0, 0x1F, 0x00, 0xE0, 0x0B, 0x00, 0xF8, 0x03, 0x00, 0xFD, 0x00, + 0x00, 0x7F, 0x00, 0x80, 0x2F, 0x00, 0xE0, 0x0F, 0x00, 0xF4, 0x03, 0x00, 0xFC, 0x01, 0x00, 0xBE, + 0x00, 0x40, 0x3F, 0x00, 0xD0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0xF8, 0x02, 0x00, 0xFD, 0x00, 0x40, + 0x7F, 0x00, 0xC0, 0x1F, 0x00, 0xE0, 0x0B, 0x00, 0xF4, 0x03, 0x00, 0xFD, 0x01, 0x00, 0x7F, 0x00, + 0x80, 0x2F, 0x00, 0xD0, 0x0F, 0x00, 0xF4, 0x07, 0x00, 0xFC, 0x01, 0x00, 0xBE, + // Unicode: [0x005D, bracketright] + 0xA9, 0x6A, 0xFF, 0xDF, 0xFF, 0x03, 0xFD, 0x40, 0x3F, 0xD0, 0x0F, 0xF4, 0x03, 0xFD, 0x40, 0x3F, + 0xD0, 0x0F, 0xF4, 0x03, 0xFD, 0x40, 0x3F, 0xD0, 0x0F, 0xF4, 0x03, 0xFD, 0x40, 0x3F, 0xD0, 0x0F, + 0xF4, 0x03, 0xFD, 0x40, 0x3F, 0xD0, 0x0F, 0xF4, 0x03, 0xFD, 0x40, 0x7F, 0xFF, 0xDF, 0xFF, 0xF7, + 0xFF, + // Unicode: [0x005E, asciicircum] + 0x00, 0xA0, 0x02, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, + 0xFF, 0x3F, 0x00, 0xD0, 0xDF, 0x1F, 0x00, 0xFC, 0xE2, 0x0F, 0x40, 0x7F, 0xF4, 0x07, 0xE0, 0x0F, + 0xF8, 0x02, 0xFD, 0x01, 0xFD, 0x81, 0x3F, 0x00, 0xBF, 0xF0, 0x0B, 0x80, 0x3F, 0xFE, 0x00, 0xC0, + 0xEF, 0x2F, 0x00, 0xE0, 0x0F, + // Unicode: [0x005F, underscore] + 0x54, 0x55, 0x55, 0x15, 0xFD, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0x7F, + // Unicode: [0x0060, grave] + 0x0A, 0xE0, 0x0B, 0xFE, 0x47, 0xFE, 0x00, 0x0E, + // Unicode: [0x0061, a] + 0x40, 0xFE, 0xD2, 0x1F, 0xF8, 0xFF, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, 0xF5, 0x1F, 0xF4, 0x7F, 0xFE, + 0x01, 0xF0, 0xDF, 0x2F, 0x00, 0xF8, 0xF7, 0x07, 0x00, 0xFD, 0xFD, 0x01, 0x40, 0x7F, 0xBF, 0x00, + 0xD0, 0x9F, 0x3F, 0x00, 0xFC, 0xD7, 0x7F, 0x80, 0xFF, 0xE1, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xEF, + 0x1F, 0x90, 0xBF, 0xF4, 0x07, + // Unicode: [0x0062, b] + 0xA9, 0x00, 0x00, 0x40, 0x7F, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFD, + 0x01, 0x00, 0x40, 0x7F, 0xF8, 0x1B, 0xD0, 0xDF, 0xFF, 0x2F, 0xF4, 0xFF, 0xFF, 0x2F, 0xFD, 0x1F, + 0xF4, 0x5F, 0xFF, 0x00, 0xF4, 0xDB, 0x1F, 0x00, 0xF8, 0xF7, 0x07, 0x00, 0xFE, 0xFD, 0x01, 0x80, + 0x7F, 0x7F, 0x00, 0xE0, 0xDF, 0x3F, 0x00, 0xFD, 0xF6, 0x7F, 0xD0, 0x7F, 0xFD, 0xFF, 0xFF, 0x4B, + 0x7F, 0xFF, 0xBF, 0xD0, 0x1F, 0xFE, 0x06, 0x00, + // Unicode: [0x0063, c] + 0x40, 0xFE, 0x06, 0x80, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x4F, 0xBF, 0x81, 0xBF, 0xFE, 0x00, 0xA8, + 0xFE, 0x02, 0x00, 0xF0, 0x07, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xBF, 0x00, 0x00, 0xF8, 0x03, 0xA0, + 0xDA, 0x6F, 0xE0, 0x2F, 0xFE, 0xFF, 0x3F, 0xE0, 0xFF, 0x7F, 0x00, 0xF9, 0x1B, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x40, 0x7F, 0x00, + 0x00, 0xD0, 0x1F, 0x90, 0x6F, 0xF4, 0x07, 0xFE, 0xFF, 0xFD, 0xE1, 0xFF, 0xFF, 0x7F, 0xFD, 0x07, + 0xFD, 0x9F, 0x7F, 0x00, 0xFC, 0xF7, 0x0B, 0x00, 0xFE, 0xFD, 0x01, 0x40, 0x7F, 0x7F, 0x00, 0xD0, + 0xDF, 0x2F, 0x00, 0xF4, 0xE7, 0x0F, 0x00, 0xFF, 0xF5, 0x1F, 0xE0, 0x7F, 0xF8, 0xFF, 0xFF, 0x1F, + 0xF8, 0xFF, 0xFB, 0x07, 0xE4, 0x2F, 0xFD, 0x01, + // Unicode: [0x0065, e] + 0x40, 0xFE, 0x06, 0x00, 0xFE, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xD1, 0x2F, 0xD0, 0x3F, 0xBE, 0x00, + 0xF4, 0xF7, 0x5B, 0x55, 0x7F, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0x7F, 0x00, 0x00, 0xE0, + 0x0F, 0x40, 0x2A, 0xFD, 0x02, 0xFD, 0x82, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0x7F, 0x00, 0xE4, 0xAF, + 0x00, + // Unicode: [0x0066, f] + 0x00, 0xF9, 0x80, 0xFF, 0xE0, 0xFF, 0xE0, 0x1F, 0xF0, 0x0B, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, + 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, + 0xF0, 0x0B, 0xF0, 0x0B, 0xF0, 0x0B, + // Unicode: [0x0067, g] + 0x40, 0xFE, 0xD2, 0x1F, 0xF8, 0xFF, 0xFB, 0x87, 0xFF, 0xFF, 0xFF, 0xF5, 0x1F, 0xE0, 0x7F, 0xFE, + 0x00, 0xF0, 0xDF, 0x2F, 0x00, 0xF4, 0xF7, 0x07, 0x00, 0xFD, 0xFD, 0x01, 0x40, 0x7F, 0xBF, 0x00, + 0xE0, 0x9F, 0x7F, 0x00, 0xFC, 0xD7, 0x7F, 0xD0, 0xFF, 0xE1, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xDF, + 0x1F, 0x90, 0x6F, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x55, 0x01, 0x40, 0x3F, 0xFD, 0x01, 0xF0, 0x0F, + 0xFF, 0x41, 0xFE, 0x42, 0xFF, 0xFF, 0x3F, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0xFA, 0x1B, 0x00, + // Unicode: [0x0068, h] + 0x54, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xFD, 0x01, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xFD, 0x01, + 0x00, 0xD0, 0x5F, 0xFE, 0x06, 0xFD, 0xFE, 0xFF, 0xD1, 0xFF, 0xFF, 0x3F, 0xFD, 0x0B, 0xF9, 0xDB, + 0x2F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, + 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, 0xFE, 0xFD, + 0x01, 0xE0, 0x0F, + // Unicode: [0x0069, i] + 0xB8, 0xF8, 0xEB, 0x2F, 0x2E, 0x00, 0xF4, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, + 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x1F, + // Unicode: [0x006A, j] + 0x80, 0x0B, 0xF8, 0x0B, 0xFE, 0x02, 0x2E, 0x00, 0x00, 0xF4, 0x07, 0xFD, 0x41, 0x7F, 0xD0, 0x1F, + 0xF4, 0x07, 0xFD, 0x41, 0x7F, 0xD0, 0x1F, 0xF4, 0x07, 0xFD, 0x41, 0x7F, 0xD0, 0x1F, 0xF4, 0x07, + 0xFD, 0x41, 0x7F, 0xD0, 0x1F, 0xF4, 0x07, 0xFE, 0xF8, 0x3F, 0xFE, 0x87, 0x6F, 0x00, + // Unicode: [0x006B, k] + 0x54, 0x00, 0x00, 0xF4, 0x07, 0x00, 0xD0, 0x1F, 0x00, 0x40, 0x7F, 0x00, 0x00, 0xFD, 0x01, 0x00, + 0xF4, 0x07, 0xF8, 0xDF, 0x1F, 0xF4, 0x5F, 0x7F, 0xF0, 0x1F, 0xFD, 0xE1, 0x1F, 0xF4, 0xE7, 0x2F, + 0xD0, 0xEF, 0x2F, 0x40, 0xFF, 0x2F, 0x00, 0xFD, 0xBF, 0x00, 0xF4, 0xFB, 0x0B, 0xD0, 0x9F, 0xBF, + 0x40, 0x7F, 0xF8, 0x07, 0xFD, 0xC1, 0x7F, 0xF4, 0x07, 0xFD, 0xD7, 0x1F, 0xD0, 0x3F, + // Unicode: [0x006C, l] + 0x54, 0xF4, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, + 0xF5, 0xD7, 0x5F, 0x7F, 0xFD, 0xF5, 0xD7, 0x1F, + // Unicode: [0x006D, m] + 0xFD, 0xE5, 0x6F, 0x40, 0xBE, 0x01, 0xFD, 0xFE, 0xFF, 0xF1, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0x2F, 0xFD, 0x07, 0xF8, 0x7F, 0xD0, 0x7F, 0xFD, 0x02, 0xF0, 0x1F, 0x40, 0x7F, 0xFD, 0x01, + 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, + 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, + 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, 0xE0, 0x0F, 0x00, 0xBF, 0xFD, 0x01, + 0xE0, 0x0F, 0x00, 0xBF, + // Unicode: [0x006E, n] + 0xFD, 0xE5, 0x2F, 0xD0, 0xEF, 0xFF, 0x1F, 0xFD, 0xBF, 0xFF, 0xD3, 0x7F, 0x80, 0xBF, 0xFD, 0x02, + 0xF0, 0xDB, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, + 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, 0xFE, 0xFD, 0x01, 0xE0, 0xDF, 0x1F, 0x00, + 0xFE, + // Unicode: [0x006F, o] + 0x40, 0xFA, 0x0A, 0x00, 0xFE, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xD2, 0x7F, 0xD0, 0x7F, 0xFE, 0x00, + 0xF4, 0xFB, 0x0B, 0x00, 0xFE, 0x7F, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0xFE, 0xBF, 0x00, 0xE0, 0xEF, + 0x0F, 0x40, 0xBF, 0xFD, 0x07, 0xFD, 0x87, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0x7F, 0x00, 0xE4, 0xAF, + 0x00, + // Unicode: [0x0070, p] + 0xFD, 0xE1, 0x6F, 0x40, 0x7F, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xBF, 0xF4, 0x7F, 0xD0, 0x7F, 0xFD, + 0x03, 0xD0, 0x6F, 0x7F, 0x00, 0xE0, 0xDF, 0x1F, 0x00, 0xF8, 0xF7, 0x07, 0x00, 0xFE, 0xFD, 0x01, + 0x80, 0x7F, 0xFF, 0x00, 0xF4, 0xDB, 0xFF, 0x41, 0xFF, 0xF5, 0xFF, 0xFF, 0x2F, 0xFD, 0xFD, 0xFF, + 0x42, 0x7F, 0xF8, 0x1B, 0xD0, 0x1F, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x40, + 0x7F, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x40, 0xFE, 0xD2, 0x1F, 0xF8, 0xFF, 0xFB, 0x87, 0xFF, 0xFF, 0xFF, 0xF5, 0x1F, 0xF4, 0x7F, 0xFE, + 0x01, 0xF0, 0xDF, 0x2F, 0x00, 0xF8, 0xF7, 0x07, 0x00, 0xFD, 0xFD, 0x01, 0x40, 0x7F, 0xBF, 0x00, + 0xE0, 0x9F, 0x7F, 0x00, 0xFC, 0xD7, 0x7F, 0xD0, 0xFF, 0xE1, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xDF, + 0x1F, 0x90, 0xBF, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x40, 0x7F, 0x00, 0x00, 0xD0, 0x1F, + 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x40, 0x7F, 0x00, 0x00, 0xD0, 0x1F, + // Unicode: [0x0072, r] + 0xFD, 0xE1, 0xF5, 0xF7, 0xD7, 0xFF, 0x5F, 0xFF, 0x6B, 0xFD, 0x07, 0xF4, 0x07, 0xD0, 0x1F, 0x40, + 0x7F, 0x00, 0xFD, 0x01, 0xF4, 0x07, 0xD0, 0x1F, 0x40, 0x7F, 0x00, 0xFD, 0x01, 0xF4, 0x07, 0x00, + // Unicode: [0x0073, s] + 0x90, 0xBF, 0x01, 0xF8, 0xFF, 0x0F, 0xFD, 0xFB, 0x2F, 0xFE, 0x40, 0x3F, 0xFE, 0x00, 0x2A, 0xFD, + 0x17, 0x00, 0xF8, 0xFF, 0x06, 0x90, 0xFF, 0x1F, 0x00, 0xE4, 0x3F, 0x6A, 0x00, 0x7F, 0xFE, 0x40, + 0x7F, 0xFD, 0xEB, 0x3F, 0xF4, 0xFF, 0x1F, 0x80, 0xFF, 0x02, + // Unicode: [0x0074, t] + 0xE0, 0x0B, 0x80, 0x2F, 0x00, 0xBE, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0xF7, 0xFF, 0x0B, 0xBE, 0x00, + 0xF8, 0x02, 0xE0, 0x0B, 0x80, 0x2F, 0x00, 0xBE, 0x00, 0xF8, 0x02, 0xE0, 0x0B, 0x80, 0x3F, 0x00, + 0xFD, 0x3F, 0xF0, 0xFF, 0x00, 0xFE, 0x03, + // Unicode: [0x0075, u] + 0xFD, 0x00, 0xE0, 0xDB, 0x0F, 0x00, 0xBE, 0xFD, 0x00, 0xE0, 0xDB, 0x0F, 0x00, 0xBE, 0xFD, 0x00, + 0xE0, 0xDB, 0x0F, 0x00, 0xBE, 0xFD, 0x00, 0xE0, 0xDB, 0x0F, 0x00, 0xBE, 0xFD, 0x01, 0xE0, 0xDB, + 0x1F, 0x00, 0xBF, 0xFC, 0x07, 0xF8, 0x8B, 0xFF, 0xFF, 0xBF, 0xE0, 0xFF, 0xEF, 0x0B, 0xE4, 0x2F, + 0xBE, + // Unicode: [0x0076, v] + 0xFE, 0x00, 0xC0, 0x6F, 0x7F, 0x00, 0xF4, 0xC7, 0x2F, 0x00, 0xBE, 0xD0, 0x0F, 0xC0, 0x1F, 0xF0, + 0x07, 0xF4, 0x03, 0xF8, 0x02, 0xBE, 0x00, 0xFD, 0xC0, 0x1F, 0x00, 0x7F, 0xF4, 0x03, 0x80, 0x2F, + 0xBE, 0x00, 0xD0, 0xDF, 0x1F, 0x00, 0xF0, 0xFF, 0x03, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0xFD, 0x0F, + 0x00, 0x00, 0xFF, 0x02, 0x00, + // Unicode: [0x0077, w] + 0xBE, 0x00, 0xFD, 0x02, 0xF8, 0xF6, 0x03, 0xF8, 0x0F, 0xE0, 0xC7, 0x1F, 0xE0, 0x3F, 0xC0, 0x1F, + 0xBE, 0xC0, 0xFF, 0x41, 0x3F, 0xF8, 0x42, 0xFF, 0x0B, 0xBD, 0xD0, 0x0F, 0x7E, 0x3F, 0xF8, 0x01, + 0x7F, 0xF8, 0xFC, 0xF0, 0x03, 0xF8, 0xF1, 0xE2, 0xC7, 0x0B, 0xD0, 0xDB, 0x47, 0x6F, 0x1F, 0x00, + 0xBF, 0x1F, 0xFC, 0x7E, 0x00, 0xF8, 0x3F, 0xE0, 0xFF, 0x00, 0xD0, 0xBF, 0x80, 0xFF, 0x02, 0x40, + 0xFF, 0x01, 0xFD, 0x07, 0x00, 0xFC, 0x07, 0xF0, 0x0F, 0x00, + // Unicode: [0x0078, x] + 0xFD, 0x01, 0xF8, 0xE3, 0x0F, 0xF4, 0x47, 0xBF, 0xF0, 0x0B, 0xF8, 0xE7, 0x0F, 0x80, 0xFF, 0x1F, + 0x00, 0xFD, 0x2F, 0x00, 0xE0, 0x3F, 0x00, 0x80, 0xFF, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFE, 0x7F, + 0x00, 0xFD, 0xFC, 0x03, 0xFC, 0xD1, 0x2F, 0xF8, 0x03, 0xFE, 0xF5, 0x07, 0xF0, 0x0F, + // Unicode: [0x0079, y] + 0xFE, 0x01, 0xC0, 0x6F, 0xBF, 0x00, 0xF4, 0xC7, 0x3F, 0x00, 0xFE, 0xD0, 0x1F, 0xC0, 0x2F, 0xF0, + 0x0B, 0xF4, 0x03, 0xF8, 0x03, 0xBE, 0x00, 0xFD, 0xC1, 0x1F, 0x00, 0xBF, 0xF4, 0x03, 0x40, 0x3F, + 0xBF, 0x00, 0xC0, 0xEF, 0x0F, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFC, 0x0F, + 0x00, 0x00, 0xFD, 0x01, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xF0, 0x0B, 0x00, 0x00, 0xFD, 0x01, 0x00, + 0xC0, 0x2F, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x2F, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x40, 0xBF, 0x00, 0xFD, 0x02, 0xF0, 0x0F, 0x80, + 0x7F, 0x00, 0xFD, 0x02, 0xF0, 0x0B, 0x80, 0x3F, 0x00, 0xFE, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, + // Unicode: [0x007B, braceleft] + 0x00, 0xF9, 0x02, 0xFD, 0x0B, 0xFC, 0x2F, 0xF4, 0x07, 0xD0, 0x0F, 0x40, 0x3F, 0x00, 0xFC, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xF8, 0x0F, 0xF4, 0x1B, 0xD0, + 0x6F, 0x00, 0xFE, 0x03, 0xC0, 0x1F, 0x00, 0x7F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7F, 0x00, 0xFD, 0x00, 0xF4, 0x03, 0xD0, 0x1F, 0x00, 0xFF, 0x0B, 0xF4, 0x2F, 0x40, 0xBE, + // Unicode: [0x007C, bar] + 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, + 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, + // Unicode: [0x007D, braceright] + 0xBF, 0x01, 0xFF, 0x07, 0xFF, 0x0B, 0xE0, 0x0F, 0xD0, 0x0F, 0xD0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0B, + 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0B, 0xD0, 0x6F, 0x40, 0xFF, 0x40, 0xFF, 0xD0, 0x6F, + 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0B, 0xE0, 0x0F, 0xD0, 0x0F, 0xD0, 0x0F, + 0xE0, 0x0F, 0xFF, 0x0B, 0xFF, 0x07, 0xBF, 0x01, + // Unicode: [0x007E, asciitilde] + 0xE0, 0x1B, 0xE0, 0xE3, 0xFF, 0xD6, 0xDB, 0xFF, 0xFF, 0xDF, 0x5F, 0xFE, 0x2F, 0x1F, 0x90, 0x1F, + 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_4.cpp new file mode 100644 index 00000000..18228869 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_25_2bpp_4.cpp @@ -0,0 +1,7 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_25_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0xBD, 0xE0, 0x47, 0x2F, 0xFE, 0xF5, 0x8B, 0x7F, 0xFE, 0xF5, 0x8B, 0x7F, 0xBD, 0xE0, 0x46, 0x2F +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_0.cpp new file mode 100644 index 00000000..e43124b7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_0.cpp @@ -0,0 +1,604 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_30_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xF8, 0x87, 0x7F, 0xF8, 0x87, 0x7F, 0xF8, + 0x83, 0x3F, 0xF8, 0x83, 0x3F, 0xA4, 0x02, 0x00, 0xE4, 0xC2, 0xBF, 0xFD, 0xCF, 0xBF, 0xF4, 0x02, + // Unicode: [0x0022, quotedbl] + 0x55, 0x54, 0xFD, 0xE2, 0xEB, 0x8B, 0xAF, 0x2F, 0xBE, 0x7E, 0xF8, 0xFA, 0xE1, 0xEB, 0x47, 0x1F, + // Unicode: [0x0023, numbersign] + 0x00, 0x00, 0xA8, 0x01, 0x90, 0x0A, 0x00, 0x00, 0xD0, 0x2F, 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFD, + 0x02, 0xF0, 0x0F, 0x00, 0x00, 0xE0, 0x1F, 0x40, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xF4, 0x0B, + 0x00, 0x00, 0xF0, 0x0F, 0x80, 0x7F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xA9, 0xFE, 0xAB, 0xFA, 0xBF, + 0x2A, 0x00, 0xC0, 0x3F, 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFD, 0x02, 0xF0, 0x0F, 0x00, 0x00, 0xE0, + 0x1F, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x01, 0xF4, 0x0B, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xEA, + 0xBF, 0xAA, 0xFF, 0xAB, 0x06, 0x00, 0xFC, 0x03, 0xD0, 0x2F, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x01, 0x00, 0x00, 0xFD, 0x02, 0xE0, 0x0F, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0xFE, 0x01, 0xF4, 0x0B, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x40, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xF9, 0xAF, 0x00, + 0x80, 0xFF, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0x1F, 0xF8, 0xAF, 0xFB, 0x3F, 0xFC, 0x87, 0xD7, 0x7F, + 0xFD, 0x83, 0xC7, 0xBF, 0xFD, 0x83, 0x07, 0x00, 0xFD, 0x8B, 0x07, 0x00, 0xFC, 0xAF, 0x07, 0x00, + 0xF4, 0xFF, 0x1B, 0x00, 0xD0, 0xFF, 0xFF, 0x06, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0x80, 0xFF, 0x7F, + 0x00, 0x80, 0xE7, 0xBF, 0x00, 0x80, 0x87, 0xFF, 0xA9, 0x82, 0x47, 0xFF, 0xFD, 0x87, 0x87, 0xFF, + 0xFC, 0x9F, 0xD7, 0xBF, 0xF8, 0xFF, 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, 0x1F, 0x40, 0xFF, 0xFF, 0x02, + 0x00, 0xD4, 0x1B, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, + // Unicode: [0x0025, percent] + 0x90, 0x6F, 0x00, 0xC0, 0x3F, 0x00, 0xFE, 0xBF, 0x00, 0xF8, 0x0B, 0xD0, 0xAF, 0x7F, 0x00, 0xFF, + 0x00, 0xF8, 0x81, 0x2F, 0xE0, 0x1F, 0x00, 0x7F, 0xD0, 0x0B, 0xFD, 0x02, 0x80, 0x1F, 0xF8, 0x82, + 0x7F, 0x00, 0xD0, 0xAF, 0x7F, 0xF4, 0x0B, 0x00, 0xE0, 0xFF, 0x0B, 0xFF, 0x01, 0x00, 0xD0, 0x6F, + 0xD0, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0x0F, 0xF9, 0x06, 0x00, 0x00, 0xFE, 0xE1, 0xFF, 0x0B, 0x00, 0xD0, 0x2F, 0xFD, 0xFA, + 0x07, 0x00, 0xFC, 0x87, 0x2F, 0xF8, 0x02, 0x40, 0xBF, 0xE0, 0x07, 0xBD, 0x00, 0xF0, 0x0F, 0xF8, + 0x41, 0x2F, 0x00, 0xFE, 0x02, 0xBE, 0xE0, 0x0B, 0xC0, 0x3F, 0x40, 0xBF, 0xFE, 0x01, 0xF8, 0x07, + 0x80, 0xFF, 0x2F, 0x40, 0xFF, 0x00, 0x40, 0xBE, 0x01, + // Unicode: [0x0026, ampersand] + 0x00, 0xA0, 0xBF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0xF8, 0x5F, 0xFE, 0x03, 0x00, 0x80, 0x7F, 0xC0, 0x3F, 0x00, 0x00, 0xF8, 0x07, 0x54, 0x01, + 0x00, 0x80, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, + 0x00, 0x00, 0xF9, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0xFF, 0xC1, 0xFF, 0xF5, 0x2F, + 0xF8, 0x0B, 0xFE, 0x03, 0xFD, 0xDB, 0x7F, 0xE0, 0x1F, 0x40, 0xFF, 0xFF, 0x02, 0xFF, 0x01, 0xD0, + 0xFF, 0x0F, 0xF0, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xFE, 0x07, 0x80, 0xFF, 0x0F, 0xD0, 0xFF, 0xAA, + 0xFF, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xEF, 0xFF, 0x00, 0xFE, 0xFF, 0x7F, 0xF4, 0x2F, 0x00, 0xF9, + 0x6F, 0x00, 0xFD, 0x0B, + // Unicode: [0x0027, quotesingle] + 0x55, 0xBF, 0xBE, 0xBE, 0x7E, 0x7E, 0x7E, + // Unicode: [0x0028, parenleft] + 0x00, 0xE0, 0x2F, 0x00, 0xFE, 0x07, 0xD0, 0x7F, 0x00, 0xFC, 0x07, 0x80, 0xBF, 0x00, 0xF4, 0x1F, + 0x00, 0xFE, 0x02, 0xC0, 0x7F, 0x00, 0xF4, 0x0F, 0x00, 0xFE, 0x02, 0xC0, 0x7F, 0x00, 0xF4, 0x0F, + 0x00, 0xFD, 0x02, 0x80, 0xBF, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0x00, 0xFE, 0x01, 0x80, 0x7F, + 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0x00, 0xFE, 0x01, 0x40, 0xBF, 0x00, 0xD0, 0x2F, 0x00, 0xF0, + 0x0F, 0x00, 0xFC, 0x07, 0x00, 0xFE, 0x02, 0x40, 0xFF, 0x00, 0xC0, 0x7F, 0x00, 0xD0, 0x3F, 0x00, + 0xF0, 0x2F, 0x00, 0xF4, 0x0F, 0x00, 0xF8, 0x0B, 0x00, 0xFC, 0x0B, 0x00, 0xFD, 0x07, + // Unicode: [0x0029, parenright] + 0xFD, 0x06, 0x00, 0xF8, 0x0F, 0x00, 0xE0, 0x3F, 0x00, 0xC0, 0xBF, 0x00, 0x40, 0xFF, 0x01, 0x00, + 0xFE, 0x02, 0x00, 0xFD, 0x07, 0x00, 0xF8, 0x0B, 0x00, 0xF4, 0x0F, 0x00, 0xF0, 0x1F, 0x00, 0xE0, + 0x2F, 0x00, 0xD0, 0x2F, 0x00, 0xD0, 0x3F, 0x00, 0xC0, 0x3F, 0x00, 0xC0, 0x7F, 0x00, 0x80, 0x7F, + 0x00, 0x80, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0xC0, 0x3F, 0x00, + 0xC0, 0x3F, 0x00, 0xD0, 0x3F, 0x00, 0xE0, 0x2F, 0x00, 0xE0, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0xF4, + 0x0B, 0x00, 0xFC, 0x07, 0x00, 0xFD, 0x03, 0x00, 0xFF, 0x01, 0x80, 0xFF, 0x00, 0xD0, 0x7F, 0x00, + 0xF0, 0x2F, 0x00, 0xFC, 0x0B, 0x00, + // Unicode: [0x002A, asterisk] + 0x00, 0x15, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x3D, 0x14, 0x7D, 0x3D, 0x2E, 0xFE, 0xBE, 0x7F, 0xE4, + 0xFF, 0x1B, 0x90, 0xFF, 0x01, 0xFD, 0xFF, 0x2F, 0xFD, 0xAD, 0x3F, 0x2C, 0x3D, 0x1D, 0x04, 0x3E, + 0x04, 0x00, 0x7E, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x50, 0x05, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xA9, 0xFA, 0xAF, 0xAA, 0xFE, 0xFF, 0xFF, 0xBF, + 0xFE, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xBF, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, + // Unicode: [0x002C, comma] + 0x50, 0x15, 0xF8, 0x07, 0xFF, 0xD0, 0x1F, 0xF8, 0x03, 0xBE, 0xC0, 0x1F, 0xF4, 0x02, 0x7D, 0x00, + // Unicode: [0x002D, hyphen] + 0xA9, 0xAA, 0xAA, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + // Unicode: [0x002E, period] + 0xF8, 0xD1, 0x7F, 0xFE, 0xD7, 0x7F, 0xF8, 0x01, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0xFF, 0x01, 0x00, 0xFC, 0x03, 0x00, 0xF4, 0x0B, 0x00, 0xE0, 0x1F, 0x00, 0xC0, 0x7F, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFD, 0x02, 0x00, 0xF8, 0x0B, 0x00, 0xE0, 0x1F, 0x00, 0xC0, 0x3F, + 0x00, 0x40, 0xBF, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xF8, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xD0, 0x3F, + 0x00, 0x40, 0xBF, 0x00, 0x00, 0xFE, 0x01, 0x00, 0xFC, 0x03, 0x00, 0xF4, 0x0F, 0x00, 0xD0, 0x2F, + 0x00, 0x80, 0x7F, 0x00, 0x00, 0xFF, 0x01, 0x00, 0xFC, 0x03, 0x00, 0xF4, 0x0B, 0x00, 0xE0, 0x1F, + 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFD, 0x02, 0x00, 0xF8, 0x0B, 0x00, 0xE0, 0x1F, + 0x00, 0xC0, 0x3F, 0x00, 0x40, 0xBF, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xF8, 0x07, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0xE4, 0xAF, 0x01, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0xFF, + 0x1F, 0xF4, 0x2F, 0xD0, 0xBF, 0xE0, 0x2F, 0x00, 0xFD, 0xC3, 0x7F, 0x00, 0xF0, 0x1F, 0xFF, 0x00, + 0x80, 0xBF, 0xFD, 0x03, 0x00, 0xFD, 0xF6, 0x0B, 0x00, 0xF4, 0xDB, 0x2F, 0x00, 0xD0, 0x6F, 0xBF, + 0x00, 0x40, 0xBF, 0xFD, 0x02, 0x00, 0xFD, 0xF6, 0x0F, 0x00, 0xF4, 0xCB, 0x3F, 0x00, 0xE0, 0x2F, + 0xFF, 0x01, 0xC0, 0x7F, 0xF8, 0x0B, 0x40, 0xFF, 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, + 0x07, 0xF4, 0xFF, 0xFF, 0x0B, 0x40, 0xFF, 0xFF, 0x0B, 0x00, 0x90, 0xBF, 0x06, 0x00, + // Unicode: [0x0031, one] + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, + 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, + 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, + // Unicode: [0x0032, two] + 0x00, 0xF9, 0x2B, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, 0xFF, 0x07, 0xF8, 0xAF, 0xFE, 0x0F, + 0xFD, 0x07, 0xF4, 0x1F, 0xFD, 0x02, 0xE0, 0x2F, 0xFE, 0x02, 0xE0, 0x2F, 0x55, 0x00, 0xE0, 0x2F, + 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0xF4, 0x0F, 0x00, 0x00, 0xF8, 0x0B, 0x00, 0x00, 0xFE, 0x03, + 0x00, 0x40, 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFE, 0x0B, 0x00, + 0x80, 0xFF, 0x02, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFD, 0xAF, 0xAA, 0x2A, 0xFE, 0xFF, 0xFF, 0x7F, + 0xFE, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0x7F, + // Unicode: [0x0033, three] + 0x00, 0x94, 0x16, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0x0F, + 0xFC, 0x1F, 0xF4, 0x2F, 0xFD, 0x03, 0xD0, 0x2F, 0xA9, 0x02, 0xD0, 0x2F, 0x00, 0x00, 0xD0, 0x2F, + 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x90, 0xFE, 0x0B, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0x01, + 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF9, 0x1F, 0x00, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0xC0, 0x3F, + 0xA9, 0x01, 0xC0, 0x7F, 0xFD, 0x02, 0xC0, 0x3F, 0xFD, 0x07, 0xE0, 0x3F, 0xF8, 0xAF, 0xFE, 0x2F, + 0xF4, 0xFF, 0xFF, 0x0F, 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x90, 0x2A, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0xF0, + 0xFF, 0x03, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0xFD, 0xFA, 0x03, 0x00, 0xF0, 0x8F, 0x3F, 0x00, + 0x80, 0x7F, 0xF8, 0x03, 0x00, 0xFD, 0x82, 0x3F, 0x00, 0xF4, 0x0F, 0xF8, 0x03, 0x80, 0x7F, 0x80, + 0x3F, 0x00, 0xFE, 0x02, 0xF8, 0x03, 0xF4, 0x0F, 0x80, 0x3F, 0xC0, 0x7F, 0x00, 0xF8, 0x03, 0xFE, + 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9B, 0xAA, 0xAA, 0xFE, + 0xAB, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, + 0x00, 0xFC, 0x03, + // Unicode: [0x0035, five] + 0xFD, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0x1F, 0xFD, 0xAB, 0xAA, 0x1A, + 0xFD, 0x02, 0x00, 0x00, 0xFD, 0x02, 0x00, 0x00, 0xFD, 0x02, 0x00, 0x00, 0xFD, 0xA2, 0xBF, 0x00, + 0xFD, 0xFE, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0x1F, 0xFD, 0xBF, 0xFA, 0x2F, 0xFD, 0x0B, 0xD0, 0x7F, + 0xA9, 0x02, 0x80, 0xBF, 0x00, 0x00, 0x40, 0xBF, 0x00, 0x00, 0x40, 0xBF, 0x54, 0x00, 0x80, 0xBF, + 0xFD, 0x02, 0x80, 0x7F, 0xFD, 0x0B, 0xD0, 0x3F, 0xF8, 0xBF, 0xFA, 0x2F, 0xF0, 0xFF, 0xFF, 0x0F, + 0x90, 0xFF, 0xFF, 0x03, 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0036, six] + 0x00, 0x50, 0x05, 0x00, 0x40, 0xFE, 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0x03, 0xF0, 0xFF, 0xFF, 0x0B, + 0xF8, 0x1B, 0xF4, 0x1F, 0xFC, 0x03, 0xD0, 0x2F, 0xFD, 0x01, 0x80, 0x1A, 0xFE, 0x00, 0x00, 0x00, + 0xFE, 0x40, 0x15, 0x00, 0xBF, 0xF8, 0xFF, 0x01, 0xBF, 0xFE, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0x1B, 0xF4, 0x3F, 0xFF, 0x02, 0xD0, 0x7F, 0xFE, 0x01, 0x80, 0x7F, 0xFE, 0x00, 0x80, 0x7F, + 0xFE, 0x01, 0x80, 0x7F, 0xFD, 0x02, 0xC0, 0x7F, 0xFC, 0x07, 0xE0, 0x3F, 0xF4, 0xAF, 0xFE, 0x2F, + 0xE0, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xEA, 0x7F, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, + 0xFE, 0x01, 0x00, 0xD0, 0x2F, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xE0, 0x2F, + 0x00, 0x00, 0xFC, 0x03, 0x00, 0x40, 0xBF, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xFD, 0x03, 0x00, + 0x80, 0x7F, 0x00, 0x00, 0xF4, 0x0F, 0x00, 0x00, 0xFE, 0x02, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0xF8, + 0x0B, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0xE4, 0xAF, 0x01, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0xFC, 0x6F, 0xFE, + 0x1F, 0xF8, 0x1F, 0x80, 0xBF, 0xE0, 0x2F, 0x00, 0xFD, 0x83, 0x7F, 0x00, 0xF0, 0x0F, 0xFE, 0x01, + 0xD0, 0x2F, 0xF4, 0x0F, 0x80, 0x7F, 0x80, 0xBF, 0x91, 0xFF, 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0xD0, + 0xFF, 0xFF, 0x02, 0xE0, 0xFF, 0xFF, 0x3F, 0xD0, 0xBF, 0x40, 0xFF, 0xC2, 0x7F, 0x00, 0xF0, 0x1F, + 0xFF, 0x00, 0x80, 0x7F, 0xFD, 0x02, 0x00, 0xFE, 0xF6, 0x0F, 0x00, 0xFC, 0xC7, 0xBF, 0x00, 0xF8, + 0x1F, 0xFD, 0xAF, 0xFE, 0x2F, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0x80, 0xFE, + 0x1A, 0x00, + // Unicode: [0x0039, nine] + 0x00, 0xA4, 0x05, 0x00, 0xE0, 0xFF, 0x2F, 0x40, 0xFF, 0xFF, 0x2F, 0xF0, 0xFF, 0xFF, 0x2F, 0xFD, + 0x0B, 0xF8, 0x8F, 0xBF, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0xFD, 0xFE, 0x03, 0x00, 0xBF, 0xFF, 0x00, + 0xC0, 0xFF, 0x7F, 0x00, 0xF4, 0xEF, 0x3F, 0x00, 0xFF, 0xF7, 0xBF, 0xF9, 0xFF, 0xF8, 0xFF, 0xFF, + 0x3F, 0xF8, 0xFF, 0xEB, 0x0F, 0xE4, 0x6F, 0xF8, 0x03, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x6F, + 0xBF, 0x00, 0xF4, 0xCB, 0x7F, 0x00, 0xFE, 0xE1, 0xBF, 0xFA, 0x2F, 0xF0, 0xFF, 0xFF, 0x07, 0xF4, + 0xFF, 0x7F, 0x00, 0x90, 0xBF, 0x02, 0x00, + // Unicode: [0x003A, colon] + 0xF8, 0xD1, 0x7F, 0xFE, 0xD7, 0x7F, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xD1, 0x7F, 0xFE, 0xD7, 0x7F, 0xF8, 0x01, + // Unicode: [0x003B, semicolon] + 0xE0, 0x07, 0xFE, 0xC3, 0xFF, 0xE1, 0x3F, 0xE0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0xFC, 0x43, 0xBF, 0xE0, 0x1F, 0xF8, 0x02, 0x7F, 0xD0, + 0x0F, 0xF4, 0x02, 0x3E, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x90, 0x6A, 0x00, 0xF4, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, + 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFD, 0x0F, 0x00, 0xF4, 0x2F, 0x00, 0xD0, 0xBF, 0x00, 0x40, 0xFF, + 0x02, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0x2F, 0x00, 0xE0, 0xBF, + // Unicode: [0x003D, equal] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x9F, 0xAA, 0xAA, 0xAA, + 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xAA, 0xAA, + 0xAA, 0x2A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x1F, + // Unicode: [0x003E, greater] + 0xAA, 0x02, 0x00, 0xFD, 0x0F, 0x00, 0xF4, 0x3F, 0x00, 0xD0, 0xBF, 0x00, 0x40, 0xFF, 0x02, 0x00, + 0xFD, 0x0B, 0x00, 0xF4, 0x2F, 0x00, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, + 0x01, 0xE0, 0x7F, 0x00, 0xF8, 0x1F, 0x00, 0xFE, 0x07, 0x00, + // Unicode: [0x003F, question] + 0x40, 0xFE, 0x1B, 0x00, 0xFE, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xD2, 0xBF, 0xFA, 0x7F, 0xFE, 0x02, + 0xF8, 0xFB, 0x0F, 0x40, 0xBF, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x80, 0xBF, 0x00, 0x54, 0xFE, 0x07, + 0xFC, 0xFF, 0x2F, 0xC0, 0xFF, 0xBF, 0x00, 0xFC, 0x6B, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0xFC, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0xFD, 0x07, 0x00, 0xE0, + 0x7F, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x80, 0x1F, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x40, 0xFA, 0xAF, 0x01, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF4, 0xBF, 0x01, 0x90, 0xFF, 0x03, 0x00, 0xFD, 0x07, 0x00, + 0x00, 0xF8, 0x0B, 0x40, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x2F, 0x80, 0xBF, 0xA4, 0xC2, + 0x2F, 0xE0, 0x0F, 0xF4, 0xFF, 0xFB, 0x42, 0x3F, 0xF4, 0x07, 0xFD, 0xFF, 0xFF, 0x02, 0x7F, 0xF8, + 0x02, 0xFF, 0x96, 0xFF, 0x01, 0x7F, 0xFC, 0x81, 0x7F, 0x00, 0xFF, 0x01, 0x7F, 0xFD, 0xC0, 0x2F, + 0x00, 0xFE, 0x00, 0x7F, 0xBE, 0xD0, 0x1F, 0x00, 0xFD, 0x00, 0x7F, 0xBE, 0xD0, 0x1F, 0x00, 0xBE, + 0x40, 0x3F, 0x7E, 0xE0, 0x1F, 0x00, 0xBF, 0x80, 0x2F, 0x7F, 0xE0, 0x1F, 0x80, 0xBF, 0xC0, 0x1F, + 0xBE, 0xD0, 0x7F, 0xE4, 0xBF, 0xE0, 0x0B, 0xBE, 0xC0, 0xFF, 0xFF, 0xFE, 0xFF, 0x03, 0xFE, 0x40, + 0xFF, 0x7F, 0xFC, 0xFF, 0x01, 0xFD, 0x01, 0xF9, 0x0B, 0xE4, 0x2F, 0x00, 0xF8, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xBF, 0x05, 0x50, 0x02, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0x90, 0xFE, 0x6F, 0x01, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0x00, + 0xF0, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFB, 0x1F, 0x00, 0x00, 0xFC, + 0xE3, 0x2F, 0x00, 0x00, 0xFD, 0xD2, 0x3F, 0x00, 0x00, 0xFE, 0xC1, 0x7F, 0x00, 0x00, 0xFF, 0x80, + 0xBF, 0x00, 0x40, 0xBF, 0x40, 0xFF, 0x00, 0x80, 0x7F, 0x00, 0xFF, 0x01, 0xD0, 0x3F, 0x00, 0xFE, + 0x02, 0xE0, 0x7F, 0x55, 0xFE, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0xFF, 0x0B, + 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0xFD, 0x03, 0x00, 0xE0, 0x3F, 0xFE, + 0x02, 0x00, 0xD0, 0x7F, 0xFF, 0x01, 0x00, 0xC0, 0xBF, + // Unicode: [0x0042, B] + 0xFF, 0xFF, 0xAF, 0x01, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0x56, 0xF9, 0x3F, + 0xFF, 0x01, 0xD0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xD0, 0x3F, + 0xFF, 0x55, 0xF5, 0x2F, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0x01, 0xE0, 0x3F, 0xFF, 0x01, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0x56, 0xF9, 0xBF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x0B, + 0xFF, 0xFF, 0xBF, 0x01, + // Unicode: [0x0043, C] + 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0xFF, 0xBF, 0x00, + 0xF4, 0xFF, 0xFB, 0xFF, 0x0B, 0xF4, 0xBF, 0x01, 0xF8, 0x7F, 0xE0, 0x7F, 0x00, 0x40, 0xFF, 0xD3, + 0x7F, 0x00, 0x00, 0xA4, 0x9A, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x00, 0xFC, + 0x07, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x02, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xA4, 0x1A, 0xFE, + 0x07, 0x00, 0xF4, 0x3F, 0xF4, 0xBF, 0x00, 0xF4, 0x7F, 0x40, 0xFF, 0xBF, 0xFF, 0xBF, 0x00, 0xF4, + 0xFF, 0xFF, 0xBF, 0x00, 0x40, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0044, D] + 0xFF, 0xFF, 0x6F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, 0xAB, + 0xFA, 0xFF, 0x03, 0xFF, 0x01, 0x90, 0xFF, 0xC2, 0x7F, 0x00, 0x80, 0xFF, 0xF1, 0x1F, 0x00, 0xC0, + 0xBF, 0xFC, 0x07, 0x00, 0xD0, 0x3F, 0xFF, 0x01, 0x00, 0xF0, 0xDF, 0x7F, 0x00, 0x00, 0xFC, 0xF7, + 0x1F, 0x00, 0x00, 0xFF, 0xFD, 0x07, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0xF0, 0xDF, 0x7F, 0x00, + 0x00, 0xFD, 0xF3, 0x1F, 0x00, 0x80, 0xBF, 0xFC, 0x07, 0x00, 0xF8, 0x1F, 0xFF, 0x01, 0x90, 0xFF, + 0xC2, 0xBF, 0xAA, 0xFF, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x2F, 0x00, 0xFF, + 0xFF, 0x6F, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xDF, 0xBF, 0x55, 0x15, 0xFF, 0x01, 0x00, + 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFF, 0x56, 0x15, 0xFC, 0xFF, 0xFF, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, + 0xC0, 0x7F, 0x00, 0x00, 0xFF, 0x01, 0x00, 0xFC, 0x5B, 0x55, 0xF1, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0x01, + // Unicode: [0x0046, F] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x55, 0x55, 0xFF, 0x01, 0x00, + 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFF, 0x56, 0x15, 0xFC, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, + 0xC0, 0x7F, 0x00, 0x00, 0xFF, 0x01, 0x00, 0xFC, 0x07, 0x00, 0xF0, 0x1F, 0x00, 0xC0, 0x7F, 0x00, + 0x00, 0xFF, 0x01, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0xFF, 0xBF, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0x0F, 0xF4, 0xBF, 0x01, 0xF4, 0xBF, 0xE0, 0x7F, 0x00, 0x00, 0xFF, 0xD3, + 0xBF, 0x00, 0x00, 0x50, 0x85, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x00, 0xFC, + 0x07, 0xD0, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFD, 0xFF, 0xFF, 0xFE, + 0x02, 0x50, 0x55, 0xFD, 0xFB, 0x0F, 0x00, 0x00, 0xF8, 0xDB, 0xBF, 0x00, 0x00, 0xF0, 0x1F, 0xFE, + 0x07, 0x00, 0xE0, 0x3F, 0xF4, 0xBF, 0x01, 0xF4, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF4, + 0xFF, 0xFF, 0xBF, 0x00, 0x40, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, + 0x80, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, + 0x1F, 0x00, 0x80, 0x7F, 0xFF, 0x56, 0x55, 0xFD, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, 0x7F, 0xFF, + 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, + 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0xF7, 0x1F, 0x00, 0x80, 0x7F, 0xFF, 0x01, 0x00, 0xF8, 0x07, + // Unicode: [0x0049, I] + 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, + 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0x01, + // Unicode: [0x004A, J] + 0x00, 0x00, 0xFC, 0x07, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xC0, 0x7F, 0x00, 0x00, + 0xFC, 0x07, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFC, 0x07, + 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xC0, + 0x7F, 0xAA, 0x01, 0xFC, 0xF7, 0x1F, 0xC0, 0x7F, 0xFE, 0x03, 0xFE, 0xD3, 0xFF, 0xFF, 0x2F, 0xF8, + 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0x07, 0x40, 0xFE, 0x0A, 0x00, + // Unicode: [0x004B, K] + 0xFF, 0x01, 0x80, 0xFF, 0xFE, 0x07, 0x40, 0xFF, 0xF2, 0x1F, 0x40, 0xFF, 0xC2, 0x7F, 0x00, 0xFF, + 0x03, 0xFF, 0x01, 0xFE, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xF0, 0x1F, 0xFD, 0x0B, 0xC0, 0x7F, 0xFD, + 0x0B, 0x00, 0xFF, 0xFD, 0x0F, 0x00, 0xFC, 0xFF, 0x0F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, + 0xFF, 0x01, 0x00, 0xFF, 0xFD, 0x0F, 0x00, 0xFC, 0xD7, 0xFF, 0x00, 0xF0, 0x1F, 0xFD, 0x0B, 0xC0, + 0x7F, 0xE0, 0xBF, 0x00, 0xFF, 0x01, 0xFE, 0x07, 0xFC, 0x07, 0xF0, 0x7F, 0xF0, 0x1F, 0x40, 0xFF, + 0xC3, 0x7F, 0x00, 0xF4, 0x3F, 0xFF, 0x01, 0x80, 0xFF, 0x02, + // Unicode: [0x004C, L] + 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, + 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, + 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, 0xFF, 0x01, 0x00, + 0xFF, 0x01, 0x00, 0xFF, 0x56, 0x15, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, + // Unicode: [0x004D, M] + 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0xC0, + 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, + 0xD0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, + 0x01, 0xD0, 0xEF, 0xFF, 0x7F, 0xFF, 0x00, 0xFC, 0xF6, 0xFF, 0x5F, 0x7F, 0x40, 0x7F, 0xFD, 0xFF, + 0xC7, 0x2F, 0xE0, 0x4F, 0xFF, 0xFF, 0xE1, 0x1F, 0xFD, 0xD2, 0xFF, 0x7F, 0xF4, 0x8B, 0x7F, 0xF4, + 0xFF, 0x1F, 0xF8, 0xF3, 0x0B, 0xFD, 0xFF, 0x07, 0xFD, 0xFF, 0x41, 0xFF, 0xFF, 0x01, 0xFF, 0x3F, + 0xD0, 0xFF, 0x7F, 0x80, 0xFF, 0x0B, 0xF4, 0xFF, 0x1F, 0xC0, 0xFF, 0x00, 0xFD, 0xFF, 0x07, 0xE0, + 0x2F, 0x40, 0xFF, 0xFF, 0x01, 0xF4, 0x07, 0xD0, 0x3F, + // Unicode: [0x004E, N] + 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0x40, 0xFF, 0xFF, 0x0F, 0x00, 0xF4, 0xFF, 0xFF, 0x02, + 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, 0xFF, 0x0F, 0x40, 0xFF, 0xFF, 0xFF, 0x02, 0xF4, 0xFF, + 0xDF, 0x7F, 0x40, 0xFF, 0xFF, 0xF5, 0x0F, 0xF4, 0xFF, 0x1F, 0xFE, 0x42, 0xFF, 0xFF, 0xD1, 0x7F, + 0xF4, 0xFF, 0x1F, 0xF8, 0x4B, 0xFF, 0xFF, 0x01, 0xFE, 0xF6, 0xFF, 0x1F, 0xD0, 0x7F, 0xFF, 0xFF, + 0x01, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, + 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0xF8, 0x0F, + // Unicode: [0x004F, O] + 0x00, 0x80, 0xFE, 0x1B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, 0xBF, 0x01, 0xF4, 0xBF, 0x80, 0xFF, 0x01, 0x00, 0xF8, + 0x1F, 0xFD, 0x07, 0x00, 0x00, 0xFF, 0xE2, 0x3F, 0x00, 0x00, 0xD0, 0x3F, 0xFE, 0x02, 0x00, 0x00, + 0xFC, 0xF7, 0x1F, 0x00, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0x00, + 0xC0, 0x7F, 0xFE, 0x02, 0x00, 0x00, 0xFC, 0xE7, 0x3F, 0x00, 0x00, 0xD0, 0x3F, 0xFD, 0x07, 0x00, + 0x00, 0xFF, 0x82, 0xFF, 0x01, 0x00, 0xF8, 0x1F, 0xF0, 0xBF, 0x01, 0xF4, 0xBF, 0x00, 0xFD, 0xFF, + 0xFE, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x90, + 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0050, P] + 0xFF, 0xFF, 0x6F, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x56, 0xFE, 0x2F, + 0xFF, 0x01, 0xE0, 0x3F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, + 0xFF, 0x01, 0xE0, 0x3F, 0xFF, 0x56, 0xFA, 0x2F, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0x02, + 0xFF, 0xFF, 0x6F, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, + 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, + 0xFF, 0x01, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0x80, 0xFE, 0x1B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, 0xBF, 0x01, 0xF4, 0xBF, 0x80, 0xFF, 0x01, 0x00, 0xF8, + 0x1F, 0xFD, 0x07, 0x00, 0x00, 0xFF, 0xE2, 0x3F, 0x00, 0x00, 0xD0, 0x3F, 0xFE, 0x02, 0x00, 0x00, + 0xFC, 0xF7, 0x1F, 0x00, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0x00, + 0xC0, 0x7F, 0xFE, 0x02, 0x00, 0x00, 0xFC, 0xE7, 0x3F, 0x00, 0x00, 0xD0, 0x3F, 0xFD, 0x07, 0x00, + 0x00, 0xFF, 0x82, 0xFF, 0x01, 0x00, 0xF8, 0x1F, 0xF0, 0xBF, 0x01, 0xF4, 0xBF, 0x00, 0xFD, 0xFF, + 0xFE, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x90, + 0xFE, 0xFB, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x06, + // Unicode: [0x0052, R] + 0xFF, 0xFF, 0x6F, 0x00, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xAA, 0xFE, 0x2F, + 0xFF, 0x01, 0xE0, 0x3F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, + 0xFF, 0x01, 0xD0, 0x7F, 0xFF, 0x55, 0xF9, 0x2F, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xD1, 0x7F, 0x00, 0xFF, 0xC1, 0xBF, 0x00, 0xFF, 0x41, 0xFF, 0x01, + 0xFF, 0x01, 0xFE, 0x03, 0xFF, 0x01, 0xFC, 0x0B, 0xFF, 0x01, 0xF8, 0x1F, 0xFF, 0x01, 0xF0, 0x2F, + 0xFF, 0x01, 0xD0, 0x7F, + // Unicode: [0x0053, S] + 0x00, 0xF9, 0x6F, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0x1F, 0xF8, 0xAF, 0xFE, 0x2F, + 0xFD, 0x07, 0xE0, 0x7F, 0xFD, 0x03, 0xD0, 0x7F, 0xFD, 0x03, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, + 0xF8, 0xBF, 0x01, 0x00, 0xF0, 0xFF, 0x6F, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0xE4, 0xFF, 0x1F, + 0x00, 0x00, 0xF9, 0x3F, 0x00, 0x00, 0xD0, 0xBF, 0x54, 0x01, 0x80, 0xBF, 0xFD, 0x07, 0x80, 0xBF, + 0xFD, 0x0B, 0xD0, 0x7F, 0xF8, 0xBF, 0xFA, 0x3F, 0xF0, 0xFF, 0xFF, 0x1F, 0x80, 0xFF, 0xFF, 0x07, + 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0x55, 0xF9, 0x5F, 0x15, + 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, + 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, + 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, + 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, 0x00, 0xF4, 0x0B, 0x00, + 0x00, 0xF4, 0x0B, 0x00, + // Unicode: [0x0055, U] + 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x40, + 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x7F, 0x00, + 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x7F, + 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0xE0, 0xAF, + 0xFF, 0x00, 0xC0, 0xBF, 0xFD, 0x1B, 0x90, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF, + 0x02, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0xE9, 0x6F, 0x00, 0x00, + // Unicode: [0x0056, V] + 0xFD, 0x03, 0x00, 0x00, 0xFE, 0xF2, 0x1F, 0x00, 0x00, 0xFC, 0x87, 0xBF, 0x00, 0x00, 0xF4, 0x0F, + 0xFD, 0x03, 0x00, 0xE0, 0x2F, 0xF0, 0x1F, 0x00, 0xC0, 0x7F, 0x80, 0xBF, 0x00, 0x40, 0xFF, 0x00, + 0xFD, 0x03, 0x00, 0xFE, 0x01, 0xF0, 0x2F, 0x00, 0xFC, 0x03, 0x40, 0xFF, 0x00, 0xF8, 0x0B, 0x00, + 0xFC, 0x07, 0xF0, 0x1F, 0x00, 0xE0, 0x2F, 0xD0, 0x3F, 0x00, 0x40, 0xFF, 0x80, 0xBF, 0x00, 0x00, + 0xFC, 0x07, 0xFF, 0x01, 0x00, 0xE0, 0x2F, 0xFD, 0x03, 0x00, 0x40, 0xFF, 0xF8, 0x0B, 0x00, 0x00, + 0xFC, 0xF7, 0x1F, 0x00, 0x00, 0xE0, 0xEF, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xFD, 0x07, 0x00, 0xFC, 0x0F, 0x00, 0xF8, 0xCF, 0x7F, 0x00, 0xD0, 0xFF, 0x00, 0x80, 0xBF, 0xF8, + 0x0B, 0x00, 0xFE, 0x1F, 0x00, 0xFC, 0x47, 0xFF, 0x00, 0xE0, 0xFF, 0x02, 0xD0, 0x3F, 0xF0, 0x1F, + 0x00, 0xFF, 0x3F, 0x00, 0xFE, 0x02, 0xFF, 0x01, 0xF4, 0xFF, 0x03, 0xE0, 0x2F, 0xE0, 0x2F, 0x80, + 0xBF, 0x7F, 0x00, 0xFF, 0x01, 0xFD, 0x03, 0xFC, 0xF7, 0x0B, 0xF4, 0x0F, 0xC0, 0x3F, 0xC0, 0x2F, + 0xFF, 0x40, 0xBF, 0x00, 0xF8, 0x07, 0xFD, 0xE1, 0x0F, 0xF8, 0x07, 0x80, 0xBF, 0xE0, 0x0F, 0xFE, + 0xC1, 0x3F, 0x00, 0xF4, 0x0B, 0xBF, 0xD0, 0x2F, 0xFC, 0x03, 0x00, 0xFF, 0xF0, 0x0B, 0xFC, 0xD3, + 0x2F, 0x00, 0xE0, 0x5F, 0x7F, 0x80, 0x3F, 0xFE, 0x01, 0x00, 0xFD, 0xF9, 0x03, 0xF4, 0xE7, 0x0F, + 0x00, 0xD0, 0xEF, 0x2F, 0x40, 0xBF, 0xBF, 0x00, 0x00, 0xFC, 0xFF, 0x01, 0xF0, 0xFF, 0x07, 0x00, + 0x80, 0xFF, 0x1F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, + 0xFF, 0x0B, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xC0, 0xFF, 0x01, 0x00, + // Unicode: [0x0058, X] + 0xFE, 0x07, 0x00, 0xF8, 0xCF, 0xFF, 0x00, 0xD0, 0x7F, 0xF4, 0x2F, 0x00, 0xFF, 0x02, 0xFE, 0x07, + 0xF4, 0x0F, 0xC0, 0xFF, 0xC0, 0xBF, 0x00, 0xF4, 0x2F, 0xFE, 0x03, 0x00, 0xFE, 0xF7, 0x1F, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xD0, 0xFF, + 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, + 0xFE, 0xFA, 0x1F, 0x00, 0xF4, 0x1F, 0xFF, 0x03, 0xC0, 0xBF, 0xD0, 0xBF, 0x00, 0xFE, 0x03, 0xF8, + 0x1F, 0xF4, 0x1F, 0x00, 0xFF, 0x82, 0xBF, 0x00, 0xD0, 0x7F, 0xFD, 0x07, 0x00, 0xF8, 0x0F, + // Unicode: [0x0059, Y] + 0xFD, 0x07, 0x00, 0xF4, 0x1F, 0xFF, 0x02, 0x00, 0xFE, 0x43, 0xFF, 0x01, 0xC0, 0x7F, 0xC0, 0xBF, + 0x00, 0xF8, 0x0F, 0xD0, 0x7F, 0x00, 0xFF, 0x01, 0xE0, 0x2F, 0xE0, 0x3F, 0x00, 0xF4, 0x0F, 0xFC, + 0x07, 0x00, 0xF8, 0x4B, 0xBF, 0x00, 0x00, 0xFD, 0xF3, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, + 0x40, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xE0, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x80, 0xBF, 0x00, + 0x00, 0x00, 0xE0, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, + 0x80, 0xBF, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xFE, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xA6, 0xAA, 0xEA, 0xBF, 0x00, + 0x00, 0xF8, 0x0F, 0x00, 0x40, 0xFF, 0x01, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xD0, + 0x7F, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xFF, 0x02, + 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFD, 0x07, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x40, + 0xFF, 0xAA, 0xAA, 0xE6, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0x2F, + // Unicode: [0x005B, bracketleft] + 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0x55, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x6A, 0xFF, 0xBF, + 0xFF, 0xBF, 0xFF, 0xBF, + // Unicode: [0x005C, backslash] + 0xFE, 0x01, 0x00, 0xF4, 0x0B, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xF8, 0x07, 0x00, + 0xD0, 0x2F, 0x00, 0x40, 0xFF, 0x00, 0x00, 0xFC, 0x03, 0x00, 0xE0, 0x1F, 0x00, 0x40, 0xBF, 0x00, + 0x00, 0xFD, 0x03, 0x00, 0xF0, 0x0F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xFD, 0x02, 0x00, 0xF4, 0x0F, + 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0xF4, 0x0B, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0xFF, + 0x01, 0x00, 0xF8, 0x07, 0x00, 0xD0, 0x2F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x07, 0x00, 0xE0, + 0x1F, 0x00, 0x40, 0xBF, 0x00, 0x00, 0xFC, 0x03, 0x00, 0xF0, 0x1F, 0x00, 0x80, 0x7F, 0x00, 0x00, + 0xFD, 0x02, 0x00, 0xF0, 0x0F, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0xF4, 0x0B, + // Unicode: [0x005D, bracketright] + 0xFE, 0xBF, 0xFE, 0xBF, 0xFE, 0xBF, 0x95, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0xA9, 0xBF, 0xFE, 0xBF, + 0xFE, 0xBF, 0xFE, 0xBF, + // Unicode: [0x005E, asciicircum] + 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xD0, + 0xFF, 0x0B, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0xFE, 0x02, 0x00, 0xE0, 0x2F, 0xFF, + 0x00, 0x00, 0xFD, 0x83, 0xBF, 0x00, 0x80, 0xBF, 0xD0, 0x3F, 0x00, 0xF0, 0x1F, 0xE0, 0x1F, 0x00, + 0xFE, 0x02, 0xF4, 0x0F, 0xC0, 0x7F, 0x00, 0xFC, 0x07, 0xF4, 0x0F, 0x00, 0xFD, 0x02, 0xFF, 0x01, + 0x00, 0xFF, 0xD1, 0x3F, 0x00, 0x80, 0xBF, 0xF8, 0x0B, 0x00, 0xC0, 0x7F, + // Unicode: [0x005F, underscore] + 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, + 0xFF, 0xBF, + // Unicode: [0x0060, grave] + 0x01, 0x00, 0x1E, 0x00, 0xFE, 0x01, 0xFE, 0x1B, 0xF4, 0x7F, 0x40, 0x7F, 0x00, 0x64, + // Unicode: [0x0061, a] + 0x00, 0xF9, 0x1B, 0xFC, 0x07, 0xF8, 0xFF, 0xCB, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xEF, + 0xFF, 0x7F, 0xFD, 0x1F, 0x80, 0xFF, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFE, 0x02, 0x00, 0xFD, 0xF7, + 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFE, 0x02, 0x00, + 0xFD, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFC, 0x1F, 0x80, 0xFF, 0x87, 0xFF, 0xAF, 0xFF, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xCB, 0x7F, 0x00, 0xF9, 0x1B, 0xFC, 0x07, + // Unicode: [0x0062, b] + 0x55, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x1F, 0x00, + 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0x91, 0xBF, 0x01, 0xF0, + 0x9F, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0xFF, 0x7F, 0xF0, 0xFF, 0xEF, 0xFF, 0x0F, 0xFF, 0x1F, 0x80, + 0xFF, 0xF2, 0x7F, 0x00, 0xE0, 0x3F, 0xFF, 0x02, 0x00, 0xFD, 0xF3, 0x1F, 0x00, 0xC0, 0x7F, 0xFF, + 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x02, 0x00, 0xFD, 0xF3, 0x7F, 0x00, 0xF0, + 0x3F, 0xFF, 0x1F, 0x90, 0xFF, 0xF1, 0xFF, 0xAF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0x7F, 0xF0, 0x9F, + 0xFF, 0xFF, 0x01, 0xFF, 0x91, 0xBF, 0x01, 0x00, + // Unicode: [0x0063, c] + 0x00, 0xF9, 0x6F, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x1F, 0xF8, 0xBF, 0xFE, 0x3F, + 0xFD, 0x0B, 0xD0, 0xBF, 0xFE, 0x03, 0x80, 0xBF, 0xFE, 0x02, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, + 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0xFE, 0x03, 0x80, 0xBF, + 0xFD, 0x0B, 0xD0, 0xBF, 0xF8, 0xBF, 0xFE, 0x3F, 0xE0, 0xFF, 0xFF, 0x1F, 0x80, 0xFF, 0xFF, 0x07, + 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, + 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0xF9, 0x1B, 0xFC, 0x07, + 0xF8, 0xFF, 0xCB, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xEF, 0xFF, 0x7F, 0xFD, 0x1F, 0x80, + 0xFF, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFE, 0x02, 0x00, 0xFD, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFF, + 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFE, 0x02, 0x00, 0xFD, 0xE7, 0x7F, 0x00, 0xE0, + 0x7F, 0xFC, 0x1F, 0x80, 0xFF, 0x87, 0xFF, 0xAF, 0xFF, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0x07, 0xF8, + 0xFF, 0xCB, 0x7F, 0x00, 0xF9, 0x1B, 0xFC, 0x07, + // Unicode: [0x0065, e] + 0x00, 0xE9, 0x6F, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0xFE, 0xAF, 0xFE, + 0x1F, 0xFD, 0x0B, 0xD0, 0xBF, 0xF8, 0x0B, 0x00, 0xFD, 0xE3, 0x1F, 0x00, 0xF0, 0xDF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE7, 0x1F, 0x00, 0x00, 0x80, 0xBF, + 0x00, 0x50, 0x15, 0xFD, 0x0B, 0xD0, 0xBF, 0xE0, 0xFF, 0xEA, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0x01, + 0xE0, 0xFF, 0xFF, 0x01, 0x00, 0xE9, 0x6F, 0x00, 0x00, + // Unicode: [0x0066, f] + 0x00, 0x50, 0x06, 0xD0, 0xBF, 0x40, 0xFF, 0x0B, 0xFC, 0xBF, 0xD0, 0xBF, 0x00, 0xFD, 0x03, 0xD0, + 0x2F, 0xD0, 0xFF, 0xBF, 0xFD, 0xFF, 0xDB, 0xFF, 0xBF, 0xE5, 0x7F, 0x05, 0xFD, 0x02, 0xD0, 0x2F, + 0x00, 0xFD, 0x02, 0xD0, 0x2F, 0x00, 0xFD, 0x02, 0xD0, 0x2F, 0x00, 0xFD, 0x02, 0xD0, 0x2F, 0x00, + 0xFD, 0x02, 0xD0, 0x2F, 0x00, 0xFD, 0x02, 0xD0, 0x2F, 0x00, 0xFD, 0x02, + // Unicode: [0x0067, g] + 0x00, 0xF9, 0x1B, 0xFC, 0x07, 0xF8, 0xFF, 0xCB, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xEF, + 0xFF, 0x7F, 0xFD, 0x1F, 0x80, 0xFF, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFE, 0x02, 0x00, 0xFD, 0xF7, + 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFE, 0x02, 0x00, + 0xFD, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFC, 0x1F, 0x80, 0xFF, 0x87, 0xFF, 0xAF, 0xFF, 0x7F, 0xF0, + 0xFF, 0xFF, 0xFE, 0x07, 0xF8, 0xFF, 0xCB, 0x7F, 0x00, 0xF9, 0x1B, 0xFC, 0x07, 0x00, 0x00, 0xC0, + 0x7F, 0x54, 0x01, 0x00, 0xFC, 0xC3, 0x7F, 0x00, 0xE0, 0x3F, 0xFC, 0x1F, 0x40, 0xFF, 0x42, 0xFF, + 0xAF, 0xFF, 0x0F, 0xE0, 0xFF, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0xE4, 0xBF, 0x01, + 0x00, + // Unicode: [0x0068, h] + 0x55, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, + 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x91, 0xBF, 0x01, 0xFF, 0xF9, 0xFF, 0x0B, + 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0xBF, 0xFE, 0x3F, 0xFF, 0x0B, 0xE0, 0xBF, 0xFF, 0x02, 0x80, 0xBF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + // Unicode: [0x0069, i] + 0xE4, 0xC2, 0xBF, 0xFD, 0xCB, 0xBF, 0xF4, 0x02, 0x00, 0x00, 0xC0, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, + 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, + 0x7F, 0xFC, 0xC7, 0x7F, + // Unicode: [0x006A, j] + 0x40, 0x2E, 0xC0, 0x7F, 0xD0, 0xBF, 0xD0, 0xBF, 0x40, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F, + 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, + 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, + 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x7F, 0xFA, 0x3F, 0xFF, 0x2F, 0xFF, 0x1F, 0xFF, 0x02, + // Unicode: [0x006B, k] + 0x55, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0xFF, + 0x01, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xF0, 0x1F, 0x80, 0xFF, 0xFE, 0x07, 0xF4, 0x3F, 0xFF, 0x01, + 0xFF, 0xC7, 0x7F, 0xE0, 0x7F, 0xF0, 0x1F, 0xFE, 0x07, 0xFC, 0xD7, 0xBF, 0x00, 0xFF, 0xFD, 0x0B, + 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFF, 0xFD, 0x0B, 0xC0, + 0x7F, 0xFD, 0x0B, 0xF0, 0x1F, 0xFE, 0x07, 0xFC, 0x07, 0xFE, 0x07, 0xFF, 0x01, 0xFF, 0xC7, 0x7F, + 0x40, 0xFF, 0xF3, 0x1F, 0x40, 0xFF, 0x03, + // Unicode: [0x006C, l] + 0x55, 0xFC, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, + 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0xDF, 0x7F, 0xFF, 0xFD, 0xF7, 0x1F, + // Unicode: [0x006D, m] + 0xFF, 0x91, 0xBF, 0x01, 0xE4, 0x6F, 0x00, 0xFF, 0xFD, 0xFF, 0x0B, 0xFD, 0xFF, 0x07, 0xFF, 0xFF, + 0xFF, 0x6F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xBF, 0xFE, 0x2F, 0xFF, 0x0B, 0xE0, 0xFF, + 0x07, 0xF0, 0x3F, 0xFF, 0x02, 0x80, 0xFF, 0x01, 0xD0, 0x7F, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0xC0, + 0x7F, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, + 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, + 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, + 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, + 0xFF, 0x01, 0x40, 0xFF, 0x00, 0x80, 0xBF, + // Unicode: [0x006E, n] + 0xFF, 0x91, 0xBF, 0x01, 0xFF, 0xFD, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0xBF, 0xFE, 0x3F, + 0xFF, 0x0B, 0xE0, 0xBF, 0xFF, 0x02, 0x80, 0xBF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x01, 0x40, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, + // Unicode: [0x006F, o] + 0x00, 0xE4, 0xAF, 0x00, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0xFF, 0x02, 0xFD, 0xAF, 0xFE, + 0x2F, 0xFC, 0x1F, 0xD0, 0xFF, 0xF9, 0x0F, 0x00, 0xFC, 0xEB, 0x2F, 0x00, 0xE0, 0xFF, 0x7F, 0x00, + 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xEF, 0x2F, 0x00, 0xE0, 0xBF, 0xFF, + 0x00, 0xC0, 0xBF, 0xFC, 0x1F, 0xD0, 0xFF, 0xD1, 0xFF, 0xEA, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0x02, + 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0xE8, 0xAF, 0x00, 0x00, + // Unicode: [0x0070, p] + 0xFF, 0x91, 0xBF, 0x01, 0xF0, 0x9F, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0xFF, 0x7F, 0xF0, 0xFF, 0xEF, + 0xFF, 0x0F, 0xFF, 0x1F, 0x80, 0xFF, 0xF2, 0x7F, 0x00, 0xE0, 0x3F, 0xFF, 0x02, 0x00, 0xFD, 0xF3, + 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x02, 0x00, + 0xFD, 0xF3, 0x7F, 0x00, 0xF0, 0x3F, 0xFF, 0x1F, 0x90, 0xFF, 0xF1, 0xFF, 0xAF, 0xFF, 0x0F, 0xFF, + 0xFE, 0xFF, 0x7F, 0xF0, 0x9F, 0xFF, 0xFF, 0x01, 0xFF, 0x91, 0xBF, 0x01, 0xF0, 0x1F, 0x00, 0x00, + 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, + 0x00, + // Unicode: [0x0071, q] + 0x00, 0xF9, 0x1B, 0xFC, 0x07, 0xF8, 0xFF, 0xDF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xAF, + 0xFF, 0x7F, 0xFD, 0x1F, 0x80, 0xFF, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFE, 0x02, 0x00, 0xFD, 0xF7, + 0x1F, 0x00, 0xC0, 0x7F, 0xFF, 0x01, 0x00, 0xFC, 0xF7, 0x1F, 0x00, 0xC0, 0x7F, 0xFE, 0x02, 0x00, + 0xFD, 0xE7, 0x7F, 0x00, 0xE0, 0x7F, 0xFD, 0x1F, 0x80, 0xFF, 0x87, 0xFF, 0xAF, 0xFF, 0x7F, 0xE0, + 0xFF, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xCB, 0x7F, 0x00, 0xF9, 0x1B, 0xFC, 0x07, 0x00, 0x00, 0xC0, + 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, + 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFC, + 0x07, + // Unicode: [0x0072, r] + 0xFF, 0x91, 0xF7, 0x9F, 0x7F, 0xFF, 0xFE, 0xF7, 0xFF, 0x7F, 0xFF, 0xAF, 0xF1, 0x7F, 0x00, 0xFF, + 0x02, 0xF0, 0x1F, 0x00, 0xFF, 0x01, 0xF0, 0x1F, 0x00, 0xFF, 0x01, 0xF0, 0x1F, 0x00, 0xFF, 0x01, + 0xF0, 0x1F, 0x00, 0xFF, 0x01, 0xF0, 0x1F, 0x00, 0xFF, 0x01, 0x00, + // Unicode: [0x0073, s] + 0x40, 0xFE, 0x1B, 0x00, 0xFE, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xC2, 0xBF, 0xE5, 0x7F, 0xFD, 0x02, + 0xF8, 0xDB, 0x2F, 0x00, 0x55, 0xFC, 0x1B, 0x00, 0x80, 0xFF, 0xBF, 0x01, 0xD0, 0xFF, 0xBF, 0x00, + 0x90, 0xFF, 0x3F, 0x00, 0x40, 0xFE, 0x5B, 0x15, 0x40, 0xFF, 0xFE, 0x02, 0xF4, 0xDF, 0xFF, 0xD5, + 0xBF, 0xF8, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0x1F, 0x00, 0xFA, 0x1B, 0x00, + // Unicode: [0x0074, t] + 0xD0, 0x3F, 0x00, 0xF4, 0x0F, 0x00, 0xFD, 0x03, 0x40, 0xFF, 0x00, 0xFD, 0xFF, 0x6F, 0xFF, 0xFF, + 0xDB, 0xFF, 0xFF, 0x92, 0xFF, 0x55, 0xD0, 0x3F, 0x00, 0xF4, 0x0F, 0x00, 0xFD, 0x03, 0x40, 0xFF, + 0x00, 0xD0, 0x3F, 0x00, 0xF4, 0x0F, 0x00, 0xFD, 0x03, 0x40, 0xFF, 0x00, 0xD0, 0x3F, 0x00, 0xF0, + 0xBF, 0x06, 0xF8, 0xFF, 0x02, 0xFC, 0xBF, 0x00, 0xF8, 0x2F, + // Unicode: [0x0075, u] + 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, + 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, + 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0x40, 0xBF, 0xFF, 0x01, 0x80, 0xBF, 0xFF, 0x02, 0xC0, 0xBF, + 0xFE, 0x07, 0xE0, 0xBF, 0xFD, 0x6F, 0xF9, 0xBF, 0xF8, 0xFF, 0xFF, 0xBF, 0xE0, 0xFF, 0xAF, 0xBF, + 0x40, 0xFE, 0x46, 0xBF, + // Unicode: [0x0076, v] + 0xFE, 0x03, 0x00, 0xFC, 0xC7, 0x7F, 0x00, 0xD0, 0x3F, 0xF8, 0x0B, 0x00, 0xFE, 0x42, 0xFF, 0x00, + 0xF0, 0x1F, 0xF0, 0x1F, 0x40, 0xFF, 0x00, 0xFE, 0x02, 0xF8, 0x0B, 0xD0, 0x3F, 0xC0, 0x7F, 0x00, + 0xFC, 0x07, 0xFD, 0x03, 0x80, 0xBF, 0xE0, 0x2F, 0x00, 0xF4, 0x0F, 0xFF, 0x01, 0x00, 0xFF, 0xF5, + 0x0F, 0x00, 0xE0, 0xAF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xC0, 0xFF, 0x2F, 0x00, 0x00, + 0xF4, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, + // Unicode: [0x0077, w] + 0xFE, 0x02, 0xE0, 0x3F, 0x00, 0xFC, 0xF7, 0x0B, 0x80, 0xFF, 0x01, 0xF4, 0xCB, 0x3F, 0x00, 0xFF, + 0x0B, 0xD0, 0x1F, 0xFE, 0x01, 0xFD, 0x3F, 0x80, 0x3F, 0xF8, 0x07, 0xF8, 0xFF, 0x00, 0xBF, 0xD0, + 0x2F, 0xE0, 0xFB, 0x07, 0xFC, 0x02, 0xFF, 0xC0, 0xDF, 0x2F, 0xF4, 0x07, 0xF8, 0x47, 0x3F, 0xFE, + 0xE0, 0x0F, 0xD0, 0x1F, 0xBD, 0xF4, 0xC3, 0x2F, 0x00, 0xBF, 0xF8, 0xD2, 0x1F, 0x7F, 0x00, 0xF8, + 0xF3, 0x07, 0xBF, 0xFD, 0x00, 0xD0, 0xDF, 0x0F, 0xF8, 0xFA, 0x02, 0x40, 0xBF, 0x2F, 0xD0, 0xEF, + 0x0B, 0x00, 0xFC, 0xBF, 0x40, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, 0x01, 0xFC, 0x3F, 0x00, 0x40, 0xFF, + 0x03, 0xE0, 0xBF, 0x00, 0x00, 0xFC, 0x0B, 0x40, 0xFF, 0x01, 0x00, + // Unicode: [0x0078, x] + 0xFD, 0x07, 0xC0, 0xBF, 0xF8, 0x0F, 0xD0, 0x3F, 0xF4, 0x2F, 0xF0, 0x1F, 0xD0, 0x7F, 0xF8, 0x0B, + 0x80, 0xFF, 0xFD, 0x03, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xBF, 0x00, 0x00, 0xFC, 0x3F, 0x00, + 0x00, 0xF4, 0x2F, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0xFE, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0x01, + 0x80, 0x7F, 0xFE, 0x03, 0xD0, 0x2F, 0xFC, 0x0B, 0xF0, 0x1F, 0xF4, 0x1F, 0xF8, 0x0B, 0xE0, 0x3F, + 0xFD, 0x03, 0xC0, 0xBF, + // Unicode: [0x0079, y] + 0xFE, 0x03, 0x00, 0xF8, 0xDB, 0x7F, 0x00, 0xC0, 0x7F, 0xFC, 0x0B, 0x00, 0xFD, 0x43, 0xFF, 0x00, + 0xE0, 0x2F, 0xF0, 0x1F, 0x00, 0xFF, 0x00, 0xFE, 0x03, 0xF8, 0x0B, 0xD0, 0x7F, 0xC0, 0x7F, 0x00, + 0xF8, 0x0B, 0xFD, 0x03, 0x40, 0xFF, 0xE0, 0x1F, 0x00, 0xF0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0xF6, + 0x0B, 0x00, 0xD0, 0xBF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0x00, + 0xF0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x02, + 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0xD0, + 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x00, + 0x00, + // Unicode: [0x007A, z] + 0xFE, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x5F, 0x55, 0xF5, 0x3F, 0x00, 0xD0, 0x7F, + 0x00, 0xC0, 0xBF, 0x00, 0x80, 0xFF, 0x00, 0x40, 0xFF, 0x01, 0x40, 0xFF, 0x02, 0x00, 0xFF, 0x02, + 0x00, 0xFE, 0x03, 0x00, 0xFD, 0x07, 0x00, 0xFC, 0x0B, 0x00, 0xF8, 0x6F, 0x55, 0xF1, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, + // Unicode: [0x007B, braceleft] + 0x00, 0xF8, 0x0B, 0xF4, 0xBF, 0x80, 0xFF, 0x0B, 0xFD, 0x6B, 0xD0, 0x3F, 0x00, 0xFD, 0x02, 0xD0, + 0x2F, 0x00, 0xFD, 0x02, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0x80, 0x7F, + 0x00, 0xFC, 0x03, 0xE0, 0x3F, 0xD0, 0xFF, 0x01, 0xFE, 0x06, 0xE0, 0x6F, 0x00, 0xFE, 0x1F, 0x00, + 0xFE, 0x03, 0xC0, 0x3F, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xD0, 0x2F, 0x00, 0xFD, 0x02, 0xD0, 0x2F, 0x00, 0xFD, 0x03, 0xD0, 0xBF, 0x06, 0xF8, 0xBF, + 0x40, 0xFF, 0x0B, 0x80, 0xBF, + // Unicode: [0x007C, bar] + 0xFD, 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, + 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, 0xF6, 0xDB, 0x6F, 0xBF, 0xFD, 0xF6, + 0xDB, 0x6F, 0xBF, + // Unicode: [0x007D, braceright] + 0xFE, 0x06, 0xE0, 0xFF, 0x01, 0xFE, 0x3F, 0x90, 0xFE, 0x07, 0x80, 0xBF, 0x00, 0xF4, 0x0B, 0x80, + 0xBF, 0x00, 0xF8, 0x07, 0x80, 0x7F, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xC0, 0x3F, + 0x00, 0xFC, 0x07, 0x80, 0xBF, 0x00, 0xF4, 0xBF, 0x00, 0xF9, 0x0F, 0x90, 0xFF, 0x40, 0xFF, 0x0B, + 0xF8, 0x0B, 0xC0, 0x7F, 0x00, 0xFC, 0x03, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0x80, 0x7F, 0x00, 0xF8, + 0x07, 0x80, 0x7F, 0x00, 0xF8, 0x0B, 0x40, 0xBF, 0x00, 0xF8, 0x0B, 0xE9, 0x7F, 0xE0, 0xFF, 0x03, + 0xFE, 0x1F, 0xE0, 0x6F, 0x00, + // Unicode: [0x007E, asciitilde] + 0x40, 0x6A, 0x00, 0xA9, 0xF0, 0xFF, 0x02, 0xBE, 0xF8, 0xFF, 0xEF, 0x7F, 0xFD, 0xFF, 0xFF, 0x2F, + 0xBE, 0xD0, 0xFF, 0x0F, 0x3F, 0x00, 0xFE, 0x02 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_4.cpp new file mode 100644 index 00000000..1ba33ed1 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_30_2bpp_4.cpp @@ -0,0 +1,8 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_30_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0xF8, 0x01, 0x2E, 0xD0, 0x4B, 0xFF, 0xF1, 0x2F, 0xFD, 0xE7, 0x7F, 0xFC, 0x4F, 0xFF, 0xF6, 0x1F, + 0xFF, 0xD2, 0x7F, 0xF8, 0x41, 0x2E, 0xD0, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_0.cpp new file mode 100644 index 00000000..395a2079 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_0.cpp @@ -0,0 +1,783 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_35_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xFE, 0xDB, 0xBF, 0xFD, 0xDB, 0xBF, 0xFD, 0xDB, 0xBF, 0xFD, 0xDB, 0xBF, 0xFD, 0xD7, 0x7F, 0xFD, + 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0xFC, 0x07, 0x00, 0x00, 0x40, 0x2A, 0xFD, 0xEB, + 0xFF, 0xFE, 0xDF, 0xBF, 0xF4, 0x02, + // Unicode: [0x0022, quotedbl] + 0xA9, 0x91, 0x9A, 0x7F, 0xF8, 0xE7, 0x1F, 0xFE, 0xF9, 0x87, 0x7F, 0xFD, 0xE1, 0x5F, 0x7F, 0xF4, + 0xD3, 0x0F, 0xFD, 0xF4, 0x43, 0x3F, + // Unicode: [0x0023, numbersign] + 0x00, 0x00, 0xA4, 0x06, 0x00, 0xA9, 0x02, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0xF8, 0x0F, 0x00, 0x00, + 0xC0, 0xBF, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xC0, 0xBF, 0x00, 0x00, 0x00, 0xFD, + 0x07, 0x40, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0xFE, 0x03, 0x00, 0x55, 0xF5, 0x7F, 0x55, + 0xFD, 0x5F, 0x05, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, + 0x00, 0xE0, 0x2F, 0x00, 0xF8, 0x0B, 0x00, 0x00, 0xC0, 0xBF, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0x40, + 0xFF, 0x01, 0xD0, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x07, 0x40, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x0F, + 0x00, 0xFE, 0x03, 0x00, 0x55, 0xF5, 0x7F, 0x55, 0xFD, 0x5F, 0x05, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0x2F, 0x00, 0xFC, 0x0B, 0x00, 0x00, + 0xC0, 0x7F, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x01, 0xD0, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x03, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xF0, 0x2F, 0x00, + 0xFC, 0x0B, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x40, 0x0F, 0x00, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x90, 0xFF, + 0x6F, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0x40, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0xE2, + 0xFF, 0xF5, 0xF8, 0x3F, 0xFF, 0x47, 0x0F, 0xFF, 0xF7, 0x3F, 0xF4, 0xA0, 0x6A, 0xFF, 0x43, 0x0F, + 0x00, 0xF0, 0xBF, 0xF4, 0x00, 0x00, 0xFE, 0x6F, 0x0F, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0xF4, + 0xFF, 0xFF, 0x06, 0x00, 0xFD, 0xFF, 0xFF, 0x07, 0x00, 0xF9, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xFF, + 0x3F, 0x00, 0x40, 0x9F, 0xFF, 0x0B, 0x00, 0xF4, 0xE0, 0xBF, 0x00, 0x40, 0x0F, 0xFD, 0xFB, 0x7F, + 0xF4, 0xD0, 0xBF, 0xFF, 0x4B, 0x0F, 0xFE, 0xEB, 0xFF, 0xF5, 0xF8, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, + 0x42, 0xFF, 0xFF, 0xFF, 0x0F, 0xD0, 0xFF, 0xFF, 0x2F, 0x00, 0x90, 0xFF, 0x6F, 0x00, 0x00, 0x40, + 0x0F, 0x00, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, + // Unicode: [0x0025, percent] + 0x80, 0xBF, 0x01, 0x00, 0xF4, 0x1F, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, + 0x02, 0xD0, 0x7F, 0x00, 0xF4, 0x0B, 0xFE, 0x00, 0xFC, 0x0B, 0x00, 0xFE, 0x40, 0x7F, 0x80, 0xFF, + 0x01, 0x80, 0x3F, 0xD0, 0x1F, 0xF0, 0x2F, 0x00, 0xE0, 0x0F, 0xF4, 0x07, 0xFE, 0x07, 0x00, 0xF4, + 0x0B, 0xFE, 0xC0, 0xBF, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0xF8, 0x0F, 0x00, 0x00, 0xFD, 0xFF, 0x42, + 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x1B, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x07, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x1F, 0xE4, 0x2F, 0x00, 0x00, + 0x00, 0xFF, 0x82, 0xFF, 0x3F, 0x00, 0x00, 0xE0, 0x7F, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0x0B, + 0xFF, 0xE1, 0x1F, 0x00, 0x80, 0xFF, 0xD0, 0x1F, 0xF0, 0x0B, 0x00, 0xF4, 0x2F, 0xF4, 0x07, 0xFC, + 0x02, 0x00, 0xFE, 0x03, 0xFD, 0x01, 0xBF, 0x00, 0xD0, 0x7F, 0x40, 0x7F, 0xC0, 0x2F, 0x00, 0xF8, + 0x0F, 0xC0, 0x3F, 0xF8, 0x07, 0x40, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0x00, 0xF0, 0x2F, 0x00, 0xE0, + 0xFF, 0x0F, 0x00, 0xFD, 0x07, 0x00, 0x90, 0xBF, 0x00, + // Unicode: [0x0026, ampersand] + 0x00, 0x40, 0xFE, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x07, 0xFE, 0x0B, 0x00, + 0x00, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0x02, 0x54, 0x01, 0x00, 0x00, 0xF0, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0x0B, 0xC0, 0xFF, 0x40, 0xFF, 0xDB, 0xFF, 0x02, 0xFE, 0x07, 0xFC, 0x1F, 0xF4, 0xBF, 0xF4, + 0x2F, 0xD0, 0xBF, 0x00, 0xFD, 0xEF, 0xFF, 0x01, 0xFE, 0x07, 0x00, 0xFF, 0xFF, 0x0B, 0xE0, 0x3F, + 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xFE, 0x07, 0x00, 0xF0, 0xFF, 0x02, 0xE0, 0xFF, 0x00, 0x40, 0xFF, + 0x3F, 0x00, 0xFD, 0x7F, 0x51, 0xFE, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, + 0xFF, 0xFF, 0xFF, 0xF6, 0xBF, 0x00, 0xF4, 0xFF, 0xFF, 0x07, 0xFD, 0x2F, 0x00, 0xE4, 0xBF, 0x06, + 0x40, 0xFF, 0x0B, + // Unicode: [0x0027, quotesingle] + 0xA9, 0xF9, 0xE7, 0x9F, 0x7F, 0xFD, 0xF5, 0xD7, 0x4F, 0x3F, + // Unicode: [0x0028, parenleft] + 0x00, 0x00, 0xAA, 0x06, 0x00, 0xF8, 0x2F, 0x00, 0xE0, 0xBF, 0x00, 0x40, 0xFF, 0x02, 0x00, 0xFC, + 0x1F, 0x00, 0xE0, 0xBF, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xF8, 0x1F, 0x00, 0xC0, 0xFF, 0x00, 0x00, + 0xFD, 0x0B, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xF4, 0x2F, 0x00, 0x80, 0xFF, 0x01, + 0x00, 0xF8, 0x0F, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xFD, + 0x0B, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFD, 0x07, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFD, 0x0B, 0x00, + 0xC0, 0xBF, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x40, 0xFF, + 0x01, 0x00, 0xF4, 0x2F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFD, 0x0B, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFC, + 0x1F, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF8, 0x2F, + // Unicode: [0x0029, parenright] + 0xA9, 0x0A, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x40, 0xFF, + 0x03, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x40, 0xFF, 0x02, 0x00, 0xF0, 0x3F, 0x00, + 0x00, 0xFE, 0x07, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xF4, + 0x2F, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xE0, 0x3F, 0x00, + 0x00, 0xFE, 0x03, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, + 0x03, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xF0, 0x3F, 0x00, 0x40, 0xFF, 0x02, 0x00, + 0xF4, 0x1F, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xFC, 0x0F, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0xF0, 0x3F, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFD, 0x0F, 0x00, 0xE0, 0x7F, 0x00, 0x40, 0xFF, + 0x03, 0x00, 0xFD, 0x1F, 0x00, 0xF0, 0x7F, 0x00, 0x80, 0xFF, 0x02, 0x00, + // Unicode: [0x002A, asterisk] + 0x00, 0x54, 0x01, 0x00, 0x80, 0x2F, 0x00, 0x10, 0xF4, 0x42, 0x40, 0x4B, 0x1F, 0x2D, 0xFC, 0xF2, + 0xF9, 0xD3, 0xFF, 0xFF, 0x7F, 0x90, 0xFF, 0x6F, 0x00, 0xE4, 0xBF, 0x01, 0xF4, 0xFF, 0xFF, 0xD1, + 0xBF, 0xEF, 0x7F, 0xF8, 0xF5, 0xF5, 0x43, 0x47, 0x2F, 0x1C, 0x00, 0xF4, 0x02, 0x00, 0x80, 0x3F, + 0x00, + // Unicode: [0x002B, plus] + 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, + 0x03, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x55, 0xE5, 0x7F, 0x55, 0xF5, + 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, + 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x03, + 0x00, + // Unicode: [0x002C, comma] + 0xD0, 0xBF, 0xE0, 0x3F, 0xE0, 0x2F, 0xF0, 0x1F, 0xF4, 0x0F, 0xF4, 0x0B, 0xF8, 0x03, 0xFC, 0x02, + 0xFC, 0x01, 0xFD, 0x00, + // Unicode: [0x002D, hyphen] + 0x54, 0x55, 0x55, 0x15, 0xFE, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0x7F, + 0xFE, 0xFF, 0xFF, 0x7F, + // Unicode: [0x002E, period] + 0xA0, 0x02, 0xFF, 0xD3, 0xFF, 0xF5, 0x7F, 0xFC, 0x1F, 0xB9, 0x01, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xF0, 0x2F, 0x00, + 0x00, 0xFD, 0x07, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x40, + 0xFF, 0x02, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xF0, 0x2F, 0x00, + 0x00, 0xFD, 0x07, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x40, + 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xF4, 0x2F, 0x00, + 0x00, 0xFD, 0x07, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x40, + 0xFF, 0x01, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xD0, 0x7F, + 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0x50, 0x5A, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x06, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x80, 0xFF, + 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0xFF, 0x03, 0xFE, 0x1F, 0xE0, 0xFF, 0xC1, 0xFF, 0x01, 0xE0, + 0xBF, 0xF4, 0x2F, 0x00, 0xF0, 0x3F, 0xFE, 0x07, 0x00, 0xF8, 0x9F, 0xFF, 0x00, 0x00, 0xFD, 0xF7, + 0x3F, 0x00, 0x40, 0xFF, 0xFE, 0x0B, 0x00, 0xC0, 0xBF, 0xFF, 0x02, 0x00, 0xF0, 0xEF, 0xBF, 0x00, + 0x00, 0xFC, 0xFB, 0x2F, 0x00, 0x00, 0xFF, 0xFE, 0x0B, 0x00, 0xC0, 0xBF, 0xFF, 0x02, 0x00, 0xF4, + 0xEF, 0xFF, 0x00, 0x00, 0xFD, 0xE7, 0x3F, 0x00, 0x40, 0xFF, 0xF9, 0x1F, 0x00, 0xE0, 0x3F, 0xFD, + 0x0B, 0x00, 0xFD, 0x0B, 0xFF, 0x0B, 0xC0, 0xFF, 0x41, 0xFF, 0xAF, 0xFE, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x40, 0xFE, 0x2B, 0x00, + 0x00, + // Unicode: [0x0031, one] + 0xFE, 0xFF, 0xFA, 0xFF, 0xEB, 0xFF, 0xAF, 0xFF, 0xBF, 0xA9, 0xFF, 0x02, 0xFD, 0x0B, 0xF4, 0x2F, + 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0xFD, 0x0B, 0xF4, 0x2F, 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0xFD, 0x0B, + 0xF4, 0x2F, 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0xFD, 0x0B, 0xF4, 0x2F, 0xD0, 0xBF, 0x40, 0xFF, 0x02, + 0xFD, 0x0B, 0xF4, 0x2F, 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0xFD, 0x0B, + // Unicode: [0x0032, two] + 0x00, 0xE4, 0xBF, 0x01, 0x00, 0xE4, 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, + 0xFF, 0x1F, 0xF8, 0xBF, 0xE5, 0xFF, 0xC2, 0xFF, 0x01, 0xF4, 0x3F, 0xFD, 0x0B, 0x00, 0xFF, 0xD7, + 0x7F, 0x00, 0xE0, 0x7F, 0xA9, 0x06, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0x1F, + 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x40, 0xFF, + 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, + // Unicode: [0x0033, three] + 0x00, 0xA4, 0xBF, 0x06, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0xBF, 0x00, 0xFF, 0xFF, + 0xFF, 0x2F, 0xF4, 0xBF, 0xD5, 0xFF, 0x83, 0xFF, 0x02, 0xF0, 0x7F, 0xFC, 0x0F, 0x00, 0xFD, 0x87, + 0x6A, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xD0, + 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, + 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xF9, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xC0, + 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xDF, 0x7F, 0x00, 0x80, 0xFF, 0xFD, 0x0B, 0x00, 0xFC, 0xCB, 0xFF, + 0x01, 0xE0, 0xBF, 0xF8, 0xBF, 0x95, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x3F, 0xD0, 0xFF, 0xFF, 0xFF, + 0x00, 0xE4, 0xFF, 0xFF, 0x02, 0x00, 0xA4, 0xBF, 0x06, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x00, 0xA9, 0x06, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xBF, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, + 0x00, 0xF0, 0xAF, 0xBF, 0x00, 0x00, 0xE0, 0x3F, 0xFE, 0x02, 0x00, 0xD0, 0x7F, 0xF8, 0x0B, 0x00, + 0xC0, 0xBF, 0xE0, 0x2F, 0x00, 0x80, 0xFF, 0x80, 0xBF, 0x00, 0x80, 0xFF, 0x01, 0xFE, 0x02, 0x40, + 0xFF, 0x02, 0xF8, 0x0B, 0x00, 0xFF, 0x03, 0xE0, 0x2F, 0x00, 0xFE, 0x07, 0x80, 0xBF, 0x00, 0xFD, + 0x0B, 0x00, 0xFE, 0x02, 0xFC, 0x5F, 0x55, 0xFD, 0x5F, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, + 0x00, 0xF0, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xFC, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0x2F, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFF, 0x0F, 0xFE, 0x56, 0x55, 0x55, 0xE0, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0xE0, + 0x2F, 0x00, 0x00, 0x00, 0xFE, 0x92, 0xBF, 0x06, 0xE0, 0xAF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, + 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0x6F, 0xD4, 0xFF, 0xE2, 0xBF, 0x00, 0xF0, 0x3F, 0xFE, + 0x03, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0xC0, + 0xBF, 0x55, 0x01, 0x00, 0xFD, 0xFB, 0x3F, 0x00, 0xE0, 0x7F, 0xFE, 0x0B, 0x40, 0xFF, 0xD3, 0xFF, + 0x56, 0xFE, 0x2F, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0x1F, + 0x00, 0x90, 0xFE, 0x1B, 0x00, + // Unicode: [0x0036, six] + 0x00, 0xA0, 0xBF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0xF8, 0xFF, 0xFF, 0x0B, 0x40, 0xFF, + 0xFF, 0xFF, 0x07, 0xF0, 0xBF, 0x91, 0xFF, 0x03, 0xFD, 0x07, 0x80, 0xFF, 0x81, 0xBF, 0x00, 0xD0, + 0x7F, 0xF0, 0x1F, 0x00, 0x50, 0x15, 0xFD, 0x03, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0xD0, + 0x2F, 0xE4, 0xBF, 0x00, 0xF4, 0x8B, 0xFF, 0xFF, 0x01, 0xFE, 0xFE, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE1, 0xFF, 0x07, 0xF4, 0xBF, 0xF8, 0x3F, 0x00, 0xF4, 0x3F, 0xFD, 0x07, 0x00, 0xF8, + 0x5F, 0xFF, 0x01, 0x00, 0xFD, 0xD7, 0x3F, 0x00, 0x40, 0xFF, 0xF1, 0x1F, 0x00, 0xD0, 0x7F, 0xF8, + 0x0B, 0x00, 0xF8, 0x0F, 0xFD, 0x07, 0x40, 0xFF, 0x03, 0xFF, 0x5B, 0xF9, 0x7F, 0x40, 0xFF, 0xFF, + 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFA, 0x6F, 0x00, + 0x00, + // Unicode: [0x0037, seven] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x55, 0x55, 0x55, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, + 0xF4, 0x2F, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, + 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xF4, 0x2F, 0x00, + 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x03, + 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xF4, 0x2F, 0x00, 0x00, 0xE0, 0x7F, + 0x00, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0xE4, 0xBF, 0x06, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0xFF, 0x0F, 0xD0, 0xFF, + 0xFF, 0xFF, 0x0B, 0xFC, 0x7F, 0x90, 0xFF, 0x47, 0xFF, 0x03, 0x80, 0xFF, 0xD2, 0xBF, 0x00, 0xC0, + 0xBF, 0xF4, 0x1F, 0x00, 0xF0, 0x2F, 0xFD, 0x0B, 0x00, 0xFC, 0x0B, 0xFF, 0x02, 0x40, 0xFF, 0x41, + 0xFF, 0x02, 0xF4, 0x3F, 0x80, 0xFF, 0xEB, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0x2F, 0x00, 0xE4, 0xFF, + 0xFF, 0x1F, 0x40, 0xFF, 0xFF, 0xFF, 0x2F, 0xF0, 0xBF, 0x01, 0xFD, 0x1F, 0xFD, 0x0B, 0x00, 0xFD, + 0x8F, 0xFF, 0x00, 0x00, 0xFE, 0xF7, 0x2F, 0x00, 0x40, 0xFF, 0xFD, 0x0B, 0x00, 0xD0, 0x7F, 0xFF, + 0x03, 0x00, 0xF8, 0x9F, 0xFF, 0x02, 0x40, 0xFF, 0xD3, 0xFF, 0x06, 0xF9, 0xBF, 0xE0, 0xFF, 0xFF, + 0xFF, 0x0F, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x40, 0xFE, 0x6B, 0x00, + 0x00, + // Unicode: [0x0039, nine] + 0x00, 0x00, 0x01, 0x00, 0x00, 0x90, 0xFF, 0x6F, 0x00, 0x80, 0xFF, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, + 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0x06, 0xF9, 0x2F, 0xFD, 0x0B, 0x00, 0xFE, 0xE3, + 0x7F, 0x00, 0xC0, 0x7F, 0xFE, 0x03, 0x00, 0xFC, 0xEB, 0x3F, 0x00, 0xC0, 0xBF, 0xFE, 0x07, 0x00, + 0xFC, 0xDB, 0xBF, 0x00, 0xE0, 0xFF, 0xFC, 0x6F, 0x90, 0xFF, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0x6F, 0xFF, 0x00, 0xF9, 0x6F, 0xF4, 0x0F, 0x00, 0x00, 0x80, + 0xBF, 0x00, 0x00, 0x00, 0xF8, 0x4B, 0x55, 0x00, 0xC0, 0x7F, 0xFC, 0x0F, 0x00, 0xFD, 0x87, 0xFF, + 0x01, 0xE0, 0x3F, 0xF4, 0xBF, 0x91, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0x0F, 0xC0, 0xFF, 0xFF, 0x7F, + 0x00, 0xE0, 0xFF, 0xFF, 0x01, 0x00, 0xE4, 0xBF, 0x02, 0x00, + // Unicode: [0x003A, colon] + 0xE4, 0x06, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFC, 0x0F, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xF0, 0x3F, 0xFD, 0x5F, 0xFF, 0xC7, + 0xFF, 0x91, 0x1B, + // Unicode: [0x003B, semicolon] + 0x90, 0x1B, 0xF4, 0x3F, 0xF8, 0x7F, 0xF4, 0x7F, 0xF0, 0x3F, 0x90, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x2F, 0xF0, 0x1F, 0xF4, 0x0F, 0xF8, 0x07, 0xF8, 0x03, 0xFC, 0x02, 0xFD, 0x01, + 0xBD, 0x00, + // Unicode: [0x003C, less] + 0x00, 0xC0, 0xFF, 0x03, 0xC0, 0xFF, 0x07, 0xC0, 0xFF, 0x07, 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x07, + 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x07, 0x80, 0xFF, 0x07, 0x00, 0xFE, 0x1F, 0x00, 0xE0, 0xFF, 0x01, + 0x00, 0xFE, 0x1F, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0xFF, + 0x1F, 0x00, 0xF4, 0xFF, + // Unicode: [0x003D, equal] + 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, + 0xFF, 0xFF, 0xFF, 0x7F, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x15, 0xFE, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, + 0x7F, + // Unicode: [0x003E, greater] + 0xFD, 0x2F, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0x02, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0xFE, + 0x2F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0x80, 0xFF, 0x0B, + 0x00, 0xFE, 0x2F, 0x00, 0xF8, 0xBF, 0x00, 0xE0, 0xFF, 0x02, 0x80, 0xFF, 0x0B, 0x00, 0xFD, 0x2F, + 0x00, 0xF4, 0xBF, 0x00, 0xD0, 0xFF, 0x02, 0x00, + // Unicode: [0x003F, question] + 0x00, 0xE9, 0x6F, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, + 0x1F, 0xFD, 0x6F, 0xF5, 0xBF, 0xF8, 0x1F, 0x00, 0xFF, 0xE3, 0x3F, 0x00, 0xF8, 0x5F, 0x55, 0x00, + 0xD0, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x90, 0xFF, 0x0B, 0xD0, + 0xFF, 0xFF, 0x0F, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0x5F, 0x00, 0x00, + 0xD0, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFC, 0x2F, + 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x0A, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0x00, 0x00, 0x80, 0xFF, 0x6F, 0x00, 0xE4, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0xF4, + 0x3F, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x02, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xF4, 0x1F, 0x40, 0xFF, 0x01, 0xE4, 0x2F, 0xA9, 0x82, 0xBF, 0x00, 0xFF, 0x01, 0xFD, 0xFF, 0xFB, + 0x0B, 0xFC, 0x03, 0xFD, 0x02, 0xFD, 0xFF, 0xFF, 0x1F, 0xF0, 0x0F, 0xFC, 0x03, 0xFC, 0xBF, 0xFF, + 0x7F, 0x80, 0x7F, 0xF4, 0x0B, 0xF8, 0x1F, 0xD0, 0xFF, 0x00, 0xFE, 0xE1, 0x1F, 0xF4, 0x1F, 0x00, + 0xFE, 0x03, 0xF8, 0xC7, 0x3F, 0xE0, 0x2F, 0x00, 0xF4, 0x0B, 0xE0, 0x0F, 0xBF, 0xC0, 0x7F, 0x00, + 0xD0, 0x2F, 0x80, 0x3F, 0xFD, 0x02, 0xFF, 0x01, 0x80, 0x7F, 0x00, 0xBF, 0xF4, 0x07, 0xFC, 0x07, + 0x00, 0xFF, 0x01, 0xFD, 0xD1, 0x1F, 0xF0, 0x1F, 0x00, 0xFE, 0x03, 0xF8, 0x43, 0x7F, 0xC0, 0xFF, + 0x00, 0xFE, 0x0F, 0xF4, 0x0B, 0xFD, 0x01, 0xFE, 0xAF, 0xFF, 0xBF, 0xF5, 0x0F, 0xF4, 0x0B, 0xF4, + 0xFF, 0xFF, 0xFD, 0xFF, 0x1F, 0xC0, 0x3F, 0x80, 0xFF, 0xBF, 0xE1, 0xFF, 0x1F, 0x00, 0xFF, 0x01, + 0xE4, 0x6F, 0x00, 0xF9, 0x0A, 0x00, 0xF4, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x16, 0x40, 0x79, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0xFE, 0xF7, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xFC, 0x0F, 0x00, 0x00, 0xF4, + 0x2F, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x47, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0x80, 0xFF, 0x00, 0x00, + 0xF4, 0x2F, 0xD0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x2F, 0x00, 0xC0, 0xFF, 0x00, 0xF8, 0x0F, + 0x00, 0xF4, 0x2F, 0x00, 0xFD, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0xF4, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1F, 0xF8, 0x2F, 0x00, 0x00, 0xFD, 0x0B, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xD3, 0xFF, + 0x00, 0x00, 0x80, 0xFF, 0xF9, 0x2F, 0x00, 0x00, 0xD0, 0xBF, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0x3F, + // Unicode: [0x0042, B] + 0xFE, 0xFF, 0xFF, 0x1A, 0x80, 0xFF, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, + 0xFF, 0xFF, 0x2F, 0xFE, 0x07, 0x40, 0xFF, 0x8F, 0xFF, 0x01, 0x00, 0xFF, 0xE7, 0x7F, 0x00, 0x80, + 0xFF, 0xF9, 0x1F, 0x00, 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0xFC, 0x8F, 0xFF, 0x01, 0x80, 0xFF, 0xE2, + 0xFF, 0xAA, 0xFF, 0x2F, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x7F, 0x00, 0xE4, 0xFF, 0xF8, 0x1F, 0x00, 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0xF0, + 0xAF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xE0, 0xBF, 0xFE, + 0x07, 0x40, 0xFE, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0xFF, 0xFF, + 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x1B, 0x00, + // Unicode: [0x0043, C] + 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xAF, 0xEA, 0xFF, 0x1F, 0xE0, 0xFF, + 0x06, 0x00, 0xFE, 0x3F, 0xF4, 0xBF, 0x00, 0x00, 0xF8, 0x7F, 0xFC, 0x2F, 0x00, 0x00, 0xE0, 0xFF, + 0xFD, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0xF4, 0xBF, 0x00, 0x00, + 0xF8, 0x7F, 0xE0, 0xFF, 0x02, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0xAF, 0xE9, 0xFF, 0x1F, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, + // Unicode: [0x0044, D] + 0xFE, 0xFF, 0xBF, 0x06, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0x57, 0x95, 0xFF, 0x7F, 0xE0, 0x7F, 0x00, 0x40, 0xFF, + 0x0F, 0xFE, 0x07, 0x00, 0xD0, 0xFF, 0xE1, 0x7F, 0x00, 0x00, 0xF4, 0x3F, 0xFE, 0x07, 0x00, 0x00, + 0xFF, 0xE7, 0x7F, 0x00, 0x00, 0xE0, 0xBF, 0xFE, 0x07, 0x00, 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, + 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, + 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, 0xE0, 0xBF, 0xFE, 0x07, 0x00, 0x00, 0xFF, 0xE7, 0x7F, 0x00, + 0x00, 0xF4, 0x3F, 0xFE, 0x07, 0x00, 0xD0, 0xFF, 0xE2, 0x7F, 0x00, 0x40, 0xFF, 0x0F, 0xFE, 0x57, + 0x95, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xFE, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xBF, 0xFE, + 0x07, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0x80, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0xBF, 0xF8, 0xFF, 0xFF, 0x2F, 0xFE, 0xFF, 0xFF, + 0x8B, 0xFF, 0xFF, 0xFF, 0xE2, 0x7F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x80, + 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0x2F, + // Unicode: [0x0046, F] + 0xFE, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xBF, + 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, + 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x03, + 0xFE, 0xFF, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x03, 0xFE, 0x07, 0x00, 0x00, + 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, + 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, + 0xFE, 0x07, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0xD0, 0xFF, 0xFF, + 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0xEA, 0xFF, 0x1F, 0x80, + 0xFF, 0x1B, 0x00, 0xF8, 0xFF, 0x40, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x0B, 0xFF, 0x0B, 0x00, 0x00, + 0xA8, 0x2A, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0xBF, 0xFE, 0x07, 0x80, 0xFF, 0xFF, + 0xFF, 0xFA, 0x1F, 0x00, 0xFE, 0xFF, 0xFF, 0xEB, 0x7F, 0x00, 0xA4, 0xAA, 0xFE, 0x6F, 0xFF, 0x02, + 0x00, 0x00, 0xD0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0xF1, 0xBF, 0x00, 0x00, 0x40, 0xFF, + 0x43, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0x0B, 0xF8, 0xBF, 0x01, 0x40, 0xFF, 0x0F, 0xC0, 0xFF, 0xBF, + 0xEA, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, 0xF4, 0xAF, + 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0x00, 0xFD, 0xEB, + 0x7F, 0x00, 0x00, 0xF4, 0xAF, 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, + 0x1F, 0x00, 0x00, 0xFD, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x7F, 0x00, 0x00, 0xF4, 0xAF, 0xFF, + 0x01, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0x00, 0xFD, 0xEB, 0x7F, + 0x00, 0x00, 0xF4, 0xAF, 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, 0x1F, + 0x00, 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, 0xF4, 0xAF, 0xFF, 0x01, 0x00, 0xD0, 0xBF, 0xFE, 0x07, + 0x00, 0x40, 0xFF, 0x02, + // Unicode: [0x0049, I] + 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, + 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, + 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0x07, + // Unicode: [0x004A, J] + 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0xD0, 0xBF, 0xAA, 0x06, 0xD0, 0xBF, 0xFE, 0x07, 0xD0, 0xBF, 0xFD, 0x0B, 0xF0, 0x7F, + 0xFC, 0xBF, 0xFE, 0x3F, 0xF8, 0xFF, 0xFF, 0x2F, 0xF0, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0x02, + 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x004B, K] + 0xFE, 0x07, 0x00, 0xF4, 0xBF, 0xFE, 0x07, 0x00, 0xFC, 0x3F, 0xFE, 0x07, 0x00, 0xFE, 0x0F, 0xFE, + 0x07, 0x80, 0xFF, 0x07, 0xFE, 0x07, 0xD0, 0xFF, 0x01, 0xFE, 0x07, 0xF4, 0xBF, 0x00, 0xFE, 0x07, + 0xFC, 0x2F, 0x00, 0xFE, 0x07, 0xFE, 0x0F, 0x00, 0xFE, 0x87, 0xFF, 0x07, 0x00, 0xFE, 0xD7, 0xFF, + 0x01, 0x00, 0xFE, 0xF7, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, + 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0xFE, 0xFB, 0xBF, 0x00, 0x00, 0xFE, 0xD7, 0xFF, 0x02, 0x00, + 0xFE, 0x87, 0xFF, 0x07, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0x00, 0xFE, 0x07, 0xFC, 0x3F, 0x00, 0xFE, + 0x07, 0xF4, 0xFF, 0x00, 0xFE, 0x07, 0xD0, 0xFF, 0x02, 0xFE, 0x07, 0x80, 0xFF, 0x0B, 0xFE, 0x07, + 0x00, 0xFE, 0x1F, 0xFE, 0x07, 0x00, 0xFC, 0x7F, 0xFE, 0x07, 0x00, 0xF4, 0xFF, + // Unicode: [0x004C, L] + 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, + 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, + 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, + 0x07, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0x07, + // Unicode: [0x004D, M] + 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xEF, 0xFF, 0x03, + 0x00, 0x00, 0xE0, 0xFF, 0xFB, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0x40, + 0xFF, 0xBF, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0xEF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0xFB, + 0xFF, 0x0F, 0x00, 0x80, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0xF0, 0xFF, 0xBF, 0xFF, 0xFE, 0x03, + 0x00, 0xFD, 0xFF, 0xEF, 0x7F, 0xFF, 0x01, 0xC0, 0x7F, 0xFF, 0xFB, 0x9F, 0xBF, 0x00, 0xF4, 0xCF, + 0xFF, 0xFE, 0xC7, 0x7F, 0x00, 0xFE, 0xF2, 0xBF, 0xFF, 0xE1, 0x2F, 0xC0, 0x7F, 0xFC, 0xEF, 0x7F, + 0xF4, 0x0F, 0xF8, 0x0F, 0xFF, 0xFB, 0x1F, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFE, 0x07, 0xFE, 0xD3, + 0x3F, 0xF0, 0xBF, 0xFF, 0x01, 0xFF, 0xF9, 0x0B, 0xFC, 0xEF, 0x7F, 0x80, 0xFF, 0xFF, 0x01, 0xFF, + 0xFB, 0x1F, 0xD0, 0xFF, 0x2F, 0xC0, 0xFF, 0xFE, 0x07, 0xF0, 0xFF, 0x07, 0xF0, 0xBF, 0xFF, 0x01, + 0xF8, 0xFF, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0xFC, 0x2F, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xFE, 0x07, + 0xC0, 0xFF, 0xFE, 0x07, 0x40, 0xBF, 0x00, 0xF0, 0x3F, + // Unicode: [0x004E, N] + 0xFE, 0x0B, 0x00, 0x00, 0xFE, 0xE7, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0xFE, 0x3F, 0x00, 0x00, 0xFE, + 0xE7, 0xFF, 0x0B, 0x00, 0xE0, 0x7F, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xE7, 0xFF, 0x3F, 0x00, 0xE0, + 0x7F, 0xFE, 0xFF, 0x0B, 0x00, 0xFE, 0xE7, 0xFF, 0xFF, 0x01, 0xE0, 0x7F, 0xFE, 0xFB, 0x2F, 0x00, + 0xFE, 0xE7, 0x7F, 0xFE, 0x07, 0xE0, 0x7F, 0xFE, 0xC7, 0xFF, 0x00, 0xFE, 0xE7, 0x7F, 0xF4, 0x2F, + 0xE0, 0x7F, 0xFE, 0x07, 0xFE, 0x07, 0xFE, 0xE7, 0x7F, 0xC0, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xF4, + 0x2F, 0xFE, 0xE7, 0x7F, 0x00, 0xFE, 0xE7, 0x7F, 0xFE, 0x07, 0xC0, 0xFF, 0xFE, 0xE7, 0x7F, 0x00, + 0xF4, 0xFF, 0x7F, 0xFE, 0x07, 0x00, 0xFE, 0xFF, 0xE7, 0x7F, 0x00, 0xD0, 0xFF, 0x7F, 0xFE, 0x07, + 0x00, 0xF8, 0xFF, 0xE7, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0xFE, 0x07, 0x00, 0xD0, 0xFF, 0xE7, 0x7F, + 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x07, 0x00, 0x00, 0xFF, 0x07, + // Unicode: [0x004F, O] + 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0xAF, 0xEA, 0xFF, 0x1F, + 0x00, 0xFE, 0x6F, 0x00, 0xD0, 0xFF, 0x07, 0xF4, 0xBF, 0x00, 0x00, 0xF4, 0xBF, 0x80, 0xFF, 0x02, + 0x00, 0x00, 0xFD, 0x1F, 0xFC, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0xD2, 0xBF, 0x00, 0x00, 0x00, 0xF4, + 0x3F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xFF, 0xE3, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x07, + 0x00, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0xD3, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0xFC, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0x82, 0xFF, + 0x02, 0x00, 0x00, 0xFD, 0x1F, 0xF4, 0xBF, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0xFE, 0x2F, 0x00, 0xD0, + 0xFF, 0x07, 0xC0, 0xFF, 0xAF, 0xE9, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE9, 0xBF, + 0x01, 0x00, 0x00, + // Unicode: [0x0050, P] + 0xFE, 0xFF, 0xBF, 0x06, 0x80, 0xFF, 0xFF, 0xFF, 0x1B, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFE, 0x07, 0x90, 0xFF, 0x8B, 0xFF, 0x01, 0x40, 0xFF, 0xE3, 0x7F, 0x00, 0xC0, + 0xFF, 0xF8, 0x1F, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0xFC, 0x8F, 0xFF, 0x01, 0x40, 0xFF, 0xE3, + 0x7F, 0x00, 0xF4, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x6F, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, + 0x80, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xFE, + 0x07, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, + 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0x00, 0xE9, 0xBF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0xAF, 0xEA, 0xFF, 0x1F, + 0x00, 0xFE, 0x6F, 0x00, 0xD0, 0xFF, 0x07, 0xF4, 0xBF, 0x00, 0x00, 0xF4, 0xBF, 0x80, 0xFF, 0x02, + 0x00, 0x00, 0xFD, 0x1F, 0xFC, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0xD2, 0xBF, 0x00, 0x00, 0x00, 0xF4, + 0x3F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xFF, 0xE3, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x07, + 0x00, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0xD3, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0xFC, 0x0F, 0x00, 0x00, 0x80, 0xFF, 0x82, 0xFF, + 0x02, 0x00, 0x00, 0xFD, 0x1F, 0xF4, 0xBF, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0xFE, 0x2F, 0x00, 0xD0, + 0xFF, 0x03, 0xC0, 0xFF, 0xAF, 0xE9, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xE9, 0xBF, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, + // Unicode: [0x0052, R] + 0xFE, 0xFF, 0xFF, 0x06, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, + 0xFF, 0xFF, 0x1F, 0xFE, 0x07, 0x90, 0xFF, 0x8B, 0xFF, 0x01, 0x40, 0xFF, 0xE3, 0x7F, 0x00, 0xC0, + 0xFF, 0xF9, 0x1F, 0x00, 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0xF8, 0x9F, 0xFF, 0x01, 0x00, 0xFF, 0xE3, + 0x7F, 0x00, 0xE0, 0xBF, 0xF8, 0xAF, 0xEA, 0xFF, 0x1F, 0xFE, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x7F, 0x00, 0xF8, 0x1F, 0xFC, 0x1F, 0x00, 0xFE, 0x07, 0xFE, 0x0F, + 0x80, 0xFF, 0x01, 0xFF, 0x07, 0xE0, 0x7F, 0x40, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFF, 0x02, 0xFE, + 0x07, 0xD0, 0xFF, 0x81, 0xFF, 0x01, 0xF0, 0xBF, 0xE0, 0x7F, 0x00, 0xF4, 0x7F, 0xF8, 0x1F, 0x00, + 0xF8, 0x2F, 0xFE, 0x07, 0x00, 0xFD, 0x1F, + // Unicode: [0x0053, S] + 0x00, 0xE9, 0xAF, 0x01, 0x00, 0xF9, 0xFF, 0xBF, 0x01, 0xF4, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, + 0xFF, 0x0F, 0xFE, 0x5F, 0xE5, 0xFF, 0xF2, 0x7F, 0x00, 0xF8, 0x3F, 0xFF, 0x03, 0x40, 0xFF, 0xF3, + 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x06, 0x00, 0x00, 0xFD, 0xFF, 0x1B, + 0x00, 0x40, 0xFF, 0xFF, 0x2F, 0x00, 0x90, 0xFF, 0xFF, 0x2F, 0x00, 0x90, 0xFF, 0xFF, 0x0B, 0x00, + 0x40, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x57, 0x15, 0x00, 0xE0, + 0x7F, 0xFF, 0x07, 0x00, 0xFE, 0xF7, 0xBF, 0x00, 0xF0, 0x7F, 0xFE, 0x6F, 0xD4, 0xFF, 0xC3, 0xFF, + 0xFF, 0xFF, 0x1F, 0xF4, 0xFF, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0xE9, 0xBF, 0x01, + 0x00, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, + 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, + 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, + 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, + 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, + 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0xD0, 0xBF, 0x00, + 0x00, + // Unicode: [0x0055, U] + 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, + 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, + 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, + 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, + 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, + 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFD, 0x0B, 0x00, 0xD0, 0xFF, 0xFD, 0x0F, 0x00, 0xE0, 0xBF, 0xFC, + 0x2F, 0x00, 0xF8, 0x7F, 0xF4, 0xFF, 0xAA, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x90, 0xFF, 0x1A, 0x00, + // Unicode: [0x0056, V] + 0xFD, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0xF1, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0x82, 0xFF, 0x02, 0x00, + 0x00, 0xFE, 0x07, 0xFD, 0x0F, 0x00, 0x00, 0xFC, 0x0F, 0xF0, 0x7F, 0x00, 0x00, 0xF4, 0x2F, 0x80, + 0xFF, 0x02, 0x00, 0xE0, 0x7F, 0x00, 0xFD, 0x0F, 0x00, 0xC0, 0xFF, 0x00, 0xE0, 0x7F, 0x00, 0x40, + 0xFF, 0x02, 0x40, 0xFF, 0x02, 0x00, 0xFE, 0x07, 0x00, 0xFC, 0x0F, 0x00, 0xFC, 0x0F, 0x00, 0xE0, + 0x7F, 0x00, 0xF4, 0x2F, 0x00, 0x40, 0xFF, 0x02, 0xE0, 0x7F, 0x00, 0x00, 0xFC, 0x0F, 0xC0, 0xFF, + 0x00, 0x00, 0xE0, 0x7F, 0x40, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0x02, 0xFE, 0x03, 0x00, 0x00, 0xFC, + 0x0F, 0xFC, 0x0B, 0x00, 0x00, 0xE0, 0x7F, 0xF4, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xE2, 0x3F, 0x00, + 0x00, 0x00, 0xFC, 0xCF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0xE0, + 0xBF, 0xFE, 0x0B, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xFE, 0xD7, 0xBF, 0x00, 0x80, 0xFF, 0x2F, 0x00, + 0xF0, 0x3F, 0xFC, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x40, 0xFF, 0x83, 0xFF, 0x01, 0xC0, 0xFF, 0x3F, + 0x00, 0xF4, 0x2F, 0xF8, 0x1F, 0x00, 0xFD, 0xFF, 0x07, 0x80, 0xFF, 0x41, 0xFF, 0x02, 0xE0, 0xFF, + 0xBF, 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x00, 0xFF, 0xFA, 0x0B, 0xC0, 0xBF, 0x00, 0xFE, 0x03, 0xF0, + 0x9F, 0xFF, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x40, 0xFF, 0xF4, 0x1F, 0xE0, 0x7F, 0x00, 0xFD, 0x0B, + 0xF8, 0x0B, 0xFF, 0x02, 0xFE, 0x03, 0xC0, 0xBF, 0xC0, 0x7F, 0xE0, 0x2F, 0xF0, 0x2F, 0x00, 0xF8, + 0x0F, 0xFC, 0x07, 0xFD, 0x43, 0xFF, 0x01, 0x40, 0xFF, 0xD1, 0x3F, 0xD0, 0x7F, 0xF4, 0x0F, 0x00, + 0xF0, 0x1F, 0xFE, 0x02, 0xFC, 0x8B, 0xFF, 0x00, 0x00, 0xFF, 0xF2, 0x1F, 0x80, 0xBF, 0xFC, 0x0B, + 0x00, 0xE0, 0x7F, 0xFF, 0x00, 0xF4, 0xDF, 0x7F, 0x00, 0x00, 0xFD, 0xFB, 0x0F, 0x40, 0xFF, 0xFE, + 0x03, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0xFE, + 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0x00, + 0xFD, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x01, + 0x00, 0xF8, 0x7F, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xFD, 0x1F, 0x00, 0x40, 0xFF, 0x87, 0xFF, 0x03, 0x00, 0xF8, 0x2F, 0xF0, 0xBF, 0x00, 0xD0, 0xFF, + 0x00, 0xFD, 0x1F, 0x00, 0xFF, 0x07, 0x80, 0xFF, 0x02, 0xF8, 0x2F, 0x00, 0xF4, 0x7F, 0xC0, 0xFF, + 0x01, 0x00, 0xFE, 0x0F, 0xFE, 0x0B, 0x00, 0xC0, 0xFF, 0xF6, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0xC0, 0xFF, + 0xF9, 0x3F, 0x00, 0x00, 0xFE, 0x0B, 0xFF, 0x0B, 0x00, 0xF4, 0x3F, 0xD0, 0xFF, 0x01, 0x80, 0xFF, + 0x02, 0xF8, 0x2F, 0x00, 0xFD, 0x0F, 0x40, 0xFF, 0x07, 0xF0, 0x7F, 0x00, 0xE0, 0xFF, 0x80, 0xFF, + 0x02, 0x00, 0xFC, 0x2F, 0xFD, 0x1F, 0x00, 0x40, 0xFF, 0x07, + // Unicode: [0x0059, Y] + 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xCB, 0xFF, 0x02, 0x00, 0xF4, 0x3F, 0xF4, 0x3F, 0x00, 0x80, 0xFF, + 0x02, 0xFE, 0x0B, 0x00, 0xFD, 0x0F, 0xD0, 0xFF, 0x00, 0xE0, 0xBF, 0x00, 0xF8, 0x1F, 0x00, 0xFF, + 0x03, 0x40, 0xFF, 0x03, 0xF8, 0x2F, 0x00, 0xE0, 0x7F, 0xC0, 0xFF, 0x00, 0x00, 0xFD, 0x0B, 0xFD, + 0x0B, 0x00, 0x80, 0xFF, 0xF1, 0x3F, 0x00, 0x00, 0xF4, 0x6F, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, + 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0xD0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x0B, 0x00, 0x00, 0x00, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, + 0xD0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xFD, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, + 0xFF, 0x7F, 0x54, 0x55, 0x95, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xBF, 0x00, + 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x40, 0xFF, + 0x03, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + 0xFC, 0x2F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x6F, 0x55, 0x55, 0xD1, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, + 0x07, + // Unicode: [0x005B, bracketleft] + 0xFD, 0xFF, 0xDB, 0xFF, 0xBF, 0xFD, 0xFF, 0xDB, 0xFF, 0xBF, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, + 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, + 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, + 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, + 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, + 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0x07, 0xD0, 0x7F, 0x00, 0xFD, 0xFF, 0xDB, 0xFF, 0xBF, 0xFD, + 0xFF, 0xDB, 0xFF, 0xBF, + // Unicode: [0x005C, backslash] + 0xFE, 0x03, 0x00, 0x80, 0xFF, 0x01, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0x01, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xE0, 0x3F, + 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0x00, + 0x00, 0xE0, 0x7F, 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0xFE, 0x03, 0x00, + 0x80, 0xFF, 0x01, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, + 0xFE, 0x07, 0x00, 0x40, 0xFF, 0x01, 0x00, 0xC0, 0xBF, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xF8, + 0x1F, 0x00, 0x00, 0xFD, 0x07, 0x00, 0x00, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xE0, 0x7F, + 0x00, 0x00, 0xF4, 0x1F, 0x00, 0x00, 0xFC, 0x0B, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x80, 0xFF, 0x01, + 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xF0, 0x2F, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0xFE, 0x07, 0x00, + 0x40, 0xFF, 0x01, 0x00, 0xC0, 0xBF, + // Unicode: [0x005D, bracketright] + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, + 0xC0, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, + 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0xFF, 0x02, + 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, + 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, 0xBF, 0x00, 0xFF, 0x02, 0xFC, 0x0B, 0xF0, 0x2F, 0xC0, + 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, + // Unicode: [0x005E, asciicircum] + 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0xF4, 0xAF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xF5, 0x2F, 0x00, 0x00, 0xFD, 0x0B, 0xFF, + 0x03, 0x00, 0xE0, 0x7F, 0xE0, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0x00, 0xF8, 0x1F, 0x80, + 0xFF, 0x01, 0xC0, 0xFF, 0x00, 0xF4, 0x2F, 0x00, 0xFD, 0x0B, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0x00, + 0xD0, 0xBF, 0x40, 0xFF, 0x02, 0x00, 0xFC, 0x0F, 0xF8, 0x1F, 0x00, 0x40, 0xFF, 0xD2, 0xBF, 0x00, + 0x00, 0xF0, 0x3F, 0xFE, 0x07, 0x00, 0x00, 0xFE, 0x07, + // Unicode: [0x005F, underscore] + 0xA9, 0xAA, 0xAA, 0xAA, 0xAA, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + // Unicode: [0x0060, grave] + 0x05, 0x00, 0xB8, 0x01, 0xE0, 0x2F, 0x80, 0xFF, 0x0B, 0xF9, 0xFF, 0x41, 0xFE, 0x07, 0x80, 0x1F, + 0x00, 0x60, + // Unicode: [0x0061, a] + 0x00, 0xE4, 0xBF, 0x81, 0xFF, 0x01, 0xF8, 0xFF, 0x2F, 0xFE, 0x07, 0xFC, 0xFF, 0xFF, 0xFA, 0x1F, + 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0xFF, 0x96, 0xFF, 0xFF, 0xF1, 0xFF, 0x01, 0xE0, 0xFF, 0xD7, + 0xFF, 0x01, 0x00, 0xFE, 0x9F, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x80, 0xFF, 0xF9, + 0x1F, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0xFE, + 0x0B, 0x00, 0xC0, 0xFF, 0xF5, 0x7F, 0x00, 0x80, 0xFF, 0xC7, 0xFF, 0x07, 0x80, 0xFF, 0x1F, 0xFD, + 0xBF, 0xE5, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xBF, 0xFE, 0x07, 0xE0, + 0xFF, 0xBF, 0xF8, 0x1F, 0x00, 0xF9, 0x6F, 0xE0, 0x7F, + // Unicode: [0x0062, b] + 0x55, 0x01, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xE0, + 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x41, 0xFE, 0x0A, 0x00, 0xFE, 0x87, 0xFF, 0xFF, 0x02, 0xF8, + 0xDF, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0xFF, 0xBF, 0xE5, 0xFF, 0x1F, 0xFE, + 0x7F, 0x00, 0xF4, 0xBF, 0xF8, 0x7F, 0x00, 0x40, 0xFF, 0xE3, 0xFF, 0x00, 0x00, 0xFC, 0x9F, 0xFF, + 0x01, 0x00, 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0x00, 0xFE, 0xEB, 0x7F, + 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFE, 0x1F, 0x00, 0xE0, 0xFF, 0xF8, 0xFF, + 0x01, 0xD0, 0xFF, 0xE2, 0xFF, 0x6F, 0xF9, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFE, 0xFB, + 0xFF, 0xFF, 0x0B, 0xF8, 0x5F, 0xFF, 0xFF, 0x0B, 0xE0, 0x7F, 0x90, 0xBF, 0x02, 0x00, + // Unicode: [0x0063, c] + 0x00, 0x90, 0xFF, 0x06, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x80, 0xFF, + 0xFF, 0xFF, 0x1F, 0xF4, 0xBF, 0x95, 0xFF, 0x0F, 0xFF, 0x0B, 0x40, 0xFF, 0xD7, 0xFF, 0x00, 0x80, + 0xFF, 0xFA, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xE0, + 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x40, 0xFF, 0x03, + 0x00, 0xFE, 0xCB, 0xFF, 0x02, 0xD0, 0xFF, 0xD1, 0xFF, 0x56, 0xFE, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF, + 0x07, 0xE0, 0xFF, 0xFF, 0x7F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0xFE, 0x1B, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF8, 0x1F, + 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0xF9, 0x6B, 0xE0, 0x7F, 0x00, 0xFE, 0xFF, 0x8B, 0xFF, 0x01, + 0xFF, 0xFF, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0xBF, 0xE5, 0xFF, 0x7F, 0xFC, + 0x7F, 0x00, 0xF8, 0xFF, 0xF5, 0x7F, 0x00, 0x80, 0xFF, 0xE7, 0xBF, 0x00, 0x00, 0xFC, 0x9F, 0xFF, + 0x01, 0x00, 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0x80, 0xFF, 0xF9, 0x1F, 0x00, 0x00, 0xFE, 0xE7, 0x7F, + 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFD, 0x1F, 0x00, 0xE0, 0xFF, 0xF1, 0xFF, + 0x01, 0xE0, 0xFF, 0x47, 0xFF, 0x6F, 0xF9, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, + 0xFF, 0xAF, 0xFF, 0x01, 0xF8, 0xFF, 0x2F, 0xFE, 0x07, 0x40, 0xFE, 0x1B, 0xF8, 0x1F, + // Unicode: [0x0065, e] + 0x00, 0x90, 0xFF, 0x06, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x02, 0xE0, + 0xFF, 0xFF, 0xFF, 0x07, 0xF4, 0xBF, 0x41, 0xFE, 0x1F, 0xFC, 0x1F, 0x00, 0xF8, 0x2F, 0xFD, 0x0B, + 0x00, 0xF0, 0x3F, 0xFE, 0x07, 0x00, 0xE0, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x57, 0x55, 0x55, 0x15, 0xFE, 0x07, 0x00, 0x00, + 0x00, 0xFD, 0x0B, 0x00, 0xA4, 0x1A, 0xFC, 0x1F, 0x00, 0xFC, 0x2F, 0xF4, 0xBF, 0x51, 0xFF, 0x0F, + 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x00, + 0x90, 0xFF, 0x06, 0x00, + // Unicode: [0x0066, f] + 0x00, 0x90, 0x3E, 0x00, 0xF8, 0x3F, 0x00, 0xFE, 0x3F, 0x40, 0xFF, 0x3F, 0x80, 0xFF, 0x17, 0xC0, + 0xFF, 0x01, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xFD, 0xFF, 0x7F, 0xFD, 0xFF, 0x7F, 0xFD, 0xFF, + 0x7F, 0xFD, 0xFF, 0x7F, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, + 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, + 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, 0x00, 0xC0, 0xFF, + 0x00, 0xC0, 0xFF, 0x00, + // Unicode: [0x0067, g] + 0x00, 0xE4, 0xBF, 0x81, 0xFF, 0x01, 0xF8, 0xFF, 0x2F, 0xFE, 0x07, 0xFC, 0xFF, 0xFF, 0xFB, 0x1F, + 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0xFF, 0x96, 0xFF, 0xFF, 0xF1, 0xFF, 0x01, 0xE0, 0xFF, 0xD7, + 0xFF, 0x01, 0x00, 0xFE, 0x9F, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x80, 0xFF, 0xF9, + 0x1F, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0xFE, + 0x0B, 0x00, 0xC0, 0xFF, 0xF5, 0x7F, 0x00, 0x80, 0xFF, 0xC7, 0xFF, 0x07, 0x80, 0xFF, 0x1F, 0xFD, + 0xBF, 0xE5, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xBF, 0xFE, 0x07, 0xE0, + 0xFF, 0xBF, 0xF8, 0x1F, 0x00, 0xF9, 0x6F, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFE, 0xC7, 0xFF, 0x01, 0x00, 0xFD, 0x0F, 0xFE, 0x0F, 0x00, 0xFD, 0x2F, 0xF4, 0xFF, + 0x56, 0xFE, 0x7F, 0x80, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xFF, 0xBF, 0x00, 0x40, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0068, h] + 0x55, 0x01, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x1F, + 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, + 0x00, 0xF8, 0x1F, 0xE4, 0x6F, 0x00, 0xFE, 0xD7, 0xFF, 0xBF, 0x80, 0xFF, 0xFE, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFF, 0xBF, 0xF8, 0xFF, 0x56, 0xFE, 0x3F, 0xFE, 0x2F, 0x00, 0xFD, 0x9F, 0xFF, 0x03, + 0x00, 0xFE, 0xEB, 0x7F, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xF0, + 0xBF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xC0, 0xFF, 0xFE, + 0x07, 0x00, 0xF0, 0xBF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, + 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xF0, 0xBF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, + 0x03, + // Unicode: [0x0069, i] + 0xA4, 0xE1, 0x7F, 0xFF, 0xFB, 0xBF, 0xFE, 0x87, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0xFE, + 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, + 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, + // Unicode: [0x006A, j] + 0x00, 0xBE, 0x00, 0xFE, 0x07, 0xFC, 0x2F, 0xF0, 0xBF, 0x80, 0xFF, 0x01, 0xA4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0x01, 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x07, + 0xF8, 0x1F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, 0x80, + 0xFF, 0x01, 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, 0xD5, 0xFF, 0xFD, 0xFF, 0xF3, 0xFF, 0xCB, 0xFF, + 0x0B, 0xFF, 0x06, 0x00, + // Unicode: [0x006B, k] + 0x55, 0x01, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xE0, 0x7F, 0x00, + 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xE0, + 0x7F, 0x00, 0xF8, 0xBF, 0xFE, 0x07, 0xD0, 0xFF, 0xE3, 0x7F, 0x00, 0xFF, 0x0F, 0xFE, 0x07, 0xF8, + 0x7F, 0xE0, 0x7F, 0xE0, 0xFF, 0x01, 0xFE, 0x47, 0xFF, 0x0B, 0xE0, 0x7F, 0xFD, 0x2F, 0x00, 0xFE, + 0xF7, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x00, + 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0xE0, 0x7F, 0xFF, 0x0B, 0x00, 0xFE, 0xD7, 0xFF, 0x02, 0xE0, 0x7F, + 0xF4, 0xBF, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0xE0, 0x7F, 0x80, 0xFF, 0x07, 0xFE, 0x07, 0xF0, 0xFF, + 0xE0, 0x7F, 0x00, 0xFD, 0x3F, 0xFE, 0x07, 0x40, 0xFF, 0x0B, + // Unicode: [0x006C, l] + 0x55, 0xE1, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, + 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, + 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0xE7, 0x7F, 0xFE, 0x07, + // Unicode: [0x006D, m] + 0xFE, 0x47, 0xFE, 0x1A, 0x00, 0xE4, 0x6F, 0x00, 0xF8, 0x9F, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, 0x1F, + 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFD, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0x1F, 0xFE, 0xBF, 0x95, 0xFF, 0xFF, 0x5B, 0xFE, 0xBF, 0xF8, 0xBF, 0x00, 0xF4, 0xFF, 0x07, 0x80, + 0xFF, 0xE3, 0xFF, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xFC, 0x9F, 0xFF, 0x02, 0x00, 0xFD, 0x0F, 0x00, + 0xE0, 0x7F, 0xFE, 0x07, 0x00, 0xF0, 0x3F, 0x00, 0x40, 0xFF, 0xF9, 0x1F, 0x00, 0xC0, 0xFF, 0x00, + 0x00, 0xFD, 0xE7, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xF4, 0x9F, 0xFF, 0x01, 0x00, 0xFC, 0x0F, + 0x00, 0xD0, 0x7F, 0xFE, 0x07, 0x00, 0xF0, 0x3F, 0x00, 0x40, 0xFF, 0xF9, 0x1F, 0x00, 0xC0, 0xFF, + 0x00, 0x00, 0xFD, 0xE7, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xF4, 0x9F, 0xFF, 0x01, 0x00, 0xFC, + 0x0F, 0x00, 0xD0, 0x7F, 0xFE, 0x07, 0x00, 0xF0, 0x3F, 0x00, 0x40, 0xFF, 0xF9, 0x1F, 0x00, 0xC0, + 0xFF, 0x00, 0x00, 0xFD, 0xE7, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0xF4, 0x9F, 0xFF, 0x01, 0x00, + 0xFC, 0x0F, 0x00, 0xD0, 0x7F, + // Unicode: [0x006E, n] + 0xFE, 0x07, 0xFA, 0x1B, 0x80, 0xFF, 0xF5, 0xFF, 0x2F, 0xE0, 0xBF, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, + 0xFF, 0xFF, 0x2F, 0xFE, 0xBF, 0x95, 0xFF, 0x9F, 0xFF, 0x0B, 0x40, 0xFF, 0xEB, 0xFF, 0x00, 0x80, + 0xFF, 0xFA, 0x1F, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0xF0, 0xBF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, + 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xF0, 0xBF, 0xFF, 0x01, + 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xF0, + 0xBF, 0xFF, 0x01, 0x00, 0xFC, 0xEF, 0x7F, 0x00, 0x00, 0xFF, 0xFB, 0x1F, 0x00, 0xC0, 0xFF, + // Unicode: [0x006F, o] + 0x00, 0x90, 0xFF, 0x06, 0x00, 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xF4, 0xFF, 0x96, 0xFF, 0x2F, 0xFC, 0x2F, 0x00, 0xF8, 0x7F, 0xFD, 0x0F, + 0x00, 0xE0, 0xBF, 0xFE, 0x0B, 0x00, 0xD0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, + 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0xFE, 0x0B, 0x00, 0xD0, + 0xFF, 0xFD, 0x0F, 0x00, 0xF0, 0xBF, 0xFC, 0x2F, 0x00, 0xF8, 0x3F, 0xF4, 0xFF, 0x96, 0xFF, 0x2F, + 0xE0, 0xFF, 0xFF, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x00, + 0x90, 0xFF, 0x06, 0x00, + // Unicode: [0x0070, p] + 0xFE, 0x07, 0xF9, 0x2B, 0x00, 0xF8, 0x5F, 0xFE, 0xFF, 0x0B, 0xE0, 0xBF, 0xFF, 0xFF, 0xBF, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFE, 0xFF, 0x96, 0xFF, 0x7F, 0xF8, 0xFF, 0x01, 0xD0, 0xFF, 0xE2, + 0xFF, 0x01, 0x00, 0xFD, 0x8F, 0xFF, 0x03, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x80, 0xFF, 0xF9, + 0x1F, 0x00, 0x00, 0xFD, 0xEB, 0x7F, 0x00, 0x00, 0xF8, 0xAF, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0xFE, + 0x0B, 0x00, 0xC0, 0xFF, 0xF9, 0x7F, 0x00, 0x80, 0xFF, 0xE3, 0xFF, 0x07, 0x40, 0xFF, 0x8B, 0xFF, + 0xBF, 0xE5, 0xFF, 0x1F, 0xFE, 0xFF, 0xFF, 0xFF, 0x2F, 0xF8, 0xDF, 0xFF, 0xFF, 0x2F, 0xE0, 0x7F, + 0xF8, 0xFF, 0x2F, 0x80, 0xFF, 0x41, 0xFE, 0x0A, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF8, 0x1F, + 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x07, + 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x00, 0xA4, 0xBF, 0x81, 0xFF, 0x01, 0xF8, 0xFF, 0x6F, 0xFE, 0x07, 0xF8, 0xFF, 0xFF, 0xFB, 0x1F, + 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, 0x96, 0xFF, 0xFF, 0xF1, 0xFF, 0x01, 0xE0, 0xFF, 0xD7, + 0xFF, 0x01, 0x00, 0xFE, 0x9F, 0xFF, 0x02, 0x00, 0xF0, 0x7F, 0xFE, 0x07, 0x00, 0x80, 0xFF, 0xF9, + 0x1F, 0x00, 0x00, 0xFE, 0xE7, 0x7F, 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x01, 0x00, 0xE0, 0x7F, 0xFE, + 0x0B, 0x00, 0xC0, 0xFF, 0xF5, 0x7F, 0x00, 0x80, 0xFF, 0xC7, 0xFF, 0x07, 0x80, 0xFF, 0x1F, 0xFD, + 0xBF, 0xE5, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFE, 0x07, 0xE0, + 0xFF, 0xBF, 0xF8, 0x1F, 0x00, 0xF9, 0x6F, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, + 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, + // Unicode: [0x0072, r] + 0xFE, 0x07, 0x79, 0xFE, 0xD7, 0x7F, 0xFE, 0xF7, 0x7F, 0xFE, 0xFF, 0x7F, 0xFE, 0xFF, 0x7F, 0xFE, + 0xBF, 0x15, 0xFE, 0x1F, 0x00, 0xFE, 0x0B, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, + 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, + 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, + // Unicode: [0x0073, s] + 0x00, 0xE9, 0xAF, 0x01, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, + 0x1F, 0xFC, 0x1F, 0xE0, 0xFF, 0xF0, 0x2F, 0x00, 0xFE, 0xC3, 0xBF, 0x00, 0x54, 0x05, 0xFF, 0x1B, + 0x00, 0x00, 0xF4, 0xFF, 0x1B, 0x00, 0x80, 0xFF, 0xFF, 0x1B, 0x00, 0xE4, 0xFF, 0xFF, 0x02, 0x00, + 0xE4, 0xFF, 0x2F, 0x00, 0x00, 0xE4, 0xFF, 0x54, 0x15, 0x00, 0xFD, 0xD7, 0xBF, 0x00, 0xF4, 0x1F, + 0xFF, 0x0B, 0xF4, 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0xF8, 0xFF, 0xFF, + 0x01, 0x00, 0xF9, 0x6F, 0x00, + // Unicode: [0x0074, t] + 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xE0, 0x7F, 0x00, 0xE0, 0x3F, + 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, + 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0x7F, 0x00, 0xE0, 0xBF, 0x15, 0xD0, + 0xFF, 0x7F, 0xC0, 0xFF, 0x7F, 0x40, 0xFF, 0x7F, 0x00, 0xE8, 0x7F, + // Unicode: [0x0075, u] + 0xFE, 0x03, 0x00, 0xF4, 0xAF, 0xFF, 0x00, 0x00, 0xFD, 0xEB, 0x3F, 0x00, 0x40, 0xFF, 0xFA, 0x0F, + 0x00, 0xD0, 0xBF, 0xFE, 0x03, 0x00, 0xF4, 0xAF, 0xFF, 0x00, 0x00, 0xFD, 0xEB, 0x3F, 0x00, 0x40, + 0xFF, 0xFA, 0x0F, 0x00, 0xD0, 0xBF, 0xFE, 0x03, 0x00, 0xF4, 0xAF, 0xFF, 0x00, 0x00, 0xFD, 0xEB, + 0x3F, 0x00, 0x40, 0xFF, 0xFA, 0x1F, 0x00, 0xD0, 0xBF, 0xFE, 0x07, 0x00, 0xF4, 0xAF, 0xFF, 0x02, + 0x00, 0xFE, 0xDB, 0xFF, 0x01, 0xD0, 0xFF, 0xF2, 0xFF, 0x56, 0xFE, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, + 0x2F, 0xF8, 0xFF, 0xFF, 0xFE, 0x0B, 0xF8, 0xFF, 0x6F, 0xFF, 0x02, 0xA4, 0xBF, 0xD1, 0xBF, + // Unicode: [0x0076, v] + 0xFD, 0x0B, 0x00, 0x80, 0xFF, 0xF1, 0x3F, 0x00, 0x00, 0xFF, 0x83, 0xFF, 0x01, 0x00, 0xFD, 0x0B, + 0xFD, 0x0B, 0x00, 0xF8, 0x1F, 0xF0, 0x3F, 0x00, 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xD0, 0xBF, 0x00, + 0xFD, 0x0B, 0x80, 0xFF, 0x01, 0xF0, 0x3F, 0x00, 0xFF, 0x03, 0x80, 0xFF, 0x01, 0xFD, 0x0B, 0x00, + 0xFD, 0x0B, 0xF8, 0x1F, 0x00, 0xF0, 0x3F, 0xF0, 0x3F, 0x00, 0x80, 0xFF, 0xD1, 0x7F, 0x00, 0x00, + 0xFD, 0x8B, 0xFF, 0x00, 0x00, 0xF0, 0x3F, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xFE, 0x07, 0x00, 0x00, + 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, + // Unicode: [0x0077, w] + 0xFE, 0x07, 0x00, 0xFE, 0x0B, 0x00, 0xFE, 0xF7, 0x2F, 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0xCF, 0xBF, + 0x00, 0xF4, 0xFF, 0x00, 0xF0, 0x2F, 0xFE, 0x03, 0xD0, 0xFF, 0x07, 0xD0, 0x7F, 0xF4, 0x1F, 0x80, + 0xFF, 0x2F, 0x40, 0xFF, 0xD0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0xFE, 0x02, 0xFF, 0x02, 0xFD, 0xFE, + 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF4, 0xE7, 0x1F, 0xF0, 0x1F, 0xD0, 0x3F, 0xE0, 0x9F, 0xBF, 0xD0, + 0x3F, 0x00, 0xFF, 0xC1, 0x3F, 0xFD, 0x82, 0xBF, 0x00, 0xF8, 0x4B, 0xBF, 0xF0, 0x0F, 0xFE, 0x01, + 0xD0, 0x2F, 0xFD, 0x81, 0x7F, 0xFC, 0x03, 0x40, 0xFF, 0xF8, 0x07, 0xFE, 0xF6, 0x0B, 0x00, 0xFC, + 0xF7, 0x0F, 0xF4, 0xDB, 0x1F, 0x00, 0xE0, 0xEF, 0x2F, 0xC0, 0xBF, 0x7F, 0x00, 0x40, 0xFF, 0x7F, + 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0x03, 0xD0, + 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xF8, 0x2F, + 0x00, + // Unicode: [0x0078, x] + 0xFD, 0x0F, 0x00, 0xFC, 0x1F, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xFF, 0x07, 0xF0, 0x3F, 0x40, 0xFF, + 0x03, 0xFE, 0x07, 0x80, 0xFF, 0xD2, 0xBF, 0x00, 0xD0, 0xFF, 0xF9, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, + 0x01, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, + 0x00, 0xFE, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x80, 0xFF, + 0xFF, 0x07, 0x00, 0xF4, 0x6F, 0xFF, 0x03, 0x00, 0xFE, 0x87, 0xFF, 0x02, 0xD0, 0xBF, 0xC0, 0xFF, + 0x01, 0xFC, 0x0F, 0xD0, 0xFF, 0x80, 0xFF, 0x01, 0xE0, 0xBF, 0xF4, 0x3F, 0x00, 0xF4, 0x7F, + // Unicode: [0x0079, y] + 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0xF6, 0x7F, 0x00, 0x00, 0xFE, 0x87, 0xFF, 0x02, 0x00, 0xFD, 0x0F, + 0xFD, 0x0F, 0x00, 0xF8, 0x2F, 0xF0, 0x7F, 0x00, 0xF0, 0x3F, 0x80, 0xFF, 0x02, 0xD0, 0xBF, 0x00, + 0xFD, 0x0F, 0x80, 0xFF, 0x01, 0xE0, 0x7F, 0x00, 0xFF, 0x03, 0x40, 0xFF, 0x02, 0xFD, 0x07, 0x00, + 0xFC, 0x0F, 0xF8, 0x0F, 0x00, 0xE0, 0x7F, 0xF0, 0x2F, 0x00, 0x40, 0xFF, 0xE3, 0x7F, 0x00, 0x00, + 0xF8, 0xDF, 0xBF, 0x00, 0x00, 0xD0, 0xBF, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, + 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xF4, + 0x2F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFE, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x7F, 0x00, + 0x00, 0xFE, 0x0F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFC, 0x2F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0xFC, 0x2F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xAF, + 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xBF, + // Unicode: [0x007B, braceleft] + 0x00, 0xE4, 0x3F, 0x80, 0xFF, 0x0F, 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0xD0, 0xFF, 0x15, 0xF4, 0x1F, + 0x00, 0xFD, 0x07, 0x40, 0xFF, 0x01, 0xD0, 0x7F, 0x00, 0xF4, 0x2F, 0x00, 0xFC, 0x0B, 0x00, 0xFF, + 0x02, 0xC0, 0xBF, 0x00, 0xE0, 0x3F, 0x00, 0xF8, 0x0F, 0x00, 0xFF, 0x03, 0xD0, 0xBF, 0x00, 0xFD, + 0x1F, 0xF0, 0xFF, 0x02, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x0B, 0x40, 0xFF, 0x07, 0x40, + 0xFF, 0x02, 0xC0, 0xFF, 0x00, 0xE0, 0x3F, 0x00, 0xF8, 0x0F, 0x00, 0xFF, 0x02, 0xC0, 0xBF, 0x00, + 0xF0, 0x2F, 0x00, 0xFD, 0x0B, 0x40, 0xFF, 0x01, 0xD0, 0x7F, 0x00, 0xF4, 0x1F, 0x00, 0xFD, 0x07, + 0x40, 0xFF, 0x57, 0xC0, 0xFF, 0x3F, 0xE0, 0xFF, 0x0F, 0xE0, 0xFF, 0x03, 0x90, 0xFF, + // Unicode: [0x007C, bar] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + // Unicode: [0x007D, braceright] + 0xFD, 0x1B, 0x00, 0xFD, 0x7F, 0x00, 0xFD, 0xFF, 0x01, 0xFD, 0xFF, 0x02, 0x54, 0xFF, 0x03, 0x00, + 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x03, 0x00, 0xFF, + 0x03, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, + 0x00, 0xFF, 0x03, 0x00, 0xFE, 0x1B, 0x00, 0xFC, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, + 0xFC, 0xFF, 0x00, 0xFE, 0x1B, 0x00, 0xFF, 0x03, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFF, + 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFF, 0x02, 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x03, + 0x00, 0xFE, 0x03, 0x00, 0xFE, 0x07, 0x00, 0xFE, 0x07, 0x54, 0xFF, 0x03, 0xFD, 0xFF, 0x02, 0xFD, + 0xFF, 0x01, 0xFD, 0x7F, 0x00, 0xFD, 0x1B, 0x00, + // Unicode: [0x007E, asciitilde] + 0x40, 0xFE, 0x01, 0xC0, 0x1F, 0xF4, 0xFF, 0x07, 0xF8, 0x47, 0xFF, 0xFF, 0x9B, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x2F, 0xFD, 0xEB, 0xFF, 0xFF, 0x83, 0x7F, 0x40, 0xFF, 0x7F, 0xE0, 0x0B, 0x00, 0xFE, + 0x02, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_4.cpp new file mode 100644 index 00000000..8e269068 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_35_2bpp_4.cpp @@ -0,0 +1,9 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_35_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0xA0, 0x02, 0xA4, 0x02, 0xA4, 0xC1, 0xFF, 0xD0, 0xBF, 0xE0, 0x7F, 0xFD, 0x1F, 0xFE, 0x0F, 0xFF, + 0xDB, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0x1F, 0xFD, 0x0B, 0xFE, 0x4B, 0x6E, 0x40, 0x2F, 0x80, + 0x2F +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_0.cpp new file mode 100644 index 00000000..4f981c32 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_0.cpp @@ -0,0 +1,972 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_40_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, + 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x2F, 0xF8, 0x1F, + 0xF4, 0x1F, 0xF4, 0x1F, 0xF4, 0x1F, 0xA4, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x90, 0x06, 0xF8, 0x2F, + 0xFC, 0x7F, 0xFD, 0x7F, 0xFD, 0x7F, 0xF8, 0x3F, 0xE0, 0x0B, + // Unicode: [0x0022, quotedbl] + 0xA9, 0x86, 0xAA, 0xFD, 0x87, 0xFF, 0xFD, 0x83, 0xFF, 0xFD, 0x83, 0xFF, 0xFD, 0x83, 0xBF, 0xFD, + 0x43, 0xBF, 0xFC, 0x43, 0xBF, 0xFC, 0x43, 0xBF, 0xFC, 0x42, 0xBF, + // Unicode: [0x0023, numbersign] + 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xFE, 0x0B, + 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0xF4, 0x3F, + 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x80, 0xFF, + 0x02, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0B, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, + 0xF4, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x00, + 0x80, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0x0B, + 0x00, 0xFD, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFC, + 0x1F, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x07, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0xF4, 0x2F, 0x00, 0x00, 0x00, + 0xF4, 0x3F, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x02, 0x00, 0x00, 0x00, 0xC0, 0x0B, 0x00, 0x00, + 0x00, 0x50, 0x6F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0xBF, 0xBD, 0xFE, 0xBF, 0xF4, + 0xBF, 0xF0, 0xE2, 0xFF, 0xE3, 0xFF, 0xC0, 0x0B, 0xFF, 0xDF, 0xFF, 0x03, 0x2F, 0xA4, 0x6A, 0xFF, + 0x0F, 0xBC, 0x00, 0x00, 0xF8, 0xBF, 0xF0, 0x02, 0x00, 0xE0, 0xFF, 0xCB, 0x0B, 0x00, 0x00, 0xFF, + 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x1A, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE4, + 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xE4, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF, 0xBF, 0x00, 0x00, + 0xF0, 0xF6, 0xFF, 0x07, 0x00, 0xC0, 0x0B, 0xFE, 0x2F, 0x00, 0x00, 0x2F, 0xF4, 0xBF, 0xA9, 0x0A, + 0xBC, 0xD0, 0xFF, 0xFA, 0x7F, 0xF0, 0x42, 0xFF, 0xEB, 0xFF, 0xC2, 0x0B, 0xFE, 0x5F, 0xFF, 0x6F, + 0x6F, 0xFE, 0x3F, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, + 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x40, 0xFE, 0x06, 0x00, 0x00, 0x00, 0xF0, + 0x02, 0x00, 0x00, 0x00, 0xC0, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, + // Unicode: [0x0025, percent] + 0x40, 0xFE, 0x0A, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xF8, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0x01, 0x40, + 0xFF, 0xFF, 0x0F, 0x00, 0xF8, 0x2F, 0x00, 0xF0, 0xBF, 0xFE, 0x0B, 0x40, 0xFF, 0x07, 0x00, 0xFD, + 0x03, 0xFD, 0x03, 0xE0, 0xBF, 0x00, 0x40, 0xBF, 0x00, 0xFF, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0x2F, + 0xC0, 0x7F, 0x80, 0xFF, 0x02, 0x00, 0xF4, 0x0B, 0xF0, 0x0F, 0xF4, 0x3F, 0x00, 0x00, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0B, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x54, 0x01, + 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x40, 0x15, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0x07, 0xF9, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x0F, + 0xFC, 0xFF, 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0x82, 0xFF, 0xD1, 0x7F, 0x00, 0x00, 0xF4, 0x3F, 0xE0, + 0x1F, 0xE0, 0x2F, 0x00, 0x00, 0xFF, 0x0B, 0xFC, 0x03, 0xF4, 0x0B, 0x00, 0xD0, 0xFF, 0x00, 0xFF, + 0x00, 0xFD, 0x02, 0x00, 0xFC, 0x1F, 0xC0, 0x7F, 0x80, 0xBF, 0x00, 0x80, 0xFF, 0x03, 0xE0, 0x2F, + 0xF0, 0x1F, 0x00, 0xF0, 0x7F, 0x00, 0xF4, 0x6F, 0xFE, 0x03, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0xFF, + 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xE4, 0x6F, + 0x00, + // Unicode: [0x0026, ampersand] + 0x00, 0x00, 0xE4, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, + 0xBF, 0xF9, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x0F, + 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x54, 0x05, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xBF, 0x00, 0xF4, 0xBF, + 0x00, 0xFF, 0xBF, 0xFF, 0x2F, 0x80, 0xFF, 0x03, 0xF8, 0xBF, 0xC0, 0xFF, 0x0B, 0xFD, 0x1F, 0xC0, + 0xFF, 0x02, 0xF0, 0xFF, 0xF6, 0xFF, 0x00, 0xFD, 0x1F, 0x00, 0xFC, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, + 0x00, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0xFE, 0x0F, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0x01, + 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0xC0, 0xFF, 0x1B, 0x00, + 0xFE, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xFF, 0xFF, 0x2F, 0xFC, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x7F, 0x00, + 0xFF, 0x2F, 0x00, 0x90, 0xFF, 0x6B, 0x00, 0xD0, 0xFF, 0x0B, + // Unicode: [0x0027, quotesingle] + 0xA9, 0xD6, 0x7F, 0xFD, 0xD3, 0x3F, 0xFD, 0xD3, 0x3F, 0xFC, 0xC3, 0x3F, 0xFC, 0x02, + // Unicode: [0x0028, parenleft] + 0x00, 0x00, 0xA9, 0x2A, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0xFC, 0x3F, 0x00, 0x80, 0xFF, 0x07, 0x00, + 0xF8, 0xBF, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xFD, 0x2F, 0x00, 0x80, 0xFF, + 0x03, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xF4, 0x7F, 0x00, + 0x00, 0xFD, 0x0F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x80, 0xFF, + 0x02, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x80, 0xFF, 0x02, + 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0xC0, 0xFF, 0x01, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xF8, + 0x7F, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x40, 0xFF, + 0x0B, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x03, + // Unicode: [0x0029, parenright] + 0xA9, 0x2A, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFF, + 0x0B, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFC, 0x2F, + 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x3F, 0x00, + 0x00, 0xFD, 0x0F, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, + 0xFD, 0x0F, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xFF, + 0x0B, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xC0, 0xFF, 0x02, + 0x00, 0xF4, 0xBF, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x02, 0x00, 0xFC, 0x3F, 0x00, 0x80, 0xFF, 0x07, 0x00, 0xF4, 0xBF, + 0x00, 0x00, 0xFF, 0x0F, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0xFE, 0x1F, 0x00, 0x00, + // Unicode: [0x002A, asterisk] + 0x00, 0x54, 0x05, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x40, 0x7F, 0x00, 0xA0, 0xD0, 0x0F, 0x1D, 0xFD, + 0xF1, 0xD3, 0x8F, 0xFF, 0xBD, 0xFE, 0xE7, 0xFF, 0xFF, 0xFF, 0x41, 0xFE, 0xFF, 0x06, 0x40, 0xFE, + 0x2F, 0x00, 0xFE, 0xFF, 0xBF, 0xF1, 0xFF, 0xFF, 0xFF, 0xFA, 0xCB, 0xDB, 0x7F, 0xBC, 0xF0, 0x83, + 0x0B, 0x09, 0xFD, 0x80, 0x00, 0x40, 0x7F, 0x00, 0x00, 0xE0, 0x1F, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, + 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, + 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, + 0xF0, 0x3F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + // Unicode: [0x002C, comma] + 0x40, 0x55, 0x01, 0xFF, 0x07, 0xFD, 0x0F, 0xF4, 0x2F, 0xE0, 0x7F, 0xC0, 0xFF, 0x00, 0xFF, 0x01, + 0xFD, 0x03, 0xF8, 0x0B, 0xF0, 0x1F, 0xC0, 0x2F, 0x40, 0x7F, 0x00, + // Unicode: [0x002D, hyphen] + 0xAA, 0xAA, 0xAA, 0xAA, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + // Unicode: [0x002E, period] + 0x90, 0x06, 0xF4, 0x2F, 0xFC, 0x7F, 0xFD, 0xBF, 0xFC, 0x7F, 0xF8, 0x3F, 0xE0, 0x1B, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF8, + 0x3F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + 0xFD, 0x0F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, + 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xFC, 0x1F, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xFF, + 0x07, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0xC0, + 0xFF, 0x02, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, + 0xF0, 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x0F, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xD0, 0xFF, + 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xF4, + 0x3F, 0x00, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x06, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x07, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x0B, 0xF4, 0xFF, 0x06, 0xF9, 0xFF, 0x80, 0xFF, 0x07, 0x00, 0xFE, 0x1F, 0xFC, 0x2F, 0x00, 0xC0, + 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0xF8, 0x3F, 0xFD, 0x0F, 0x00, 0x40, 0xFF, 0xE7, 0xFF, 0x00, 0x00, + 0xF0, 0x7F, 0xFE, 0x0B, 0x00, 0x00, 0xFF, 0xEB, 0xBF, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0B, 0x00, + 0x00, 0xFF, 0xFB, 0xBF, 0x00, 0x00, 0xE0, 0xBF, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xEB, 0xBF, 0x00, + 0x00, 0xF0, 0xBF, 0xFE, 0x0B, 0x00, 0x00, 0xFF, 0xEB, 0xBF, 0x00, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, + 0x00, 0x00, 0xFF, 0xD7, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFC, 0x1F, 0x00, 0x80, 0xFF, 0xC3, 0xFF, + 0x03, 0x00, 0xFC, 0x2F, 0xF8, 0xBF, 0x00, 0xE0, 0xFF, 0x01, 0xFF, 0x7F, 0xE5, 0xFF, 0x0F, 0xE0, + 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, + 0x80, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0031, one] + 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0x4F, 0xE5, 0xFF, 0x00, + 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, + 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, + 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, + 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, + // Unicode: [0x0032, two] + 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0xFF, 0x7F, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0x3F, 0xD0, 0xFF, 0x07, 0xF4, 0xFF, 0x81, + 0xFF, 0x07, 0x40, 0xFF, 0x0B, 0xFF, 0x0B, 0x00, 0xFC, 0x2F, 0xFC, 0x1F, 0x00, 0xE0, 0xFF, 0xF4, + 0x7F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x02, 0x00, + 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x0B, 0x00, 0x00, + 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0x00, 0xD0, + 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, + 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0xAF, 0xAA, 0xAA, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + // Unicode: [0x0033, three] + 0x00, 0x90, 0xAA, 0x06, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFC, 0xBF, 0x41, 0xFE, 0x2F, 0xFD, 0x2F, + 0x00, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0xF4, 0x3F, 0xFE, 0x0B, 0x00, 0xF4, 0x3F, 0x00, 0x00, 0x00, + 0xF4, 0x3F, 0x00, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x90, 0xFF, + 0x0F, 0x00, 0xC0, 0xFF, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0xBF, 0x01, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFA, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x2F, 0x00, + 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0xFF, 0x07, + 0x00, 0xE0, 0xBF, 0xFF, 0x0B, 0x00, 0xF0, 0xBF, 0xFE, 0x0F, 0x00, 0xF4, 0x7F, 0xFD, 0x7F, 0x00, + 0xFD, 0x7F, 0xFC, 0xFF, 0xEB, 0xFF, 0x2F, 0xF4, 0xFF, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, + 0x07, 0x40, 0xFE, 0xFF, 0xBF, 0x01, 0x00, 0xA4, 0xFF, 0x1A, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x00, 0xA8, 0x6A, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, + 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xAF, 0xFF, 0x01, 0x00, 0x80, + 0xFF, 0xE3, 0x7F, 0x00, 0x00, 0xF4, 0x7F, 0xF8, 0x1F, 0x00, 0x00, 0xFF, 0x0B, 0xFE, 0x07, 0x00, + 0xE0, 0xFF, 0x80, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0xE0, 0x7F, 0x00, 0xC0, 0xFF, 0x02, 0xF8, 0x1F, + 0x00, 0xF8, 0x3F, 0x00, 0xFE, 0x07, 0x40, 0xFF, 0x07, 0x80, 0xFF, 0x01, 0xF0, 0xBF, 0x00, 0xE0, + 0x7F, 0x00, 0xFE, 0x0F, 0x00, 0xF8, 0x1F, 0xD0, 0xFF, 0x01, 0x00, 0xFE, 0x07, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, + // Unicode: [0x0035, five] + 0xFD, 0xFF, 0xFF, 0xFF, 0x2F, 0xF4, 0xFF, 0xFF, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x42, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0x2F, 0xF4, 0x2F, 0x00, 0x00, 0x00, 0xD0, + 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0x0B, 0x00, 0x00, 0x00, 0xF4, + 0x2F, 0x00, 0x00, 0x00, 0xD0, 0xBF, 0x90, 0xBF, 0x06, 0x40, 0xFF, 0xF6, 0xFF, 0xBF, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0x0F, 0xF4, 0xFF, 0xFF, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xFE, 0xFF, 0x47, 0xFF, + 0x2F, 0x00, 0xFE, 0x2F, 0xFD, 0x2F, 0x00, 0xE0, 0xFF, 0xA4, 0x2A, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x56, 0x15, + 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x0B, 0x00, 0xFC, 0x3F, 0xFC, 0xBF, + 0x00, 0xF9, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0xFE, 0x6F, 0x00, 0x00, + // Unicode: [0x0036, six] + 0x00, 0x00, 0xA9, 0x16, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x0B, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFD, 0x6F, 0x90, 0xFF, + 0x0B, 0xF0, 0xBF, 0x00, 0xE0, 0xFF, 0x40, 0xFF, 0x03, 0x00, 0xFC, 0x1F, 0xF4, 0x1F, 0x00, 0x40, + 0xAA, 0x81, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xA9, + 0x05, 0x00, 0xFC, 0x4B, 0xFE, 0xFF, 0x06, 0xC0, 0xBF, 0xFD, 0xFF, 0xFF, 0x01, 0xFD, 0xFB, 0xFF, + 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, 0x06, 0xF8, 0xFF, 0xD1, 0xFF, 0x07, + 0x00, 0xFD, 0x2F, 0xFC, 0x2F, 0x00, 0x80, 0xFF, 0xC3, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0xFC, 0x1F, + 0x00, 0x00, 0xFF, 0x87, 0xFF, 0x01, 0x00, 0xF0, 0x7F, 0xF8, 0x1F, 0x00, 0x40, 0xFF, 0x47, 0xFF, + 0x02, 0x00, 0xF8, 0x3F, 0xF0, 0x7F, 0x00, 0xC0, 0xFF, 0x02, 0xFE, 0x2F, 0x40, 0xFF, 0x1F, 0xD0, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, + 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0xFE, 0x6F, 0x00, 0x00, + // Unicode: [0x0037, seven] + 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, + 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0x00, + 0xFF, 0x0B, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, + 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0x3F, 0x00, + 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, + 0x00, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xD0, + 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x3F, + 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, + 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x6F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xAB, 0xFF, 0xFF, 0x80, 0xFF, 0x1B, 0x40, 0xFF, + 0x1F, 0xFC, 0x3F, 0x00, 0xD0, 0xFF, 0xC2, 0xFF, 0x02, 0x00, 0xFC, 0x2F, 0xFC, 0x2F, 0x00, 0x80, + 0xFF, 0x82, 0xFF, 0x02, 0x00, 0xFC, 0x2F, 0xF8, 0x2F, 0x00, 0xC0, 0xFF, 0x01, 0xFF, 0x0B, 0x00, + 0xFE, 0x0B, 0xD0, 0xFF, 0x56, 0xFD, 0x3F, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, + 0xFF, 0x03, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0x1F, + 0x90, 0xFF, 0x1F, 0xFC, 0x2F, 0x00, 0xD0, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0xF8, 0x3F, 0xFE, 0x0F, + 0x00, 0x40, 0xFF, 0xE7, 0xBF, 0x00, 0x00, 0xF0, 0x7F, 0xFE, 0x0B, 0x00, 0x40, 0xFF, 0xE7, 0xFF, + 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x2F, 0x00, 0xC0, 0xFF, 0xC3, 0xFF, 0x1B, 0x40, 0xFF, 0x2F, 0xF4, + 0xFF, 0xAF, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0xD0, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, + // Unicode: [0x0039, nine] + 0x00, 0x50, 0xBA, 0x06, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0x7F, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0x2F, 0xD0, 0xFF, 0x07, 0xF4, 0xFF, 0xC1, + 0xFF, 0x07, 0x00, 0xFF, 0x0B, 0xFF, 0x0B, 0x00, 0xF4, 0x3F, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0xF5, + 0x3F, 0x00, 0x00, 0xFE, 0xD7, 0xFF, 0x00, 0x00, 0xF8, 0x5F, 0xFF, 0x03, 0x00, 0xE0, 0xBF, 0xFD, + 0x1F, 0x00, 0xC0, 0xFF, 0xF2, 0xFF, 0x00, 0x80, 0xFF, 0x8B, 0xFF, 0x0B, 0x40, 0xFF, 0x2F, 0xFD, + 0xFF, 0xEA, 0xFF, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0xFE, 0x0B, 0xE0, + 0xFF, 0xFF, 0xF6, 0x2F, 0x00, 0xE4, 0xAF, 0xD0, 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xFD, 0x47, 0x55, 0x01, 0x00, 0xF8, 0x1F, 0xFD, 0x0F, 0x00, 0xF0, 0x3F, 0xF4, 0x7F, + 0x00, 0xD0, 0xBF, 0xC0, 0xFF, 0x07, 0xD0, 0xFF, 0x01, 0xFD, 0xFF, 0xFA, 0xFF, 0x03, 0xE0, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE8, + 0xBF, 0x01, 0x00, + // Unicode: [0x003A, colon] + 0xE0, 0x1B, 0xF8, 0x3F, 0xFC, 0x7F, 0xFD, 0xBF, 0xFC, 0x7F, 0xF4, 0x2F, 0x90, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x06, 0xF4, 0x2F, 0xFC, 0x7F, 0xFD, 0xBF, 0xFC, 0x7F, 0xF8, 0x3F, 0xE0, 0x1B, + // Unicode: [0x003B, semicolon] + 0xE0, 0x1B, 0xF8, 0x3F, 0xFC, 0x7F, 0xFD, 0xBF, 0xFC, 0x7F, 0xF4, 0x2F, 0x90, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xBF, 0xF0, 0x7F, 0xF4, 0x3F, 0xF8, 0x1F, 0xF8, 0x0F, 0xFC, 0x0B, 0xFD, 0x07, + 0xFD, 0x03, 0xFE, 0x01, 0xFF, 0x00, 0xBF, 0x00, 0x15, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, 0x07, + 0x00, 0xF8, 0xFF, 0x01, 0x00, 0xFE, 0x7F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, 0x07, 0x00, + 0xF8, 0xFF, 0x01, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0x00, + 0xD0, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0x02, + 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0x7F, + // Unicode: [0x003D, equal] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0B, + // Unicode: [0x003E, greater] + 0x55, 0x15, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x80, + 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0xC0, + 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0xF4, 0xFF, 0x02, 0x40, 0xFF, 0x2F, 0x00, 0xF4, 0xFF, + 0x02, 0x40, 0xFF, 0x2F, 0x00, 0xF4, 0xFF, 0x03, 0x40, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x03, 0x00, + 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, + // Unicode: [0x003F, question] + 0x00, 0x90, 0xAA, 0x01, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0xFD, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0x2F, 0xD0, 0xFF, 0xD7, 0xFF, 0x01, 0xD0, + 0xFF, 0xFA, 0x3F, 0x00, 0xF0, 0xBF, 0xA9, 0x0A, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0x0B, + 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0xD4, 0xFF, 0x0F, 0x80, 0xFF, + 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0x2F, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xAF, 0x06, + 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x06, + 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, + 0x00, 0xFD, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x00, 0x40, 0xFA, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x01, 0x00, 0xF9, 0xFF, 0x02, 0x00, 0xE0, 0xFF, + 0x07, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x2F, 0x40, 0xFF, 0x07, 0x00, 0x14, 0x00, 0x00, 0xE0, + 0x7F, 0x80, 0xFF, 0x01, 0xE0, 0xFF, 0xC2, 0xBF, 0xC0, 0xBF, 0xD0, 0x7F, 0x00, 0xFD, 0xFF, 0xDF, + 0x7F, 0x80, 0xBF, 0xF0, 0x2F, 0x40, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0xF4, 0x1F, 0xD0, 0xFF, + 0xFF, 0xFF, 0x3F, 0x40, 0xFF, 0xF8, 0x0B, 0xF0, 0xFF, 0x41, 0xFE, 0x3F, 0x40, 0xFF, 0xFC, 0x07, + 0xF4, 0x3F, 0x00, 0xFC, 0x2F, 0x40, 0xFF, 0xFD, 0x03, 0xFC, 0x1F, 0x00, 0xF4, 0x2F, 0x40, 0xFF, + 0xFE, 0x02, 0xFD, 0x0B, 0x00, 0xF4, 0x1F, 0x40, 0xFF, 0xFF, 0x02, 0xFD, 0x0B, 0x00, 0xF4, 0x1F, + 0x80, 0xBF, 0xFF, 0x01, 0xFE, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xBF, 0xFF, 0x01, 0xFE, 0x07, 0x00, + 0xFC, 0x0F, 0xC0, 0x7F, 0xFF, 0x01, 0xFE, 0x07, 0x00, 0xFD, 0x0B, 0xD0, 0x3F, 0xFF, 0x01, 0xFE, + 0x0F, 0x40, 0xFF, 0x0B, 0xF0, 0x1F, 0xFF, 0x01, 0xFD, 0x7F, 0xE5, 0xFF, 0x0F, 0xF8, 0x0F, 0xFF, + 0x02, 0xFC, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x07, 0xFE, 0x02, 0xF8, 0xFF, 0xFF, 0xF2, 0xFF, 0xFF, + 0x01, 0xFE, 0x07, 0xE0, 0xFF, 0xBF, 0xD0, 0xFF, 0x7F, 0x00, 0xFD, 0x0B, 0x40, 0xFE, 0x06, 0x40, + 0xFE, 0x06, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0x6F, 0x01, 0x50, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xAB, 0x01, 0x00, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0xFE, 0xEF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xF2, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0xF8, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0xFD, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0xFF, 0x0B, + 0x00, 0x00, 0xF4, 0x7F, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x0F, 0xD0, 0xFF, 0x01, 0x00, 0xC0, + 0xFF, 0x02, 0xF0, 0xBF, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xFE, 0x0F, 0x00, + 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xFF, 0x0B, 0x00, 0xF4, 0x7F, 0x00, 0x80, 0xFF, 0x03, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF4, 0xFF, + 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xAB, 0xAA, 0xAA, + 0xFF, 0x0B, 0xF4, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0xC1, + 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xBF, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0xFE, 0x0F, 0x00, + 0x00, 0x00, 0xFD, 0x1F, + // Unicode: [0x0042, B] + 0xFD, 0xFF, 0xFF, 0xAF, 0x01, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, 0xAF, 0xAA, 0xFE, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0xFE, + 0x3F, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xF8, 0x3F, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0xD2, 0xFF, 0x01, 0x40, + 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0xFD, 0xFF, 0xFF, + 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0x6F, 0x55, 0xF9, 0xFF, 0xD1, 0xFF, 0x01, + 0x00, 0xF8, 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0xE0, 0xBF, 0xFD, 0x1F, + 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x40, 0xFF, 0xDF, 0xFF, + 0x01, 0x00, 0xFD, 0xBF, 0xFD, 0xAF, 0xAA, 0xFE, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0xBF, 0x01, 0x00, + // Unicode: [0x0043, C] + 0x00, 0x00, 0x90, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xBF, 0x55, 0xF9, 0xFF, 0x0B, 0xD0, 0xFF, 0x0B, 0x00, 0x90, 0xFF, + 0x1F, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0x3F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0xF8, + 0x7F, 0x00, 0x00, 0x00, 0x50, 0x15, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x54, 0x15, 0xF4, 0xFF, 0x00, 0x00, + 0x00, 0xFD, 0x7F, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0x3F, 0xD0, 0xFF, 0x0B, 0x00, 0xD0, 0xFF, + 0x1F, 0x80, 0xFF, 0xBF, 0x45, 0xF9, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0xFE, + 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x90, 0xFF, 0x5B, 0x00, 0x00, + // Unicode: [0x0044, D] + 0xFD, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0x7F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0xBF, 0xEA, 0xFF, 0xFF, 0x0B, + 0xD0, 0xFF, 0x01, 0x40, 0xFE, 0xFF, 0x02, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x7F, 0xD0, 0xFF, 0x01, + 0x00, 0x80, 0xFF, 0x0B, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFE, + 0x1F, 0xFD, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x3F, 0xFD, 0x1F, + 0x00, 0x00, 0x80, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x80, + 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xD3, 0xFF, + 0x01, 0x00, 0x00, 0xF8, 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0xC0, 0xFF, 0xD2, 0xFF, 0x01, 0x00, 0x00, + 0xFE, 0x2F, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x0B, 0xFD, + 0x1F, 0x00, 0x00, 0xFE, 0x7F, 0xD0, 0xFF, 0x01, 0x40, 0xFE, 0xFF, 0x02, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xD0, + 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xAF, 0xAA, 0xAA, 0xF6, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x40, 0xFF, + 0x07, 0x00, 0x00, 0xFD, 0xAF, 0xAA, 0x6A, 0xF4, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0xFF, 0xFF, 0x4B, + 0xFF, 0xFF, 0xFF, 0x2F, 0xFD, 0xFF, 0xFF, 0xBF, 0xF4, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xAF, 0xAA, 0xAA, 0xF6, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, + // Unicode: [0x0046, F] + 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFD, 0xAF, 0xAA, 0xAA, 0xDA, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xAF, 0xAA, 0x2A, 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, + 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0x01, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, + // Unicode: [0x0047, G] + 0x00, 0x00, 0x90, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0x5A, 0xE5, 0xFF, 0x3F, 0x00, 0xFD, 0xFF, 0x01, 0x00, + 0xFD, 0xFF, 0x02, 0xFC, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xFC, + 0x7F, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, + 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0x07, 0x00, + 0xFE, 0xFF, 0xFF, 0x7F, 0xFD, 0x1F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xF5, 0xBF, 0x00, 0x50, 0x55, + 0x95, 0xFF, 0xC7, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xFC, + 0x3F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x00, + 0xFD, 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0x02, 0xE0, 0xFF, 0x6F, 0x55, 0xFE, 0xFF, 0x02, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x90, 0xFF, 0x6B, + 0x00, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, + 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0xAF, 0xAA, 0xAA, 0xFA, 0xFF, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, + 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xE0, 0xFF, + // Unicode: [0x0049, I] + 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, + 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, + 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, + 0x7F, 0xFD, 0x1F, + // Unicode: [0x004A, J] + 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, + 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, + 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0xFE, 0x0F, 0x00, 0xFE, 0xDF, 0xFF, + 0x01, 0xE0, 0xFF, 0xFD, 0x2F, 0x40, 0xFF, 0xCB, 0xFF, 0x1B, 0xFD, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0xE4, + 0xBF, 0x02, 0x00, + // Unicode: [0x004B, K] + 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x2F, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0x0F, 0xFD, 0x1F, 0x00, 0xD0, + 0xFF, 0x07, 0xFD, 0x1F, 0x00, 0xF4, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0xFC, 0xBF, 0x00, 0xFD, 0x1F, + 0x00, 0xFE, 0x2F, 0x00, 0xFD, 0x1F, 0x80, 0xFF, 0x0F, 0x00, 0xFD, 0x1F, 0xD0, 0xFF, 0x07, 0x00, + 0xFD, 0x1F, 0xF4, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0xFC, 0xBF, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0x2F, + 0x00, 0x00, 0xFD, 0x5F, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0xEF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0xFD, 0xEF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0x9F, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0x3F, + 0x00, 0x00, 0xFD, 0x1F, 0xFC, 0xFF, 0x00, 0x00, 0xFD, 0x1F, 0xF4, 0xFF, 0x02, 0x00, 0xFD, 0x1F, + 0xD0, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, 0x80, 0xFF, 0x1F, 0x00, 0xFD, 0x1F, 0x00, 0xFE, 0x7F, 0x00, + 0xFD, 0x1F, 0x00, 0xFC, 0xFF, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0xFF, 0x02, 0xFD, 0x1F, 0x00, 0xD0, + 0xFF, 0x0B, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0x1F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x7F, + // Unicode: [0x004C, L] + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0xFD, 0xAF, 0xAA, 0x6A, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, + 0xFD, 0xFF, 0xFF, 0xBF, + // Unicode: [0x004D, M] + 0xFD, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0xFD, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, + 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0x7F, + 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x7F, + 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x7F, + 0xFD, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0xFD, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0x7F, + 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0xFD, 0xDF, 0xFF, 0x00, 0x00, 0xFF, 0xF7, 0x7F, + 0xFD, 0x9F, 0xFF, 0x01, 0x40, 0xFF, 0xF6, 0x7F, 0xFD, 0x5F, 0xFF, 0x02, 0x80, 0xFF, 0xF5, 0x7F, + 0xFD, 0x1F, 0xFF, 0x03, 0xC0, 0xFF, 0xF4, 0x7F, 0xFD, 0x1F, 0xFE, 0x0B, 0xE0, 0x7F, 0xF4, 0x7F, + 0xFD, 0x1F, 0xFC, 0x0F, 0xF0, 0x3F, 0xF4, 0x7F, 0xFD, 0x1F, 0xF8, 0x1F, 0xF4, 0x2F, 0xF4, 0x7F, + 0xFD, 0x1F, 0xF4, 0x2F, 0xF8, 0x1F, 0xF4, 0x7F, 0xFD, 0x1F, 0xF0, 0x3F, 0xFC, 0x0F, 0xF4, 0x7F, + 0xFD, 0x1F, 0xE0, 0xBF, 0xFE, 0x07, 0xF4, 0x7F, 0xFD, 0x1F, 0xC0, 0xFF, 0xFF, 0x03, 0xF4, 0x7F, + 0xFD, 0x1F, 0x80, 0xFF, 0xFF, 0x02, 0xF4, 0x7F, 0xFD, 0x1F, 0x40, 0xFF, 0xFF, 0x01, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0xFF, 0xFF, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xFE, 0xBF, 0x00, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0xFC, 0x3F, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0xF8, 0x2F, 0x00, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0xF4, 0x1F, 0x00, 0xF4, 0x7F, + // Unicode: [0x004E, N] + 0xFD, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xF6, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x0F, 0x00, + 0x00, 0xFC, 0x6F, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0xF6, + 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0xFF, 0x01, 0x00, 0xFC, 0x6F, 0xFF, 0xFF, 0x0F, 0x00, + 0xF0, 0xBF, 0xFD, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0xF6, 0xBF, 0xFF, 0x07, 0x00, 0xFF, 0xDB, 0xFF, + 0xF9, 0x3F, 0x00, 0xFC, 0x6F, 0xFF, 0xC7, 0xFF, 0x02, 0xF0, 0xBF, 0xFD, 0x1F, 0xFD, 0x1F, 0xC0, + 0xFF, 0xF6, 0x7F, 0xE0, 0xFF, 0x00, 0xFF, 0xDB, 0xFF, 0x41, 0xFF, 0x0B, 0xFC, 0x6F, 0xFF, 0x07, + 0xF8, 0x7F, 0xF0, 0xBF, 0xFD, 0x1F, 0xC0, 0xFF, 0xC3, 0xFF, 0xF6, 0x7F, 0x00, 0xFD, 0x2F, 0xFF, + 0xDB, 0xFF, 0x01, 0xE0, 0xFF, 0xFC, 0x6F, 0xFF, 0x07, 0x00, 0xFF, 0xFB, 0xBF, 0xFD, 0x1F, 0x00, + 0xF4, 0xFF, 0xFF, 0xF6, 0x7F, 0x00, 0x80, 0xFF, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0xFC, 0xFF, 0x6F, + 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xF6, 0x7F, 0x00, 0x00, + 0xF4, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xBF, 0xFD, + 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x02, + // Unicode: [0x004F, O] + 0x00, 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0x16, 0xE5, 0xFF, 0x3F, 0x00, 0xFD, 0xBF, 0x00, 0x00, + 0xF8, 0xFF, 0x02, 0xFC, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x1F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xF8, + 0xBF, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xC7, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0x5F, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFB, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xCB, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xFC, + 0x7F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x01, + 0xFD, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0xE0, 0xFF, 0x6F, 0x41, 0xFE, 0xFF, 0x03, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x90, 0xFE, 0x6B, + 0x00, 0x00, 0x00, + // Unicode: [0x0050, P] + 0xFD, 0xFF, 0xFF, 0x6B, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x1B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, 0xAF, 0xAA, 0xFF, 0xFF, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0xD7, + 0xFF, 0x01, 0x00, 0xFD, 0x6F, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0xF7, + 0x7F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0xFF, 0x07, 0x00, 0xF4, 0xBF, 0xFD, + 0x1F, 0x00, 0xF4, 0xFF, 0xF5, 0xBF, 0xAA, 0xFA, 0xFF, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0xAF, 0x01, 0xD0, 0xFF, + 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0x00, 0x90, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0x16, 0xE5, 0xFF, 0x3F, 0x00, 0xFD, 0xBF, 0x00, 0x00, + 0xF8, 0xFF, 0x02, 0xFC, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x1F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xF8, + 0xBF, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xC7, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0x5F, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFB, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xCB, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0xFC, + 0x7F, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0xBF, 0xC0, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x01, + 0xFD, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0xE0, 0xFF, 0x6F, 0x41, 0xFE, 0xFF, 0x03, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x90, 0xFE, 0xEB, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xAA, 0x0A, + // Unicode: [0x0052, R] + 0xFD, 0xFF, 0xFF, 0x6B, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x2F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xAF, 0xAA, 0xFF, 0xFF, 0xD1, 0xFF, 0x01, 0x40, 0xFF, + 0x2F, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0xD3, 0xFF, 0x01, 0x00, 0xF8, 0x7F, 0xFD, 0x1F, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x80, 0xFF, 0xD7, 0xFF, 0x01, 0x00, + 0xFC, 0x3F, 0xFD, 0x1F, 0x00, 0xE0, 0xFF, 0xD2, 0xFF, 0x56, 0x95, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, + 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0xD0, 0xFF, 0xFF, + 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0xF8, 0xBF, 0x00, 0xD0, 0xFF, 0x41, 0xFF, 0x0F, 0x00, 0xFD, 0x1F, + 0xE0, 0xFF, 0x02, 0xD0, 0xFF, 0x01, 0xFC, 0x7F, 0x00, 0xFD, 0x1F, 0x40, 0xFF, 0x0B, 0xD0, 0xFF, + 0x01, 0xF0, 0xFF, 0x01, 0xFD, 0x1F, 0x00, 0xFD, 0x3F, 0xD0, 0xFF, 0x01, 0x80, 0xFF, 0x0B, 0xFD, + 0x1F, 0x00, 0xF4, 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0xFE, 0x2F, 0xFD, 0x1F, 0x00, 0xC0, 0xFF, 0x07, + // Unicode: [0x0053, S] + 0x00, 0xA4, 0xFF, 0x1A, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x06, 0x00, 0xFD, 0xFF, 0xFF, 0x7F, 0x00, + 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFB, 0xFF, 0x3F, 0xF4, 0xFF, 0x01, 0xF8, 0xFF, 0xE1, + 0xFF, 0x01, 0x80, 0xFF, 0x8B, 0xFF, 0x03, 0x00, 0xFD, 0x3F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, + 0x7F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, + 0xFF, 0xBF, 0x01, 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xF9, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF9, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, + 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x55, 0x05, 0x00, 0xE0, 0xFF, 0xFD, 0x7F, + 0x00, 0x80, 0xFF, 0xE7, 0xFF, 0x02, 0x00, 0xFF, 0x4F, 0xFF, 0x2F, 0x40, 0xFE, 0x2F, 0xFC, 0xFF, + 0xEB, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0x00, 0x80, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0x90, 0xFE, 0x1B, 0x00, 0x00, + // Unicode: [0x0054, T] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xA9, 0xAA, 0xFF, 0xAB, 0xAA, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, + // Unicode: [0x0055, U] + 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, + 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, + 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, + 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, + 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, + 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, + 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xF8, 0x3F, 0xFC, 0x2F, 0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x7F, + 0x00, 0x00, 0xFD, 0x2F, 0xF8, 0xFF, 0x00, 0x40, 0xFF, 0x1F, 0xF0, 0xFF, 0x5B, 0xE5, 0xFF, 0x0F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x40, 0xFA, 0xAF, 0x01, 0x00, + // Unicode: [0x0056, V] + 0xFD, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xF8, 0x7F, + 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0xFD, 0x2F, 0xF0, 0xFF, 0x00, 0x00, + 0x00, 0xFE, 0x1F, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x0F, 0xC0, 0xFF, 0x02, 0x00, 0x40, 0xFF, + 0x0B, 0x80, 0xFF, 0x03, 0x00, 0x80, 0xFF, 0x07, 0x40, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x03, 0x00, + 0xFF, 0x0B, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFE, 0x0F, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0xF8, + 0x3F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0xE0, 0xFF, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0xFF, 0x0B, 0x00, 0x00, 0xC0, + 0xFF, 0x42, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, 0x83, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0xC7, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x0B, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xFC, 0xBF, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x0F, + 0x00, 0x40, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0xF5, 0xBF, 0x00, + 0x00, 0xFD, 0xFF, 0x02, 0x00, 0xF8, 0x3F, 0xFC, 0x3F, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0xFF, + 0x0F, 0xFE, 0x0F, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0xD0, 0xFF, 0x42, 0xFF, 0x07, 0x00, 0xFC, 0xFF, + 0x1F, 0x00, 0xF4, 0x7F, 0xD0, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0x0B, 0x00, 0xFE, 0x0F, 0xF0, 0xBF, + 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0x02, 0xF8, 0x3F, 0x00, 0xFC, 0xDF, 0xFF, 0x00, 0xF0, + 0xBF, 0x00, 0xFD, 0x1F, 0x40, 0xFF, 0xF3, 0x7F, 0x00, 0xFD, 0x1F, 0x00, 0xFF, 0x07, 0xD0, 0xBF, + 0xF8, 0x1F, 0x80, 0xFF, 0x03, 0xC0, 0xFF, 0x02, 0xF8, 0x1F, 0xFE, 0x0B, 0xE0, 0xBF, 0x00, 0xE0, + 0xBF, 0x00, 0xFF, 0x43, 0xFF, 0x03, 0xFC, 0x1F, 0x00, 0xF4, 0x3F, 0xD0, 0xBF, 0xC0, 0xFF, 0x41, + 0xFF, 0x07, 0x00, 0xFC, 0x1F, 0xF4, 0x2F, 0xE0, 0x7F, 0xD0, 0xFF, 0x00, 0x00, 0xFF, 0x07, 0xFE, + 0x07, 0xF4, 0x2F, 0xF8, 0x2F, 0x00, 0x80, 0xFF, 0xC2, 0xFF, 0x00, 0xFD, 0x0F, 0xFF, 0x07, 0x00, + 0xD0, 0xFF, 0xF4, 0x2F, 0x00, 0xFF, 0xC3, 0xFF, 0x00, 0x00, 0xF0, 0x3F, 0xFD, 0x07, 0x80, 0xFF, + 0xF5, 0x3F, 0x00, 0x00, 0xF8, 0x9F, 0xFF, 0x01, 0xD0, 0xBF, 0xFE, 0x0B, 0x00, 0x00, 0xFE, 0xFB, + 0x3F, 0x00, 0xF4, 0xBF, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0xFF, 0x0B, 0x00, 0xFC, 0xFF, 0x3F, 0x00, + 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x40, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, + 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x02, + 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xFD, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0xE1, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0x03, 0xFF, 0x2F, 0x00, + 0xC0, 0xFF, 0x07, 0xF4, 0xFF, 0x00, 0x80, 0xFF, 0x0B, 0x80, 0xFF, 0x0B, 0x00, 0xFF, 0x0F, 0x00, + 0xFC, 0x7F, 0x00, 0xFE, 0x1F, 0x00, 0xD0, 0xFF, 0x03, 0xFD, 0x3F, 0x00, 0x00, 0xFE, 0x2F, 0xF8, + 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xF5, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xBF, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xBF, + 0xF8, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0xD1, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x02, 0xFE, 0x3F, 0x00, + 0xC0, 0xFF, 0x03, 0xF0, 0xFF, 0x02, 0x80, 0xFF, 0x07, 0x40, 0xFF, 0x0F, 0x40, 0xFF, 0x0F, 0x00, + 0xF8, 0xBF, 0x00, 0xFF, 0x1F, 0x00, 0xC0, 0xFF, 0x07, 0xFD, 0x2F, 0x00, 0x00, 0xFD, 0x3F, 0xFC, + 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x02, + // Unicode: [0x0059, Y] + 0xFD, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0xE2, 0xFF, 0x01, 0x00, 0xC0, 0xFF, 0x47, 0xFF, 0x0F, 0x00, + 0x40, 0xFF, 0x0B, 0xF8, 0x7F, 0x00, 0x00, 0xFF, 0x1F, 0xD0, 0xFF, 0x02, 0x00, 0xFD, 0x2F, 0x00, + 0xFE, 0x1F, 0x00, 0xF8, 0x7F, 0x00, 0xF4, 0xBF, 0x00, 0xF4, 0xBF, 0x00, 0x80, 0xFF, 0x03, 0xE0, + 0xFF, 0x01, 0x00, 0xFD, 0x2F, 0xC0, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0x80, 0xFF, 0x07, 0x00, 0x40, + 0xFF, 0x0B, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0x3F, 0xFD, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFD, 0x2F, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xBF, 0x00, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xFF, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0xF8, + 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0x2F, 0x00, + 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x00, 0xF0, + 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0x7F, 0x00, + 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xD0, + 0xFF, 0x02, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xBF, 0xAA, 0xAA, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + // Unicode: [0x005B, bracketleft] + 0xA9, 0xAA, 0x9A, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF9, 0xFF, 0x7F, 0xFE, 0xFF, 0x9F, 0xFF, 0x02, + 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, + 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, + 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, + 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, + 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, + 0xF8, 0x2F, 0x00, 0xFE, 0x0B, 0x80, 0xFF, 0x02, 0xE0, 0xBF, 0x00, 0xF8, 0x2F, 0x00, 0xFE, 0x0B, + 0x80, 0xFF, 0xAB, 0xE6, 0xFF, 0xFF, 0xF9, 0xFF, 0x7F, 0xFE, 0xFF, 0x9F, 0xFF, 0xFF, 0x07, + // Unicode: [0x005C, backslash] + 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, + 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0x0F, 0x00, 0x00, 0xF4, + 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x0B, 0x00, 0x00, 0xF4, 0x3F, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x00, + 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xE0, 0xBF, 0x00, 0x00, 0x80, 0xFF, + 0x03, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x02, 0x00, 0x00, + 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x0B, 0x00, + 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x2F, + 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xE0, + 0xBF, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, + 0x80, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0x01, + 0x00, 0x00, 0xFE, 0x0B, + // Unicode: [0x005D, bracketright] + 0xA9, 0xAA, 0x9A, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF9, 0xFF, 0x7F, 0xFE, 0xFF, 0x1F, 0x00, 0xFF, + 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, + 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, + 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, + 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, + 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, + 0x01, 0xF0, 0x7F, 0x00, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xC0, 0xFF, 0x01, 0xF0, 0x7F, 0x00, 0xFC, + 0x5F, 0xAA, 0xFF, 0xE7, 0xFF, 0xFF, 0xF9, 0xFF, 0x7F, 0xFE, 0xFF, 0x9F, 0xFF, 0xFF, 0x07, + // Unicode: [0x005E, asciicircum] + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xFF, + 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0xF8, 0x3F, 0x00, 0x00, 0xD0, 0xFF, 0xD1, 0xFF, 0x01, 0x00, 0x80, + 0xFF, 0x03, 0xFE, 0x0F, 0x00, 0x00, 0xFF, 0x0B, 0xF4, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, + 0x02, 0x00, 0xFC, 0x2F, 0x00, 0xFE, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xF0, 0xBF, 0x00, 0xF0, 0xFF, + 0x00, 0x80, 0xFF, 0x03, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x80, 0xFF, 0x03, 0x00, 0xE0, 0xFF, + 0x00, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x07, 0xFE, 0x0F, 0x00, 0x00, 0xFC, 0x2F, 0xFC, 0x2F, 0x00, + 0x00, 0xE0, 0xFF, 0xF5, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x0B, + // Unicode: [0x005F, underscore] + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xBF, + // Unicode: [0x0060, grave] + 0x0A, 0x00, 0xE0, 0x0B, 0x00, 0xFE, 0x07, 0xE0, 0xFF, 0x07, 0xFD, 0xFF, 0x07, 0xFD, 0xBF, 0x00, + 0xFD, 0x0B, 0x00, 0xB9, 0x00, 0x00, 0x05, + // Unicode: [0x0061, a] + 0x00, 0x90, 0xFE, 0x06, 0xF4, 0x7F, 0x00, 0xF8, 0xFF, 0xBF, 0xF4, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, + 0xF6, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, + 0x1B, 0xE4, 0xFF, 0x7F, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFE, 0x1F, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x0F, 0x00, 0x00, + 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x1F, + 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xF4, 0xFF, 0x1B, 0xE4, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xF6, 0x7F, 0x00, 0xF8, + 0xFF, 0xBF, 0xF4, 0x7F, 0x00, 0x90, 0xFE, 0x0A, 0xF4, 0x7F, + // Unicode: [0x0062, b] + 0x54, 0x05, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x90, 0xBF, 0x06, 0x00, 0xFD, 0x1F, 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0x9F, 0xFF, 0xFF, + 0xFF, 0x01, 0xFD, 0xEF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, + 0x1B, 0xE4, 0xFF, 0x1F, 0xFD, 0xFF, 0x01, 0x00, 0xFF, 0x3F, 0xFD, 0xBF, 0x00, 0x00, 0xFC, 0x7F, + 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, + 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x2F, + 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0xBF, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0xFF, 0x01, 0x40, 0xFF, 0x3F, 0xFD, 0xFF, 0x1B, 0xE4, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFD, 0x9F, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0x1F, + 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0x1F, 0x90, 0xBF, 0x06, 0x00, + // Unicode: [0x0063, c] + 0x00, 0x40, 0xFE, 0x6B, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x2F, + 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x0B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0x2F, 0x40, 0xFF, + 0x2F, 0xF8, 0xBF, 0x00, 0xD0, 0xFF, 0xC7, 0xFF, 0x03, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xF8, 0xBF, 0xF8, 0xBF, 0x00, 0xD0, 0xFF, 0x47, 0xFF, 0x6F, + 0x40, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, + 0xFF, 0xFF, 0x1F, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0xFE, 0x6B, 0x00, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x90, 0xFE, 0x06, 0xF4, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0xF4, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, + 0xF6, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, + 0x1B, 0xE4, 0xFF, 0x7F, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFE, 0x1F, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x0F, 0x00, 0x00, + 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x1F, + 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xF4, 0xFF, 0x1B, 0xE4, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xF6, 0x7F, 0x00, 0xF8, + 0xFF, 0xBF, 0xF4, 0x7F, 0x00, 0x80, 0xFE, 0x06, 0xF4, 0x7F, + // Unicode: [0x0065, e] + 0x00, 0x40, 0xFE, 0x6B, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xE0, 0xFF, 0xAF, 0xFE, 0xFF, 0x02, 0xFD, 0x7F, 0x00, + 0xF8, 0xFF, 0x80, 0xFF, 0x07, 0x00, 0xF4, 0xBF, 0xF0, 0xBF, 0x00, 0x00, 0xF8, 0x3F, 0xFD, 0x1F, + 0x00, 0x00, 0xFE, 0x8F, 0xFF, 0xAF, 0xAA, 0xEA, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0x00, 0x00, 0xA9, 0x1A, 0xF8, 0x7F, 0x00, 0xC0, + 0xFF, 0x07, 0xFD, 0xBF, 0x00, 0xF9, 0xFF, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x1F, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xE4, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x0066, f] + 0x00, 0x40, 0xAA, 0x00, 0xF8, 0xBF, 0x00, 0xFE, 0xBF, 0x80, 0xFF, 0xBF, 0xC0, 0xFF, 0xBF, 0xD0, + 0xFF, 0x07, 0xE0, 0xFF, 0x01, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xAA, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, + 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, + 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, + 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, 0xE0, 0xFF, 0x00, + // Unicode: [0x0067, g] + 0x00, 0x90, 0xFE, 0x06, 0xF4, 0x7F, 0x00, 0xF8, 0xFF, 0xBF, 0xF4, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, + 0xF6, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, + 0x1B, 0xE4, 0xFF, 0x7F, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFE, 0x1F, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x0F, 0x00, 0x00, + 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x1F, + 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xF4, 0xFF, 0x1B, 0xE4, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFB, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xF6, 0x7F, 0x00, 0xF8, + 0xFF, 0x7F, 0xF4, 0x7F, 0x00, 0x80, 0xFE, 0x06, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0xA4, 0x1A, 0x00, 0x00, 0xF8, 0x3F, 0xF8, 0x7F, 0x00, 0x00, + 0xFC, 0x3F, 0xF4, 0xFF, 0x00, 0x00, 0xFE, 0x2F, 0xF0, 0xFF, 0x1B, 0xD0, 0xFF, 0x1F, 0xD0, 0xFF, + 0xFF, 0xFF, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xBF, 0x00, + 0x00, 0xE4, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0xFA, 0xBF, 0x01, 0x00, + // Unicode: [0x0068, h] + 0x54, 0x05, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0xA4, 0xBF, + 0x01, 0xD0, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFD, 0xDF, 0xFF, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0x6F, 0x40, 0xFF, 0x7F, 0xFD, 0xBF, 0x00, + 0xC0, 0xFF, 0xDB, 0xFF, 0x03, 0x00, 0xF4, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x01, + 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, + 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, + 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, + 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, + // Unicode: [0x0069, i] + 0xE4, 0x47, 0xFF, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0x2F, 0xFF, 0x07, 0x29, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, + 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, + 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, + // Unicode: [0x006A, j] + 0x00, 0xA8, 0x00, 0xF0, 0x7F, 0x80, 0xFF, 0x0B, 0xF8, 0xFF, 0x80, 0xFF, 0x0F, 0xF4, 0x7F, 0x00, + 0xF9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, + 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, + 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, + 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, + 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF4, 0x7F, 0x40, 0xFF, 0x07, 0xF8, 0x7F, 0xFF, + 0xFF, 0xF3, 0xFF, 0x2F, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFF, 0x06, 0x00, + // Unicode: [0x006B, k] + 0x54, 0x05, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x40, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0xF8, 0xFF, 0xF6, + 0x7F, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0x01, 0xF0, 0xFF, 0x43, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0xFD, + 0x1F, 0xE0, 0xFF, 0x07, 0xF4, 0x7F, 0xD0, 0xFF, 0x07, 0xD0, 0xFF, 0xD1, 0xFF, 0x0B, 0x40, 0xFF, + 0xC7, 0xFF, 0x0B, 0x00, 0xFD, 0x9F, 0xFF, 0x0B, 0x00, 0xF4, 0xBF, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, + 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xBF, + 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0xF9, 0xBF, 0x00, 0x40, 0xFF, 0xC7, 0xFF, 0x0B, 0x00, 0xFD, 0x1F, + 0xFC, 0xBF, 0x00, 0xF4, 0x7F, 0xD0, 0xFF, 0x07, 0xD0, 0xFF, 0x01, 0xFE, 0x7F, 0x40, 0xFF, 0x07, + 0xE0, 0xFF, 0x07, 0xFD, 0x1F, 0x00, 0xFF, 0x3F, 0xF4, 0x7F, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0x01, + 0x80, 0xFF, 0x2F, + // Unicode: [0x006C, l] + 0x54, 0x45, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, + 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, + 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0xF5, + 0x7F, 0xFD, 0x5F, 0xFF, 0xD7, 0xFF, 0x01, + // Unicode: [0x006D, m] + 0xFD, 0x1F, 0xE4, 0xBF, 0x01, 0x00, 0xE9, 0x6F, 0x00, 0xD0, 0xFF, 0xE5, 0xFF, 0xFF, 0x01, 0xF8, + 0xFF, 0xBF, 0x00, 0xFD, 0xEF, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x8F, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, + 0xFF, 0x6F, 0x40, 0xFF, 0xFF, 0x2F, 0x90, 0xFF, 0x2F, 0xFD, 0xBF, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0xE0, 0xFF, 0xD3, 0xFF, 0x03, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xFC, 0x7F, 0xFD, 0x2F, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, + 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, + 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, + 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, + 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, + 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, 0x7F, 0xFD, 0x1F, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0xD7, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xF4, + 0x7F, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x40, 0xFF, 0x07, + // Unicode: [0x006E, n] + 0xFD, 0x1F, 0xE4, 0xBF, 0x01, 0xD0, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFD, 0xEF, 0xFF, 0xFF, 0x7F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xFF, 0x6F, 0x40, 0xFF, + 0x7F, 0xFD, 0xBF, 0x00, 0xC0, 0xFF, 0xD7, 0xFF, 0x03, 0x00, 0xF4, 0xBF, 0xFD, 0x2F, 0x00, 0x00, + 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, + 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, + 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, + 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, + 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFD, 0x1F, 0x00, 0x00, 0xFE, 0x0F, + // Unicode: [0x006F, o] + 0x00, 0x40, 0xFA, 0x6F, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, + 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0x01, + 0xF9, 0xFF, 0x82, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0xF0, 0xFF, 0x00, 0x00, 0xF8, 0xBF, 0xFD, 0x2F, + 0x00, 0x00, 0xFC, 0x6F, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0xEF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xFB, + 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0xFE, 0x0F, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0x07, 0x00, 0x00, 0xFF, + 0xDF, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0xF2, 0xFF, 0x00, 0x00, 0xF8, 0xBF, 0xF8, 0xBF, 0x00, 0x80, + 0xFF, 0x0F, 0xFD, 0xFF, 0x01, 0xF9, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0xA4, 0xFF, 0x06, 0x00, 0x00, + // Unicode: [0x0070, p] + 0xFD, 0x1F, 0x90, 0xBF, 0x06, 0x00, 0xFD, 0x1F, 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0x9F, 0xFF, 0xFF, + 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, + 0x1B, 0xE4, 0xFF, 0x1F, 0xFD, 0xFF, 0x01, 0x00, 0xFF, 0x3F, 0xFD, 0xBF, 0x00, 0x00, 0xFC, 0x7F, + 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0xBF, 0xFD, 0x2F, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x1F, 0x00, 0x00, + 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x2F, + 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0xBF, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0xFF, 0x01, 0x40, 0xFF, 0x3F, 0xFD, 0xFF, 0x1B, 0xE4, 0xFF, 0x1F, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFD, 0x9F, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0x1F, + 0xFD, 0xFF, 0x2F, 0x00, 0xFD, 0x1F, 0x90, 0xBF, 0x06, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x00, 0x40, 0xFE, 0x1A, 0xF4, 0x7F, 0x00, 0xF8, 0xFF, 0xBF, 0xF4, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, + 0xF7, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF4, 0xFF, + 0x1B, 0xE4, 0xFF, 0x7F, 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFE, 0x1F, 0x00, 0x00, 0xF8, 0x7F, 0xFE, 0x0F, 0x00, 0x00, + 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x0F, 0x00, 0x00, 0xF4, 0x7F, 0xFE, 0x1F, + 0x00, 0x00, 0xF8, 0x7F, 0xFD, 0x2F, 0x00, 0x00, 0xFC, 0x7F, 0xFC, 0x7F, 0x00, 0x00, 0xFD, 0x7F, + 0xF8, 0xFF, 0x01, 0x40, 0xFF, 0x7F, 0xF4, 0xFF, 0x1B, 0xE4, 0xFF, 0x7F, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xF6, 0x7F, 0x00, 0xF8, + 0xFF, 0xBF, 0xF4, 0x7F, 0x00, 0x80, 0xFE, 0x06, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x7F, + // Unicode: [0x0072, r] + 0xFD, 0x1F, 0xA0, 0xF7, 0x7F, 0xF4, 0xDF, 0xFF, 0xF9, 0x7F, 0xFF, 0xFB, 0xFF, 0xFD, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xDF, 0xFF, 0x6F, 0x40, 0xFF, 0x2F, 0x00, 0xFD, 0x3F, 0x00, 0xF4, 0xBF, 0x00, + 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, + 0x40, 0xFF, 0x07, 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x07, + 0x00, 0xFD, 0x1F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x01, 0x00, + // Unicode: [0x0073, s] + 0x00, 0xA4, 0xFF, 0x06, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0xFF, 0x2F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x1F, 0xF4, 0xFF, 0xEA, 0xFF, 0x0F, 0xFE, 0x0F, 0x80, 0xFF, 0xC7, 0xFF, 0x02, 0xC0, + 0xFF, 0xF2, 0xBF, 0x00, 0x50, 0x55, 0xF8, 0xBF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0x1B, 0x00, 0x00, + 0xFD, 0xFF, 0xBF, 0x01, 0x00, 0xFD, 0xFF, 0xFF, 0x07, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0x40, + 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xE4, 0xFF, 0x56, 0x15, 0x00, 0xE0, 0xFF, 0xFD, 0x2F, 0x00, 0xF4, + 0x3F, 0xFF, 0x1F, 0x00, 0xFF, 0x8B, 0xFF, 0xAF, 0xFA, 0xFF, 0x82, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x07, 0x40, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xF9, 0xAF, 0x01, 0x00, + // Unicode: [0x0074, t] + 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, + 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xEA, 0xFF, 0xAA, 0x02, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, + 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, + 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0xFD, 0x1F, 0x00, 0xD0, 0xFF, 0x01, + 0x00, 0xFD, 0x2F, 0x00, 0xC0, 0xFF, 0xBF, 0x06, 0xF8, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0x07, 0xD0, + 0xFF, 0x7F, 0x00, 0x90, 0xFF, 0x07, + // Unicode: [0x0075, u] + 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xFF, + 0xDB, 0xFF, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x00, 0x00, 0xF0, + 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, + 0xFF, 0xDB, 0xFF, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x00, 0x00, + 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xFF, 0xDB, 0xFF, 0x01, 0x00, 0xF0, 0xBF, 0xFD, 0x1F, 0x00, + 0x40, 0xFF, 0xDB, 0xFF, 0x02, 0x00, 0xF8, 0xBF, 0xFC, 0x7F, 0x00, 0xD0, 0xFF, 0x8B, 0xFF, 0x2F, + 0x40, 0xFF, 0xBF, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, + 0xFF, 0xBF, 0xFF, 0x0B, 0xE0, 0xFF, 0xFF, 0xF1, 0xBF, 0x00, 0xA4, 0xBF, 0x01, 0xFF, 0x0B, + // Unicode: [0x0076, v] + 0xFD, 0x2F, 0x00, 0x00, 0xF8, 0x7F, 0xFC, 0x3F, 0x00, 0x00, 0xFC, 0x3F, 0xF8, 0x7F, 0x00, 0x00, + 0xFD, 0x2F, 0xF4, 0xBF, 0x00, 0x00, 0xFE, 0x1F, 0xF0, 0xFF, 0x00, 0x00, 0xFF, 0x0F, 0xE0, 0xFF, + 0x01, 0x40, 0xFF, 0x0B, 0xD0, 0xFF, 0x01, 0x80, 0xFF, 0x07, 0xC0, 0xFF, 0x02, 0x80, 0xFF, 0x03, + 0x80, 0xFF, 0x03, 0xC0, 0xFF, 0x02, 0x40, 0xFF, 0x07, 0xD0, 0xFF, 0x01, 0x00, 0xFF, 0x0B, 0xE0, + 0xBF, 0x00, 0x00, 0xFE, 0x0F, 0xF0, 0x7F, 0x00, 0x00, 0xFC, 0x1F, 0xF4, 0x3F, 0x00, 0x00, 0xF8, + 0x2F, 0xF8, 0x2F, 0x00, 0x00, 0xF4, 0x3F, 0xFC, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0xFD, 0x0F, 0x00, + 0x00, 0xE0, 0xBF, 0xFE, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x03, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, 0x00, 0x00, + // Unicode: [0x0077, w] + 0xFE, 0x0F, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFF, 0xD7, 0xFF, 0x01, 0x40, 0xFF, 0x1F, 0x00, 0xF4, + 0x3F, 0xFC, 0x2F, 0x00, 0xF4, 0xFF, 0x02, 0x40, 0xFF, 0x82, 0xFF, 0x02, 0x80, 0xFF, 0x3F, 0x00, + 0xF8, 0x1F, 0xF4, 0x3F, 0x00, 0xFC, 0xFF, 0x03, 0xC0, 0xFF, 0x01, 0xFF, 0x07, 0xD0, 0xFF, 0x7F, + 0x00, 0xFC, 0x0F, 0xF0, 0x7F, 0x00, 0xFD, 0xFF, 0x0B, 0xD0, 0xBF, 0x00, 0xFE, 0x0B, 0xE0, 0xEF, + 0xBF, 0x00, 0xFE, 0x07, 0xD0, 0xFF, 0x00, 0xFF, 0xFA, 0x0F, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0xF4, + 0x5F, 0xFF, 0x01, 0xFF, 0x02, 0x80, 0xFF, 0x41, 0xFF, 0xF4, 0x2F, 0xF4, 0x2F, 0x00, 0xF4, 0x2F, + 0xF8, 0x0B, 0xFF, 0x42, 0xFF, 0x01, 0x40, 0xFF, 0xC2, 0xBF, 0xE0, 0x3F, 0xF8, 0x0F, 0x00, 0xF0, + 0x3F, 0xFC, 0x07, 0xFD, 0xC7, 0xBF, 0x00, 0x00, 0xFE, 0xD7, 0x3F, 0xD0, 0x7F, 0xFC, 0x07, 0x00, + 0xD0, 0x7F, 0xFE, 0x02, 0xFC, 0xDB, 0x3F, 0x00, 0x00, 0xFC, 0xFB, 0x2F, 0x80, 0xFF, 0xFE, 0x03, + 0x00, 0x80, 0xFF, 0xFF, 0x01, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x40, 0xFF, 0xFF, + 0x01, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x0B, 0x00, 0xFE, + 0xBF, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0xD0, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x03, 0x00, + 0xFD, 0x3F, 0x00, 0x00, + // Unicode: [0x0078, x] + 0xFD, 0x3F, 0x00, 0xC0, 0xFF, 0xE3, 0xFF, 0x02, 0x80, 0xFF, 0x07, 0xFF, 0x1F, 0x40, 0xFF, 0x0B, + 0xF4, 0xFF, 0x00, 0xFE, 0x0F, 0x80, 0xFF, 0x0B, 0xFD, 0x1F, 0x00, 0xFD, 0x3F, 0xFC, 0x2F, 0x00, + 0xE0, 0xFF, 0xFA, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0x00, + 0xC0, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0xFF, 0x0F, 0x00, 0x00, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xDF, 0xFF, 0x07, 0x00, 0xFD, 0x2F, 0xFE, 0x2F, 0x00, 0xF8, + 0x3F, 0xF0, 0xFF, 0x01, 0xF4, 0x7F, 0x40, 0xFF, 0x0F, 0xF0, 0xBF, 0x00, 0xF8, 0xBF, 0xE0, 0xFF, + 0x01, 0xC0, 0xFF, 0xD7, 0xFF, 0x02, 0x00, 0xFD, 0x3F, + // Unicode: [0x0079, y] + 0xFE, 0x2F, 0x00, 0x00, 0xF4, 0xBF, 0xFD, 0x3F, 0x00, 0x00, 0xF8, 0x7F, 0xF8, 0x7F, 0x00, 0x00, + 0xFC, 0x3F, 0xF4, 0xBF, 0x00, 0x00, 0xFD, 0x2F, 0xF0, 0xFF, 0x00, 0x00, 0xFE, 0x0F, 0xE0, 0xFF, + 0x01, 0x00, 0xFF, 0x0B, 0xD0, 0xFF, 0x02, 0x40, 0xFF, 0x07, 0xC0, 0xFF, 0x03, 0x80, 0xFF, 0x03, + 0x40, 0xFF, 0x07, 0xC0, 0xFF, 0x02, 0x00, 0xFF, 0x0F, 0xD0, 0xFF, 0x00, 0x00, 0xFE, 0x1F, 0xE0, + 0xBF, 0x00, 0x00, 0xFD, 0x2F, 0xF0, 0x7F, 0x00, 0x00, 0xFC, 0x3F, 0xF4, 0x3F, 0x00, 0x00, 0xF4, + 0x7F, 0xFC, 0x2F, 0x00, 0x00, 0xF0, 0xBF, 0xFD, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0xFE, 0x0B, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFD, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0x6F, 0xFF, 0xFF, 0xFF, + 0xBF, 0xA9, 0xAA, 0xFA, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x03, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x80, + 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, + 0xFE, 0x2F, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0xF8, 0xBF, 0x00, 0x00, + 0xF4, 0xFF, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0xAB, 0xAA, + 0x6A, 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, + 0xFF, 0x2F, + // Unicode: [0x007B, braceleft] + 0x00, 0x80, 0xFE, 0x03, 0xD0, 0xFF, 0x0F, 0xD0, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, + 0x02, 0xFD, 0x2F, 0x00, 0xF4, 0x3F, 0x00, 0xD0, 0xFF, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xFD, 0x0F, + 0x00, 0xF4, 0x3F, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xFF, 0x07, 0x00, 0xFC, 0x1F, 0x00, 0xF0, 0x7F, + 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0x2F, 0x00, 0xF0, 0xBF, 0x00, 0xE0, 0xFF, + 0x01, 0xE4, 0xFF, 0x03, 0xF8, 0xFF, 0x07, 0xE0, 0xFF, 0x02, 0x80, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, + 0x01, 0x94, 0xFF, 0x0F, 0x00, 0xF8, 0x7F, 0x00, 0xC0, 0xFF, 0x02, 0x00, 0xFE, 0x0B, 0x00, 0xF8, + 0x2F, 0x00, 0xE0, 0xBF, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xFF, 0x07, 0x00, 0xFC, 0x1F, 0x00, 0xF4, + 0x7F, 0x00, 0xD0, 0xFF, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xFD, 0x0F, 0x00, 0xF4, 0x3F, 0x00, 0xD0, + 0xFF, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0xFD, 0xFF, 0x0F, 0xE0, 0xFF, 0x3F, 0x40, 0xFF, 0xFF, 0x00, + 0xF4, 0xFF, 0x03, 0x00, 0xFA, 0x0F, + // Unicode: [0x007C, bar] + 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, + 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, + 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, + 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, 0xFE, 0xEF, 0xFF, + // Unicode: [0x007D, braceright] + 0xFE, 0x1B, 0x00, 0xF8, 0xFF, 0x02, 0xE0, 0xFF, 0x2F, 0x80, 0xFF, 0xFF, 0x00, 0xFA, 0xFF, 0x07, + 0x00, 0xFD, 0x2F, 0x00, 0xE0, 0xBF, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0x2F, + 0x00, 0xE0, 0xBF, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xFF, 0x07, 0x00, 0xFC, 0x1F, 0x00, 0xF0, 0x7F, + 0x00, 0xD0, 0xFF, 0x00, 0x40, 0xFF, 0x03, 0x00, 0xFD, 0x0F, 0x00, 0xF4, 0x7F, 0x00, 0xC0, 0xFF, + 0x02, 0x00, 0xFE, 0xBF, 0x01, 0xE0, 0xFF, 0x0F, 0x00, 0xFD, 0x3F, 0x00, 0xF4, 0xFF, 0x00, 0xF8, + 0xFF, 0x03, 0xF8, 0xFF, 0x06, 0xF0, 0xFF, 0x00, 0xD0, 0xFF, 0x01, 0x40, 0xFF, 0x03, 0x00, 0xFD, + 0x0F, 0x00, 0xF4, 0x3F, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xFF, 0x07, 0x00, 0xFC, 0x1F, 0x00, 0xF0, + 0x7F, 0x00, 0x80, 0xFF, 0x02, 0x00, 0xFE, 0x0B, 0x00, 0xF8, 0x2F, 0x00, 0xE0, 0xBF, 0x00, 0x80, + 0xFF, 0x02, 0x40, 0xFF, 0x0B, 0xF8, 0xFF, 0x1F, 0xE0, 0xFF, 0x3F, 0x80, 0xFF, 0xBF, 0x00, 0xFE, + 0xBF, 0x00, 0xF8, 0x6F, 0x00, 0x00, + // Unicode: [0x007E, asciitilde] + 0x00, 0xF9, 0x0B, 0x00, 0xFC, 0x07, 0xF8, 0xFF, 0x07, 0xD0, 0x3F, 0xE0, 0xFF, 0xFF, 0x46, 0xFF, + 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xBF, 0xE5, 0xFF, 0xFF, + 0x07, 0xFD, 0x03, 0xE0, 0xFF, 0x1F, 0xE0, 0x1F, 0x00, 0xE4, 0x2F, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_4.cpp new file mode 100644 index 00000000..60bdfea0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_40_2bpp_4.cpp @@ -0,0 +1,9 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_40_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x90, 0x06, 0x40, 0x1A, 0x00, 0x69, 0xD0, 0xBF, 0x80, 0xFF, 0x02, 0xFE, 0xC7, 0xFF, 0x47, 0xFF, + 0x1F, 0xFD, 0x7F, 0xFF, 0x2F, 0xFD, 0x7F, 0xF8, 0xFF, 0xFC, 0x7F, 0xF4, 0xFF, 0xE1, 0xFF, 0xE3, + 0xFF, 0xC0, 0xFF, 0x02, 0xFF, 0x0B, 0xBE, 0x01, 0xF8, 0x02, 0xE4, 0x0B +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_0.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_0.cpp new file mode 100644 index 00000000..2f8effb3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_0.cpp @@ -0,0 +1,1947 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_60_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x0020, space] + // (Has no glyph data) + // Unicode: [0x0021, exclam] + 0x54, 0x55, 0x05, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF0, 0xFF, 0x3F, 0xFC, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC3, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xF8, 0xFF, 0x0B, 0xFE, 0xFF, 0x82, 0xFF, 0xBF, 0xE0, 0xFF, + 0x2F, 0xF8, 0xFF, 0x0B, 0xFE, 0xFF, 0x82, 0xFF, 0xBF, 0xE0, 0xFF, 0x2F, 0xF8, 0xFF, 0x07, 0xFD, + 0xFF, 0x41, 0xFF, 0x7F, 0xD0, 0xFF, 0x1F, 0xF4, 0xFF, 0x07, 0xFD, 0xFF, 0x41, 0xFF, 0x7F, 0xD0, + 0xFF, 0x1F, 0xF4, 0xFF, 0x07, 0xFD, 0xFF, 0x41, 0xFF, 0x3F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, 0x03, + 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x0A, + 0xC0, 0xFF, 0x1F, 0xF8, 0xFF, 0x4F, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xFA, 0xFF, 0xBF, 0xFD, 0xFF, + 0x2F, 0xFF, 0xFF, 0x43, 0xFF, 0x7F, 0x00, 0xFE, 0x06, + // Unicode: [0x0022, quotedbl] + 0xAA, 0x6A, 0x90, 0xAA, 0xE6, 0xFF, 0x07, 0xFE, 0xBF, 0xFE, 0x7F, 0xE0, 0xFF, 0xE7, 0xFF, 0x07, + 0xFD, 0x7F, 0xFE, 0x7F, 0xD0, 0xFF, 0xD7, 0xFF, 0x03, 0xFD, 0x7F, 0xFD, 0x3F, 0xD0, 0xFF, 0xD7, + 0xFF, 0x03, 0xFD, 0x7F, 0xFD, 0x3F, 0xC0, 0xFF, 0xD3, 0xFF, 0x03, 0xFC, 0x3F, 0xFC, 0x3F, 0xC0, + 0xFF, 0xC3, 0xFF, 0x02, 0xFC, 0x3F, 0xFC, 0x2F, 0xC0, 0xFF, 0x03, + // Unicode: [0x0023, numbersign] + 0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0x01, 0x00, 0x00, 0xAA, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x01, + 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, + 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xA9, 0xAA, + 0xEA, 0xFF, 0xBF, 0xAA, 0xAA, 0xFA, 0xFF, 0xAF, 0xAA, 0x06, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, + 0x00, 0x40, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x07, 0x00, 0x00, + 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xA9, 0xAA, 0xFA, 0xFF, 0xAB, 0xAA, 0xAA, + 0xFE, 0xFF, 0xAA, 0xAA, 0x06, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, + 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0x00, + // Unicode: [0x0024, dollar] + 0x00, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0x6B, 0x01, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0x7F, + 0xF4, 0xDB, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x07, 0xFD, 0xD1, 0xFF, 0xFF, 0xD3, 0xFF, 0x7F, 0x40, + 0x7F, 0xD0, 0xFF, 0xFF, 0xF8, 0xFF, 0x0F, 0xD0, 0x1F, 0xF0, 0xFF, 0x7F, 0xFE, 0xFF, 0x03, 0xF4, + 0x07, 0xF8, 0xFF, 0x9F, 0xFF, 0xFF, 0x00, 0xFD, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x40, 0x7F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0xD0, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0xF4, 0x07, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x6F, 0xFD, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0xD0, 0x5F, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0x07, 0xFD, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0xFD, 0x01, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0x7F, 0x00, 0xFF, 0xFF, 0x03, + 0x00, 0x00, 0xD0, 0x1F, 0x80, 0xFF, 0xFF, 0xFE, 0xFF, 0x07, 0xF4, 0x07, 0xE0, 0xFF, 0xBF, 0xFF, + 0xFF, 0x02, 0xFD, 0x01, 0xFC, 0xFF, 0xEF, 0xFF, 0xFF, 0x40, 0x7F, 0x40, 0xFF, 0xFF, 0xF6, 0xFF, + 0xBF, 0xD0, 0x1F, 0xF0, 0xFF, 0x7F, 0xFC, 0xFF, 0xBF, 0xF5, 0x47, 0xFF, 0xFF, 0x0F, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x90, 0xFE, + 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, 0x00, + // Unicode: [0x0025, percent] + 0x00, 0x40, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xAF, 0xFE, 0xFF, 0x01, 0x00, + 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0x7F, 0x00, 0xFE, 0x2F, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, + 0xE0, 0xFF, 0x02, 0xD0, 0xFF, 0x03, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x2F, 0x00, 0xFC, + 0x7F, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0xC0, 0xFF, 0x07, 0x40, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0xFC, 0x7F, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, + 0x02, 0xC0, 0xFF, 0x03, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0x3F, 0x00, 0xFD, 0x3F, 0x00, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0x1B, 0xF4, 0xFF, 0x02, 0xF4, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x02, 0xF4, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE4, 0xFF, 0x06, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0xF9, 0xAF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0xFF, 0x01, 0xF8, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0xE0, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x02, 0xF8, 0xFF, 0x41, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0xC0, + 0xFF, 0x07, 0xD0, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xFD, 0x3F, 0x00, 0xFC, 0x7F, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0xD0, 0xFF, 0x02, 0x80, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, + 0x1F, 0x00, 0xFD, 0x2F, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0x02, + 0x80, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0xFD, 0x2F, 0x00, 0xF8, 0x7F, 0x00, 0x00, + 0xD0, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, 0x03, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, + 0xFC, 0xBF, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0xBF, 0xFE, 0xFF, + 0x02, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0xFF, + 0x02, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, + // Unicode: [0x0026, ampersand] + 0x00, 0x00, 0x00, 0x40, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, + 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0xBF, 0x91, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xF8, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xF4, + 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0xBF, 0xF5, 0xFF, 0xFF, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0xF4, 0xFF, + 0x7F, 0x40, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0x7F, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, 0xFF, + 0xD1, 0xFF, 0xBF, 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0x01, 0x40, + 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x07, + 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0xD0, 0xFF, + 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xF8, 0xFF, 0xFF, 0xAB, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF0, 0xFF, + 0xFF, 0x01, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0x90, 0xFF, 0xFF, 0xBF, 0x01, 0x00, + 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0027, quotesingle] + 0xAA, 0x6A, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFD, 0x3F, 0xFD, 0x3F, 0xFD, 0x3F, + 0xFD, 0x3F, 0xFD, 0x3F, 0xFC, 0x3F, 0xFC, 0x2F, 0xFC, 0x2F, + // Unicode: [0x0028, parenleft] + 0x00, 0x00, 0x00, 0xA8, 0xAA, 0x0A, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x80, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xD0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, + 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, + 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x03, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + // Unicode: [0x0029, parenright] + 0xAA, 0xAA, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, 0x3F, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, + 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x0B, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xD0, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, + 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, + // Unicode: [0x002A, asterisk] + 0x00, 0x00, 0xA9, 0x2A, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, + 0x00, 0x00, 0x01, 0xF0, 0x7F, 0x00, 0x01, 0xD0, 0x02, 0xF8, 0x0F, 0xE0, 0x02, 0xFC, 0x03, 0xFE, + 0x03, 0xFE, 0x80, 0xFF, 0x47, 0xBF, 0xF4, 0xBF, 0xF0, 0xFF, 0xDB, 0x6F, 0xFF, 0x7F, 0xFE, 0xFF, + 0xFB, 0xFB, 0xFF, 0x2F, 0xF9, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x90, 0xFF, 0xFF, 0xBF, 0x01, 0x00, + 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x1B, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x6F, + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xFF, 0xDB, 0xAF, 0xFF, 0x7F, 0xF8, 0xBF, 0xF4, 0x4B, + 0xFF, 0x0B, 0xFC, 0x07, 0xFE, 0x42, 0xFF, 0x01, 0x7E, 0x80, 0xFF, 0x40, 0x2F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x02, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x02, 0x00, 0x00, + // Unicode: [0x002B, plus] + 0x00, 0x00, 0x80, 0xAA, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x56, 0x55, 0x55, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0x00, 0x00, 0x80, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, + 0x00, + // Unicode: [0x002C, comma] + 0x40, 0xFF, 0xFF, 0x80, 0xFF, 0xBF, 0x80, 0xFF, 0x7F, 0xC0, 0xFF, 0x3F, 0xD0, 0xFF, 0x1F, 0xD0, + 0xFF, 0x0F, 0xE0, 0xFF, 0x0B, 0xF0, 0xFF, 0x07, 0xF0, 0xFF, 0x02, 0xF4, 0xFF, 0x01, 0xF8, 0xFF, + 0x00, 0xFC, 0xBF, 0x00, 0xFC, 0x3F, 0x00, 0xFD, 0x2F, 0x00, 0xFE, 0x1F, 0x00, 0xFE, 0x0F, 0x00, + 0xFF, 0x0B, 0x00, + // Unicode: [0x002D, hyphen] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + // Unicode: [0x002E, period] + 0x40, 0xBE, 0x01, 0xF8, 0xFF, 0x81, 0xFF, 0xFF, 0xF1, 0xFF, 0xBF, 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFF, 0xE2, 0xFF, 0x7F, 0xF0, 0xFF, 0x0B, 0xE0, 0x6F, 0x00, + // Unicode: [0x002F, slash] + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0030, zero] + 0x00, 0x00, 0x40, 0xAA, 0xAB, 0x05, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x07, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0x17, 0x90, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0xF4, + 0xFF, 0xBF, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0xFD, 0xFF, 0x07, 0x00, 0x00, + 0xF4, 0xFF, 0x1F, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0xF0, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xC2, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x4F, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0x3F, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF9, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0xE7, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x9F, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xEB, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xAF, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFA, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xE7, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x9F, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF5, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xC3, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x7F, + 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0xFF, + 0x03, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0x06, 0x40, 0xFF, 0xFF, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFA, 0xBF, + 0x06, 0x00, 0x00, 0x00, + // Unicode: [0x0031, one] + 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xAA, 0xEA, 0xFF, 0xBF, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0xFC, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, + 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFF, + 0xFF, 0x02, 0xC0, 0xFF, 0xBF, + // Unicode: [0x0032, two] + 0x00, 0x00, 0xA4, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0x1B, 0xD0, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, + 0x3F, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0xFC, 0xFF, 0x03, + 0x00, 0x00, 0xFC, 0xFF, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0xAA, 0x1A, 0x00, + 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + // Unicode: [0x0033, three] + 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x80, 0xFF, 0xFF, 0x1B, 0x90, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, + 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, + 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x54, 0x55, 0x05, + 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF9, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xA1, 0xAA, 0x0A, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0x1F, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0xC7, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE1, + 0xFF, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0x0F, 0xFC, + 0xFF, 0xBF, 0x05, 0xF5, 0xFF, 0xFF, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x50, 0xFA, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x0034, four] + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xEB, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xE3, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0xE1, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0x3F, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0xE0, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0xE0, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, + 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, + 0x1F, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, + 0xFE, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x1F, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0xE0, + 0xFF, 0x1F, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x54, 0x55, 0x55, 0x55, 0x55, + 0xF5, 0xFF, 0x5F, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, + // Unicode: [0x0035, five] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xE0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0x5B, 0x55, 0x55, 0x55, 0x55, 0x01, 0xFE, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F, 0x90, + 0xFE, 0x6B, 0x00, 0x00, 0xF8, 0xFF, 0x43, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xF9, 0xFF, + 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x7F, 0x01, 0xF9, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0xF4, + 0xFF, 0x7F, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, + 0xFF, 0x4F, 0xAA, 0x6A, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x55, 0x55, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0xCF, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xE2, 0xFF, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xF4, + 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0xFC, 0xFF, 0xFF, 0x06, 0xE5, 0xFF, 0xFF, 0x02, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x50, + 0xFA, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x0036, six] + 0x00, 0x00, 0x90, 0xFE, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x1B, 0x40, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, + 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, 0x03, 0x00, 0x40, 0xFF, 0xFF, 0x41, 0xFF, 0x7F, + 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0xFC, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, 0x00, 0xA4, + 0xFF, 0x1A, 0x00, 0x80, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0x6F, 0x00, 0xE0, 0xFF, 0x4B, 0xFF, 0xFF, + 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0x2F, 0xFE, 0xFF, 0x2F, 0x00, 0x00, 0xFD, + 0xFF, 0x8F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0xE7, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0xFA, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, + 0x6F, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xDF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0xF3, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFC, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x2F, + 0xFE, 0xBF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x4B, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, + 0xFF, 0x3F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0xF4, + 0xFF, 0xBF, 0x55, 0xF9, 0xFF, 0xFF, 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x50, 0xFA, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x0037, seven] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x55, 0x55, 0x55, 0x55, 0x95, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, + // Unicode: [0x0038, eight] + 0x00, 0x00, 0x90, 0xFE, 0xBF, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xBF, 0x01, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xE0, 0xFF, 0xFF, 0x06, 0x40, 0xFF, 0xFF, 0x1F, + 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, + 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x3F, + 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x3F, + 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, + 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0x07, + 0x40, 0xFF, 0xFF, 0x5B, 0xD5, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, + 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x06, 0x90, 0xFF, 0xFF, 0x1F, + 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x7F, + 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0xBF, + 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, + 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0xBF, + 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0xF4, 0xFF, 0xBF, 0x01, 0x00, 0xFD, 0xFF, 0x3F, + 0xF0, 0xFF, 0xFF, 0xAF, 0xEA, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, + 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, + // Unicode: [0x0039, nine] + 0x00, 0x00, 0xE4, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x06, 0x90, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, + 0x1F, 0x00, 0x80, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xBF, 0xE0, 0xFF, 0x3F, + 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0xC7, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xF2, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0xFF, 0xBF, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0xCF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xE3, 0xFF, 0x2F, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x3F, 0xFC, 0xFF, 0x1F, 0x00, 0x40, + 0xFF, 0xFF, 0x1F, 0xFE, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, + 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x41, 0xFF, 0x3F, 0x00, 0x00, 0xA4, 0xBF, 0x06, 0xD0, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x2F, 0x54, 0x55, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0x07, + 0xFE, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0xD0, + 0xFF, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0xF0, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xF8, + 0xFF, 0xBF, 0x01, 0xF9, 0xFF, 0x3F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0xF9, + 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFE, 0xAF, 0x01, 0x00, 0x00, + // Unicode: [0x003A, colon] + 0x00, 0x55, 0x00, 0xF4, 0xBF, 0x40, 0xFF, 0xFF, 0xF0, 0xFF, 0xBF, 0xFD, 0xFF, 0x7F, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xF2, 0xFF, 0xBF, 0xF4, 0xFF, 0x0F, 0xF4, 0xBF, 0x00, 0x50, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xBE, 0x01, 0xF8, 0xFF, 0x81, 0xFF, 0xFF, 0xF1, 0xFF, 0xBF, 0xFD, 0xFF, 0x7F, + 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xE2, 0xFF, 0x7F, 0xF0, 0xFF, 0x0B, 0xE0, 0x6F, 0x00, + // Unicode: [0x003B, semicolon] + 0x00, 0x54, 0x01, 0x00, 0xF8, 0x7F, 0x00, 0xF8, 0xFF, 0x07, 0xF4, 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0x1F, 0xF4, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0xF8, 0x7F, + 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0xC0, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0x00, 0xFD, + 0xFF, 0x01, 0xF8, 0xFF, 0x03, 0xF0, 0xFF, 0x0B, 0xC0, 0xFF, 0x1F, 0x40, 0xFF, 0x2F, 0x00, 0xFE, + 0x7F, 0x00, 0xF8, 0xFF, 0x00, 0xF0, 0xFF, 0x02, 0xD0, 0xFF, 0x03, 0x80, 0xFF, 0x0B, 0x00, 0xFE, + 0x1F, 0x00, 0xFC, 0x3F, 0x00, 0xF4, 0x7F, 0x00, 0xD0, 0xFF, 0x00, 0x00, + // Unicode: [0x003C, less] + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, + 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFD, + 0xFF, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xD0, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x02, + // Unicode: [0x003D, equal] + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + // Unicode: [0x003E, greater] + 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0F, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, + 0x7F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0x00, + 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, + 0x00, 0x00, + // Unicode: [0x003F, question] + 0x00, 0x00, 0xE5, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0xF9, + 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x1F, 0xFC, 0xFF, 0x7F, 0x41, 0xFE, 0xFF, 0x2F, 0xFD, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0x3F, 0xFE, + 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0x7F, 0xFE, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x00, + 0x00, 0x80, 0xFF, 0xBF, 0xAA, 0xAA, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0xE5, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x1F, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0xAF, 0x05, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xBE, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x40, 0xBE, + 0x01, 0x00, 0x00, 0x00, + // Unicode: [0x0040, at] + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFE, 0xBF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xBF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x6F, 0x01, 0x00, 0x90, 0xFE, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0x01, 0x00, 0xE4, 0xFF, 0x1B, 0xA0, 0xAA, 0x02, 0xF4, 0xFF, + 0x02, 0x80, 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0xFD, 0xBF, 0x00, 0xFC, 0xFF, 0x00, 0xF4, + 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0x6F, 0xFF, 0x2F, 0x00, 0xFE, 0x3F, 0x00, 0xFF, 0x3F, 0x00, + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x40, 0xFF, 0x1F, 0xE0, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0x0B, 0xFC, 0xFF, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x42, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0x1F, 0x90, 0xFF, 0xFF, 0x0F, + 0x00, 0xFC, 0xBF, 0xE0, 0xFF, 0x03, 0x80, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0xFE, + 0x2F, 0xFC, 0xBF, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0x4B, 0xFF, + 0x1F, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0xE2, 0xFF, 0x03, 0xC0, + 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0xFC, 0xBF, 0xFC, 0xBF, 0x00, 0xF4, 0xFF, 0x03, + 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0x1F, 0xFF, 0x1F, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xD7, 0xFF, 0x07, 0xC0, 0xFF, 0x2F, 0x00, 0x00, 0xC0, 0xFF, 0x0B, + 0x00, 0xF4, 0xFF, 0xF4, 0xFF, 0x00, 0xF0, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xFE, + 0x3F, 0xFE, 0x3F, 0x00, 0xFC, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0xC0, 0xFF, 0x8B, 0xFF, + 0x0F, 0x00, 0xFF, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0xF4, 0xFF, 0xE1, 0xFF, 0x03, 0xC0, + 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0xFE, 0x3F, 0xF8, 0xFF, 0x00, 0xF0, 0xFF, 0x0F, + 0x00, 0x80, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0x07, 0xFE, 0x3F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xF8, + 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x80, 0xFF, 0x0F, 0x00, 0xFE, 0xFF, 0x5F, 0xE5, 0xFF, 0xFF, 0x1F, + 0x80, 0xFF, 0x1F, 0xE0, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFE, 0xFF, + 0x02, 0xF4, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFD, + 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0x2F, 0x00, + 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF, 0x2F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x90, 0xFF, + 0xFF, 0x2F, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0x0B, 0x00, 0x40, 0xFA, 0x6F, 0x00, + 0x00, 0xE4, 0xBF, 0x06, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0x90, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xBF, 0x16, 0x00, 0x94, + 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, + 0xBA, 0xAA, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0041, A] + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xDF, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xD1, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0xF8, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0xF4, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, + 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xFF, 0xAF, 0xAA, 0xAA, 0xFE, 0xFF, 0x1F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x03, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x80, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, + 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0xFF, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, + // Unicode: [0x0042, B] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0xFF, 0xFF, 0xAB, 0xAA, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xFF, 0x2F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, 0x3F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x2F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0xFF, 0x0F, + 0xFF, 0xFF, 0x02, 0x00, 0x90, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xAA, 0xAA, 0xEA, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, 0x2F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x40, 0xFE, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, + // Unicode: [0x0043, C] + 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, + 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0x5B, 0x50, 0xF9, 0xFF, 0xFF, 0x1F, 0x00, 0xFD, 0xFF, 0xFF, + 0x01, 0x00, 0x40, 0xFE, 0xFF, 0xBF, 0x00, 0xFC, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0x07, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x3F, 0xF0, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xD1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xA9, 0xAA, 0x46, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x2F, 0xF8, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x7F, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xBF, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, 0xFF, + 0x1F, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0xFF, 0xAF, 0xEA, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x40, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x94, 0xFE, 0xAF, 0x05, 0x00, 0x00, 0x00, + // Unicode: [0x0044, D] + 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x05, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0xC0, 0xFF, 0xBF, 0x00, 0x50, 0xF9, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, + 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x2F, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0F, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xF2, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xCF, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x7F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xEF, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0xF7, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFC, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF1, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xC3, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x0B, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0x6F, 0x55, 0x55, 0xFE, + 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xBF, + 0x16, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0045, E] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xAF, 0xAA, 0xAA, 0x6A, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x2F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + // Unicode: [0x0046, F] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xAA, 0xAA, 0xAA, 0xFA, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0xBF, 0xAA, 0xAA, 0xAA, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, + // Unicode: [0x0047, G] + 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, + 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x6F, 0x55, 0xFE, 0xFF, 0xFF, 0x2F, 0x00, 0xF4, + 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x55, 0x15, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x03, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0x3F, 0x00, 0x00, 0x54, 0x55, 0x55, 0x95, 0xFF, + 0xFF, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0x87, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xF4, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x1F, + 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xD0, 0xFF, 0xFF, 0x1F, 0x00, + 0xD0, 0xFF, 0xFF, 0xFF, 0xAB, 0xFA, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE9, 0xFF, 0x5A, + 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0048, H] + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, + // Unicode: [0x0049, I] + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, + 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, + // Unicode: [0x004A, J] + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x54, 0x55, 0x00, + 0x00, 0xF0, 0xFF, 0xAF, 0xFF, 0xBF, 0x00, 0x00, 0xFC, 0xFF, 0xEB, 0xFF, 0x2F, 0x00, 0x00, 0xFF, + 0xFF, 0xF9, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x7F, 0xFD, 0xFF, 0x0B, 0x00, 0xF8, 0xFF, 0x1F, 0xFF, + 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xAF, 0xFE, 0xFF, 0xBF, 0xD0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xD0, + 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xF9, 0xBF, 0x06, 0x00, 0x00, + // Unicode: [0x004B, K] + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0x2F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xF8, + 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0x2F, 0x00, 0x40, + 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFC, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0xF8, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xF0, 0xFF, 0x6F, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF6, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xFE, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x82, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xF0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0xFD, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x40, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFF, + 0xFF, 0x02, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF8, 0xFF, 0xBF, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xFF, 0x07, + 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFE, 0xFF, + 0x3F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0xFF, 0x7F, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xF7, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, + // Unicode: [0x004C, L] + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xAF, 0xAA, 0xAA, 0x6A, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, + // Unicode: [0x004D, M] + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xBF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, + 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFA, 0xFF, 0x02, 0x00, 0x00, 0xF8, + 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0x6F, 0xFF, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0x9F, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF2, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0xFD, 0xFF, 0x00, + 0x00, 0xF0, 0xFF, 0x87, 0xFF, 0xBF, 0xFF, 0xFF, 0xC2, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0x3F, 0xF8, + 0xFF, 0xFB, 0xFF, 0x2F, 0xF8, 0xFF, 0x03, 0x00, 0xFC, 0xFF, 0x82, 0xFF, 0xBF, 0xFF, 0xFF, 0x42, + 0xFF, 0x7F, 0x00, 0xD0, 0xFF, 0x1F, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0xE0, 0xFF, 0x0B, 0x00, 0xFE, + 0xBF, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, 0x00, 0xF0, 0xFF, 0x07, 0xF8, 0xFF, 0xFB, + 0xFF, 0x2F, 0xC0, 0xFF, 0x2F, 0x80, 0xFF, 0x3F, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, + 0x03, 0xFC, 0xFF, 0x02, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x40, 0xFF, 0x7F, 0xD0, 0xFF, 0x0F, 0x80, + 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0xE0, 0xFF, 0x0B, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, + 0x00, 0xFD, 0xFF, 0xF5, 0xFF, 0x07, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0xC0, 0xFF, 0xAF, 0xFF, + 0x3F, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0xE0, + 0xFF, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0x07, 0x00, + 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, + 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0xFF, + 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, + 0x80, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, + 0x80, 0xFF, 0xBF, + // Unicode: [0x004E, N] + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFA, 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xFF, + 0xFF, 0xFF, 0xD2, 0xFF, 0x7F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0x00, 0x40, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFD, 0xFF, + 0x07, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0x0F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0xF0, 0xFF, 0x2F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0xFF, + 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x42, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0x47, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xF8, 0xFF, + 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0xD0, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, + // Unicode: [0x004F, O] + 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, + 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x5B, 0x41, 0xF9, 0xFF, 0xFF, 0x2F, + 0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x40, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x07, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0xFD, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xBF, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFD, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x5F, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xAF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xDB, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xFF, 0xF5, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0xFC, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0xC0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, + 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xAA, 0xFE, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFE, 0xAF, 0x05, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0050, P] + 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x05, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xFE, 0xFF, 0xCF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xF7, 0xFF, 0x2F, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0xFC, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xF3, 0xFF, 0x2F, 0x00, 0x40, + 0xFE, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, + 0x00, 0xC0, 0xFF, 0xFF, 0xAA, 0xAA, 0x5A, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0051, Q] + 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, + 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x5B, 0x41, 0xF9, 0xFF, + 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x7F, 0x00, 0x80, 0xFF, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0xF4, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, + 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0xFD, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFE, 0xFF, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x2F, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xFD, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x1F, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0xF8, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x02, + 0xC0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0xFF, 0x3F, + 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xBF, 0xAA, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xE9, 0xFF, 0x9A, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x7F, + // Unicode: [0x0052, R] + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x02, 0x00, 0x94, 0xFF, 0xFF, 0x0F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x2F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF0, 0xFF, 0x2F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0x0F, + 0xFF, 0xFF, 0x02, 0x00, 0x94, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xFF, 0xFF, 0x56, 0xFE, 0xFF, 0x0F, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xF4, 0xFF, 0x3F, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0x01, 0x00, + 0xFF, 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x07, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFC, 0xFF, 0x2F, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0xBF, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFE, 0xFF, 0x0F, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF8, 0xFF, 0x7F, + // Unicode: [0x0053, S] + 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xBF, 0x01, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0xFF, 0xAB, 0xFA, 0xFF, 0xFF, 0x0B, 0xFC, 0xFF, + 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0x43, 0xFF, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0xFF, 0xE1, 0xFF, 0x7F, + 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0xFE, 0xFF, 0x03, + 0x00, 0x00, 0x54, 0x55, 0x85, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xBF, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xAF, + 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x57, 0x55, 0x15, 0x00, 0x00, 0x40, 0xFF, 0xFF, + 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x9F, + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0x02, 0x00, 0xE0, 0xFF, 0xBF, 0xE0, + 0xFF, 0xFF, 0x07, 0x50, 0xFF, 0xFF, 0x1F, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x90, + 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0x1A, 0x00, 0x00, 0x00, + // Unicode: [0x0054, T] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xAA, + 0xAA, 0xFE, 0xFF, 0xAF, 0xAA, 0xAA, 0x02, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, + // Unicode: [0x0055, U] + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFE, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFD, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0x3F, + 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x6F, 0x00, 0x90, 0xFF, 0xFF, + 0x0F, 0xE0, 0xFF, 0xFF, 0xBF, 0xEA, 0xFF, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xA4, + 0xFF, 0x6B, 0x01, 0x00, 0x00, + // Unicode: [0x0056, V] + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFA, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xD7, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x3F, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xFE, 0xFF, + 0x03, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0xFF, 0x03, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, + 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, + 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x80, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF8, 0xFF, 0x0F, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, + 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x80, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, + 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0xFF, 0x2F, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xD0, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x87, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x2F, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0057, W] + 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xCB, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xE1, 0xFF, 0x3F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xF4, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xD0, + 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, + 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x02, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0xC0, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF4, + 0xFF, 0x1F, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, + 0x03, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xF0, 0xFF, 0xFB, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xBF, 0x00, + 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0xE0, + 0xFF, 0x2F, 0x00, 0x80, 0xFF, 0x3F, 0xFE, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xF8, 0xFF, + 0x0B, 0x00, 0xE0, 0xFF, 0x4B, 0xFF, 0x7F, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0x03, + 0x00, 0xFC, 0xFF, 0xD1, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x40, + 0xFF, 0x7F, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, + 0x0F, 0xF8, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x02, + 0xFD, 0xFF, 0x01, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, + 0xBF, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0xD0, 0xFF, 0x0F, 0xC0, 0xFF, 0x3F, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0xF8, 0xFF, 0x02, 0xE0, 0xFF, 0x0F, 0xC0, + 0xFF, 0x3F, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0xFF, 0xBF, 0x00, 0xF4, 0xFF, 0x07, 0xF4, 0xFF, + 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xD0, 0xFF, 0x1F, 0x00, 0xFC, 0xFF, 0x02, 0xFE, 0xFF, 0x01, + 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0xF4, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x80, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x07, 0xFE, 0xBF, 0x00, 0x80, 0xFF, 0x3F, 0xF0, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xC2, 0xFF, 0x1F, 0x00, 0xD0, 0xFF, 0x1F, 0xFD, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, + 0xBF, 0xF4, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x4B, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, + 0xFD, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0xE3, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x9F, 0xFF, + 0x2F, 0x00, 0x00, 0xFE, 0xFF, 0xFC, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xF7, 0xFF, 0x07, + 0x00, 0x40, 0xFF, 0xBF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0xC0, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0x00, 0x00, + // Unicode: [0x0058, X] + 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0xF4, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0xFD, + 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0x2F, + 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0xE0, + 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x2F, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0x0F, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xBF, 0xFE, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xDB, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0x1F, 0xFE, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0x2F, + 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, + 0xFE, 0xFF, 0x0F, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0xFF, 0xFF, + 0x03, 0x00, 0x40, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, + 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, + 0xFF, 0x1F, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xF4, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x0B, + // Unicode: [0x0059, Y] + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFE, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x40, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0x3F, + 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xC0, + 0xFF, 0xFF, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, + 0xF0, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xF4, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xC0, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF4, + 0xFF, 0x1F, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFE, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x005A, Z] + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x3F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0B, + // Unicode: [0x005B, bracketleft] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, + 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, + 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, + 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, + 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, + 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, + 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, + 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, + 0x0F, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, + 0x00, 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, + 0xFC, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, + 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, + 0x03, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFC, 0xFF, 0x03, + 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + // Unicode: [0x005C, backslash] + 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xD0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, + // Unicode: [0x005D, bracketright] + 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, + 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xBF, + 0x00, 0x40, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, + 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xBF, + // Unicode: [0x005E, asciicircum] + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xF2, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0x47, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0xFC, 0xFF, 0x07, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, + 0x00, 0xFD, 0xFF, 0x07, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0x2F, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x80, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0x3F, + 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x0B, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD2, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x8F, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + // Unicode: [0x005F, underscore] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + // Unicode: [0x0060, grave] + 0x09, 0x00, 0x00, 0x40, 0x2F, 0x00, 0x00, 0xD0, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0x01, 0x00, 0xFD, + 0xFF, 0x07, 0x40, 0xFF, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0x6F, 0x90, 0xFF, 0xFF, 0x7F, 0x40, 0xFE, + 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0xD0, 0xFF, 0x01, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, + 0x19, + // Unicode: [0x0061, a] + 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xBF, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC2, 0xFF, 0xBF, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0x2F, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0xFF, 0x2F, 0xFD, + 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xF6, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFE, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xDB, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF2, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xBF, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x2F, 0xFD, 0xFF, 0x7F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0x01, 0xE4, 0xFF, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0xF9, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x50, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, + // Unicode: [0x0062, b] + 0xAA, 0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x0B, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xE4, 0xFF, 0xFF, 0x06, + 0x00, 0xC0, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0xF0, 0xFF, 0x2F, 0xFD, 0xFF, 0xFF, + 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0x2F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0xFF, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0x0B, 0xFF, + 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0xF2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFC, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x3F, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xDF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, + 0xFF, 0xBF, 0xFC, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0xE0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF, 0x06, 0x90, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xC0, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, + 0xFF, 0x2F, 0xFD, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFC, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xBF, 0x01, + 0x00, 0xFF, 0xFF, 0x02, 0xE4, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x05, + 0x00, 0x00, 0x00, + // Unicode: [0x0063, c] + 0x00, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xD0, 0xFF, 0xFF, 0xBF, 0xFA, 0xFF, 0xFF, 0x0F, + 0xF0, 0xFF, 0xFF, 0x06, 0x40, 0xFF, 0xFF, 0x2F, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x3F, + 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0xBF, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0xFD, 0xFF, 0x07, 0x00, 0x00, 0x40, 0x55, 0x55, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0xFF, 0x07, 0x00, 0x00, 0x40, 0x55, 0x55, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x3F, + 0xF0, 0xFF, 0xFF, 0x06, 0x40, 0xFE, 0xFF, 0x2F, 0xD0, 0xFF, 0xFF, 0xBF, 0xFA, 0xFF, 0xFF, 0x0F, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x2B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, + // Unicode: [0x0064, d] + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xAA, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x54, 0x15, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xE4, 0xFF, 0xBF, 0x01, 0xF0, + 0xFF, 0x2F, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0x0B, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x0B, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xBF, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0x6F, 0x00, 0xF9, 0xFF, 0xFF, 0xBF, 0xF4, + 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xFF, + 0xDB, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xF6, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0xBF, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xAF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFA, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0x6F, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xE0, + 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0xF4, 0xFF, 0xFF, 0x01, 0x00, + 0xE0, 0xFF, 0xFF, 0x2F, 0xFC, 0xFF, 0xFF, 0x07, 0x90, 0xFF, 0xFF, 0xFF, 0x0B, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0x0B, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, + 0x00, 0x00, 0x00, + // Unicode: [0x0065, e] + 0x00, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0xBF, 0x01, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0F, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xF4, 0xFF, 0xFF, 0x6B, 0xFA, 0xFF, + 0xFF, 0x0B, 0xF0, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x3F, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xD0, 0xFF, 0x7F, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0xA0, 0xAA, 0x2A, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0xBF, 0xD0, 0xFF, + 0xFF, 0x01, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0xF4, + 0xFF, 0xFF, 0xAB, 0xFA, 0xFF, 0xFF, 0x07, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x05, 0x00, 0x00, + 0x00, + // Unicode: [0x0066, f] + 0x00, 0x00, 0x00, 0xE9, 0x0F, 0x00, 0x00, 0xF9, 0xFF, 0x03, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00, 0xFD, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0x00, 0xF4, 0xFF, 0xFF, 0x15, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, + 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, + 0xFF, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, + 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + // Unicode: [0x0067, g] + 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xBF, 0x00, 0xFC, + 0xFF, 0x0B, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0xFF, 0xBF, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0x2F, 0xC0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0xFF, 0x2F, 0xFD, + 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0xFF, + 0xF6, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFE, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xDB, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF2, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0xBF, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x2F, 0xFD, 0xFF, 0x7F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0x01, 0xE4, 0xFF, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x80, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, 0x02, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0xF9, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x50, 0x55, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x47, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0xF0, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, + 0xFD, 0xFF, 0xFF, 0x06, 0x90, 0xFF, 0xFF, 0x2F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x90, + 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x15, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0068, h] + 0xAA, 0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x55, 0x05, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0xBF, 0x01, 0x00, 0xFF, 0xFF, 0x82, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, + 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xFF, 0xAF, 0xFA, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x2F, + 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x7F, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + // Unicode: [0x0069, i] + 0x90, 0xBF, 0x00, 0xFD, 0xFF, 0xC1, 0xFF, 0xFF, 0xF8, 0xFF, 0x7F, 0xFE, 0xFF, 0xAF, 0xFF, 0xFF, + 0xEB, 0xFF, 0xFF, 0xF1, 0xFF, 0x3F, 0xF4, 0xFF, 0x03, 0xA0, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, + 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, + 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, + 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, + 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, + 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0xF0, 0xFF, 0x2F, 0xFC, 0xFF, 0x0B, 0xFF, 0xFF, 0xC2, 0xFF, + 0xBF, 0x00, + // Unicode: [0x006A, j] + 0x00, 0x40, 0xFE, 0x02, 0x00, 0xD0, 0xFF, 0x1F, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x7F, + 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xD0, 0xFF, 0x0F, 0x00, 0x00, 0xBA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0xF4, 0xFF, 0x1F, 0x54, 0xFD, 0xFF, 0x1F, + 0xFE, 0xFF, 0xFF, 0x0F, 0xFE, 0xFF, 0xFF, 0x0B, 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x02, + 0xFE, 0xFF, 0xBF, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0xFE, 0xAF, 0x01, 0x00, + // Unicode: [0x006B, k] + 0xAA, 0xAA, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, + 0x00, 0x80, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xF1, 0xFF, 0x2F, 0x00, + 0x40, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0x0B, 0x00, 0xF0, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x00, + 0xFF, 0xFF, 0x2F, 0xC0, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0x2F, 0x00, 0xFD, + 0xFF, 0x2F, 0x00, 0xFC, 0xFF, 0x0B, 0xD0, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, + 0x7F, 0x00, 0xC0, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0x2F, 0xF8, 0xFF, 0x7F, + 0x00, 0x00, 0xFC, 0xFF, 0x4B, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF6, 0xFF, 0xBF, 0x00, + 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xC0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0xFB, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF6, 0xFF, 0xBF, 0x00, 0x00, 0xC0, + 0xFF, 0xBF, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xFC, + 0xFF, 0x0B, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFC, 0xFF, 0x7F, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0xFD, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xFD, 0xFF, 0x2F, 0x00, 0xFC, 0xFF, + 0x0B, 0x00, 0xFE, 0xFF, 0x2F, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0x2F, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF0, 0xFF, 0x2F, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0x0B, + 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x02, 0x00, 0x80, 0xFF, 0xFF, 0x1F, + // Unicode: [0x006C, l] + 0xAA, 0xAA, 0xFD, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, + 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, + 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, + // Unicode: [0x006D, m] + 0x00, 0x00, 0x00, 0x40, 0x55, 0x05, 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0xC0, 0xFF, 0xBF, + 0x00, 0xFE, 0xFF, 0x6F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1B, 0x00, 0xF0, 0xFF, 0x2F, 0xF8, 0xFF, + 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x6F, 0x00, 0xFC, 0xFF, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xF4, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, + 0xFF, 0x06, 0x90, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0xD0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x1F, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0B, + 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x01, 0x00, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, + 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x0F, + // Unicode: [0x006E, n] + 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xF8, 0xFF, 0xBF, 0x01, 0x00, + 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, + 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xAF, 0xFA, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xF8, 0xFF, 0x3F, + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xD0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, 0xFF, 0xBF, + // Unicode: [0x006F, o] + 0x00, 0x00, 0x00, 0x50, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x1B, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0xFF, 0x00, 0xFC, + 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x3F, + 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x1F, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFD, + 0xFF, 0x8B, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE2, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF4, 0xFF, 0xDF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xF7, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFE, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x8F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xD2, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x1F, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0xFD, 0xFF, 0x2F, 0x00, 0x00, + 0xF9, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xBF, 0x01, 0xE4, 0xFF, 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x05, 0x00, + 0x00, 0x00, 0x00, + // Unicode: [0x0070, p] + 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xF9, 0xFF, 0xBF, 0x01, + 0x00, 0xF0, 0xFF, 0x2F, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xFC, 0xFF, 0x4B, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0B, 0x00, 0xFF, 0xFF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x1B, 0x40, 0xFE, 0xFF, 0xFF, 0xC2, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xBF, + 0xFC, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xCF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xF7, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xDF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xF7, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFC, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x2F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xBF, 0x01, 0xE4, 0xFF, 0xFF, 0x2F, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xFC, + 0xFF, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0x02, 0xFE, 0xFF, 0xFF, 0x6F, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0xF9, 0xFF, 0xBF, 0x01, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x50, 0x55, 0x01, + 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x0071, q] + 0x00, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xBF, 0x01, 0xFC, + 0xFF, 0x0B, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x02, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC7, 0xFF, 0xBF, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x2F, 0x80, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0x1B, 0x00, 0xFD, 0xFF, 0xFF, 0x2F, 0xFD, + 0xFF, 0x7F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF4, 0xFF, 0xFF, + 0xF2, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xBF, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x02, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFB, 0xFF, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFE, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xAF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0xDB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xF2, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xBF, 0xF8, 0xFF, 0xBF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x2F, 0xFC, 0xFF, 0xBF, 0x01, 0x00, + 0xFD, 0xFF, 0xFF, 0x0B, 0xFE, 0xFF, 0xFF, 0x5B, 0xF9, 0xFF, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x40, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x0B, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, 0x02, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xC1, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0xA4, 0xFF, 0x1A, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + // Unicode: [0x0072, r] + 0x00, 0x00, 0x00, 0x00, 0xD5, 0xFF, 0xBF, 0x00, 0xF9, 0xFB, 0xFF, 0x2F, 0xE0, 0xFF, 0xFE, 0xFF, + 0x4B, 0xFF, 0xBF, 0xFF, 0xFF, 0xF6, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0x5A, 0xF5, + 0xFF, 0xFF, 0x0B, 0x00, 0xFC, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x00, 0xC0, 0xFF, 0xFF, + 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, + 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, + 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, + 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0x00, + 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF0, 0xFF, + 0x2F, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xC0, 0xFF, 0xBF, 0x00, + 0x00, 0x00, + // Unicode: [0x0073, s] + 0x00, 0x00, 0x40, 0x55, 0x05, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0xE4, + 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x1F, 0xF4, 0xFF, 0xBF, 0x55, 0xFE, 0xFF, 0x2F, 0xF8, 0xFF, 0x0F, 0x00, 0xE0, 0xFF, 0x3F, 0xF8, + 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x7F, 0xFC, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x7F, 0xF8, 0xFF, 0x0B, + 0x00, 0x40, 0x55, 0x55, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, + 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x90, + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE5, + 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, + 0xBF, 0xA9, 0xAA, 0x01, 0x00, 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xFD, + 0xFF, 0x0B, 0x00, 0x40, 0xFF, 0xFF, 0xFC, 0xFF, 0x2F, 0x00, 0xC0, 0xFF, 0xBF, 0xF8, 0xFF, 0xFF, + 0x45, 0xF9, 0xFF, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x1F, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, + 0x40, 0x55, 0x15, 0x00, 0x00, + // Unicode: [0x0074, t] + 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, + 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xE0, + 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, + 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, + 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, + 0x3F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0xF4, 0xFF, + 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, + 0xFF, 0xFF, 0x01, 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0xE0, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0xFA, 0xFF, 0x07, + // Unicode: [0x0075, u] + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xE0, 0xFF, 0xBF, + 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0xBF, 0xFE, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xBF, + 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0xFC, 0xFF, 0xFF, 0x56, 0xE5, 0xFF, 0xFF, 0xBF, + 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xBF, + 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xC2, 0xFF, 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0x7F, 0xC0, 0xFF, 0xBF, + 0x00, 0x00, 0xE9, 0xBF, 0x06, 0xC0, 0xFF, 0xBF, + // Unicode: [0x0076, v] + 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0x4B, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xC1, 0xFF, 0xBF, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0x3F, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0xF4, 0xFF, 0x1F, 0x00, + 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, + 0x03, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0x40, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0xFF, 0x01, 0xC0, + 0xFF, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0x07, + 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0xE0, 0xFF, + 0x2F, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x40, + 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xD0, 0xFF, 0x3F, + 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x0B, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x03, 0xFC, 0xFF, 0x03, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0x41, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xBF, 0xE0, 0xFF, 0x1F, 0x00, + 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x5F, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEB, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xD0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x7F, 0x00, 0x00, + 0x00, + // Unicode: [0x0077, w] + 0xFD, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0xCF, 0xFF, 0x7F, 0x00, + 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0x40, 0xFF, 0xBF, 0xFC, 0xFF, 0x0B, 0x00, 0x00, 0xFD, 0xFF, + 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x87, 0xFF, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x80, + 0xFF, 0x7F, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0xFF, + 0xFF, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x2F, 0xE0, 0xFF, 0x1F, 0x00, 0x40, + 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFD, 0xFF, 0x01, 0xFD, 0xFF, 0x02, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, + 0x00, 0xE0, 0xFF, 0x0F, 0xC0, 0xFF, 0x3F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xBF, + 0x00, 0xF8, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x07, 0x40, 0xFF, 0x7F, + 0x00, 0xD0, 0xFF, 0xFB, 0xFF, 0x02, 0x40, 0xFF, 0x3F, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0xFE, 0x7F, + 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x00, 0xF0, 0xFF, 0xF2, 0xFF, 0x07, 0x80, + 0xFF, 0x2F, 0x00, 0xE0, 0xFF, 0x0F, 0x40, 0xFF, 0x1F, 0xFE, 0x7F, 0x00, 0xFC, 0xFF, 0x01, 0x00, + 0xFD, 0xFF, 0x01, 0xF4, 0xFF, 0xD1, 0xFF, 0x0B, 0xD0, 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x2F, 0x80, + 0xFF, 0x0F, 0xFD, 0xFF, 0x00, 0xFD, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0x02, 0xFC, 0xBF, 0xC0, 0xFF, + 0x0F, 0xE0, 0xFF, 0x07, 0x00, 0x40, 0xFF, 0x3F, 0xD0, 0xFF, 0x07, 0xF8, 0xFF, 0x01, 0xFF, 0x3F, + 0x00, 0x00, 0xF0, 0xFF, 0x07, 0xFE, 0x3F, 0x40, 0xFF, 0x2F, 0xF0, 0xFF, 0x02, 0x00, 0x00, 0xFE, + 0x7F, 0xE0, 0xFF, 0x03, 0xF0, 0xFF, 0x43, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x0B, 0xFF, 0x2F, + 0x00, 0xFF, 0x3F, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0xFD, 0xFF, 0xF4, 0xFF, 0x01, 0xE0, 0xFF, 0xC7, + 0xFF, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0x9F, 0xFF, 0x0F, 0x00, 0xFD, 0xBF, 0xFC, 0xBF, 0x00, 0x00, + 0x00, 0xF8, 0xFF, 0xF9, 0xBF, 0x00, 0xC0, 0xFF, 0xDF, 0xFF, 0x07, 0x00, 0x00, 0x40, 0xFF, 0xEF, + 0xFF, 0x0B, 0x00, 0xF8, 0xFF, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x7F, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x03, 0x00, 0xF4, 0xFF, 0xFF, 0x1F, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFF, 0xFF, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x1F, + 0x00, 0x00, 0xFD, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xFF, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xFC, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x02, 0x00, 0x00, + // Unicode: [0x0078, x] + 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xF8, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x3F, + 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0x1F, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x0B, + 0x80, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x0B, 0x40, 0xFF, 0xFF, 0x01, + 0x00, 0xFD, 0xFF, 0x1F, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0xE0, 0xFF, 0x3F, 0x00, + 0x00, 0xE0, 0xFF, 0xBF, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFD, 0xFF, 0x0B, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x0B, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0xFE, 0xFF, 0x0B, 0x00, + 0x00, 0xE0, 0xFF, 0x2F, 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0xF8, 0xFF, 0x3F, 0x00, + 0x00, 0xFD, 0xFF, 0x07, 0xE0, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0xD0, 0xFF, 0xFF, 0x01, + 0x40, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0x0B, + 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x3F, + 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0xBF, + // Unicode: [0x0079, y] + 0xFE, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xBF, 0xFC, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE0, + 0xFF, 0x7F, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0xF4, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0xF4, 0xFF, 0x1F, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0xD0, 0xFF, 0xBF, + 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0B, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x80, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x40, 0xFF, 0xFF, + 0x01, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0xC0, + 0xFF, 0xBF, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0xF8, 0xFF, 0x1F, + 0x00, 0xE0, 0xFF, 0x2F, 0x00, 0x00, 0xF0, 0xFF, 0x2F, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, + 0xFF, 0x3F, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x07, 0x00, + 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x43, + 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x87, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFF, 0xCB, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xDF, 0xFF, 0x1F, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xD0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, + // Unicode: [0x007A, z] + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF8, + 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x07, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xFD, 0xFF, + 0x0F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x2F, 0x00, 0x00, 0x00, + 0xF8, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x7F, 0x00, + 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, + // Unicode: [0x007B, braceleft] + 0x00, 0x00, 0x40, 0xFE, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0x00, + 0x80, 0xFF, 0xFF, 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0xFF, 0xBF, 0x00, 0xF4, + 0xFF, 0xFF, 0xBF, 0x00, 0xF4, 0xFF, 0x7F, 0x01, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, + 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x07, + 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, + 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, + 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, + 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, + 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x0F, + 0x00, 0x00, 0xFE, 0xFF, 0x0B, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, + 0xFD, 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x00, 0xFD, 0xFF, 0x0B, 0x00, 0x00, 0xFD, + 0xFF, 0x7F, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0xE4, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xFE, + 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, + 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, + 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, + 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, + 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF4, 0xFF, 0x0B, 0x00, 0x00, 0xF8, + 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0xFF, + 0x07, 0x00, 0x00, 0xF8, 0xFF, 0x0B, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xF4, 0xFF, 0x7F, + 0x15, 0x00, 0xF4, 0xFF, 0xFF, 0xBF, 0x00, 0xF0, 0xFF, 0xFF, 0xBF, 0x00, 0xD0, 0xFF, 0xFF, 0xBF, + 0x00, 0x80, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0xF4, 0xFF, 0xBF, 0x00, + 0x00, 0x40, 0xFE, 0xBF, + // Unicode: [0x007C, bar] + 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, + 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, + 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, + 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0xBF, + // Unicode: [0x007D, braceright] + 0xFF, 0xAF, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0x02, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0xFF, + 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0xF0, 0xFF, 0xFF, 0xBF, + 0x00, 0x00, 0xF9, 0xFF, 0x3F, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, + 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xFC, + 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x00, 0xF4, 0xFF, 0x0B, + 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x40, 0xFF, 0xBF, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, + 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xFF, + 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, + 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0xFD, 0xFF, 0x1F, 0x00, 0x00, + 0xFE, 0xFF, 0xAF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0x3F, 0x00, 0x00, 0xF9, + 0xFF, 0x0F, 0x00, 0x40, 0xFE, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, + 0x00, 0xF8, 0xFF, 0xBF, 0x06, 0x40, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0xF8, + 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, + 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, + 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x40, 0xFF, + 0xBF, 0x00, 0x00, 0xD0, 0xFF, 0x2F, 0x00, 0x00, 0xF4, 0xFF, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0x03, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, + 0xFC, 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xD0, 0xFF, 0x3F, 0x00, 0x55, 0xFE, 0xFF, + 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0x02, 0xF0, 0xFF, 0xFF, 0x7F, 0x00, 0xFC, 0xFF, 0xFF, 0x0F, 0x00, + 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0xBF, 0x00, 0x00, 0xFC, 0xBF, + 0x06, 0x00, 0x00, + // Unicode: [0x007E, asciitilde] + 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0xA4, 0x6A, 0x00, 0xE0, 0xFF, 0x6F, 0x00, 0x00, 0xFC, 0x7F, + 0x00, 0xFD, 0xFF, 0xFF, 0x02, 0x00, 0xFD, 0x3F, 0x40, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0xFF, 0x3F, + 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0x2F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + 0xFD, 0xFF, 0x41, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0x3F, 0x00, 0xE4, 0xFF, 0xFF, 0x7F, 0x00, + 0xFE, 0x1F, 0x00, 0x40, 0xFF, 0xFF, 0x1F, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0xE4, 0xBF, 0x01, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_4.cpp new file mode 100644 index 00000000..03809c57 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Font_Poppins_SemiBold_60_2bpp_4.cpp @@ -0,0 +1,12 @@ +#include + +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_60_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = { + // Unicode: [0x2026, ellipsis] + 0x40, 0xBE, 0x01, 0x00, 0xF9, 0x06, 0x00, 0xE4, 0x1B, 0x00, 0xFE, 0x7F, 0x00, 0xF8, 0xFF, 0x02, + 0xD0, 0xFF, 0x0B, 0xF8, 0xFF, 0x1F, 0xE0, 0xFF, 0x7F, 0x40, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0x02, + 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0x3F, 0xFD, 0xFF, 0x3F, 0xF4, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xD7, + 0xFF, 0xFF, 0x43, 0xFF, 0xFF, 0x0F, 0xFC, 0xFF, 0x7F, 0xFC, 0xFF, 0x2F, 0xF0, 0xFF, 0xFF, 0x80, + 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0x07, 0xF4, 0xFF, 0x2F, 0xF0, 0xFF, 0x0B, 0x80, + 0xFF, 0x2F, 0x00, 0xFE, 0xBF, 0x00, 0xF8, 0x1B, 0x00, 0x90, 0x6F, 0x00, 0x40, 0xFE, 0x01 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/GeneratedFont.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/GeneratedFont.cpp new file mode 100644 index 00000000..fcb40d1e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/GeneratedFont.cpp @@ -0,0 +1,310 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include +#include + +namespace touchgfx +{ +GeneratedFont::GeneratedFont(const GlyphNode* glyphs, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable) + : ConstFont(glyphs, numGlyphs, height, baseline, pixAboveTop, pixBelowBottom, bitsPerPixel, byteAlignRow, maxLeft, maxRight, fallbackChar, ellipsisChar), + glyphData(glyphDataInternalFlash), + kerningData(kerningList), + gsubTable(gsubData), + arabicTable(formsTable) +{ +} + +const uint8_t* GeneratedFont::getPixelData(const GlyphNode* glyph) const +{ + // Read dataOffset as 16bit, as it may be unaligned + volatile const uint16_t* dataOffset = (const uint16_t*)((const uint8_t*)glyph + offsetof(GlyphNode, dataOffset)); + uint32_t offset = dataOffset[0]; + offset |= dataOffset[1] << 16; + + const uint8_t* const* table = (const uint8_t* const*)glyphData; + const uint8_t* pixels = table[glyph->unicode / 2048]; + return pixels + offset; +} + +int8_t GeneratedFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const +{ + if (!glyph || glyph->kerningTableSize == 0) + { + return 0; + } + + const KerningNode* kerndata = kerningData + glyph->kerningTablePos(); + for (uint16_t i = glyph->kerningTableSize; i > 0; i--, kerndata++) + { + if (prevChar == kerndata->unicodePrevChar) + { + return kerndata->distance; + } + if (prevChar < kerndata->unicodePrevChar) + { + break; + } + } + return 0; +} + +const GlyphNode* FusedFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const +{ + if (unicode < 0xAC00 || unicode > 0xD7A3) + { + return GeneratedFont::getGlyph(unicode, pixelData, bitsPerPixel); + } + else + { + fusedNode.unicode = unicode; + bitsPerPixel = 1; + pixelData = 0; + return const_cast(&fusedNode); + } +} + +GlyphNode GeneratedVectorFont::glyphNode; // Static member + +GeneratedVectorFont::GeneratedVectorFont(uint16_t baseline, float scale, const VectorFontNode* vectorGlyphs, const VectorFontData& fontData, + const uint16_t* const* glyphData, const VectorKerningNode* kerning, + const uint16_t* const gsubData, const FontContextualFormsTable* formsTable) + : Font((int)ceilf((fontData.maxBelowBottom + fontData.baselineHeight) * scale), baseline, + (uint8_t)ceilf(fontData.maxAboveTop * scale), + (uint8_t)ceilf(fontData.maxBelowBottom * scale), 0 /*bitsPerPixel*/, 0 /*byteAlignRow*/, + (uint8_t)ceilf(fontData.maxLeft * scale), + (uint8_t)ceilf(fontData.maxRight * scale), + fontData.fallbackChar, + fontData.ellipsisChar), + scaleFactor(scale), vectorNodes(vectorGlyphs), vectorTable(glyphData), kerningTable(kerning), + arabicTable(formsTable), numberOfGlyphs(fontData.numberOfGlyphs) +{ + if (gsubData[0] != 0) + { + gsubTable = gsubData; + } + else + { + gsubTable = 0; + } +} + +const GlyphNode* GeneratedVectorFont::getGlyph(Unicode::UnicodeChar unicode) const +{ + const VectorFontNode* const node = find(unicode); + if (node == 0) + { + return 0; + } + else + { + return getGlyphNode(node); + } +} + +const GlyphNode* GeneratedVectorFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const +{ + const VectorFontNode* const node = find(unicode); + if (node == 0) + { + return 0; + } + else + { + const uint16_t* contourData = &(vectorTable[unicode / 2048][node->dataOffset]); + pixelData = (const uint8_t*)contourData; + bitsPerPixel = 0xFF; + return getGlyphNode(node); + } +} + +const GlyphNode* GeneratedVectorFont::getGlyphNode(const VectorFontNode* node) const +{ + glyphNode.dataOffset = 0; + uint8_t flags = 0; + + //Convert data from VectorFontNode to glyphNode using scaleFactor + glyphNode.unicode = node->unicode; + + const int width = (node->width == 0) ? 0 : ((int)ceilf(node->width * scaleFactor) + 1); + glyphNode._width = width; // Save low 8 bit + // Set flags bits for values above 8 bit + if (width > 255) + { + flags |= GLYPH_DATA_WIDTH_BIT8; + } + + const int height = (int)ceilf(node->height * scaleFactor); + glyphNode._height = height; + if (height > 255) + { + flags |= GLYPH_DATA_HEIGHT_BIT8; + } + + const int top = (int)ceilf(node->top * scaleFactor); + glyphNode._top = top; + if (top > 255) + { + flags |= ((top & 0x300) >> 3); // GLYPH_DATA_TOP_BIT8 + 9 + } + + const int left = (int)(node->left * scaleFactor); + glyphNode.left = left; + + const int advance = (int)(node->advance * scaleFactor + 0.5f); + glyphNode._advance = advance; + if (advance > 255) + { + flags |= GLYPH_DATA_ADVANCE_BIT8; + } + + glyphNode._kerningTablePos = (uint8_t)node->kerningTablePos; + if (node->kerningTablePos > 255) + { + flags |= (node->kerningTablePos >> 8) & GLYPH_DATA_KERNINGTABLEPOS_BIT8_10; + } + + glyphNode.kerningTableSize = node->kerningTableSize; + + glyphNode.flags = flags; + + return &glyphNode; +} + +int8_t GeneratedVectorFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const +{ + if (!glyph || glyph->kerningTableSize == 0) + { + return 0; + } + + const VectorKerningNode* kerndata = kerningTable + glyph->kerningTablePos(); + for (uint16_t i = glyph->kerningTableSize; i > 0; i--, kerndata++) + { + if (prevChar == kerndata->unicodePrevChar) + { + const float scaledDistance = kerndata->distance * scaleFactor; + return (int)(scaledDistance >= 0.0f ? (scaledDistance + 0.5f) : (scaledDistance - 0.5f)); + } + if (prevChar < kerndata->unicodePrevChar) + { + break; + } + } + return 0; +} + +const VectorFontNode* GeneratedVectorFont::find(Unicode::UnicodeChar unicode) const +{ + // Some fonts does not have a glyphList. Cannot be searched... + if (vectorNodes == 0) + { + return 0; + } + + int32_t min = 0; + int32_t max = numberOfGlyphs - 1; + + int32_t mid = min + (unicode - vectorNodes[min].unicode); // Linear up from [min].unicode + if (mid < min) + { + // Unicode < [min].unicode => not found + return (VectorFontNode*)0; + } + if (mid > max) + { + // Linear up ends too high + mid = max - (vectorNodes[max].unicode - unicode); // Linear down from [max].unicode + if (mid > max) + { + // Unicode > [max].unicode => not found + return (VectorFontNode*)0; + } + if (mid < min) + { + // Linear down ends too low, take the middle element + mid = (min + max) / 2; + } + } + while (min <= max) + { + const Unicode::UnicodeChar midUnicode = vectorNodes[mid].unicode; + if (unicode == midUnicode) + { + // Found at [mid] + return vectorNodes + mid; + } + if (unicode < midUnicode) + { + // Unicode is in lower half + max = mid - 1; + if (max < min) + { + // Range is empty => not found + break; + } + // We adjusted max, try linear down from [max].unicode + mid = max - (vectorNodes[max].unicode - unicode); + if (mid > max) + { + // Unicode > [max].unicode => not found + break; + } + if (mid < min) + { + // Linear down ends too low, take the middle element + mid = (min + max) / 2; + } + } + else + { + // Unicode is in upper half + min = mid + 1; + if (min > max) + { + // Range is empty => not found + break; + } + // We adjusted min, try linear up from [min].unicode + mid = min + (unicode - vectorNodes[min].unicode); + if (mid < min) + { + // Unicode < [min].unicode => not found + break; + } + if (mid > max) + { + // Linear up ends too high, take the middle element + mid = (min + max) / 2; + } + } + } + return (VectorFontNode*)0; +} + +CompressedMappedFont::CompressedMappedFont(const GlyphNode* glyphs, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable) + : GeneratedFont(glyphs, numGlyphs, height, baseline, pixAboveTop, pixBelowBottom, bitsPerPixel, byteAlignRow, maxLeft, maxRight, glyphDataInternalFlash, kerningList, fallbackChar, ellipsisChar, gsubData, formsTable) +{ +} + +const GlyphNode* CompressedMappedFont::getGlyph(Unicode::UnicodeChar unicode) const +{ + return find(unicode); +} + +const uint8_t* CompressedMappedFont::getPixelData(const GlyphNode* glyph) const +{ + const uint8_t* pixelData = CompressedFontCache::hasCachedGlyph(glyph); + if (pixelData) + { + return pixelData; + } + + const uint8_t* const* table = (const uint8_t* const*)glyphData; + const uint8_t* compressedData = &(table[glyph->unicode / 2048][glyph->dataOffset & 0x3FFFFFFF]); + return CompressedFontCache::cacheGlyph(glyph, compressedData); +} + +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_18_2bpp.cpp new file mode 100644 index 00000000..c6feee7e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_18_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Italic_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_20_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_20_2bpp.cpp new file mode 100644 index 00000000..ba9fb98a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Italic_20_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Italic_20_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_10_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_10_2bpp.cpp new file mode 100644 index 00000000..9838310e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_10_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_10_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_18_2bpp.cpp new file mode 100644 index 00000000..ffab07e1 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_18_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_25_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_25_2bpp.cpp new file mode 100644 index 00000000..4ac9a569 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_25_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_25_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_50_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_50_2bpp.cpp new file mode 100644 index 00000000..8bda024a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Medium_50_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_50_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_14_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_14_2bpp.cpp new file mode 100644 index 00000000..58dd2c6e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_14_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_14_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_16_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_16_2bpp.cpp new file mode 100644 index 00000000..30bc3e03 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_16_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_16_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_18_2bpp.cpp new file mode 100644 index 00000000..d1ca4090 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_Regular_18_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_18_2bpp.cpp new file mode 100644 index 00000000..188b5008 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_18_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_20_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_20_2bpp.cpp new file mode 100644 index 00000000..9037503c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_20_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_20_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_25_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_25_2bpp.cpp new file mode 100644 index 00000000..c30ef3de --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_25_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_25_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_30_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_30_2bpp.cpp new file mode 100644 index 00000000..75e81a3f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_30_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_30_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_35_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_35_2bpp.cpp new file mode 100644 index 00000000..769a8ad9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_35_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_35_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_40_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_40_2bpp.cpp new file mode 100644 index 00000000..7165270a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_40_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_40_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_60_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_60_2bpp.cpp new file mode 100644 index 00000000..3d18abdb --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Kerning_Poppins_SemiBold_60_2bpp.cpp @@ -0,0 +1,6 @@ +#include + +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_60_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0 } +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_18_2bpp.cpp new file mode 100644 index 00000000..3953c0fe --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_18_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Italic_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space + { 0, 0x0021, 4, 13, 13, 1, 5, 0, 0, 0x00 }, // exclam + { 13, 0x0022, 4, 4, 15, 2, 5, 0, 0, 0x00 }, // quotedbl + { 17, 0x0023, 15, 13, 13, 0, 15, 0, 0, 0x00 }, // numbersign + { 66, 0x0024, 10, 16, 14, 0, 11, 0, 0, 0x00 }, // dollar + { 106, 0x0025, 11, 13, 13, 1, 12, 0, 0, 0x00 }, // percent + { 142, 0x0026, 13, 13, 13, 0, 14, 0, 0, 0x00 }, // ampersand + { 185, 0x0027, 2, 4, 15, 2, 3, 0, 0, 0x00 }, // quotesingle + { 187, 0x0028, 8, 20, 17, 2, 8, 0, 0, 0x00 }, // parenleft + { 227, 0x0029, 8, 20, 17, -1, 8, 0, 0, 0x00 }, // parenright + { 267, 0x002A, 7, 7, 13, 2, 9, 0, 0, 0x00 }, // asterisk + { 280, 0x002B, 10, 11, 12, 1, 12, 0, 0, 0x00 }, // plus + { 308, 0x002C, 5, 5, 2, -2, 4, 0, 0, 0x00 }, // comma + { 315, 0x002D, 8, 2, 7, 1, 10, 0, 0, 0x00 }, // hyphen + { 319, 0x002E, 3, 3, 3, 0, 4, 0, 0, 0x00 }, // period + { 322, 0x002F, 11, 20, 17, -1, 9, 0, 0, 0x00 }, // slash + { 377, 0x0030, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // zero + { 410, 0x0031, 5, 13, 13, 1, 6, 0, 0, 0x00 }, // one + { 427, 0x0032, 10, 13, 13, 0, 10, 0, 0, 0x00 }, // two + { 460, 0x0033, 10, 13, 13, 0, 11, 0, 0, 0x00 }, // three + { 493, 0x0034, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // four + { 529, 0x0035, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // five + { 562, 0x0036, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // six + { 595, 0x0037, 10, 13, 13, 1, 10, 0, 0, 0x00 }, // seven + { 628, 0x0038, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // eight + { 664, 0x0039, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // nine + { 697, 0x003A, 3, 10, 10, 0, 4, 0, 0, 0x00 }, // colon + { 705, 0x003B, 5, 13, 10, -1, 5, 0, 0, 0x00 }, // semicolon + { 722, 0x003C, 7, 9, 11, 2, 10, 0, 0, 0x00 }, // less + { 738, 0x003D, 11, 6, 9, 1, 13, 0, 0, 0x00 }, // equal + { 755, 0x003E, 7, 9, 11, 1, 10, 0, 0, 0x00 }, // greater + { 771, 0x003F, 9, 13, 13, 1, 9, 0, 0, 0x00 }, // question + { 801, 0x0040, 16, 15, 12, 1, 18, 0, 0, 0x00 }, // at + { 861, 0x0041, 11, 13, 13, 0, 12, 0, 0, 0x00 }, // A + { 897, 0x0042, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // B + { 933, 0x0043, 13, 13, 13, 1, 14, 0, 0, 0x00 }, // C + { 976, 0x0044, 13, 13, 13, 0, 13, 0, 0, 0x00 }, // D + { 1019, 0x0045, 10, 13, 13, 0, 9, 0, 0, 0x00 }, // E + { 1052, 0x0046, 10, 13, 13, 0, 9, 0, 0, 0x00 }, // F + { 1085, 0x0047, 13, 13, 13, 1, 14, 0, 0, 0x00 }, // G + { 1128, 0x0048, 13, 13, 13, 0, 12, 0, 0, 0x00 }, // H + { 1171, 0x0049, 5, 13, 13, 0, 4, 0, 0, 0x00 }, // I + { 1188, 0x004A, 9, 13, 13, 0, 10, 0, 0, 0x00 }, // J + { 1218, 0x004B, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // K + { 1254, 0x004C, 7, 13, 13, 0, 8, 0, 0, 0x00 }, // L + { 1277, 0x004D, 16, 13, 13, 0, 16, 0, 0, 0x00 }, // M + { 1329, 0x004E, 13, 13, 13, 0, 13, 0, 0, 0x00 }, // N + { 1372, 0x004F, 13, 13, 13, 1, 14, 0, 0, 0x00 }, // O + { 1415, 0x0050, 11, 13, 13, 0, 10, 0, 0, 0x00 }, // P + { 1451, 0x0051, 13, 15, 13, 1, 14, 0, 0, 0x00 }, // Q + { 1500, 0x0052, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // R + { 1536, 0x0053, 9, 13, 13, 1, 10, 0, 0, 0x00 }, // S + { 1566, 0x0054, 10, 13, 13, 1, 10, 0, 0, 0x00 }, // T + { 1599, 0x0055, 11, 13, 13, 1, 12, 0, 0, 0x00 }, // U + { 1635, 0x0056, 12, 13, 13, 1, 12, 0, 0, 0x00 }, // V + { 1674, 0x0057, 18, 13, 13, 1, 18, 0, 0, 0x00 }, // W + { 1733, 0x0058, 12, 13, 13, 0, 11, 0, 0, 0x00 }, // X + { 1772, 0x0059, 11, 13, 13, 1, 11, 0, 0, 0x00 }, // Y + { 1808, 0x005A, 10, 13, 13, 0, 10, 0, 0, 0x00 }, // Z + { 1841, 0x005B, 7, 21, 17, 1, 8, 0, 0, 0x00 }, // bracketleft + { 1878, 0x005C, 4, 20, 17, 3, 9, 0, 0, 0x00 }, // backslash + { 1898, 0x005D, 8, 21, 17, 0, 8, 0, 0, 0x00 }, // bracketright + { 1940, 0x005E, 10, 10, 13, 0, 11, 0, 0, 0x00 }, // asciicircum + { 1965, 0x005F, 11, 2, 0, 0, 13, 0, 0, 0x00 }, // underscore + { 1971, 0x0060, 5, 3, 14, 1, 5, 0, 0, 0x00 }, // grave + { 1975, 0x0061, 12, 10, 10, 0, 12, 0, 0, 0x00 }, // a + { 2005, 0x0062, 12, 13, 13, 0, 12, 0, 0, 0x00 }, // b + { 2044, 0x0063, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // c + { 2072, 0x0064, 12, 13, 13, 0, 12, 0, 0, 0x00 }, // d + { 2111, 0x0065, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // e + { 2139, 0x0066, 6, 13, 13, 1, 6, 0, 0, 0x00 }, // f + { 2159, 0x0067, 12, 15, 10, 0, 12, 0, 0, 0x00 }, // g + { 2204, 0x0068, 11, 13, 13, 0, 12, 0, 0, 0x00 }, // h + { 2240, 0x0069, 5, 13, 13, 0, 4, 0, 0, 0x00 }, // i + { 2257, 0x006A, 7, 18, 13, -2, 4, 0, 0, 0x00 }, // j + { 2289, 0x006B, 10, 13, 13, 0, 9, 0, 0, 0x00 }, // k + { 2322, 0x006C, 5, 13, 13, 0, 4, 0, 0, 0x00 }, // l + { 2339, 0x006D, 18, 10, 10, 0, 19, 0, 0, 0x00 }, // m + { 2384, 0x006E, 11, 10, 10, 0, 12, 0, 0, 0x00 }, // n + { 2412, 0x006F, 11, 10, 10, 0, 12, 0, 0, 0x00 }, // o + { 2440, 0x0070, 13, 15, 10, -1, 12, 0, 0, 0x00 }, // p + { 2489, 0x0071, 12, 15, 10, 0, 12, 0, 0, 0x00 }, // q + { 2534, 0x0072, 7, 10, 10, 0, 7, 0, 0, 0x00 }, // r + { 2552, 0x0073, 9, 10, 10, 0, 9, 0, 0, 0x00 }, // s + { 2575, 0x0074, 6, 13, 13, 1, 7, 0, 0, 0x00 }, // t + { 2595, 0x0075, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // u + { 2620, 0x0076, 10, 10, 10, 1, 10, 0, 0, 0x00 }, // v + { 2645, 0x0077, 14, 10, 10, 1, 15, 0, 0, 0x00 }, // w + { 2680, 0x0078, 10, 10, 10, -1, 9, 0, 0, 0x00 }, // x + { 2705, 0x0079, 11, 15, 10, 0, 10, 0, 0, 0x00 }, // y + { 2747, 0x007A, 8, 10, 10, 0, 8, 0, 0, 0x00 }, // z + { 2767, 0x007B, 7, 21, 17, 2, 8, 0, 0, 0x00 }, // braceleft + { 2804, 0x007C, 5, 16, 14, 0, 5, 0, 0, 0x00 }, // bar + { 2824, 0x007D, 7, 21, 17, 0, 8, 0, 0, 0x00 }, // braceright + { 2861, 0x007E, 8, 3, 7, 1, 9, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 9, 3, 3, 0, 10, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Italic_18_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Italic_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Italic_18_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Italic_18_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Italic_18_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Italic_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Italic_18_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Italic_18_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Italic_18_2bpp(glyphs_Poppins_Italic_18_2bpp, 96, 23, 18, 0, 0, 2, 0, 2, 2, unicodes_Poppins_Italic_18_2bpp, kerning_Poppins_Italic_18_2bpp, 63, 8230, 0, 0); + return Poppins_Italic_18_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_20_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_20_2bpp.cpp new file mode 100644 index 00000000..875edbd7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Italic_20_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Italic_20_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 6, 0, 0, 0x00 }, // space + { 0, 0x0021, 5, 14, 14, 1, 6, 0, 0, 0x00 }, // exclam + { 18, 0x0022, 5, 4, 16, 2, 6, 0, 0, 0x00 }, // quotedbl + { 23, 0x0023, 17, 15, 15, 0, 17, 0, 0, 0x00 }, // numbersign + { 87, 0x0024, 10, 18, 16, 1, 12, 0, 0, 0x00 }, // dollar + { 132, 0x0025, 12, 14, 14, 1, 14, 0, 0, 0x00 }, // percent + { 174, 0x0026, 14, 14, 14, 0, 15, 0, 0, 0x00 }, // ampersand + { 223, 0x0027, 2, 4, 16, 2, 3, 0, 0, 0x00 }, // quotesingle + { 225, 0x0028, 9, 22, 18, 2, 9, 0, 0, 0x00 }, // parenleft + { 275, 0x0029, 9, 22, 18, -1, 9, 0, 0, 0x00 }, // parenright + { 325, 0x002A, 8, 8, 15, 2, 10, 0, 0, 0x00 }, // asterisk + { 341, 0x002B, 11, 10, 12, 2, 14, 0, 0, 0x00 }, // plus + { 369, 0x002C, 5, 6, 3, -2, 4, 0, 0, 0x00 }, // comma + { 377, 0x002D, 9, 2, 8, 1, 11, 0, 0, 0x00 }, // hyphen + { 382, 0x002E, 3, 3, 3, 0, 4, 0, 0, 0x00 }, // period + { 385, 0x002F, 12, 22, 19, -1, 10, 0, 0, 0x00 }, // slash + { 451, 0x0030, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // zero + { 493, 0x0031, 5, 14, 14, 1, 6, 0, 0, 0x00 }, // one + { 511, 0x0032, 11, 15, 15, 0, 12, 0, 0, 0x00 }, // two + { 553, 0x0033, 12, 15, 15, 0, 12, 0, 0, 0x00 }, // three + { 598, 0x0034, 12, 14, 14, 0, 13, 0, 0, 0x00 }, // four + { 640, 0x0035, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // five + { 682, 0x0036, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // six + { 724, 0x0037, 10, 15, 15, 2, 11, 0, 0, 0x00 }, // seven + { 762, 0x0038, 12, 15, 15, 0, 13, 0, 0, 0x00 }, // eight + { 807, 0x0039, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // nine + { 849, 0x003A, 3, 11, 11, 0, 4, 0, 0, 0x00 }, // colon + { 858, 0x003B, 6, 14, 11, -1, 5, 0, 0, 0x00 }, // semicolon + { 879, 0x003C, 8, 9, 12, 2, 11, 0, 0, 0x00 }, // less + { 897, 0x003D, 11, 6, 10, 2, 14, 0, 0, 0x00 }, // equal + { 914, 0x003E, 7, 9, 12, 2, 11, 0, 0, 0x00 }, // greater + { 930, 0x003F, 10, 14, 14, 1, 10, 0, 0, 0x00 }, // question + { 965, 0x0040, 18, 18, 13, 1, 20, 0, 0, 0x00 }, // at + { 1046, 0x0041, 12, 14, 14, 0, 13, 0, 0, 0x00 }, // A + { 1088, 0x0042, 12, 14, 14, 0, 12, 0, 0, 0x00 }, // B + { 1130, 0x0043, 14, 14, 14, 1, 15, 0, 0, 0x00 }, // C + { 1179, 0x0044, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // D + { 1228, 0x0045, 11, 14, 14, 0, 10, 0, 0, 0x00 }, // E + { 1267, 0x0046, 11, 14, 14, 0, 10, 0, 0, 0x00 }, // F + { 1306, 0x0047, 14, 14, 14, 1, 16, 0, 0, 0x00 }, // G + { 1355, 0x0048, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // H + { 1404, 0x0049, 5, 14, 14, 0, 5, 0, 0, 0x00 }, // I + { 1422, 0x004A, 10, 14, 14, 0, 11, 0, 0, 0x00 }, // J + { 1457, 0x004B, 13, 14, 14, 0, 12, 0, 0, 0x00 }, // K + { 1503, 0x004C, 8, 14, 14, 0, 9, 0, 0, 0x00 }, // L + { 1531, 0x004D, 17, 14, 14, 0, 17, 0, 0, 0x00 }, // M + { 1591, 0x004E, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // N + { 1640, 0x004F, 14, 14, 14, 1, 16, 0, 0, 0x00 }, // O + { 1689, 0x0050, 12, 14, 14, 0, 12, 0, 0, 0x00 }, // P + { 1731, 0x0051, 14, 17, 14, 1, 16, 0, 0, 0x00 }, // Q + { 1791, 0x0052, 12, 14, 14, 0, 12, 0, 0, 0x00 }, // R + { 1833, 0x0053, 10, 14, 14, 1, 12, 0, 0, 0x00 }, // S + { 1868, 0x0054, 10, 14, 14, 2, 11, 0, 0, 0x00 }, // T + { 1903, 0x0055, 13, 14, 14, 1, 14, 0, 0, 0x00 }, // U + { 1949, 0x0056, 13, 14, 14, 2, 14, 0, 0, 0x00 }, // V + { 1995, 0x0057, 19, 14, 14, 2, 20, 0, 0, 0x00 }, // W + { 2062, 0x0058, 13, 14, 14, 0, 12, 0, 0, 0x00 }, // X + { 2108, 0x0059, 11, 14, 14, 2, 12, 0, 0, 0x00 }, // Y + { 2147, 0x005A, 12, 14, 14, 0, 11, 0, 0, 0x00 }, // Z + { 2189, 0x005B, 8, 22, 18, 1, 8, 0, 0, 0x00 }, // bracketleft + { 2233, 0x005C, 4, 22, 19, 3, 10, 0, 0, 0x00 }, // backslash + { 2255, 0x005D, 8, 22, 18, 0, 8, 0, 0, 0x00 }, // bracketright + { 2299, 0x005E, 12, 11, 14, 0, 13, 0, 0, 0x00 }, // asciicircum + { 2332, 0x005F, 12, 2, 0, 0, 15, 0, 0, 0x00 }, // underscore + { 2338, 0x0060, 4, 3, 15, 2, 5, 0, 0, 0x00 }, // grave + { 2341, 0x0061, 13, 11, 11, 0, 14, 0, 0, 0x00 }, // a + { 2377, 0x0062, 13, 15, 15, 0, 14, 0, 0, 0x00 }, // b + { 2426, 0x0063, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // c + { 2459, 0x0064, 14, 15, 15, 0, 14, 0, 0, 0x00 }, // d + { 2512, 0x0065, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // e + { 2545, 0x0066, 7, 15, 15, 1, 7, 0, 0, 0x00 }, // f + { 2572, 0x0067, 13, 16, 11, 0, 14, 0, 0, 0x00 }, // g + { 2624, 0x0068, 12, 15, 15, 0, 13, 0, 0, 0x00 }, // h + { 2669, 0x0069, 5, 15, 15, 0, 5, 0, 0, 0x00 }, // i + { 2688, 0x006A, 8, 20, 15, -3, 5, 0, 0, 0x00 }, // j + { 2728, 0x006B, 11, 15, 15, 0, 10, 0, 0, 0x00 }, // k + { 2770, 0x006C, 5, 15, 15, 0, 5, 0, 0, 0x00 }, // l + { 2789, 0x006D, 20, 11, 11, 0, 21, 0, 0, 0x00 }, // m + { 2844, 0x006E, 12, 11, 11, 0, 13, 0, 0, 0x00 }, // n + { 2877, 0x006F, 12, 11, 11, 0, 13, 0, 0, 0x00 }, // o + { 2910, 0x0070, 14, 16, 11, -1, 14, 0, 0, 0x00 }, // p + { 2966, 0x0071, 13, 16, 11, 0, 14, 0, 0, 0x00 }, // q + { 3018, 0x0072, 8, 11, 11, 0, 7, 0, 0, 0x00 }, // r + { 3040, 0x0073, 10, 11, 11, 0, 10, 0, 0, 0x00 }, // s + { 3068, 0x0074, 7, 14, 14, 1, 7, 0, 0, 0x00 }, // t + { 3093, 0x0075, 11, 11, 11, 1, 13, 0, 0, 0x00 }, // u + { 3124, 0x0076, 11, 11, 11, 1, 11, 0, 0, 0x00 }, // v + { 3155, 0x0077, 16, 11, 11, 1, 16, 0, 0, 0x00 }, // w + { 3199, 0x0078, 11, 11, 11, -1, 10, 0, 0, 0x00 }, // x + { 3230, 0x0079, 11, 16, 11, 1, 11, 0, 0, 0x00 }, // y + { 3274, 0x007A, 9, 11, 11, 0, 9, 0, 0, 0x00 }, // z + { 3299, 0x007B, 8, 22, 18, 2, 9, 0, 0, 0x00 }, // braceleft + { 3343, 0x007C, 6, 18, 16, 0, 6, 0, 0, 0x00 }, // bar + { 3370, 0x007D, 9, 22, 18, -1, 9, 0, 0, 0x00 }, // braceright + { 3420, 0x007E, 10, 3, 8, 0, 10, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 10, 3, 3, 0, 12, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Italic_20_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Italic_20_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_20_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Italic_20_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Italic_20_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Italic_20_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Italic_20_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Italic_20_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Italic_20_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Italic_20_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Italic_20_2bpp(glyphs_Poppins_Italic_20_2bpp, 96, 25, 20, 0, 0, 2, 0, 3, 2, unicodes_Poppins_Italic_20_2bpp, kerning_Poppins_Italic_20_2bpp, 63, 8230, 0, 0); + return Poppins_Italic_20_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_10_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_10_2bpp.cpp new file mode 100644 index 00000000..4c60de26 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_10_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_10_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 3, 0, 0, 0x00 }, // space + { 0, 0x0021, 2, 7, 7, 1, 3, 0, 0, 0x00 }, // exclam + { 4, 0x0022, 3, 3, 9, 0, 3, 0, 0, 0x00 }, // quotedbl + { 7, 0x0023, 8, 8, 8, 0, 9, 0, 0, 0x00 }, // numbersign + { 23, 0x0024, 6, 9, 8, 0, 7, 0, 0, 0x00 }, // dollar + { 37, 0x0025, 8, 7, 7, 0, 8, 0, 0, 0x00 }, // percent + { 51, 0x0026, 8, 7, 7, 0, 8, 0, 0, 0x00 }, // ampersand + { 65, 0x0027, 2, 2, 8, 0, 2, 0, 0, 0x00 }, // quotesingle + { 66, 0x0028, 4, 12, 10, 1, 5, 0, 0, 0x00 }, // parenleft + { 78, 0x0029, 4, 12, 10, 0, 5, 0, 0, 0x00 }, // parenright + { 90, 0x002A, 3, 4, 8, 1, 5, 0, 0, 0x00 }, // asterisk + { 93, 0x002B, 5, 6, 7, 1, 7, 0, 0, 0x00 }, // plus + { 101, 0x002C, 2, 3, 2, 0, 2, 0, 0, 0x00 }, // comma + { 103, 0x002D, 4, 1, 4, 1, 6, 0, 0, 0x00 }, // hyphen + { 104, 0x002E, 2, 2, 2, 0, 2, 0, 0, 0x00 }, // period + { 105, 0x002F, 5, 12, 10, 0, 5, 0, 0, 0x00 }, // slash + { 120, 0x0030, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // zero + { 132, 0x0031, 3, 8, 8, 0, 4, 0, 0, 0x00 }, // one + { 138, 0x0032, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // two + { 150, 0x0033, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // three + { 162, 0x0034, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // four + { 174, 0x0035, 5, 8, 8, 1, 6, 0, 0, 0x00 }, // five + { 184, 0x0036, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // six + { 196, 0x0037, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // seven + { 208, 0x0038, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // eight + { 220, 0x0039, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // nine + { 232, 0x003A, 2, 6, 6, 0, 2, 0, 0, 0x00 }, // colon + { 235, 0x003B, 2, 8, 6, 0, 3, 0, 0, 0x00 }, // semicolon + { 239, 0x003C, 4, 5, 6, 1, 6, 0, 0, 0x00 }, // less + { 244, 0x003D, 6, 3, 5, 1, 8, 0, 0, 0x00 }, // equal + { 249, 0x003E, 4, 5, 6, 1, 6, 0, 0, 0x00 }, // greater + { 254, 0x003F, 5, 7, 7, 0, 5, 0, 0, 0x00 }, // question + { 263, 0x0040, 10, 9, 7, 0, 10, 0, 0, 0x00 }, // at + { 286, 0x0041, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // A + { 299, 0x0042, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // B + { 310, 0x0043, 7, 7, 7, 0, 8, 0, 0, 0x00 }, // C + { 323, 0x0044, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // D + { 336, 0x0045, 5, 7, 7, 0, 5, 0, 0, 0x00 }, // E + { 345, 0x0046, 5, 7, 7, 0, 5, 0, 0, 0x00 }, // F + { 354, 0x0047, 8, 7, 7, 0, 8, 0, 0, 0x00 }, // G + { 368, 0x0048, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // H + { 381, 0x0049, 2, 7, 7, 0, 3, 0, 0, 0x00 }, // I + { 385, 0x004A, 5, 7, 7, 0, 6, 0, 0, 0x00 }, // J + { 394, 0x004B, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // K + { 405, 0x004C, 5, 7, 7, 0, 4, 0, 0, 0x00 }, // L + { 414, 0x004D, 8, 7, 7, 0, 9, 0, 0, 0x00 }, // M + { 428, 0x004E, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // N + { 441, 0x004F, 8, 7, 7, 0, 8, 0, 0, 0x00 }, // O + { 455, 0x0050, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // P + { 466, 0x0051, 8, 9, 7, 0, 8, 0, 0, 0x00 }, // Q + { 484, 0x0052, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // R + { 495, 0x0053, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // S + { 506, 0x0054, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // T + { 517, 0x0055, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // U + { 530, 0x0056, 7, 7, 7, 0, 7, 0, 0, 0x00 }, // V + { 543, 0x0057, 10, 7, 7, 0, 10, 0, 0, 0x00 }, // W + { 561, 0x0058, 6, 7, 7, 0, 7, 0, 0, 0x00 }, // X + { 572, 0x0059, 6, 7, 7, 0, 6, 0, 0, 0x00 }, // Y + { 583, 0x005A, 5, 7, 7, 0, 6, 0, 0, 0x00 }, // Z + { 592, 0x005B, 3, 12, 10, 1, 5, 0, 0, 0x00 }, // bracketleft + { 601, 0x005C, 5, 12, 10, 1, 7, 0, 0, 0x00 }, // backslash + { 616, 0x005D, 3, 12, 10, 1, 5, 0, 0, 0x00 }, // bracketright + { 625, 0x005E, 6, 6, 8, 0, 7, 0, 0, 0x00 }, // asciicircum + { 634, 0x005F, 6, 1, 0, 1, 8, 0, 0, 0x00 }, // underscore + { 636, 0x0060, 3, 3, 9, 0, 3, 0, 0, 0x00 }, // grave + { 639, 0x0061, 6, 6, 6, 0, 7, 0, 0, 0x00 }, // a + { 648, 0x0062, 7, 8, 8, 0, 7, 0, 0, 0x00 }, // b + { 662, 0x0063, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // c + { 671, 0x0064, 6, 8, 8, 0, 7, 0, 0, 0x00 }, // d + { 683, 0x0065, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // e + { 692, 0x0066, 3, 8, 8, 0, 3, 0, 0, 0x00 }, // f + { 698, 0x0067, 6, 9, 6, 0, 7, 0, 0, 0x00 }, // g + { 712, 0x0068, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // h + { 724, 0x0069, 2, 8, 8, 0, 3, 0, 0, 0x00 }, // i + { 728, 0x006A, 3, 11, 8, -1, 3, 0, 0, 0x00 }, // j + { 737, 0x006B, 5, 8, 8, 0, 6, 0, 0, 0x00 }, // k + { 747, 0x006C, 2, 8, 8, 0, 3, 0, 0, 0x00 }, // l + { 751, 0x006D, 10, 6, 6, 0, 10, 0, 0, 0x00 }, // m + { 766, 0x006E, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // n + { 775, 0x006F, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // o + { 784, 0x0070, 7, 9, 6, 0, 7, 0, 0, 0x00 }, // p + { 800, 0x0071, 6, 9, 6, 0, 7, 0, 0, 0x00 }, // q + { 814, 0x0072, 4, 6, 6, 0, 4, 0, 0, 0x00 }, // r + { 820, 0x0073, 5, 6, 6, 0, 5, 0, 0, 0x00 }, // s + { 828, 0x0074, 4, 7, 7, 0, 4, 0, 0, 0x00 }, // t + { 835, 0x0075, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // u + { 844, 0x0076, 6, 6, 6, 0, 6, 0, 0, 0x00 }, // v + { 853, 0x0077, 8, 6, 6, 0, 8, 0, 0, 0x00 }, // w + { 865, 0x0078, 5, 6, 6, 0, 5, 0, 0, 0x00 }, // x + { 873, 0x0079, 6, 9, 6, 0, 6, 0, 0, 0x00 }, // y + { 887, 0x007A, 5, 6, 6, 0, 5, 0, 0, 0x00 }, // z + { 895, 0x007B, 4, 12, 10, 1, 5, 0, 0, 0x00 }, // braceleft + { 907, 0x007C, 2, 10, 9, 1, 3, 0, 0, 0x00 }, // bar + { 912, 0x007D, 3, 12, 10, 1, 5, 0, 0, 0x00 }, // braceright + { 921, 0x007E, 5, 2, 5, 0, 6, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 6, 2, 2, 0, 6, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Medium_10_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_10_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_10_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_10_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Medium_10_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Medium_10_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Medium_10_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_10_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Medium_10_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Medium_10_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Medium_10_2bpp(glyphs_Poppins_Medium_10_2bpp, 96, 13, 10, 0, 0, 2, 0, 1, 1, unicodes_Poppins_Medium_10_2bpp, kerning_Poppins_Medium_10_2bpp, 63, 8230, 0, 0); + return Poppins_Medium_10_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_18_2bpp.cpp new file mode 100644 index 00000000..6370315c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_18_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space + { 0, 0x0021, 3, 12, 12, 1, 6, 0, 0, 0x00 }, // exclam + { 9, 0x0022, 5, 4, 15, 0, 6, 0, 0, 0x00 }, // quotedbl + { 14, 0x0023, 15, 13, 13, 0, 16, 0, 0, 0x00 }, // numbersign + { 63, 0x0024, 9, 16, 14, 1, 12, 0, 0, 0x00 }, // dollar + { 99, 0x0025, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // percent + { 141, 0x0026, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // ampersand + { 183, 0x0027, 3, 4, 15, 0, 3, 0, 0, 0x00 }, // quotesingle + { 186, 0x0028, 6, 20, 17, 2, 9, 0, 0, 0x00 }, // parenleft + { 216, 0x0029, 7, 20, 17, 0, 9, 0, 0, 0x00 }, // parenright + { 251, 0x002A, 7, 7, 13, 1, 9, 0, 0, 0x00 }, // asterisk + { 264, 0x002B, 9, 9, 11, 2, 13, 0, 0, 0x00 }, // plus + { 285, 0x002C, 4, 5, 3, 0, 4, 0, 0, 0x00 }, // comma + { 290, 0x002D, 8, 2, 8, 1, 11, 0, 0, 0x00 }, // hyphen + { 294, 0x002E, 3, 3, 3, 1, 4, 0, 0, 0x00 }, // period + { 297, 0x002F, 7, 20, 17, 1, 9, 0, 0, 0x00 }, // slash + { 332, 0x0030, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // zero + { 365, 0x0031, 5, 13, 13, 0, 6, 0, 0, 0x00 }, // one + { 382, 0x0032, 9, 13, 13, 1, 10, 0, 0, 0x00 }, // two + { 412, 0x0033, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // three + { 442, 0x0034, 11, 13, 13, 0, 12, 0, 0, 0x00 }, // four + { 478, 0x0035, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // five + { 511, 0x0036, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // six + { 544, 0x0037, 10, 13, 13, 0, 10, 0, 0, 0x00 }, // seven + { 577, 0x0038, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // eight + { 610, 0x0039, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // nine + { 643, 0x003A, 3, 10, 10, 1, 4, 0, 0, 0x00 }, // colon + { 651, 0x003B, 4, 13, 10, 0, 5, 0, 0, 0x00 }, // semicolon + { 664, 0x003C, 6, 8, 10, 2, 11, 0, 0, 0x00 }, // less + { 676, 0x003D, 10, 6, 10, 2, 14, 0, 0, 0x00 }, // equal + { 691, 0x003E, 7, 8, 10, 2, 11, 0, 0, 0x00 }, // greater + { 705, 0x003F, 9, 12, 12, 0, 10, 0, 0, 0x00 }, // question + { 732, 0x0040, 16, 16, 12, 1, 18, 0, 0, 0x00 }, // at + { 796, 0x0041, 12, 12, 12, 0, 13, 0, 0, 0x00 }, // A + { 832, 0x0042, 10, 12, 12, 1, 11, 0, 0, 0x00 }, // B + { 862, 0x0043, 13, 12, 12, 0, 14, 0, 0, 0x00 }, // C + { 901, 0x0044, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // D + { 934, 0x0045, 8, 12, 12, 1, 9, 0, 0, 0x00 }, // E + { 958, 0x0046, 8, 12, 12, 1, 9, 0, 0, 0x00 }, // F + { 982, 0x0047, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // G + { 1024, 0x0048, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // H + { 1057, 0x0049, 3, 12, 12, 1, 5, 0, 0, 0x00 }, // I + { 1066, 0x004A, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // J + { 1090, 0x004B, 10, 12, 12, 1, 11, 0, 0, 0x00 }, // K + { 1120, 0x004C, 7, 12, 12, 1, 8, 0, 0, 0x00 }, // L + { 1141, 0x004D, 14, 12, 12, 1, 16, 0, 0, 0x00 }, // M + { 1183, 0x004E, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // N + { 1216, 0x004F, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // O + { 1258, 0x0050, 9, 12, 12, 1, 11, 0, 0, 0x00 }, // P + { 1285, 0x0051, 14, 14, 12, 0, 14, 0, 0, 0x00 }, // Q + { 1334, 0x0052, 9, 12, 12, 1, 11, 0, 0, 0x00 }, // R + { 1361, 0x0053, 9, 12, 12, 1, 11, 0, 0, 0x00 }, // S + { 1388, 0x0054, 10, 12, 12, 0, 10, 0, 0, 0x00 }, // T + { 1418, 0x0055, 10, 12, 12, 1, 12, 0, 0, 0x00 }, // U + { 1448, 0x0056, 12, 12, 12, 0, 12, 0, 0, 0x00 }, // V + { 1484, 0x0057, 18, 12, 12, 0, 18, 0, 0, 0x00 }, // W + { 1538, 0x0058, 10, 12, 12, 1, 12, 0, 0, 0x00 }, // X + { 1568, 0x0059, 11, 12, 12, 0, 11, 0, 0, 0x00 }, // Y + { 1601, 0x005A, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // Z + { 1625, 0x005B, 5, 20, 17, 2, 9, 0, 0, 0x00 }, // bracketleft + { 1650, 0x005C, 8, 20, 17, 3, 13, 0, 0, 0x00 }, // backslash + { 1690, 0x005D, 4, 20, 17, 2, 9, 0, 0, 0x00 }, // bracketright + { 1710, 0x005E, 10, 10, 13, 1, 12, 0, 0, 0x00 }, // asciicircum + { 1735, 0x005F, 11, 2, 255, 2, 14, 0, 0, 0x60 }, // underscore + { 1741, 0x0060, 4, 3, 14, 0, 5, 0, 0, 0x00 }, // grave + { 1744, 0x0061, 11, 10, 10, 0, 12, 0, 0, 0x00 }, // a + { 1772, 0x0062, 11, 13, 13, 1, 12, 0, 0, 0x00 }, // b + { 1808, 0x0063, 10, 10, 10, 0, 11, 0, 0, 0x00 }, // c + { 1833, 0x0064, 11, 13, 13, 0, 12, 0, 0, 0x00 }, // d + { 1869, 0x0065, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // e + { 1897, 0x0066, 6, 14, 14, 0, 6, 0, 0, 0x00 }, // f + { 1918, 0x0067, 11, 15, 10, 0, 12, 0, 0, 0x00 }, // g + { 1960, 0x0068, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // h + { 1993, 0x0069, 3, 14, 14, 1, 5, 0, 0, 0x00 }, // i + { 2004, 0x006A, 5, 19, 14, -1, 5, 0, 0, 0x00 }, // j + { 2028, 0x006B, 9, 13, 13, 1, 10, 0, 0, 0x00 }, // k + { 2058, 0x006C, 3, 13, 13, 1, 5, 0, 0, 0x00 }, // l + { 2068, 0x006D, 17, 10, 10, 1, 19, 0, 0, 0x00 }, // m + { 2111, 0x006E, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // n + { 2136, 0x006F, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // o + { 2164, 0x0070, 11, 15, 10, 1, 12, 0, 0, 0x00 }, // p + { 2206, 0x0071, 11, 15, 10, 0, 12, 0, 0, 0x00 }, // q + { 2248, 0x0072, 6, 10, 10, 1, 7, 0, 0, 0x00 }, // r + { 2263, 0x0073, 8, 10, 10, 1, 10, 0, 0, 0x00 }, // s + { 2283, 0x0074, 6, 12, 12, 0, 7, 0, 0, 0x00 }, // t + { 2301, 0x0075, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // u + { 2326, 0x0076, 10, 10, 10, 0, 10, 0, 0, 0x00 }, // v + { 2351, 0x0077, 15, 10, 10, 0, 15, 0, 0, 0x00 }, // w + { 2389, 0x0078, 9, 10, 10, 0, 9, 0, 0, 0x00 }, // x + { 2412, 0x0079, 10, 15, 10, 0, 10, 0, 0, 0x00 }, // y + { 2450, 0x007A, 8, 10, 10, 0, 8, 0, 0, 0x00 }, // z + { 2470, 0x007B, 6, 20, 17, 2, 9, 0, 0, 0x00 }, // braceleft + { 2500, 0x007C, 2, 17, 15, 2, 6, 0, 0, 0x00 }, // bar + { 2509, 0x007D, 6, 20, 17, 1, 9, 0, 0, 0x00 }, // braceright + { 2539, 0x007E, 9, 3, 7, 0, 10, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 10, 3, 3, 1, 11, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Medium_18_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Medium_18_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Medium_18_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Medium_18_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Medium_18_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Medium_18_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Medium_18_2bpp(glyphs_Poppins_Medium_18_2bpp, 96, 23, 18, 0, 0, 2, 0, 1, 0, unicodes_Poppins_Medium_18_2bpp, kerning_Poppins_Medium_18_2bpp, 63, 8230, 0, 0); + return Poppins_Medium_18_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_25_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_25_2bpp.cpp new file mode 100644 index 00000000..bb2f2948 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_25_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_25_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 7, 0, 0, 0x00 }, // space + { 0, 0x0021, 4, 17, 17, 2, 8, 0, 0, 0x00 }, // exclam + { 17, 0x0022, 6, 5, 20, 1, 8, 0, 0, 0x00 }, // quotedbl + { 25, 0x0023, 21, 19, 19, 0, 22, 0, 0, 0x00 }, // numbersign + { 125, 0x0024, 13, 22, 20, 1, 16, 0, 0, 0x00 }, // dollar + { 197, 0x0025, 18, 17, 17, 1, 20, 0, 0, 0x00 }, // percent + { 274, 0x0026, 18, 17, 17, 1, 19, 0, 0, 0x00 }, // ampersand + { 351, 0x0027, 3, 5, 20, 1, 4, 0, 0, 0x00 }, // quotesingle + { 355, 0x0028, 9, 28, 23, 3, 12, 0, 0, 0x00 }, // parenleft + { 418, 0x0029, 9, 28, 23, 1, 12, 0, 0, 0x00 }, // parenright + { 481, 0x002A, 9, 10, 19, 2, 13, 0, 0, 0x00 }, // asterisk + { 504, 0x002B, 14, 13, 16, 2, 18, 0, 0, 0x00 }, // plus + { 550, 0x002C, 5, 7, 4, 0, 6, 0, 0, 0x00 }, // comma + { 559, 0x002D, 11, 3, 11, 2, 15, 0, 0, 0x00 }, // hyphen + { 568, 0x002E, 4, 4, 4, 1, 6, 0, 0, 0x00 }, // period + { 572, 0x002F, 10, 28, 24, 1, 13, 0, 0, 0x00 }, // slash + { 642, 0x0030, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // zero + { 709, 0x0031, 6, 19, 19, 1, 9, 0, 0, 0x00 }, // one + { 738, 0x0032, 13, 19, 19, 1, 14, 0, 0, 0x00 }, // two + { 800, 0x0033, 13, 19, 19, 1, 15, 0, 0, 0x00 }, // three + { 862, 0x0034, 15, 18, 18, 1, 16, 0, 0, 0x00 }, // four + { 930, 0x0035, 13, 19, 19, 2, 16, 0, 0, 0x00 }, // five + { 992, 0x0036, 13, 19, 19, 2, 16, 0, 0, 0x00 }, // six + { 1054, 0x0037, 12, 19, 19, 1, 14, 0, 0, 0x00 }, // seven + { 1111, 0x0038, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // eight + { 1178, 0x0039, 13, 19, 19, 2, 16, 0, 0, 0x00 }, // nine + { 1240, 0x003A, 4, 14, 14, 1, 6, 0, 0, 0x00 }, // colon + { 1254, 0x003B, 5, 17, 14, 1, 8, 0, 0, 0x00 }, // semicolon + { 1276, 0x003C, 10, 12, 15, 2, 15, 0, 0, 0x00 }, // less + { 1306, 0x003D, 14, 8, 13, 3, 19, 0, 0, 0x00 }, // equal + { 1334, 0x003E, 9, 12, 15, 3, 15, 0, 0, 0x00 }, // greater + { 1361, 0x003F, 11, 17, 17, 1, 13, 0, 0, 0x00 }, // question + { 1408, 0x0040, 23, 21, 16, 1, 26, 0, 0, 0x00 }, // at + { 1529, 0x0041, 16, 17, 17, 1, 17, 0, 0, 0x00 }, // A + { 1597, 0x0042, 13, 17, 17, 2, 16, 0, 0, 0x00 }, // B + { 1653, 0x0043, 17, 17, 17, 1, 19, 0, 0, 0x00 }, // C + { 1726, 0x0044, 15, 17, 17, 2, 18, 0, 0, 0x00 }, // D + { 1790, 0x0045, 10, 17, 17, 2, 13, 0, 0, 0x00 }, // E + { 1833, 0x0046, 10, 17, 17, 2, 13, 0, 0, 0x00 }, // F + { 1876, 0x0047, 18, 17, 17, 1, 19, 0, 0, 0x00 }, // G + { 1953, 0x0048, 14, 17, 17, 2, 18, 0, 0, 0x00 }, // H + { 2013, 0x0049, 3, 17, 17, 2, 7, 0, 0, 0x00 }, // I + { 2026, 0x004A, 11, 17, 17, 1, 14, 0, 0, 0x00 }, // J + { 2073, 0x004B, 13, 17, 17, 2, 16, 0, 0, 0x00 }, // K + { 2129, 0x004C, 9, 17, 17, 2, 11, 0, 0, 0x00 }, // L + { 2168, 0x004D, 19, 17, 17, 2, 22, 0, 0, 0x00 }, // M + { 2249, 0x004E, 14, 17, 17, 2, 18, 0, 0, 0x00 }, // N + { 2309, 0x004F, 18, 17, 17, 1, 20, 0, 0, 0x00 }, // O + { 2386, 0x0050, 12, 17, 17, 2, 15, 0, 0, 0x00 }, // P + { 2437, 0x0051, 18, 20, 17, 1, 20, 0, 0, 0x00 }, // Q + { 2527, 0x0052, 12, 17, 17, 2, 16, 0, 0, 0x00 }, // R + { 2578, 0x0053, 13, 17, 17, 1, 15, 0, 0, 0x00 }, // S + { 2634, 0x0054, 12, 17, 17, 1, 14, 0, 0, 0x00 }, // T + { 2685, 0x0055, 14, 17, 17, 2, 17, 0, 0, 0x00 }, // U + { 2745, 0x0056, 17, 17, 17, 0, 17, 0, 0, 0x00 }, // V + { 2818, 0x0057, 25, 17, 17, 0, 25, 0, 0, 0x00 }, // W + { 2925, 0x0058, 14, 17, 17, 1, 17, 0, 0, 0x00 }, // X + { 2985, 0x0059, 15, 17, 17, 0, 15, 0, 0, 0x00 }, // Y + { 3049, 0x005A, 12, 17, 17, 1, 14, 0, 0, 0x00 }, // Z + { 3100, 0x005B, 6, 28, 23, 3, 12, 0, 0, 0x00 }, // bracketleft + { 3142, 0x005C, 11, 28, 24, 4, 18, 0, 0, 0x00 }, // backslash + { 3219, 0x005D, 6, 28, 23, 3, 12, 0, 0, 0x00 }, // bracketright + { 3261, 0x005E, 15, 13, 17, 1, 16, 0, 0, 0x00 }, // asciicircum + { 3310, 0x005F, 14, 3, 255, 3, 20, 0, 0, 0x60 }, // underscore + { 3321, 0x0060, 6, 5, 20, 0, 6, 0, 0, 0x00 }, // grave + { 3329, 0x0061, 14, 14, 14, 1, 17, 0, 0, 0x00 }, // a + { 3378, 0x0062, 14, 19, 19, 2, 17, 0, 0, 0x00 }, // b + { 3445, 0x0063, 13, 14, 14, 1, 15, 0, 0, 0x00 }, // c + { 3491, 0x0064, 14, 19, 19, 1, 17, 0, 0, 0x00 }, // d + { 3558, 0x0065, 14, 14, 14, 1, 15, 0, 0, 0x00 }, // e + { 3607, 0x0066, 8, 20, 20, 0, 8, 0, 0, 0x00 }, // f + { 3647, 0x0067, 14, 21, 14, 1, 17, 0, 0, 0x00 }, // g + { 3721, 0x0068, 13, 19, 19, 2, 16, 0, 0, 0x00 }, // h + { 3783, 0x0069, 4, 20, 20, 1, 7, 0, 0, 0x00 }, // i + { 3803, 0x006A, 6, 27, 20, -1, 7, 0, 0, 0x00 }, // j + { 3844, 0x006B, 12, 19, 19, 2, 14, 0, 0, 0x00 }, // k + { 3901, 0x006C, 3, 19, 19, 2, 7, 0, 0, 0x00 }, // l + { 3916, 0x006D, 23, 14, 14, 2, 26, 0, 0, 0x00 }, // m + { 3997, 0x006E, 13, 14, 14, 2, 16, 0, 0, 0x00 }, // n + { 4043, 0x006F, 14, 14, 14, 1, 16, 0, 0, 0x00 }, // o + { 4092, 0x0070, 14, 21, 14, 2, 17, 0, 0, 0x00 }, // p + { 4166, 0x0071, 14, 21, 14, 1, 17, 0, 0, 0x00 }, // q + { 4240, 0x0072, 7, 14, 14, 2, 10, 0, 0, 0x00 }, // r + { 4265, 0x0073, 11, 14, 14, 1, 13, 0, 0, 0x00 }, // s + { 4304, 0x0074, 9, 17, 17, 0, 9, 0, 0, 0x00 }, // t + { 4343, 0x0075, 14, 14, 14, 1, 16, 0, 0, 0x00 }, // u + { 4392, 0x0076, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // v + { 4441, 0x0077, 21, 14, 14, 0, 21, 0, 0, 0x00 }, // w + { 4515, 0x0078, 12, 14, 14, 0, 12, 0, 0, 0x00 }, // x + { 4557, 0x0079, 14, 21, 14, 0, 15, 0, 0, 0x00 }, // y + { 4631, 0x007A, 10, 14, 14, 1, 12, 0, 0, 0x00 }, // z + { 4666, 0x007B, 8, 28, 23, 3, 13, 0, 0, 0x00 }, // braceleft + { 4722, 0x007C, 4, 23, 20, 2, 8, 0, 0, 0x00 }, // bar + { 4745, 0x007D, 8, 28, 23, 2, 13, 0, 0, 0x00 }, // braceright + { 4801, 0x007E, 12, 4, 10, 1, 14, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 14, 4, 4, 1, 16, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Medium_25_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_25_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_25_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_25_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Medium_25_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Medium_25_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Medium_25_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_25_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Medium_25_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Medium_25_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Medium_25_2bpp(glyphs_Poppins_Medium_25_2bpp, 96, 32, 25, 0, 0, 2, 0, 1, 0, unicodes_Poppins_Medium_25_2bpp, kerning_Poppins_Medium_25_2bpp, 63, 8230, 0, 0); + return Poppins_Medium_25_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_50_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_50_2bpp.cpp new file mode 100644 index 00000000..83f2d135 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Medium_50_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_50_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 13, 0, 0, 0x00 }, // space + { 0, 0x0021, 8, 35, 35, 4, 16, 0, 0, 0x00 }, // exclam + { 70, 0x0022, 14, 11, 41, 1, 16, 0, 0, 0x00 }, // quotedbl + { 109, 0x0023, 40, 37, 37, 1, 44, 0, 0, 0x00 }, // numbersign + { 479, 0x0024, 25, 44, 40, 3, 33, 0, 0, 0x00 }, // dollar + { 754, 0x0025, 36, 35, 35, 2, 40, 0, 0, 0x00 }, // percent + { 1069, 0x0026, 37, 35, 35, 1, 38, 0, 0, 0x00 }, // ampersand + { 1393, 0x0027, 6, 11, 41, 1, 9, 0, 0, 0x00 }, // quotesingle + { 1410, 0x0028, 18, 56, 47, 6, 25, 0, 0, 0x00 }, // parenleft + { 1662, 0x0029, 18, 56, 47, 1, 25, 0, 0, 0x00 }, // parenright + { 1914, 0x002A, 19, 19, 37, 3, 25, 0, 0, 0x00 }, // asterisk + { 2005, 0x002B, 26, 26, 31, 5, 36, 0, 0, 0x00 }, // plus + { 2174, 0x002C, 10, 14, 7, 0, 11, 0, 0, 0x00 }, // comma + { 2209, 0x002D, 21, 5, 21, 4, 29, 0, 0, 0x00 }, // hyphen + { 2236, 0x002E, 8, 8, 8, 2, 12, 0, 0, 0x00 }, // period + { 2252, 0x002F, 19, 56, 47, 3, 26, 0, 0, 0x00 }, // slash + { 2518, 0x0030, 26, 37, 37, 3, 32, 0, 0, 0x00 }, // zero + { 2759, 0x0031, 11, 37, 37, 2, 18, 0, 0, 0x00 }, // one + { 2861, 0x0032, 25, 37, 38, 2, 29, 0, 0, 0x00 }, // two + { 3093, 0x0033, 25, 38, 38, 2, 30, 0, 0, 0x00 }, // three + { 3331, 0x0034, 29, 36, 36, 2, 32, 0, 0, 0x00 }, // four + { 3592, 0x0035, 26, 37, 37, 3, 32, 0, 0, 0x00 }, // five + { 3833, 0x0036, 26, 37, 37, 3, 32, 0, 0, 0x00 }, // six + { 4074, 0x0037, 24, 36, 36, 2, 28, 0, 0, 0x00 }, // seven + { 4290, 0x0038, 26, 38, 38, 3, 32, 0, 0, 0x00 }, // eight + { 4537, 0x0039, 25, 37, 37, 4, 32, 0, 0, 0x00 }, // nine + { 4769, 0x003A, 8, 28, 28, 2, 12, 0, 0, 0x00 }, // colon + { 4825, 0x003B, 10, 35, 28, 1, 15, 0, 0, 0x00 }, // semicolon + { 4913, 0x003C, 19, 23, 30, 5, 31, 0, 0, 0x00 }, // less + { 5023, 0x003D, 27, 16, 26, 6, 39, 0, 0, 0x00 }, // equal + { 5131, 0x003E, 18, 23, 30, 6, 30, 0, 0, 0x00 }, // greater + { 5235, 0x003F, 23, 35, 35, 2, 27, 0, 0, 0x00 }, // question + { 5437, 0x0040, 45, 43, 33, 3, 51, 0, 0, 0x00 }, // at + { 5921, 0x0041, 31, 35, 35, 2, 35, 0, 0, 0x00 }, // A + { 6193, 0x0042, 26, 35, 35, 3, 32, 0, 0, 0x00 }, // B + { 6421, 0x0043, 34, 35, 35, 2, 39, 0, 0, 0x00 }, // C + { 6719, 0x0044, 31, 35, 35, 3, 35, 0, 0, 0x00 }, // D + { 6991, 0x0045, 20, 35, 35, 3, 26, 0, 0, 0x00 }, // E + { 7166, 0x0046, 22, 35, 35, 3, 26, 0, 0, 0x00 }, // F + { 7359, 0x0047, 35, 35, 35, 2, 39, 0, 0, 0x00 }, // G + { 7666, 0x0048, 29, 35, 35, 3, 35, 0, 0, 0x00 }, // H + { 7920, 0x0049, 7, 35, 35, 3, 13, 0, 0, 0x00 }, // I + { 7982, 0x004A, 21, 35, 35, 2, 28, 0, 0, 0x00 }, // J + { 8166, 0x004B, 27, 35, 35, 3, 32, 0, 0, 0x00 }, // K + { 8403, 0x004C, 19, 35, 35, 3, 22, 0, 0, 0x00 }, // L + { 8570, 0x004D, 38, 35, 35, 3, 44, 0, 0, 0x00 }, // M + { 8903, 0x004E, 30, 35, 35, 3, 36, 0, 0, 0x00 }, // N + { 9166, 0x004F, 36, 35, 35, 2, 39, 0, 0, 0x00 }, // O + { 9481, 0x0050, 25, 35, 35, 3, 30, 0, 0, 0x00 }, // P + { 9700, 0x0051, 36, 41, 35, 2, 39, 0, 0, 0x00 }, // Q + { 10069, 0x0052, 26, 35, 35, 3, 32, 0, 0, 0x00 }, // R + { 10297, 0x0053, 25, 35, 35, 3, 30, 0, 0, 0x00 }, // S + { 10516, 0x0054, 25, 35, 35, 2, 28, 0, 0, 0x00 }, // T + { 10735, 0x0055, 28, 35, 35, 3, 35, 0, 0, 0x00 }, // U + { 10980, 0x0056, 33, 35, 35, 1, 35, 0, 0, 0x00 }, // V + { 11269, 0x0057, 48, 35, 35, 1, 50, 0, 0, 0x00 }, // W + { 11689, 0x0058, 29, 35, 35, 2, 33, 0, 0, 0x00 }, // X + { 11943, 0x0059, 29, 35, 35, 1, 30, 0, 0, 0x00 }, // Y + { 12197, 0x005A, 24, 35, 35, 2, 28, 0, 0, 0x00 }, // Z + { 12407, 0x005B, 11, 56, 47, 7, 24, 0, 0, 0x00 }, // bracketleft + { 12561, 0x005C, 21, 56, 47, 8, 36, 0, 0, 0x00 }, // backslash + { 12855, 0x005D, 11, 56, 47, 6, 24, 0, 0, 0x00 }, // bracketright + { 13009, 0x005E, 29, 27, 35, 2, 33, 0, 0, 0x00 }, // asciicircum + { 13205, 0x005F, 29, 6, 255, 6, 40, 0, 0, 0x60 }, // underscore + { 13249, 0x0060, 12, 11, 40, 0, 13, 0, 0, 0x00 }, // grave + { 13282, 0x0061, 28, 28, 28, 2, 34, 0, 0, 0x00 }, // a + { 13478, 0x0062, 29, 37, 37, 3, 34, 0, 0, 0x00 }, // b + { 13747, 0x0063, 26, 28, 28, 2, 30, 0, 0, 0x00 }, // c + { 13929, 0x0064, 28, 37, 37, 2, 34, 0, 0, 0x00 }, // d + { 14188, 0x0065, 27, 28, 28, 2, 31, 0, 0, 0x00 }, // e + { 14377, 0x0066, 15, 39, 39, 1, 17, 0, 0, 0x00 }, // f + { 14524, 0x0067, 28, 41, 28, 2, 34, 0, 0, 0x00 }, // g + { 14811, 0x0068, 26, 37, 37, 3, 32, 0, 0, 0x00 }, // h + { 15052, 0x0069, 8, 39, 39, 3, 13, 0, 0, 0x00 }, // i + { 15130, 0x006A, 13, 52, 39, -2, 13, 0, 0, 0x00 }, // j + { 15299, 0x006B, 24, 37, 37, 3, 28, 0, 0, 0x00 }, // k + { 15521, 0x006C, 7, 37, 37, 3, 13, 0, 0, 0x00 }, // l + { 15586, 0x006D, 46, 28, 28, 3, 52, 0, 0, 0x00 }, // m + { 15908, 0x006E, 26, 28, 28, 3, 32, 0, 0, 0x00 }, // n + { 16090, 0x006F, 28, 28, 28, 2, 32, 0, 0, 0x00 }, // o + { 16286, 0x0070, 29, 41, 28, 3, 34, 0, 0, 0x00 }, // p + { 16584, 0x0071, 28, 41, 28, 2, 34, 0, 0, 0x00 }, // q + { 16871, 0x0072, 15, 28, 28, 3, 19, 0, 0, 0x00 }, // r + { 16976, 0x0073, 23, 28, 28, 2, 27, 0, 0, 0x00 }, // s + { 17137, 0x0074, 16, 35, 35, 1, 19, 0, 0, 0x00 }, // t + { 17277, 0x0075, 26, 28, 28, 3, 32, 0, 0, 0x00 }, // u + { 17459, 0x0076, 28, 28, 28, 0, 29, 0, 0, 0x00 }, // v + { 17655, 0x0077, 41, 28, 28, 0, 41, 0, 0, 0x00 }, // w + { 17942, 0x0078, 24, 28, 28, 0, 25, 0, 0, 0x00 }, // x + { 18110, 0x0079, 29, 41, 28, 0, 29, 0, 0, 0x00 }, // y + { 18408, 0x007A, 20, 28, 28, 2, 24, 0, 0, 0x00 }, // z + { 18548, 0x007B, 16, 56, 47, 6, 26, 0, 0, 0x00 }, // braceleft + { 18772, 0x007C, 6, 46, 40, 5, 16, 0, 0, 0x00 }, // bar + { 18841, 0x007D, 16, 56, 47, 4, 26, 0, 0, 0x00 }, // braceright + { 19065, 0x007E, 24, 8, 20, 2, 28, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 28, 8, 8, 2, 32, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Medium_50_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Medium_50_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_50_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Medium_50_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Medium_50_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Medium_50_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Medium_50_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Medium_50_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Medium_50_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Medium_50_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Medium_50_2bpp(glyphs_Poppins_Medium_50_2bpp, 96, 63, 50, 0, 0, 2, 0, 2, 0, unicodes_Poppins_Medium_50_2bpp, kerning_Poppins_Medium_50_2bpp, 63, 8230, 0, 0); + return Poppins_Medium_50_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_14_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_14_2bpp.cpp new file mode 100644 index 00000000..0e4f2446 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_14_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_14_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 4, 0, 0, 0x00 }, // space + { 0, 0x0021, 2, 10, 10, 1, 4, 0, 0, 0x00 }, // exclam + { 5, 0x0022, 4, 3, 12, 0, 4, 0, 0, 0x00 }, // quotedbl + { 8, 0x0023, 11, 11, 11, 0, 12, 0, 0, 0x00 }, // numbersign + { 39, 0x0024, 7, 13, 12, 1, 9, 0, 0, 0x00 }, // dollar + { 62, 0x0025, 10, 10, 10, 0, 11, 0, 0, 0x00 }, // percent + { 87, 0x0026, 10, 10, 10, 0, 10, 0, 0, 0x00 }, // ampersand + { 112, 0x0027, 2, 3, 12, 0, 2, 0, 0, 0x00 }, // quotesingle + { 114, 0x0028, 5, 16, 13, 1, 6, 0, 0, 0x00 }, // parenleft + { 134, 0x0029, 5, 16, 13, 0, 6, 0, 0, 0x00 }, // parenright + { 154, 0x002A, 5, 6, 11, 1, 7, 0, 0, 0x00 }, // asterisk + { 162, 0x002B, 8, 8, 10, 1, 10, 0, 0, 0x00 }, // plus + { 178, 0x002C, 3, 4, 2, 0, 3, 0, 0, 0x00 }, // comma + { 181, 0x002D, 7, 1, 6, 0, 8, 0, 0, 0x00 }, // hyphen + { 183, 0x002E, 2, 2, 2, 0, 3, 0, 0, 0x00 }, // period + { 184, 0x002F, 5, 16, 14, 1, 7, 0, 0, 0x00 }, // slash + { 204, 0x0030, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // zero + { 224, 0x0031, 3, 11, 11, 0, 4, 0, 0, 0x00 }, // one + { 233, 0x0032, 8, 11, 11, 0, 8, 0, 0, 0x00 }, // two + { 255, 0x0033, 8, 11, 11, 0, 8, 0, 0, 0x00 }, // three + { 277, 0x0034, 9, 10, 10, 0, 9, 0, 0, 0x00 }, // four + { 300, 0x0035, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // five + { 320, 0x0036, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // six + { 340, 0x0037, 7, 11, 11, 0, 8, 0, 0, 0x00 }, // seven + { 360, 0x0038, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // eight + { 380, 0x0039, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // nine + { 400, 0x003A, 2, 8, 8, 0, 3, 0, 0, 0x00 }, // colon + { 404, 0x003B, 3, 10, 8, 0, 4, 0, 0, 0x00 }, // semicolon + { 412, 0x003C, 5, 7, 9, 1, 8, 0, 0, 0x00 }, // less + { 421, 0x003D, 8, 4, 7, 1, 10, 0, 0, 0x00 }, // equal + { 429, 0x003E, 5, 7, 9, 1, 8, 0, 0, 0x00 }, // greater + { 438, 0x003F, 7, 10, 10, 0, 7, 0, 0, 0x00 }, // question + { 456, 0x0040, 12, 12, 9, 1, 14, 0, 0, 0x00 }, // at + { 492, 0x0041, 9, 10, 10, 0, 9, 0, 0, 0x00 }, // A + { 515, 0x0042, 7, 10, 10, 1, 9, 0, 0, 0x00 }, // B + { 533, 0x0043, 10, 10, 10, 0, 11, 0, 0, 0x00 }, // C + { 558, 0x0044, 9, 10, 10, 1, 10, 0, 0, 0x00 }, // D + { 581, 0x0045, 6, 10, 10, 1, 7, 0, 0, 0x00 }, // E + { 596, 0x0046, 6, 10, 10, 1, 7, 0, 0, 0x00 }, // F + { 611, 0x0047, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // G + { 639, 0x0048, 8, 10, 10, 1, 10, 0, 0, 0x00 }, // H + { 659, 0x0049, 2, 10, 10, 1, 3, 0, 0, 0x00 }, // I + { 664, 0x004A, 6, 10, 10, 0, 7, 0, 0, 0x00 }, // J + { 679, 0x004B, 7, 10, 10, 1, 8, 0, 0, 0x00 }, // K + { 697, 0x004C, 5, 10, 10, 1, 6, 0, 0, 0x00 }, // L + { 710, 0x004D, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // M + { 735, 0x004E, 8, 10, 10, 1, 10, 0, 0, 0x00 }, // N + { 755, 0x004F, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // O + { 783, 0x0050, 7, 10, 10, 1, 8, 0, 0, 0x00 }, // P + { 801, 0x0051, 11, 12, 10, 0, 11, 0, 0, 0x00 }, // Q + { 834, 0x0052, 7, 10, 10, 1, 9, 0, 0, 0x00 }, // R + { 852, 0x0053, 7, 10, 10, 1, 8, 0, 0, 0x00 }, // S + { 870, 0x0054, 7, 10, 10, 0, 8, 0, 0, 0x00 }, // T + { 888, 0x0055, 8, 10, 10, 1, 9, 0, 0, 0x00 }, // U + { 908, 0x0056, 9, 10, 10, 0, 9, 0, 0, 0x00 }, // V + { 931, 0x0057, 14, 10, 10, 0, 14, 0, 0, 0x00 }, // W + { 966, 0x0058, 7, 10, 10, 1, 9, 0, 0, 0x00 }, // X + { 984, 0x0059, 8, 10, 10, 0, 8, 0, 0, 0x00 }, // Y + { 1004, 0x005A, 7, 10, 10, 0, 8, 0, 0, 0x00 }, // Z + { 1022, 0x005B, 3, 16, 13, 2, 6, 0, 0, 0x00 }, // bracketleft + { 1034, 0x005C, 6, 16, 14, 2, 9, 0, 0, 0x00 }, // backslash + { 1058, 0x005D, 3, 16, 13, 1, 6, 0, 0, 0x00 }, // bracketright + { 1070, 0x005E, 8, 8, 10, 0, 9, 0, 0, 0x00 }, // asciicircum + { 1086, 0x005F, 8, 2, 255, 1, 10, 0, 0, 0x60 }, // underscore + { 1090, 0x0060, 3, 2, 11, 0, 4, 0, 0, 0x00 }, // grave + { 1092, 0x0061, 9, 8, 8, 0, 9, 0, 0, 0x00 }, // a + { 1110, 0x0062, 8, 11, 11, 1, 9, 0, 0, 0x00 }, // b + { 1132, 0x0063, 8, 8, 8, 0, 9, 0, 0, 0x00 }, // c + { 1148, 0x0064, 9, 11, 11, 0, 9, 0, 0, 0x00 }, // d + { 1173, 0x0065, 8, 8, 8, 0, 9, 0, 0, 0x00 }, // e + { 1189, 0x0066, 5, 11, 11, 0, 5, 0, 0, 0x00 }, // f + { 1203, 0x0067, 9, 12, 8, 0, 9, 0, 0, 0x00 }, // g + { 1230, 0x0068, 7, 11, 11, 1, 9, 0, 0, 0x00 }, // h + { 1250, 0x0069, 2, 11, 11, 1, 3, 0, 0, 0x00 }, // i + { 1256, 0x006A, 4, 15, 11, -1, 3, 0, 0, 0x00 }, // j + { 1271, 0x006B, 6, 11, 11, 1, 7, 0, 0, 0x00 }, // k + { 1288, 0x006C, 2, 11, 11, 1, 3, 0, 0, 0x00 }, // l + { 1294, 0x006D, 13, 8, 8, 1, 14, 0, 0, 0x00 }, // m + { 1320, 0x006E, 7, 8, 8, 1, 9, 0, 0, 0x00 }, // n + { 1334, 0x006F, 9, 8, 8, 0, 9, 0, 0, 0x00 }, // o + { 1352, 0x0070, 8, 12, 8, 1, 9, 0, 0, 0x00 }, // p + { 1376, 0x0071, 9, 12, 8, 0, 9, 0, 0, 0x00 }, // q + { 1403, 0x0072, 4, 8, 8, 1, 5, 0, 0, 0x00 }, // r + { 1411, 0x0073, 6, 8, 8, 1, 7, 0, 0, 0x00 }, // s + { 1423, 0x0074, 5, 10, 10, 0, 5, 0, 0, 0x00 }, // t + { 1436, 0x0075, 7, 8, 8, 1, 9, 0, 0, 0x00 }, // u + { 1450, 0x0076, 8, 8, 8, 0, 8, 0, 0, 0x00 }, // v + { 1466, 0x0077, 11, 8, 8, 0, 11, 0, 0, 0x00 }, // w + { 1488, 0x0078, 7, 8, 8, 0, 7, 0, 0, 0x00 }, // x + { 1502, 0x0079, 8, 12, 8, 0, 8, 0, 0, 0x00 }, // y + { 1526, 0x007A, 6, 8, 8, 0, 6, 0, 0, 0x00 }, // z + { 1538, 0x007B, 5, 16, 13, 1, 6, 0, 0, 0x00 }, // braceleft + { 1558, 0x007C, 2, 13, 11, 1, 4, 0, 0, 0x00 }, // bar + { 1565, 0x007D, 4, 16, 13, 1, 6, 0, 0, 0x00 }, // braceright + { 1581, 0x007E, 7, 2, 6, 0, 7, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 8, 2, 2, 0, 8, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Regular_14_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_14_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_14_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_14_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Regular_14_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Regular_14_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Regular_14_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_14_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Regular_14_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Regular_14_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Regular_14_2bpp(glyphs_Poppins_Regular_14_2bpp, 96, 18, 14, 0, 0, 2, 0, 1, 0, unicodes_Poppins_Regular_14_2bpp, kerning_Poppins_Regular_14_2bpp, 63, 8230, 0, 0); + return Poppins_Regular_14_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_16_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_16_2bpp.cpp new file mode 100644 index 00000000..e7788b4a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_16_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_16_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 4, 0, 0, 0x00 }, // space + { 0, 0x0021, 3, 11, 11, 1, 5, 0, 0, 0x00 }, // exclam + { 9, 0x0022, 4, 4, 14, 0, 5, 0, 0, 0x00 }, // quotedbl + { 13, 0x0023, 13, 12, 12, 0, 13, 0, 0, 0x00 }, // numbersign + { 52, 0x0024, 8, 15, 13, 1, 10, 0, 0, 0x00 }, // dollar + { 82, 0x0025, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // percent + { 115, 0x0026, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // ampersand + { 148, 0x0027, 2, 4, 14, 0, 3, 0, 0, 0x00 }, // quotesingle + { 150, 0x0028, 6, 18, 15, 1, 7, 0, 0, 0x00 }, // parenleft + { 177, 0x0029, 6, 18, 15, 0, 7, 0, 0, 0x00 }, // parenright + { 204, 0x002A, 6, 6, 12, 1, 8, 0, 0, 0x00 }, // asterisk + { 213, 0x002B, 9, 9, 11, 1, 11, 0, 0, 0x00 }, // plus + { 234, 0x002C, 3, 5, 3, 0, 3, 0, 0, 0x00 }, // comma + { 238, 0x002D, 7, 2, 7, 1, 9, 0, 0, 0x00 }, // hyphen + { 242, 0x002E, 2, 2, 2, 1, 3, 0, 0, 0x00 }, // period + { 243, 0x002F, 6, 18, 15, 1, 8, 0, 0, 0x00 }, // slash + { 270, 0x0030, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // zero + { 294, 0x0031, 4, 12, 12, 0, 5, 0, 0, 0x00 }, // one + { 306, 0x0032, 9, 12, 12, 0, 9, 0, 0, 0x00 }, // two + { 333, 0x0033, 8, 12, 12, 1, 9, 0, 0, 0x00 }, // three + { 357, 0x0034, 10, 11, 11, 0, 10, 0, 0, 0x00 }, // four + { 385, 0x0035, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // five + { 409, 0x0036, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // six + { 433, 0x0037, 8, 12, 12, 0, 9, 0, 0, 0x00 }, // seven + { 457, 0x0038, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // eight + { 481, 0x0039, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // nine + { 505, 0x003A, 2, 9, 9, 1, 3, 0, 0, 0x00 }, // colon + { 510, 0x003B, 3, 11, 9, 0, 4, 0, 0, 0x00 }, // semicolon + { 519, 0x003C, 6, 8, 10, 1, 9, 0, 0, 0x00 }, // less + { 531, 0x003D, 9, 5, 8, 1, 12, 0, 0, 0x00 }, // equal + { 543, 0x003E, 5, 8, 10, 2, 9, 0, 0, 0x00 }, // greater + { 553, 0x003F, 8, 11, 11, 0, 8, 0, 0, 0x00 }, // question + { 575, 0x0040, 14, 14, 11, 1, 16, 0, 0, 0x00 }, // at + { 624, 0x0041, 10, 11, 11, 0, 11, 0, 0, 0x00 }, // A + { 652, 0x0042, 8, 11, 11, 1, 10, 0, 0, 0x00 }, // B + { 674, 0x0043, 11, 11, 11, 0, 12, 0, 0, 0x00 }, // C + { 705, 0x0044, 10, 11, 11, 1, 11, 0, 0, 0x00 }, // D + { 733, 0x0045, 7, 11, 11, 1, 8, 0, 0, 0x00 }, // E + { 753, 0x0046, 7, 11, 11, 1, 8, 0, 0, 0x00 }, // F + { 773, 0x0047, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // G + { 806, 0x0048, 9, 11, 11, 1, 11, 0, 0, 0x00 }, // H + { 831, 0x0049, 2, 11, 11, 1, 4, 0, 0, 0x00 }, // I + { 837, 0x004A, 7, 11, 11, 0, 8, 0, 0, 0x00 }, // J + { 857, 0x004B, 8, 11, 11, 1, 10, 0, 0, 0x00 }, // K + { 879, 0x004C, 6, 11, 11, 1, 7, 0, 0, 0x00 }, // L + { 896, 0x004D, 12, 11, 11, 1, 14, 0, 0, 0x00 }, // M + { 929, 0x004E, 9, 11, 11, 1, 11, 0, 0, 0x00 }, // N + { 954, 0x004F, 12, 11, 11, 0, 13, 0, 0, 0x00 }, // O + { 987, 0x0050, 8, 11, 11, 1, 9, 0, 0, 0x00 }, // P + { 1009, 0x0051, 12, 13, 11, 0, 13, 0, 0, 0x00 }, // Q + { 1048, 0x0052, 8, 11, 11, 1, 10, 0, 0, 0x00 }, // R + { 1070, 0x0053, 8, 11, 11, 1, 9, 0, 0, 0x00 }, // S + { 1092, 0x0054, 8, 11, 11, 0, 9, 0, 0, 0x00 }, // T + { 1114, 0x0055, 9, 11, 11, 1, 11, 0, 0, 0x00 }, // U + { 1139, 0x0056, 11, 11, 11, 0, 11, 0, 0, 0x00 }, // V + { 1170, 0x0057, 15, 11, 11, 0, 16, 0, 0, 0x00 }, // W + { 1212, 0x0058, 8, 11, 11, 1, 10, 0, 0, 0x00 }, // X + { 1234, 0x0059, 9, 11, 11, 0, 9, 0, 0, 0x00 }, // Y + { 1259, 0x005A, 8, 11, 11, 0, 9, 0, 0, 0x00 }, // Z + { 1281, 0x005B, 3, 19, 15, 2, 7, 0, 0, 0x00 }, // bracketleft + { 1296, 0x005C, 7, 18, 15, 2, 11, 0, 0, 0x00 }, // backslash + { 1328, 0x005D, 4, 19, 15, 1, 7, 0, 0, 0x00 }, // bracketright + { 1347, 0x005E, 10, 9, 12, 0, 10, 0, 0, 0x00 }, // asciicircum + { 1370, 0x005F, 10, 2, 255, 1, 12, 0, 0, 0x60 }, // underscore + { 1375, 0x0060, 4, 4, 13, 0, 4, 0, 0, 0x00 }, // grave + { 1379, 0x0061, 10, 9, 9, 0, 11, 0, 0, 0x00 }, // a + { 1402, 0x0062, 9, 12, 12, 1, 11, 0, 0, 0x00 }, // b + { 1429, 0x0063, 9, 9, 9, 0, 10, 0, 0, 0x00 }, // c + { 1450, 0x0064, 10, 12, 12, 0, 11, 0, 0, 0x00 }, // d + { 1480, 0x0065, 10, 9, 9, 0, 10, 0, 0, 0x00 }, // e + { 1503, 0x0066, 5, 12, 12, 0, 5, 0, 0, 0x00 }, // f + { 1518, 0x0067, 10, 13, 9, 0, 11, 0, 0, 0x00 }, // g + { 1551, 0x0068, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // h + { 1575, 0x0069, 2, 12, 12, 1, 4, 0, 0, 0x00 }, // i + { 1581, 0x006A, 4, 16, 12, -1, 4, 0, 0, 0x00 }, // j + { 1597, 0x006B, 7, 12, 12, 1, 8, 0, 0, 0x00 }, // k + { 1618, 0x006C, 2, 12, 12, 1, 4, 0, 0, 0x00 }, // l + { 1624, 0x006D, 15, 9, 9, 1, 16, 0, 0, 0x00 }, // m + { 1658, 0x006E, 8, 9, 9, 1, 10, 0, 0, 0x00 }, // n + { 1676, 0x006F, 10, 9, 9, 0, 10, 0, 0, 0x00 }, // o + { 1699, 0x0070, 9, 13, 9, 1, 11, 0, 0, 0x00 }, // p + { 1729, 0x0071, 10, 13, 9, 0, 11, 0, 0, 0x00 }, // q + { 1762, 0x0072, 5, 9, 9, 1, 6, 0, 0, 0x00 }, // r + { 1774, 0x0073, 7, 9, 9, 1, 8, 0, 0, 0x00 }, // s + { 1790, 0x0074, 6, 11, 11, 0, 6, 0, 0, 0x00 }, // t + { 1807, 0x0075, 8, 9, 9, 1, 10, 0, 0, 0x00 }, // u + { 1825, 0x0076, 9, 9, 9, 0, 9, 0, 0, 0x00 }, // v + { 1846, 0x0077, 13, 9, 9, 0, 13, 0, 0, 0x00 }, // w + { 1876, 0x0078, 7, 9, 9, 0, 8, 0, 0, 0x00 }, // x + { 1892, 0x0079, 9, 13, 9, 0, 9, 0, 0, 0x00 }, // y + { 1922, 0x007A, 7, 9, 9, 0, 7, 0, 0, 0x00 }, // z + { 1938, 0x007B, 6, 19, 15, 1, 7, 0, 0, 0x00 }, // braceleft + { 1967, 0x007C, 2, 15, 13, 1, 5, 0, 0, 0x00 }, // bar + { 1975, 0x007D, 5, 19, 15, 1, 7, 0, 0, 0x00 }, // braceright + { 1999, 0x007E, 8, 3, 6, 0, 8, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 8, 2, 2, 1, 9, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Regular_16_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_16_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_16_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_16_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Regular_16_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Regular_16_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Regular_16_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_16_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Regular_16_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Regular_16_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Regular_16_2bpp(glyphs_Poppins_Regular_16_2bpp, 96, 20, 16, 0, 0, 2, 0, 1, 0, unicodes_Poppins_Regular_16_2bpp, kerning_Poppins_Regular_16_2bpp, 63, 8230, 0, 0); + return Poppins_Regular_16_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_18_2bpp.cpp new file mode 100644 index 00000000..9dcc8e16 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_Regular_18_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space + { 0, 0x0021, 3, 13, 13, 1, 5, 0, 0, 0x00 }, // exclam + { 10, 0x0022, 5, 4, 15, 0, 5, 0, 0, 0x00 }, // quotedbl + { 15, 0x0023, 14, 13, 13, 0, 15, 0, 0, 0x00 }, // numbersign + { 61, 0x0024, 9, 16, 14, 1, 11, 0, 0, 0x00 }, // dollar + { 97, 0x0025, 13, 13, 13, 0, 14, 0, 0, 0x00 }, // percent + { 140, 0x0026, 13, 13, 13, 0, 13, 0, 0, 0x00 }, // ampersand + { 183, 0x0027, 2, 4, 15, 0, 3, 0, 0, 0x00 }, // quotesingle + { 185, 0x0028, 6, 20, 17, 2, 8, 0, 0, 0x00 }, // parenleft + { 215, 0x0029, 6, 20, 17, 1, 8, 0, 0, 0x00 }, // parenright + { 245, 0x002A, 7, 7, 13, 1, 9, 0, 0, 0x00 }, // asterisk + { 258, 0x002B, 10, 9, 11, 1, 12, 0, 0, 0x00 }, // plus + { 281, 0x002C, 3, 5, 2, 0, 4, 0, 0, 0x00 }, // comma + { 285, 0x002D, 8, 2, 7, 1, 10, 0, 0, 0x00 }, // hyphen + { 289, 0x002E, 2, 2, 2, 1, 4, 0, 0, 0x00 }, // period + { 290, 0x002F, 7, 20, 17, 1, 9, 0, 0, 0x00 }, // slash + { 325, 0x0030, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // zero + { 355, 0x0031, 4, 13, 13, 0, 6, 0, 0, 0x00 }, // one + { 368, 0x0032, 9, 13, 13, 1, 10, 0, 0, 0x00 }, // two + { 398, 0x0033, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // three + { 428, 0x0034, 11, 13, 13, 0, 11, 0, 0, 0x00 }, // four + { 464, 0x0035, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // five + { 497, 0x0036, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // six + { 530, 0x0037, 9, 13, 13, 0, 10, 0, 0, 0x00 }, // seven + { 560, 0x0038, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // eight + { 593, 0x0039, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // nine + { 623, 0x003A, 2, 10, 10, 1, 4, 0, 0, 0x00 }, // colon + { 628, 0x003B, 4, 12, 10, 0, 5, 0, 0, 0x00 }, // semicolon + { 640, 0x003C, 6, 9, 11, 2, 10, 0, 0, 0x00 }, // less + { 654, 0x003D, 11, 6, 9, 1, 13, 0, 0, 0x00 }, // equal + { 671, 0x003E, 6, 9, 11, 2, 10, 0, 0, 0x00 }, // greater + { 685, 0x003F, 8, 13, 13, 1, 9, 0, 0, 0x00 }, // question + { 711, 0x0040, 16, 15, 12, 1, 18, 0, 0, 0x00 }, // at + { 771, 0x0041, 12, 13, 13, 0, 12, 0, 0, 0x00 }, // A + { 810, 0x0042, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // B + { 840, 0x0043, 13, 13, 13, 0, 14, 0, 0, 0x00 }, // C + { 883, 0x0044, 11, 13, 13, 1, 13, 0, 0, 0x00 }, // D + { 919, 0x0045, 7, 13, 13, 1, 9, 0, 0, 0x00 }, // E + { 942, 0x0046, 8, 13, 13, 1, 9, 0, 0, 0x00 }, // F + { 968, 0x0047, 14, 13, 13, 0, 14, 0, 0, 0x00 }, // G + { 1014, 0x0048, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // H + { 1047, 0x0049, 2, 13, 13, 1, 4, 0, 0, 0x00 }, // I + { 1054, 0x004A, 7, 13, 13, 1, 10, 0, 0, 0x00 }, // J + { 1077, 0x004B, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // K + { 1107, 0x004C, 7, 13, 13, 1, 8, 0, 0, 0x00 }, // L + { 1130, 0x004D, 13, 13, 13, 1, 16, 0, 0, 0x00 }, // M + { 1173, 0x004E, 11, 13, 13, 1, 13, 0, 0, 0x00 }, // N + { 1209, 0x004F, 14, 13, 13, 0, 14, 0, 0, 0x00 }, // O + { 1255, 0x0050, 9, 13, 13, 1, 10, 0, 0, 0x00 }, // P + { 1285, 0x0051, 14, 15, 13, 0, 14, 0, 0, 0x00 }, // Q + { 1338, 0x0052, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // R + { 1368, 0x0053, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // S + { 1398, 0x0054, 9, 13, 13, 0, 10, 0, 0, 0x00 }, // T + { 1428, 0x0055, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // U + { 1461, 0x0056, 12, 13, 13, 0, 12, 0, 0, 0x00 }, // V + { 1500, 0x0057, 17, 13, 13, 0, 18, 0, 0, 0x00 }, // W + { 1556, 0x0058, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // X + { 1586, 0x0059, 10, 13, 13, 0, 11, 0, 0, 0x00 }, // Y + { 1619, 0x005A, 9, 13, 13, 0, 10, 0, 0, 0x00 }, // Z + { 1649, 0x005B, 4, 21, 17, 2, 8, 0, 0, 0x00 }, // bracketleft + { 1670, 0x005C, 8, 20, 17, 2, 12, 0, 0, 0x00 }, // backslash + { 1710, 0x005D, 4, 21, 17, 2, 8, 0, 0, 0x00 }, // bracketright + { 1731, 0x005E, 10, 10, 13, 1, 11, 0, 0, 0x00 }, // asciicircum + { 1756, 0x005F, 10, 2, 0, 2, 13, 0, 0, 0x00 }, // underscore + { 1761, 0x0060, 4, 3, 14, 0, 5, 0, 0, 0x00 }, // grave + { 1764, 0x0061, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // a + { 1789, 0x0062, 11, 13, 13, 1, 12, 0, 0, 0x00 }, // b + { 1825, 0x0063, 9, 10, 10, 1, 11, 0, 0, 0x00 }, // c + { 1848, 0x0064, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // d + { 1881, 0x0065, 10, 10, 10, 1, 11, 0, 0, 0x00 }, // e + { 1906, 0x0066, 6, 13, 13, 0, 6, 0, 0, 0x00 }, // f + { 1926, 0x0067, 10, 15, 10, 1, 12, 0, 0, 0x00 }, // g + { 1964, 0x0068, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // h + { 1997, 0x0069, 3, 13, 13, 1, 4, 0, 0, 0x00 }, // i + { 2007, 0x006A, 5, 18, 13, -1, 4, 0, 0, 0x00 }, // j + { 2030, 0x006B, 8, 13, 13, 1, 9, 0, 0, 0x00 }, // k + { 2056, 0x006C, 2, 13, 13, 1, 4, 0, 0, 0x00 }, // l + { 2063, 0x006D, 17, 10, 10, 1, 19, 0, 0, 0x00 }, // m + { 2106, 0x006E, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // n + { 2131, 0x006F, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // o + { 2156, 0x0070, 11, 15, 10, 1, 12, 0, 0, 0x00 }, // p + { 2198, 0x0071, 10, 15, 10, 1, 12, 0, 0, 0x00 }, // q + { 2236, 0x0072, 6, 10, 10, 1, 7, 0, 0, 0x00 }, // r + { 2251, 0x0073, 8, 10, 10, 1, 9, 0, 0, 0x00 }, // s + { 2271, 0x0074, 6, 13, 13, 0, 7, 0, 0, 0x00 }, // t + { 2291, 0x0075, 9, 10, 10, 1, 12, 0, 0, 0x00 }, // u + { 2314, 0x0076, 10, 10, 10, 0, 10, 0, 0, 0x00 }, // v + { 2339, 0x0077, 15, 10, 10, 0, 15, 0, 0, 0x00 }, // w + { 2377, 0x0078, 8, 10, 10, 0, 9, 0, 0, 0x00 }, // x + { 2397, 0x0079, 10, 15, 10, 0, 10, 0, 0, 0x00 }, // y + { 2435, 0x007A, 8, 10, 10, 0, 8, 0, 0, 0x00 }, // z + { 2455, 0x007B, 5, 21, 17, 2, 8, 0, 0, 0x00 }, // braceleft + { 2482, 0x007C, 3, 16, 14, 1, 5, 0, 0, 0x00 }, // bar + { 2494, 0x007D, 6, 21, 17, 1, 8, 0, 0, 0x00 }, // braceright + { 2526, 0x007E, 8, 3, 7, 1, 9, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 9, 3, 3, 1, 10, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_Regular_18_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_Regular_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_Regular_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_Regular_18_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_Regular_18_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_Regular_18_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_Regular_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_Regular_18_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_Regular_18_2bpp() +{ + static touchgfx::GeneratedFont Poppins_Regular_18_2bpp(glyphs_Poppins_Regular_18_2bpp, 96, 23, 18, 0, 0, 2, 0, 1, 0, unicodes_Poppins_Regular_18_2bpp, kerning_Poppins_Regular_18_2bpp, 63, 8230, 0, 0); + return Poppins_Regular_18_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_18_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_18_2bpp.cpp new file mode 100644 index 00000000..ea09381a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_18_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 4, 0, 0, 0x00 }, // space + { 0, 0x0021, 4, 12, 12, 1, 6, 0, 0, 0x00 }, // exclam + { 12, 0x0022, 6, 4, 14, 0, 7, 0, 0, 0x00 }, // quotedbl + { 18, 0x0023, 15, 13, 13, 0, 16, 0, 0, 0x00 }, // numbersign + { 67, 0x0024, 9, 16, 14, 1, 12, 0, 0, 0x00 }, // dollar + { 103, 0x0025, 15, 12, 12, 0, 15, 0, 0, 0x00 }, // percent + { 148, 0x0026, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // ampersand + { 190, 0x0027, 3, 4, 14, 0, 4, 0, 0, 0x00 }, // quotesingle + { 193, 0x0028, 7, 20, 17, 2, 9, 0, 0, 0x00 }, // parenleft + { 228, 0x0029, 7, 20, 17, 0, 9, 0, 0, 0x00 }, // parenright + { 263, 0x002A, 7, 7, 13, 1, 9, 0, 0, 0x00 }, // asterisk + { 276, 0x002B, 10, 9, 11, 1, 12, 0, 0, 0x00 }, // plus + { 299, 0x002C, 4, 5, 3, 0, 5, 0, 0, 0x00 }, // comma + { 304, 0x002D, 8, 2, 7, 1, 11, 0, 0, 0x00 }, // hyphen + { 308, 0x002E, 3, 3, 3, 1, 5, 0, 0, 0x00 }, // period + { 311, 0x002F, 8, 20, 17, 0, 9, 0, 0, 0x00 }, // slash + { 351, 0x0030, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // zero + { 384, 0x0031, 5, 13, 13, 0, 7, 0, 0, 0x00 }, // one + { 401, 0x0032, 10, 13, 13, 0, 10, 0, 0, 0x00 }, // two + { 434, 0x0033, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // three + { 464, 0x0034, 11, 12, 12, 1, 12, 0, 0, 0x00 }, // four + { 497, 0x0035, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // five + { 530, 0x0036, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // six + { 563, 0x0037, 10, 13, 13, 0, 10, 0, 0, 0x00 }, // seven + { 596, 0x0038, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // eight + { 629, 0x0039, 10, 13, 13, 1, 11, 0, 0, 0x00 }, // nine + { 662, 0x003A, 3, 10, 10, 1, 5, 0, 0, 0x00 }, // colon + { 670, 0x003B, 4, 12, 10, 1, 6, 0, 0, 0x00 }, // semicolon + { 682, 0x003C, 7, 8, 10, 1, 11, 0, 0, 0x00 }, // less + { 696, 0x003D, 11, 6, 10, 1, 13, 0, 0, 0x00 }, // equal + { 713, 0x003E, 7, 8, 10, 2, 10, 0, 0, 0x00 }, // greater + { 727, 0x003F, 9, 12, 12, 0, 10, 0, 0, 0x00 }, // question + { 754, 0x0040, 17, 16, 12, 1, 19, 0, 0, 0x00 }, // at + { 822, 0x0041, 13, 12, 12, 0, 13, 0, 0, 0x00 }, // A + { 861, 0x0042, 10, 12, 12, 1, 12, 0, 0, 0x00 }, // B + { 891, 0x0043, 13, 12, 12, 0, 14, 0, 0, 0x00 }, // C + { 930, 0x0044, 12, 12, 12, 1, 13, 0, 0, 0x00 }, // D + { 966, 0x0045, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // E + { 990, 0x0046, 8, 12, 12, 1, 10, 0, 0, 0x00 }, // F + { 1014, 0x0047, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // G + { 1056, 0x0048, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // H + { 1089, 0x0049, 3, 12, 12, 1, 5, 0, 0, 0x00 }, // I + { 1098, 0x004A, 9, 12, 12, 0, 10, 0, 0, 0x00 }, // J + { 1125, 0x004B, 10, 12, 12, 1, 12, 0, 0, 0x00 }, // K + { 1155, 0x004C, 7, 12, 12, 1, 8, 0, 0, 0x00 }, // L + { 1176, 0x004D, 14, 12, 12, 1, 16, 0, 0, 0x00 }, // M + { 1218, 0x004E, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // N + { 1251, 0x004F, 14, 12, 12, 0, 14, 0, 0, 0x00 }, // O + { 1293, 0x0050, 10, 12, 12, 1, 11, 0, 0, 0x00 }, // P + { 1323, 0x0051, 14, 14, 12, 0, 14, 0, 0, 0x00 }, // Q + { 1372, 0x0052, 10, 12, 12, 1, 12, 0, 0, 0x00 }, // R + { 1402, 0x0053, 9, 12, 12, 1, 11, 0, 0, 0x00 }, // S + { 1429, 0x0054, 10, 12, 12, 0, 10, 0, 0, 0x00 }, // T + { 1459, 0x0055, 11, 12, 12, 1, 13, 0, 0, 0x00 }, // U + { 1492, 0x0056, 13, 12, 12, 0, 13, 0, 0, 0x00 }, // V + { 1531, 0x0057, 18, 12, 12, 0, 18, 0, 0, 0x00 }, // W + { 1585, 0x0058, 11, 12, 12, 1, 12, 0, 0, 0x00 }, // X + { 1618, 0x0059, 11, 12, 12, 0, 11, 0, 0, 0x00 }, // Y + { 1651, 0x005A, 9, 12, 12, 1, 10, 0, 0, 0x00 }, // Z + { 1678, 0x005B, 5, 20, 17, 2, 9, 0, 0, 0x00 }, // bracketleft + { 1703, 0x005C, 8, 20, 17, 3, 14, 0, 0, 0x00 }, // backslash + { 1743, 0x005D, 5, 20, 17, 2, 9, 0, 0, 0x00 }, // bracketright + { 1768, 0x005E, 12, 10, 13, 0, 12, 0, 0, 0x00 }, // asciicircum + { 1798, 0x005F, 11, 3, 0, 2, 14, 0, 0, 0x00 }, // underscore + { 1807, 0x0060, 5, 3, 14, 0, 5, 0, 0, 0x00 }, // grave + { 1811, 0x0061, 11, 10, 10, 0, 12, 0, 0, 0x00 }, // a + { 1839, 0x0062, 11, 14, 14, 1, 12, 0, 0, 0x00 }, // b + { 1878, 0x0063, 10, 10, 10, 0, 11, 0, 0, 0x00 }, // c + { 1903, 0x0064, 11, 13, 13, 0, 12, 0, 0, 0x00 }, // d + { 1939, 0x0065, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // e + { 1967, 0x0066, 6, 14, 14, 0, 6, 0, 0, 0x00 }, // f + { 1988, 0x0067, 11, 15, 10, 0, 12, 0, 0, 0x00 }, // g + { 2030, 0x0068, 10, 13, 13, 1, 12, 0, 0, 0x00 }, // h + { 2063, 0x0069, 3, 14, 14, 1, 5, 0, 0, 0x00 }, // i + { 2074, 0x006A, 5, 19, 14, -1, 5, 0, 0, 0x00 }, // j + { 2098, 0x006B, 9, 13, 13, 1, 11, 0, 0, 0x00 }, // k + { 2128, 0x006C, 3, 13, 13, 1, 5, 0, 0, 0x00 }, // l + { 2138, 0x006D, 17, 10, 10, 1, 19, 0, 0, 0x00 }, // m + { 2181, 0x006E, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // n + { 2206, 0x006F, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // o + { 2234, 0x0070, 11, 15, 10, 1, 12, 0, 0, 0x00 }, // p + { 2276, 0x0071, 11, 15, 10, 0, 12, 0, 0, 0x00 }, // q + { 2318, 0x0072, 6, 10, 10, 1, 7, 0, 0, 0x00 }, // r + { 2333, 0x0073, 8, 10, 10, 1, 10, 0, 0, 0x00 }, // s + { 2353, 0x0074, 7, 12, 12, 0, 7, 0, 0, 0x00 }, // t + { 2374, 0x0075, 10, 10, 10, 1, 12, 0, 0, 0x00 }, // u + { 2399, 0x0076, 11, 10, 10, 0, 11, 0, 0, 0x00 }, // v + { 2427, 0x0077, 15, 10, 10, 0, 15, 0, 0, 0x00 }, // w + { 2465, 0x0078, 10, 10, 10, 0, 10, 0, 0, 0x00 }, // x + { 2490, 0x0079, 11, 15, 10, 0, 11, 0, 0, 0x00 }, // y + { 2532, 0x007A, 8, 10, 10, 0, 9, 0, 0, 0x00 }, // z + { 2552, 0x007B, 6, 20, 16, 2, 9, 0, 0, 0x00 }, // braceleft + { 2582, 0x007C, 3, 17, 15, 1, 6, 0, 0, 0x00 }, // bar + { 2595, 0x007D, 6, 20, 16, 1, 9, 0, 0, 0x00 }, // braceright + { 2625, 0x007E, 10, 4, 8, 0, 11, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 11, 3, 3, 1, 13, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_18_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_18_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_18_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_18_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_18_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_18_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_18_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_18_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_18_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_18_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_18_2bpp(glyphs_Poppins_SemiBold_18_2bpp, 96, 23, 18, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_18_2bpp, kerning_Poppins_SemiBold_18_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_18_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_20_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_20_2bpp.cpp new file mode 100644 index 00000000..4ab3ee99 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_20_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_20_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 5, 0, 0, 0x00 }, // space + { 0, 0x0021, 4, 14, 14, 2, 7, 0, 0, 0x00 }, // exclam + { 14, 0x0022, 7, 4, 15, 0, 7, 0, 0, 0x00 }, // quotedbl + { 21, 0x0023, 17, 15, 15, 0, 18, 0, 0, 0x00 }, // numbersign + { 85, 0x0024, 11, 17, 15, 1, 13, 0, 0, 0x00 }, // dollar + { 132, 0x0025, 16, 14, 14, 0, 17, 0, 0, 0x00 }, // percent + { 188, 0x0026, 15, 14, 14, 0, 16, 0, 0, 0x00 }, // ampersand + { 241, 0x0027, 3, 4, 15, 0, 4, 0, 0, 0x00 }, // quotesingle + { 244, 0x0028, 7, 22, 18, 2, 10, 0, 0, 0x00 }, // parenleft + { 283, 0x0029, 8, 22, 18, 0, 10, 0, 0, 0x00 }, // parenright + { 327, 0x002A, 8, 8, 15, 1, 10, 0, 0, 0x00 }, // asterisk + { 343, 0x002B, 11, 10, 12, 1, 13, 0, 0, 0x00 }, // plus + { 371, 0x002C, 4, 6, 3, 0, 5, 0, 0, 0x00 }, // comma + { 377, 0x002D, 9, 3, 9, 1, 12, 0, 0, 0x00 }, // hyphen + { 384, 0x002E, 4, 3, 3, 1, 5, 0, 0, 0x00 }, // period + { 387, 0x002F, 8, 22, 18, 1, 10, 0, 0, 0x00 }, // slash + { 431, 0x0030, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // zero + { 473, 0x0031, 6, 14, 14, 0, 7, 0, 0, 0x00 }, // one + { 494, 0x0032, 10, 15, 15, 1, 11, 0, 0, 0x00 }, // two + { 532, 0x0033, 10, 15, 15, 1, 12, 0, 0, 0x00 }, // three + { 570, 0x0034, 12, 14, 14, 1, 13, 0, 0, 0x00 }, // four + { 612, 0x0035, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // five + { 654, 0x0036, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // six + { 696, 0x0037, 11, 15, 15, 0, 11, 0, 0, 0x00 }, // seven + { 738, 0x0038, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // eight + { 780, 0x0039, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // nine + { 822, 0x003A, 4, 11, 11, 1, 5, 0, 0, 0x00 }, // colon + { 833, 0x003B, 4, 14, 11, 1, 6, 0, 0, 0x00 }, // semicolon + { 847, 0x003C, 8, 9, 12, 1, 12, 0, 0, 0x00 }, // less + { 865, 0x003D, 11, 7, 11, 2, 15, 0, 0, 0x00 }, // equal + { 885, 0x003E, 8, 9, 12, 2, 11, 0, 0, 0x00 }, // greater + { 903, 0x003F, 10, 14, 14, 0, 11, 0, 0, 0x00 }, // question + { 938, 0x0040, 19, 17, 13, 1, 21, 0, 0, 0x00 }, // at + { 1019, 0x0041, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // A + { 1068, 0x0042, 11, 14, 14, 1, 13, 0, 0, 0x00 }, // B + { 1107, 0x0043, 14, 14, 14, 0, 15, 0, 0, 0x00 }, // C + { 1156, 0x0044, 13, 14, 14, 1, 14, 0, 0, 0x00 }, // D + { 1202, 0x0045, 9, 14, 14, 1, 11, 0, 0, 0x00 }, // E + { 1234, 0x0046, 9, 14, 14, 1, 11, 0, 0, 0x00 }, // F + { 1266, 0x0047, 15, 14, 14, 0, 15, 0, 0, 0x00 }, // G + { 1319, 0x0048, 12, 14, 14, 1, 14, 0, 0, 0x00 }, // H + { 1361, 0x0049, 4, 14, 14, 1, 6, 0, 0, 0x00 }, // I + { 1375, 0x004A, 10, 14, 14, 0, 11, 0, 0, 0x00 }, // J + { 1410, 0x004B, 12, 14, 14, 1, 13, 0, 0, 0x00 }, // K + { 1452, 0x004C, 8, 14, 14, 1, 9, 0, 0, 0x00 }, // L + { 1480, 0x004D, 16, 14, 14, 1, 18, 0, 0, 0x00 }, // M + { 1536, 0x004E, 13, 14, 14, 1, 15, 0, 0, 0x00 }, // N + { 1582, 0x004F, 15, 14, 14, 0, 16, 0, 0, 0x00 }, // O + { 1635, 0x0050, 11, 14, 14, 1, 12, 0, 0, 0x00 }, // P + { 1674, 0x0051, 15, 17, 14, 0, 16, 0, 0, 0x00 }, // Q + { 1738, 0x0052, 11, 14, 14, 1, 13, 0, 0, 0x00 }, // R + { 1777, 0x0053, 10, 14, 14, 1, 12, 0, 0, 0x00 }, // S + { 1812, 0x0054, 11, 14, 14, 0, 12, 0, 0, 0x00 }, // T + { 1851, 0x0055, 12, 14, 14, 1, 14, 0, 0, 0x00 }, // U + { 1893, 0x0056, 14, 14, 14, 0, 14, 0, 0, 0x00 }, // V + { 1942, 0x0057, 20, 14, 14, 0, 20, 0, 0, 0x00 }, // W + { 2012, 0x0058, 12, 14, 14, 1, 14, 0, 0, 0x00 }, // X + { 2054, 0x0059, 13, 14, 14, 0, 13, 0, 0, 0x00 }, // Y + { 2100, 0x005A, 10, 14, 14, 1, 12, 0, 0, 0x00 }, // Z + { 2135, 0x005B, 6, 22, 18, 2, 10, 0, 0, 0x00 }, // bracketleft + { 2168, 0x005C, 9, 22, 18, 3, 15, 0, 0, 0x00 }, // backslash + { 2218, 0x005D, 6, 22, 18, 2, 10, 0, 0, 0x00 }, // bracketright + { 2251, 0x005E, 12, 11, 14, 1, 14, 0, 0, 0x00 }, // asciicircum + { 2284, 0x005F, 12, 3, 0, 2, 16, 0, 0, 0x00 }, // underscore + { 2293, 0x0060, 5, 5, 16, 0, 5, 0, 0, 0x00 }, // grave + { 2300, 0x0061, 13, 11, 11, 0, 14, 0, 0, 0x00 }, // a + { 2336, 0x0062, 12, 15, 15, 1, 14, 0, 0, 0x00 }, // b + { 2381, 0x0063, 11, 11, 11, 0, 12, 0, 0, 0x00 }, // c + { 2412, 0x0064, 13, 15, 15, 0, 14, 0, 0, 0x00 }, // d + { 2461, 0x0065, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // e + { 2494, 0x0066, 7, 16, 16, 0, 7, 0, 0, 0x00 }, // f + { 2522, 0x0067, 13, 16, 11, 0, 14, 0, 0, 0x00 }, // g + { 2574, 0x0068, 11, 15, 15, 1, 13, 0, 0, 0x00 }, // h + { 2616, 0x0069, 4, 15, 15, 1, 6, 0, 0, 0x00 }, // i + { 2631, 0x006A, 6, 20, 15, -1, 6, 0, 0, 0x00 }, // j + { 2661, 0x006B, 11, 15, 15, 1, 12, 0, 0, 0x00 }, // k + { 2703, 0x006C, 4, 15, 15, 1, 6, 0, 0, 0x00 }, // l + { 2718, 0x006D, 19, 11, 11, 1, 21, 0, 0, 0x00 }, // m + { 2771, 0x006E, 11, 11, 11, 1, 13, 0, 0, 0x00 }, // n + { 2802, 0x006F, 12, 11, 11, 0, 13, 0, 0, 0x00 }, // o + { 2835, 0x0070, 12, 16, 11, 1, 14, 0, 0, 0x00 }, // p + { 2883, 0x0071, 13, 16, 11, 0, 14, 0, 0, 0x00 }, // q + { 2935, 0x0072, 7, 11, 11, 1, 8, 0, 0, 0x00 }, // r + { 2955, 0x0073, 9, 11, 11, 1, 11, 0, 0, 0x00 }, // s + { 2980, 0x0074, 7, 14, 14, 0, 8, 0, 0, 0x00 }, // t + { 3005, 0x0075, 11, 11, 11, 1, 13, 0, 0, 0x00 }, // u + { 3036, 0x0076, 12, 11, 11, 0, 12, 0, 0, 0x00 }, // v + { 3069, 0x0077, 17, 11, 11, 0, 17, 0, 0, 0x00 }, // w + { 3116, 0x0078, 11, 11, 11, 0, 11, 0, 0, 0x00 }, // x + { 3147, 0x0079, 12, 16, 11, 0, 12, 0, 0, 0x00 }, // y + { 3195, 0x007A, 9, 11, 11, 0, 10, 0, 0, 0x00 }, // z + { 3220, 0x007B, 7, 22, 18, 2, 10, 0, 0, 0x00 }, // braceleft + { 3259, 0x007C, 4, 18, 16, 1, 6, 0, 0, 0x00 }, // bar + { 3277, 0x007D, 7, 22, 18, 1, 10, 0, 0, 0x00 }, // braceright + { 3316, 0x007E, 11, 4, 8, 0, 12, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 12, 3, 3, 1, 14, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_20_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_20_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_20_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_20_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_20_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_20_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_20_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_20_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_20_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_20_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_20_2bpp(glyphs_Poppins_SemiBold_20_2bpp, 96, 25, 20, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_20_2bpp, kerning_Poppins_SemiBold_20_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_20_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_25_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_25_2bpp.cpp new file mode 100644 index 00000000..00452e32 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_25_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_25_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 6, 0, 0, 0x00 }, // space + { 0, 0x0021, 5, 17, 17, 2, 9, 0, 0, 0x00 }, // exclam + { 22, 0x0022, 7, 6, 21, 1, 9, 0, 0, 0x00 }, // quotedbl + { 33, 0x0023, 21, 19, 19, 0, 22, 0, 0, 0x00 }, // numbersign + { 133, 0x0024, 13, 22, 20, 1, 16, 0, 0, 0x00 }, // dollar + { 205, 0x0025, 19, 17, 17, 1, 21, 0, 0, 0x00 }, // percent + { 286, 0x0026, 18, 17, 17, 1, 19, 0, 0, 0x00 }, // ampersand + { 363, 0x0027, 3, 6, 21, 1, 5, 0, 0, 0x00 }, // quotesingle + { 368, 0x0028, 10, 28, 23, 2, 12, 0, 0, 0x00 }, // parenleft + { 438, 0x0029, 10, 28, 23, 0, 12, 0, 0, 0x00 }, // parenright + { 508, 0x002A, 9, 10, 19, 2, 13, 0, 0, 0x00 }, // asterisk + { 531, 0x002B, 13, 13, 16, 2, 17, 0, 0, 0x00 }, // plus + { 574, 0x002C, 6, 7, 4, 0, 6, 0, 0, 0x00 }, // comma + { 585, 0x002D, 12, 3, 10, 1, 15, 0, 0, 0x00 }, // hyphen + { 594, 0x002E, 5, 4, 4, 1, 7, 0, 0, 0x00 }, // period + { 599, 0x002F, 10, 28, 24, 1, 12, 0, 0, 0x00 }, // slash + { 669, 0x0030, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // zero + { 736, 0x0031, 6, 19, 19, 1, 9, 0, 0, 0x00 }, // one + { 765, 0x0032, 13, 18, 18, 1, 14, 0, 0, 0x00 }, // two + { 824, 0x0033, 13, 19, 19, 1, 15, 0, 0, 0x00 }, // three + { 886, 0x0034, 15, 18, 18, 1, 17, 0, 0, 0x00 }, // four + { 954, 0x0035, 13, 18, 18, 2, 16, 0, 0, 0x00 }, // five + { 1013, 0x0036, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // six + { 1080, 0x0037, 12, 18, 18, 1, 14, 0, 0, 0x00 }, // seven + { 1134, 0x0038, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // eight + { 1201, 0x0039, 14, 19, 19, 1, 16, 0, 0, 0x00 }, // nine + { 1268, 0x003A, 5, 14, 14, 1, 7, 0, 0, 0x00 }, // colon + { 1286, 0x003B, 5, 17, 14, 1, 8, 0, 0, 0x00 }, // semicolon + { 1308, 0x003C, 10, 11, 14, 2, 15, 0, 0, 0x00 }, // less + { 1336, 0x003D, 14, 9, 14, 2, 18, 0, 0, 0x00 }, // equal + { 1368, 0x003E, 10, 11, 14, 2, 14, 0, 0, 0x00 }, // greater + { 1396, 0x003F, 12, 17, 17, 1, 13, 0, 0, 0x00 }, // question + { 1447, 0x0040, 24, 22, 17, 1, 26, 0, 0, 0x00 }, // at + { 1579, 0x0041, 16, 17, 17, 1, 18, 0, 0, 0x00 }, // A + { 1647, 0x0042, 14, 17, 17, 1, 16, 0, 0, 0x00 }, // B + { 1707, 0x0043, 17, 17, 17, 1, 19, 0, 0, 0x00 }, // C + { 1780, 0x0044, 16, 17, 17, 1, 18, 0, 0, 0x00 }, // D + { 1848, 0x0045, 11, 17, 17, 1, 13, 0, 0, 0x00 }, // E + { 1895, 0x0046, 12, 17, 17, 1, 13, 0, 0, 0x00 }, // F + { 1946, 0x0047, 18, 17, 17, 1, 19, 0, 0, 0x00 }, // G + { 2023, 0x0048, 16, 17, 17, 1, 18, 0, 0, 0x00 }, // H + { 2091, 0x0049, 5, 17, 17, 1, 7, 0, 0, 0x00 }, // I + { 2113, 0x004A, 11, 17, 17, 1, 14, 0, 0, 0x00 }, // J + { 2160, 0x004B, 15, 17, 17, 1, 17, 0, 0, 0x00 }, // K + { 2224, 0x004C, 10, 17, 17, 1, 11, 0, 0, 0x00 }, // L + { 2267, 0x004D, 20, 17, 17, 1, 22, 0, 0, 0x00 }, // M + { 2352, 0x004E, 16, 17, 17, 1, 18, 0, 0, 0x00 }, // N + { 2420, 0x004F, 18, 17, 17, 1, 20, 0, 0, 0x00 }, // O + { 2497, 0x0050, 14, 17, 17, 1, 15, 0, 0, 0x00 }, // P + { 2557, 0x0051, 18, 20, 17, 1, 20, 0, 0, 0x00 }, // Q + { 2647, 0x0052, 14, 17, 17, 1, 16, 0, 0, 0x00 }, // R + { 2707, 0x0053, 13, 17, 17, 1, 15, 0, 0, 0x00 }, // S + { 2763, 0x0054, 14, 17, 17, 0, 14, 0, 0, 0x00 }, // T + { 2823, 0x0055, 15, 17, 17, 1, 17, 0, 0, 0x00 }, // U + { 2887, 0x0056, 18, 17, 17, 0, 18, 0, 0, 0x00 }, // V + { 2964, 0x0057, 25, 17, 17, 0, 26, 0, 0, 0x00 }, // W + { 3071, 0x0058, 15, 17, 17, 1, 17, 0, 0, 0x00 }, // X + { 3135, 0x0059, 16, 17, 17, 0, 16, 0, 0, 0x00 }, // Y + { 3203, 0x005A, 12, 17, 17, 1, 14, 0, 0, 0x00 }, // Z + { 3254, 0x005B, 7, 28, 23, 3, 12, 0, 0, 0x00 }, // bracketleft + { 3303, 0x005C, 11, 28, 24, 4, 19, 0, 0, 0x00 }, // backslash + { 3380, 0x005D, 7, 28, 23, 2, 12, 0, 0, 0x00 }, // bracketright + { 3429, 0x005E, 15, 14, 18, 1, 17, 0, 0, 0x00 }, // asciicircum + { 3482, 0x005F, 16, 4, 0, 2, 20, 0, 0, 0x00 }, // underscore + { 3498, 0x0060, 6, 5, 20, 0, 7, 0, 0, 0x00 }, // grave + { 3506, 0x0061, 15, 14, 14, 1, 17, 0, 0, 0x00 }, // a + { 3559, 0x0062, 15, 19, 19, 1, 17, 0, 0, 0x00 }, // b + { 3631, 0x0063, 13, 14, 14, 1, 15, 0, 0, 0x00 }, // c + { 3677, 0x0064, 15, 19, 19, 1, 17, 0, 0, 0x00 }, // d + { 3749, 0x0065, 14, 14, 14, 1, 15, 0, 0, 0x00 }, // e + { 3798, 0x0066, 8, 19, 19, 0, 9, 0, 0, 0x00 }, // f + { 3836, 0x0067, 15, 21, 14, 1, 17, 0, 0, 0x00 }, // g + { 3915, 0x0068, 14, 19, 19, 1, 17, 0, 0, 0x00 }, // h + { 3982, 0x0069, 5, 19, 19, 1, 7, 0, 0, 0x00 }, // i + { 4006, 0x006A, 7, 26, 19, -1, 7, 0, 0, 0x00 }, // j + { 4052, 0x006B, 13, 19, 19, 1, 15, 0, 0, 0x00 }, // k + { 4114, 0x006C, 5, 19, 19, 1, 7, 0, 0, 0x00 }, // l + { 4138, 0x006D, 24, 14, 14, 1, 26, 0, 0, 0x00 }, // m + { 4222, 0x006E, 14, 14, 14, 1, 17, 0, 0, 0x00 }, // n + { 4271, 0x006F, 14, 14, 14, 1, 16, 0, 0, 0x00 }, // o + { 4320, 0x0070, 15, 21, 14, 1, 17, 0, 0, 0x00 }, // p + { 4399, 0x0071, 15, 21, 14, 1, 17, 0, 0, 0x00 }, // q + { 4478, 0x0072, 9, 14, 14, 1, 10, 0, 0, 0x00 }, // r + { 4510, 0x0073, 12, 14, 14, 1, 14, 0, 0, 0x00 }, // s + { 4552, 0x0074, 9, 17, 17, 0, 10, 0, 0, 0x00 }, // t + { 4591, 0x0075, 14, 14, 14, 1, 17, 0, 0, 0x00 }, // u + { 4640, 0x0076, 15, 14, 14, 0, 15, 0, 0, 0x00 }, // v + { 4693, 0x0077, 21, 14, 14, 0, 21, 0, 0, 0x00 }, // w + { 4767, 0x0078, 13, 14, 14, 0, 14, 0, 0, 0x00 }, // x + { 4813, 0x0079, 15, 21, 14, 0, 15, 0, 0, 0x00 }, // y + { 4892, 0x007A, 10, 14, 14, 1, 12, 0, 0, 0x00 }, // z + { 4927, 0x007B, 9, 28, 23, 2, 13, 0, 0, 0x00 }, // braceleft + { 4990, 0x007C, 4, 23, 20, 2, 8, 0, 0, 0x00 }, // bar + { 5013, 0x007D, 8, 28, 23, 2, 13, 0, 0, 0x00 }, // braceright + { 5069, 0x007E, 13, 5, 11, 1, 15, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 16, 4, 4, 1, 17, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_25_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_25_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_25_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_25_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_25_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_25_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_25_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_25_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_25_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_25_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_25_2bpp(glyphs_Poppins_SemiBold_25_2bpp, 96, 32, 25, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_25_2bpp, kerning_Poppins_SemiBold_25_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_25_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_30_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_30_2bpp.cpp new file mode 100644 index 00000000..cb571b02 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_30_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_30_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 7, 0, 0, 0x00 }, // space + { 0, 0x0021, 6, 21, 21, 2, 11, 0, 0, 0x00 }, // exclam + { 32, 0x0022, 9, 7, 25, 1, 11, 0, 0, 0x00 }, // quotedbl + { 48, 0x0023, 26, 23, 23, 0, 27, 0, 0, 0x00 }, // numbersign + { 198, 0x0024, 16, 27, 24, 1, 20, 0, 0, 0x00 }, // dollar + { 306, 0x0025, 23, 21, 21, 1, 25, 0, 0, 0x00 }, // percent + { 427, 0x0026, 22, 21, 21, 1, 23, 0, 0, 0x00 }, // ampersand + { 543, 0x0027, 4, 7, 25, 1, 6, 0, 0, 0x00 }, // quotesingle + { 550, 0x0028, 11, 34, 28, 3, 15, 0, 0, 0x00 }, // parenleft + { 644, 0x0029, 12, 34, 28, 0, 15, 0, 0, 0x00 }, // parenright + { 746, 0x002A, 12, 12, 23, 2, 16, 0, 0, 0x00 }, // asterisk + { 782, 0x002B, 16, 16, 19, 2, 20, 0, 0, 0x00 }, // plus + { 846, 0x002C, 7, 9, 5, 0, 8, 0, 0, 0x00 }, // comma + { 862, 0x002D, 13, 4, 13, 2, 17, 0, 0, 0x00 }, // hyphen + { 875, 0x002E, 6, 5, 5, 1, 8, 0, 0, 0x00 }, // period + { 883, 0x002F, 13, 34, 29, 1, 15, 0, 0, 0x00 }, // slash + { 994, 0x0030, 17, 22, 22, 1, 19, 0, 0, 0x00 }, // zero + { 1088, 0x0031, 8, 22, 22, 1, 11, 0, 0, 0x00 }, // one + { 1132, 0x0032, 16, 22, 22, 1, 17, 0, 0, 0x00 }, // two + { 1220, 0x0033, 16, 23, 23, 1, 18, 0, 0, 0x00 }, // three + { 1312, 0x0034, 18, 22, 22, 1, 20, 0, 0, 0x00 }, // four + { 1411, 0x0035, 16, 22, 22, 2, 19, 0, 0, 0x00 }, // five + { 1499, 0x0036, 16, 23, 23, 2, 19, 0, 0, 0x00 }, // six + { 1591, 0x0037, 15, 22, 22, 1, 16, 0, 0, 0x00 }, // seven + { 1674, 0x0038, 17, 23, 23, 1, 19, 0, 0, 0x00 }, // eight + { 1772, 0x0039, 15, 23, 23, 2, 19, 0, 0, 0x00 }, // nine + { 1859, 0x003A, 6, 17, 17, 1, 8, 0, 0, 0x00 }, // colon + { 1885, 0x003B, 7, 21, 17, 1, 10, 0, 0, 0x00 }, // semicolon + { 1922, 0x003C, 12, 14, 18, 2, 18, 0, 0, 0x00 }, // less + { 1964, 0x003D, 17, 11, 16, 3, 22, 0, 0, 0x00 }, // equal + { 2011, 0x003E, 12, 14, 18, 3, 17, 0, 0, 0x00 }, // greater + { 2053, 0x003F, 14, 21, 21, 1, 16, 0, 0, 0x00 }, // question + { 2127, 0x0040, 28, 26, 20, 2, 32, 0, 0, 0x00 }, // at + { 2309, 0x0041, 20, 21, 21, 1, 21, 0, 0, 0x00 }, // A + { 2414, 0x0042, 16, 21, 21, 2, 19, 0, 0, 0x00 }, // B + { 2498, 0x0043, 21, 21, 21, 1, 23, 0, 0, 0x00 }, // C + { 2609, 0x0044, 19, 21, 21, 2, 22, 0, 0, 0x00 }, // D + { 2709, 0x0045, 13, 21, 21, 2, 16, 0, 0, 0x00 }, // E + { 2778, 0x0046, 13, 21, 21, 2, 16, 0, 0, 0x00 }, // F + { 2847, 0x0047, 21, 21, 21, 1, 23, 0, 0, 0x00 }, // G + { 2958, 0x0048, 18, 21, 21, 2, 22, 0, 0, 0x00 }, // H + { 3053, 0x0049, 5, 21, 21, 2, 8, 0, 0, 0x00 }, // I + { 3080, 0x004A, 14, 21, 21, 1, 17, 0, 0, 0x00 }, // J + { 3154, 0x004B, 17, 21, 21, 2, 20, 0, 0, 0x00 }, // K + { 3244, 0x004C, 12, 21, 21, 2, 14, 0, 0, 0x00 }, // L + { 3307, 0x004D, 23, 21, 21, 2, 27, 0, 0, 0x00 }, // M + { 3428, 0x004E, 18, 21, 21, 2, 22, 0, 0, 0x00 }, // N + { 3523, 0x004F, 22, 21, 21, 1, 24, 0, 0, 0x00 }, // O + { 3639, 0x0050, 16, 21, 21, 2, 18, 0, 0, 0x00 }, // P + { 3723, 0x0051, 22, 25, 21, 1, 24, 0, 0, 0x00 }, // Q + { 3861, 0x0052, 16, 21, 21, 2, 19, 0, 0, 0x00 }, // R + { 3945, 0x0053, 16, 21, 21, 1, 18, 0, 0, 0x00 }, // S + { 4029, 0x0054, 16, 21, 21, 1, 17, 0, 0, 0x00 }, // T + { 4113, 0x0055, 17, 21, 21, 2, 21, 0, 0, 0x00 }, // U + { 4203, 0x0056, 21, 21, 21, 0, 21, 0, 0, 0x00 }, // V + { 4314, 0x0057, 30, 21, 21, 0, 31, 0, 0, 0x00 }, // W + { 4472, 0x0058, 18, 21, 21, 1, 21, 0, 0, 0x00 }, // X + { 4567, 0x0059, 19, 21, 21, 0, 19, 0, 0, 0x00 }, // Y + { 4667, 0x005A, 15, 21, 21, 1, 17, 0, 0, 0x00 }, // Z + { 4746, 0x005B, 8, 34, 28, 4, 15, 0, 0, 0x00 }, // bracketleft + { 4814, 0x005C, 13, 34, 29, 5, 23, 0, 0, 0x00 }, // backslash + { 4925, 0x005D, 8, 34, 28, 3, 15, 0, 0, 0x00 }, // bracketright + { 4993, 0x005E, 19, 16, 21, 1, 20, 0, 0, 0x00 }, // asciicircum + { 5069, 0x005F, 18, 4, 255, 3, 24, 0, 0, 0x60 }, // underscore + { 5087, 0x0060, 8, 7, 25, 0, 8, 0, 0, 0x00 }, // grave + { 5101, 0x0061, 18, 17, 17, 1, 20, 0, 0, 0x00 }, // a + { 5178, 0x0062, 18, 23, 23, 2, 20, 0, 0, 0x00 }, // b + { 5282, 0x0063, 16, 17, 17, 1, 18, 0, 0, 0x00 }, // c + { 5350, 0x0064, 18, 23, 23, 1, 20, 0, 0, 0x00 }, // d + { 5454, 0x0065, 17, 17, 17, 1, 19, 0, 0, 0x00 }, // e + { 5527, 0x0066, 10, 24, 24, 0, 10, 0, 0, 0x00 }, // f + { 5587, 0x0067, 18, 25, 17, 1, 20, 0, 0, 0x00 }, // g + { 5700, 0x0068, 16, 23, 23, 2, 20, 0, 0, 0x00 }, // h + { 5792, 0x0069, 6, 24, 24, 1, 8, 0, 0, 0x00 }, // i + { 5828, 0x006A, 8, 32, 24, -1, 8, 0, 0, 0x00 }, // j + { 5892, 0x006B, 15, 23, 23, 2, 18, 0, 0, 0x00 }, // k + { 5979, 0x006C, 5, 23, 23, 2, 8, 0, 0, 0x00 }, // l + { 6008, 0x006D, 28, 17, 17, 2, 31, 0, 0, 0x00 }, // m + { 6127, 0x006E, 16, 17, 17, 2, 20, 0, 0, 0x00 }, // n + { 6195, 0x006F, 17, 17, 17, 1, 19, 0, 0, 0x00 }, // o + { 6268, 0x0070, 18, 25, 17, 2, 20, 0, 0, 0x00 }, // p + { 6381, 0x0071, 18, 25, 17, 1, 20, 0, 0, 0x00 }, // q + { 6494, 0x0072, 10, 17, 17, 2, 12, 0, 0, 0x00 }, // r + { 6537, 0x0073, 14, 17, 17, 1, 16, 0, 0, 0x00 }, // s + { 6597, 0x0074, 11, 21, 21, 0, 12, 0, 0, 0x00 }, // t + { 6655, 0x0075, 16, 17, 17, 2, 20, 0, 0, 0x00 }, // u + { 6723, 0x0076, 18, 17, 17, 0, 18, 0, 0, 0x00 }, // v + { 6800, 0x0077, 25, 17, 17, 0, 25, 0, 0, 0x00 }, // w + { 6907, 0x0078, 16, 17, 17, 0, 16, 0, 0, 0x00 }, // x + { 6975, 0x0079, 18, 25, 17, 0, 18, 0, 0, 0x00 }, // y + { 7088, 0x007A, 13, 17, 17, 1, 14, 0, 0, 0x00 }, // z + { 7144, 0x007B, 10, 34, 28, 3, 15, 0, 0, 0x00 }, // braceleft + { 7229, 0x007C, 5, 28, 24, 2, 9, 0, 0, 0x00 }, // bar + { 7264, 0x007D, 10, 34, 28, 2, 15, 0, 0, 0x00 }, // braceright + { 7349, 0x007E, 16, 6, 13, 1, 18, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 19, 5, 5, 1, 21, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_30_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_30_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_30_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_30_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_30_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_30_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_30_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_30_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_30_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_30_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_30_2bpp(glyphs_Poppins_SemiBold_30_2bpp, 96, 38, 30, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_30_2bpp, kerning_Poppins_SemiBold_30_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_30_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_35_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_35_2bpp.cpp new file mode 100644 index 00000000..c90c571e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_35_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_35_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 8, 0, 0, 0x00 }, // space + { 0, 0x0021, 6, 25, 25, 3, 12, 0, 0, 0x00 }, // exclam + { 38, 0x0022, 11, 8, 29, 1, 13, 0, 0, 0x00 }, // quotedbl + { 60, 0x0023, 29, 27, 27, 1, 31, 0, 0, 0x00 }, // numbersign + { 256, 0x0024, 18, 31, 28, 2, 23, 0, 0, 0x00 }, // dollar + { 396, 0x0025, 27, 25, 25, 1, 29, 0, 0, 0x00 }, // percent + { 565, 0x0026, 26, 25, 25, 1, 27, 0, 0, 0x00 }, // ampersand + { 728, 0x0027, 5, 8, 29, 1, 7, 0, 0, 0x00 }, // quotesingle + { 738, 0x0028, 14, 40, 33, 3, 17, 0, 0, 0x00 }, // parenleft + { 878, 0x0029, 14, 40, 33, 0, 17, 0, 0, 0x00 }, // parenright + { 1018, 0x002A, 14, 14, 27, 2, 18, 0, 0, 0x00 }, // asterisk + { 1067, 0x002B, 18, 18, 22, 3, 24, 0, 0, 0x00 }, // plus + { 1148, 0x002C, 8, 10, 5, 0, 9, 0, 0, 0x00 }, // comma + { 1168, 0x002D, 16, 5, 16, 2, 20, 0, 0, 0x00 }, // hyphen + { 1188, 0x002E, 7, 6, 6, 1, 9, 0, 0, 0x00 }, // period + { 1199, 0x002F, 15, 40, 34, 1, 17, 0, 0, 0x00 }, // slash + { 1349, 0x0030, 19, 27, 27, 2, 23, 0, 0, 0x00 }, // zero + { 1478, 0x0031, 9, 26, 26, 1, 13, 0, 0, 0x00 }, // one + { 1537, 0x0032, 18, 26, 26, 1, 20, 0, 0, 0x00 }, // two + { 1654, 0x0033, 18, 27, 27, 1, 21, 0, 0, 0x00 }, // three + { 1776, 0x0034, 21, 26, 26, 1, 23, 0, 0, 0x00 }, // four + { 1913, 0x0035, 18, 26, 26, 3, 23, 0, 0, 0x00 }, // five + { 2030, 0x0036, 19, 27, 27, 2, 22, 0, 0, 0x00 }, // six + { 2159, 0x0037, 17, 26, 26, 1, 19, 0, 0, 0x00 }, // seven + { 2270, 0x0038, 19, 27, 27, 2, 23, 0, 0, 0x00 }, // eight + { 2399, 0x0039, 18, 27, 27, 2, 22, 0, 0, 0x00 }, // nine + { 2521, 0x003A, 7, 20, 20, 1, 9, 0, 0, 0x00 }, // colon + { 2556, 0x003B, 8, 25, 20, 1, 11, 0, 0, 0x00 }, // semicolon + { 2606, 0x003C, 13, 16, 21, 3, 20, 0, 0, 0x00 }, // less + { 2658, 0x003D, 20, 13, 19, 3, 26, 0, 0, 0x00 }, // equal + { 2723, 0x003E, 14, 16, 21, 3, 20, 0, 0, 0x00 }, // greater + { 2779, 0x003F, 17, 26, 26, 1, 19, 0, 0, 0x00 }, // question + { 2890, 0x0040, 33, 32, 24, 2, 37, 0, 0, 0x00 }, // at + { 3154, 0x0041, 23, 25, 25, 1, 25, 0, 0, 0x00 }, // A + { 3298, 0x0042, 19, 25, 25, 2, 23, 0, 0, 0x00 }, // B + { 3417, 0x0043, 24, 25, 25, 1, 27, 0, 0, 0x00 }, // C + { 3567, 0x0044, 22, 25, 25, 2, 25, 0, 0, 0x00 }, // D + { 3705, 0x0045, 15, 25, 25, 2, 19, 0, 0, 0x00 }, // E + { 3799, 0x0046, 16, 25, 25, 2, 19, 0, 0, 0x00 }, // F + { 3899, 0x0047, 25, 25, 25, 1, 27, 0, 0, 0x00 }, // G + { 4056, 0x0048, 21, 25, 25, 2, 25, 0, 0, 0x00 }, // H + { 4188, 0x0049, 6, 25, 25, 2, 10, 0, 0, 0x00 }, // I + { 4226, 0x004A, 16, 25, 25, 1, 20, 0, 0, 0x00 }, // J + { 4326, 0x004B, 20, 25, 25, 2, 23, 0, 0, 0x00 }, // K + { 4451, 0x004C, 14, 25, 25, 2, 16, 0, 0, 0x00 }, // L + { 4539, 0x004D, 27, 25, 25, 2, 31, 0, 0, 0x00 }, // M + { 4708, 0x004E, 22, 25, 25, 2, 26, 0, 0, 0x00 }, // N + { 4846, 0x004F, 26, 25, 25, 1, 27, 0, 0, 0x00 }, // O + { 5009, 0x0050, 19, 25, 25, 2, 21, 0, 0, 0x00 }, // P + { 5128, 0x0051, 26, 29, 25, 1, 28, 0, 0, 0x00 }, // Q + { 5317, 0x0052, 19, 25, 25, 2, 22, 0, 0, 0x00 }, // R + { 5436, 0x0053, 18, 25, 25, 2, 21, 0, 0, 0x00 }, // S + { 5549, 0x0054, 18, 25, 25, 1, 20, 0, 0, 0x00 }, // T + { 5662, 0x0055, 20, 25, 25, 2, 24, 0, 0, 0x00 }, // U + { 5787, 0x0056, 25, 25, 25, 0, 25, 0, 0, 0x00 }, // V + { 5944, 0x0057, 34, 25, 25, 1, 36, 0, 0, 0x00 }, // W + { 6157, 0x0058, 22, 25, 25, 1, 24, 0, 0, 0x00 }, // X + { 6295, 0x0059, 22, 25, 25, 0, 22, 0, 0, 0x00 }, // Y + { 6433, 0x005A, 18, 25, 25, 1, 20, 0, 0, 0x00 }, // Z + { 6546, 0x005B, 10, 40, 33, 4, 17, 0, 0, 0x00 }, // bracketleft + { 6646, 0x005C, 15, 40, 34, 6, 26, 0, 0, 0x00 }, // backslash + { 6796, 0x005D, 9, 40, 33, 4, 17, 0, 0, 0x00 }, // bracketright + { 6886, 0x005E, 22, 19, 25, 1, 24, 0, 0, 0x00 }, // asciicircum + { 6991, 0x005F, 22, 5, 255, 3, 28, 0, 0, 0x60 }, // underscore + { 7019, 0x0060, 9, 8, 29, 0, 9, 0, 0, 0x00 }, // grave + { 7037, 0x0061, 21, 20, 20, 1, 24, 0, 0, 0x00 }, // a + { 7142, 0x0062, 21, 27, 27, 2, 24, 0, 0, 0x00 }, // b + { 7284, 0x0063, 19, 20, 20, 1, 21, 0, 0, 0x00 }, // c + { 7379, 0x0064, 21, 27, 27, 1, 24, 0, 0, 0x00 }, // d + { 7521, 0x0065, 20, 20, 20, 1, 22, 0, 0, 0x00 }, // e + { 7621, 0x0066, 12, 28, 28, 0, 12, 0, 0, 0x00 }, // f + { 7705, 0x0067, 21, 29, 20, 1, 24, 0, 0, 0x00 }, // g + { 7858, 0x0068, 19, 27, 27, 2, 23, 0, 0, 0x00 }, // h + { 7987, 0x0069, 6, 28, 28, 2, 10, 0, 0, 0x00 }, // i + { 8029, 0x006A, 9, 37, 28, -1, 10, 0, 0, 0x00 }, // j + { 8113, 0x006B, 18, 27, 27, 2, 20, 0, 0, 0x00 }, // k + { 8235, 0x006C, 6, 27, 27, 2, 10, 0, 0, 0x00 }, // l + { 8276, 0x006D, 33, 20, 20, 2, 37, 0, 0, 0x00 }, // m + { 8441, 0x006E, 19, 20, 20, 2, 23, 0, 0, 0x00 }, // n + { 8536, 0x006F, 20, 20, 20, 1, 22, 0, 0, 0x00 }, // o + { 8636, 0x0070, 21, 29, 20, 2, 24, 0, 0, 0x00 }, // p + { 8789, 0x0071, 21, 29, 20, 1, 24, 0, 0, 0x00 }, // q + { 8942, 0x0072, 12, 20, 20, 2, 14, 0, 0, 0x00 }, // r + { 9002, 0x0073, 17, 20, 20, 1, 19, 0, 0, 0x00 }, // s + { 9087, 0x0074, 12, 25, 25, 1, 14, 0, 0, 0x00 }, // t + { 9162, 0x0075, 19, 20, 20, 2, 23, 0, 0, 0x00 }, // u + { 9257, 0x0076, 21, 20, 20, 0, 21, 0, 0, 0x00 }, // v + { 9362, 0x0077, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // w + { 9507, 0x0078, 19, 20, 20, 0, 19, 0, 0, 0x00 }, // x + { 9602, 0x0079, 21, 29, 20, 0, 21, 0, 0, 0x00 }, // y + { 9755, 0x007A, 15, 20, 20, 1, 17, 0, 0, 0x00 }, // z + { 9830, 0x007B, 11, 40, 33, 4, 18, 0, 0, 0x00 }, // braceleft + { 9940, 0x007C, 5, 33, 29, 3, 11, 0, 0, 0x00 }, // bar + { 9982, 0x007D, 12, 40, 33, 2, 18, 0, 0, 0x00 }, // braceright + { 10102, 0x007E, 19, 7, 15, 1, 21, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 22, 6, 6, 1, 24, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_35_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_35_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_35_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_35_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_35_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_35_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_35_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_35_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_35_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_35_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_35_2bpp(glyphs_Poppins_SemiBold_35_2bpp, 96, 44, 35, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_35_2bpp, kerning_Poppins_SemiBold_35_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_35_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_40_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_40_2bpp.cpp new file mode 100644 index 00000000..be1b1a3d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_40_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_40_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 10, 0, 0, 0x00 }, // space + { 0, 0x0021, 8, 29, 29, 3, 14, 0, 0, 0x00 }, // exclam + { 58, 0x0022, 12, 9, 33, 1, 15, 0, 0, 0x00 }, // quotedbl + { 85, 0x0023, 33, 30, 30, 1, 35, 0, 0, 0x00 }, // numbersign + { 333, 0x0024, 21, 36, 32, 2, 26, 0, 0, 0x00 }, // dollar + { 522, 0x0025, 31, 29, 29, 1, 33, 0, 0, 0x00 }, // percent + { 747, 0x0026, 30, 29, 29, 1, 31, 0, 0, 0x00 }, // ampersand + { 965, 0x0027, 6, 9, 33, 1, 8, 0, 0, 0x00 }, // quotesingle + { 979, 0x0028, 15, 46, 38, 4, 19, 0, 0, 0x00 }, // parenleft + { 1152, 0x0029, 15, 46, 38, 0, 19, 0, 0, 0x00 }, // parenright + { 1325, 0x002A, 15, 16, 31, 3, 21, 0, 0, 0x00 }, // asterisk + { 1385, 0x002B, 21, 21, 25, 3, 27, 0, 0, 0x00 }, // plus + { 1496, 0x002C, 9, 12, 7, 0, 10, 0, 0, 0x00 }, // comma + { 1523, 0x002D, 17, 5, 17, 3, 23, 0, 0, 0x00 }, // hyphen + { 1545, 0x002E, 8, 7, 7, 1, 10, 0, 0, 0x00 }, // period + { 1559, 0x002F, 17, 46, 39, 1, 19, 0, 0, 0x00 }, // slash + { 1755, 0x0030, 22, 31, 31, 2, 26, 0, 0, 0x00 }, // zero + { 1926, 0x0031, 10, 30, 30, 1, 14, 0, 0, 0x00 }, // one + { 2001, 0x0032, 21, 30, 30, 1, 23, 0, 0, 0x00 }, // two + { 2159, 0x0033, 20, 31, 31, 2, 24, 0, 0, 0x00 }, // three + { 2314, 0x0034, 23, 30, 30, 2, 26, 0, 0, 0x00 }, // four + { 2487, 0x0035, 21, 30, 30, 3, 26, 0, 0, 0x00 }, // five + { 2645, 0x0036, 22, 31, 31, 2, 26, 0, 0, 0x00 }, // six + { 2816, 0x0037, 20, 30, 30, 1, 22, 0, 0, 0x00 }, // seven + { 2966, 0x0038, 22, 31, 31, 2, 26, 0, 0, 0x00 }, // eight + { 3137, 0x0039, 21, 31, 31, 2, 25, 0, 0, 0x00 }, // nine + { 3300, 0x003A, 8, 23, 23, 1, 11, 0, 0, 0x00 }, // colon + { 3346, 0x003B, 8, 29, 23, 2, 13, 0, 0, 0x00 }, // semicolon + { 3404, 0x003C, 16, 19, 24, 3, 23, 0, 0, 0x00 }, // less + { 3480, 0x003D, 22, 15, 22, 4, 30, 0, 0, 0x00 }, // equal + { 3563, 0x003E, 15, 19, 24, 4, 23, 0, 0, 0x00 }, // greater + { 3635, 0x003F, 19, 30, 30, 1, 22, 0, 0, 0x00 }, // question + { 3778, 0x0040, 36, 35, 27, 3, 42, 0, 0, 0x00 }, // at + { 4093, 0x0041, 27, 29, 29, 1, 29, 0, 0, 0x00 }, // A + { 4289, 0x0042, 22, 29, 29, 2, 26, 0, 0, 0x00 }, // B + { 4449, 0x0043, 28, 29, 29, 1, 31, 0, 0, 0x00 }, // C + { 4652, 0x0044, 26, 29, 29, 2, 29, 0, 0, 0x00 }, // D + { 4841, 0x0045, 17, 29, 29, 2, 21, 0, 0, 0x00 }, // E + { 4965, 0x0046, 18, 29, 29, 2, 21, 0, 0, 0x00 }, // F + { 5096, 0x0047, 29, 29, 29, 1, 31, 0, 0, 0x00 }, // G + { 5307, 0x0048, 24, 29, 29, 2, 29, 0, 0, 0x00 }, // H + { 5481, 0x0049, 7, 29, 29, 2, 11, 0, 0, 0x00 }, // I + { 5532, 0x004A, 18, 29, 29, 1, 23, 0, 0, 0x00 }, // J + { 5663, 0x004B, 24, 29, 29, 2, 27, 0, 0, 0x00 }, // K + { 5837, 0x004C, 16, 29, 29, 2, 18, 0, 0, 0x00 }, // L + { 5953, 0x004D, 32, 29, 29, 2, 36, 0, 0, 0x00 }, // M + { 6185, 0x004E, 25, 29, 29, 2, 29, 0, 0, 0x00 }, // N + { 6367, 0x004F, 29, 29, 29, 1, 31, 0, 0, 0x00 }, // O + { 6578, 0x0050, 21, 29, 29, 2, 24, 0, 0, 0x00 }, // P + { 6731, 0x0051, 29, 34, 29, 1, 31, 0, 0, 0x00 }, // Q + { 6978, 0x0052, 22, 29, 29, 2, 26, 0, 0, 0x00 }, // R + { 7138, 0x0053, 21, 29, 29, 2, 24, 0, 0, 0x00 }, // S + { 7291, 0x0054, 21, 29, 29, 1, 23, 0, 0, 0x00 }, // T + { 7444, 0x0055, 24, 29, 29, 2, 28, 0, 0, 0x00 }, // U + { 7618, 0x0056, 28, 29, 29, 0, 28, 0, 0, 0x00 }, // V + { 7821, 0x0057, 39, 29, 29, 1, 41, 0, 0, 0x00 }, // W + { 8104, 0x0058, 25, 29, 29, 1, 27, 0, 0, 0x00 }, // X + { 8286, 0x0059, 25, 29, 29, 0, 25, 0, 0, 0x00 }, // Y + { 8468, 0x005A, 19, 29, 29, 2, 23, 0, 0, 0x00 }, // Z + { 8606, 0x005B, 11, 46, 38, 5, 20, 0, 0, 0x00 }, // bracketleft + { 8733, 0x005C, 17, 46, 39, 7, 30, 0, 0, 0x00 }, // backslash + { 8929, 0x005D, 11, 46, 38, 4, 20, 0, 0, 0x00 }, // bracketright + { 9056, 0x005E, 25, 22, 29, 1, 27, 0, 0, 0x00 }, // asciicircum + { 9194, 0x005F, 24, 6, 255, 4, 32, 0, 0, 0x60 }, // underscore + { 9230, 0x0060, 10, 9, 33, 0, 11, 0, 0, 0x00 }, // grave + { 9253, 0x0061, 24, 23, 23, 1, 27, 0, 0, 0x00 }, // a + { 9391, 0x0062, 24, 31, 31, 2, 27, 0, 0, 0x00 }, // b + { 9577, 0x0063, 22, 23, 23, 1, 24, 0, 0, 0x00 }, // c + { 9704, 0x0064, 24, 31, 31, 1, 27, 0, 0, 0x00 }, // d + { 9890, 0x0065, 23, 23, 23, 1, 25, 0, 0, 0x00 }, // e + { 10023, 0x0066, 12, 32, 32, 1, 14, 0, 0, 0x00 }, // f + { 10119, 0x0067, 24, 34, 23, 1, 27, 0, 0, 0x00 }, // g + { 10323, 0x0068, 22, 31, 31, 2, 26, 0, 0, 0x00 }, // h + { 10494, 0x0069, 7, 32, 32, 2, 11, 0, 0, 0x00 }, // i + { 10550, 0x006A, 10, 43, 32, -1, 11, 0, 0, 0x00 }, // j + { 10658, 0x006B, 21, 31, 31, 2, 23, 0, 0, 0x00 }, // k + { 10821, 0x006C, 7, 31, 31, 2, 11, 0, 0, 0x00 }, // l + { 10876, 0x006D, 38, 23, 23, 2, 42, 0, 0, 0x00 }, // m + { 11095, 0x006E, 22, 23, 23, 2, 26, 0, 0, 0x00 }, // n + { 11222, 0x006F, 23, 23, 23, 1, 26, 0, 0, 0x00 }, // o + { 11355, 0x0070, 24, 34, 23, 2, 27, 0, 0, 0x00 }, // p + { 11559, 0x0071, 24, 34, 23, 1, 27, 0, 0, 0x00 }, // q + { 11763, 0x0072, 13, 23, 23, 2, 16, 0, 0, 0x00 }, // r + { 11838, 0x0073, 19, 23, 23, 1, 22, 0, 0, 0x00 }, // s + { 11948, 0x0074, 14, 29, 29, 1, 16, 0, 0, 0x00 }, // t + { 12050, 0x0075, 22, 23, 23, 2, 26, 0, 0, 0x00 }, // u + { 12177, 0x0076, 24, 23, 23, 0, 24, 0, 0, 0x00 }, // v + { 12315, 0x0077, 34, 23, 23, 0, 34, 0, 0, 0x00 }, // w + { 12511, 0x0078, 21, 23, 23, 0, 22, 0, 0, 0x00 }, // x + { 12632, 0x0079, 24, 34, 23, 0, 24, 0, 0, 0x00 }, // y + { 12836, 0x007A, 17, 23, 23, 1, 19, 0, 0, 0x00 }, // z + { 12934, 0x007B, 13, 46, 38, 4, 20, 0, 0, 0x00 }, // braceleft + { 13084, 0x007C, 6, 38, 33, 3, 12, 0, 0, 0x00 }, // bar + { 13141, 0x007D, 13, 46, 38, 3, 20, 0, 0, 0x00 }, // braceright + { 13291, 0x007E, 22, 8, 17, 1, 24, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 25, 7, 7, 1, 28, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_40_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_40_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_40_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_40_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_40_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_40_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_40_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_40_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_40_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_40_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_40_2bpp(glyphs_Poppins_SemiBold_40_2bpp, 96, 51, 40, 0, 0, 2, 0, 1, 0, unicodes_Poppins_SemiBold_40_2bpp, kerning_Poppins_SemiBold_40_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_40_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_60_2bpp.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_60_2bpp.cpp new file mode 100644 index 00000000..1a19c11d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/Table_Poppins_SemiBold_60_2bpp.cpp @@ -0,0 +1,130 @@ +// Autogenerated, do not edit + +#include + +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_60_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = { + { 0, 0x0020, 0, 0, 0, 0, 14, 0, 0, 0x00 }, // space + { 0, 0x0021, 11, 44, 44, 5, 21, 0, 0, 0x00 }, // exclam + { 121, 0x0022, 18, 13, 48, 2, 22, 0, 0, 0x00 }, // quotedbl + { 180, 0x0023, 50, 45, 45, 1, 53, 0, 0, 0x00 }, // numbersign + { 743, 0x0024, 31, 53, 48, 3, 39, 0, 0, 0x00 }, // dollar + { 1154, 0x0025, 46, 44, 43, 2, 50, 0, 0, 0x00 }, // percent + { 1660, 0x0026, 45, 44, 43, 2, 47, 0, 0, 0x00 }, // ampersand + { 2155, 0x0027, 8, 13, 48, 2, 12, 0, 0, 0x00 }, // quotesingle + { 2181, 0x0028, 22, 68, 56, 6, 29, 0, 0, 0x00 }, // parenleft + { 2555, 0x0029, 22, 68, 56, 1, 29, 0, 0, 0x00 }, // parenright + { 2929, 0x002A, 23, 23, 45, 4, 31, 0, 0, 0x00 }, // asterisk + { 3062, 0x002B, 31, 31, 37, 5, 40, 0, 0, 0x00 }, // plus + { 3303, 0x002C, 12, 17, 9, 1, 15, 0, 0, 0x00 }, // comma + { 3354, 0x002D, 26, 7, 25, 4, 35, 0, 0, 0x00 }, // hyphen + { 3400, 0x002E, 11, 10, 10, 2, 16, 0, 0, 0x00 }, // period + { 3428, 0x002F, 25, 68, 57, 2, 29, 0, 0, 0x00 }, // slash + { 3853, 0x0030, 33, 45, 45, 3, 39, 0, 0, 0x00 }, // zero + { 4225, 0x0031, 15, 44, 44, 2, 22, 0, 0, 0x00 }, // one + { 4390, 0x0032, 31, 44, 45, 2, 34, 0, 0, 0x00 }, // two + { 4731, 0x0033, 31, 45, 45, 2, 36, 0, 0, 0x00 }, // three + { 5080, 0x0034, 36, 44, 44, 2, 40, 0, 0, 0x00 }, // four + { 5476, 0x0035, 31, 44, 44, 5, 39, 0, 0, 0x00 }, // five + { 5817, 0x0036, 31, 45, 45, 4, 38, 0, 0, 0x00 }, // six + { 6166, 0x0037, 29, 44, 44, 2, 33, 0, 0, 0x00 }, // seven + { 6485, 0x0038, 32, 46, 45, 3, 39, 0, 0, 0x00 }, // eight + { 6853, 0x0039, 31, 45, 45, 4, 38, 0, 0, 0x00 }, // nine + { 7202, 0x003A, 11, 34, 34, 2, 16, 0, 0, 0x00 }, // colon + { 7296, 0x003B, 13, 43, 34, 2, 19, 0, 0, 0x00 }, // semicolon + { 7436, 0x003C, 23, 27, 35, 5, 35, 0, 0, 0x00 }, // less + { 7592, 0x003D, 34, 22, 33, 5, 44, 0, 0, 0x00 }, // equal + { 7779, 0x003E, 24, 27, 35, 5, 34, 0, 0, 0x00 }, // greater + { 7941, 0x003F, 28, 44, 44, 2, 32, 0, 0, 0x00 }, // question + { 8249, 0x0040, 55, 53, 40, 4, 63, 0, 0, 0x00 }, // at + { 8978, 0x0041, 41, 42, 42, 1, 43, 0, 0, 0x00 }, // A + { 9409, 0x0042, 32, 42, 42, 4, 39, 0, 0, 0x00 }, // B + { 9745, 0x0043, 41, 43, 43, 2, 46, 0, 0, 0x00 }, // C + { 10186, 0x0044, 37, 42, 42, 4, 43, 0, 0, 0x00 }, // D + { 10575, 0x0045, 25, 42, 42, 4, 32, 0, 0, 0x00 }, // E + { 10838, 0x0046, 26, 42, 42, 4, 32, 0, 0, 0x00 }, // F + { 11111, 0x0047, 42, 43, 43, 2, 46, 0, 0, 0x00 }, // G + { 11563, 0x0048, 35, 42, 42, 4, 43, 0, 0, 0x00 }, // H + { 11931, 0x0049, 9, 42, 42, 4, 17, 0, 0, 0x00 }, // I + { 12026, 0x004A, 27, 42, 42, 2, 34, 0, 0, 0x00 }, // J + { 12310, 0x004B, 34, 42, 42, 4, 40, 0, 0, 0x00 }, // K + { 12667, 0x004C, 23, 42, 42, 4, 28, 0, 0, 0x00 }, // L + { 12909, 0x004D, 46, 42, 42, 4, 54, 0, 0, 0x00 }, // M + { 13392, 0x004E, 36, 42, 42, 4, 44, 0, 0, 0x00 }, // N + { 13770, 0x004F, 43, 43, 43, 2, 47, 0, 0, 0x00 }, // O + { 14233, 0x0050, 31, 42, 42, 4, 36, 0, 0, 0x00 }, // P + { 14559, 0x0051, 44, 50, 43, 2, 47, 0, 0, 0x00 }, // Q + { 15109, 0x0052, 32, 42, 42, 4, 38, 0, 0, 0x00 }, // R + { 15445, 0x0053, 31, 43, 43, 3, 37, 0, 0, 0x00 }, // S + { 15779, 0x0054, 31, 42, 42, 2, 35, 0, 0, 0x00 }, // T + { 16105, 0x0055, 34, 42, 42, 4, 42, 0, 0, 0x00 }, // U + { 16462, 0x0056, 41, 42, 42, 1, 43, 0, 0, 0x00 }, // V + { 16893, 0x0057, 59, 42, 42, 1, 61, 0, 0, 0x00 }, // W + { 17513, 0x0058, 37, 42, 42, 2, 41, 0, 0, 0x00 }, // X + { 17902, 0x0059, 37, 42, 42, 1, 38, 0, 0, 0x00 }, // Y + { 18291, 0x005A, 29, 42, 42, 3, 35, 0, 0, 0x00 }, // Z + { 18596, 0x005B, 15, 68, 56, 8, 30, 0, 0, 0x00 }, // bracketleft + { 18851, 0x005C, 26, 68, 57, 10, 45, 0, 0, 0x00 }, // backslash + { 19293, 0x005D, 16, 68, 56, 6, 30, 0, 0, 0x00 }, // bracketright + { 19565, 0x005E, 37, 32, 42, 2, 41, 0, 0, 0x00 }, // asciicircum + { 19861, 0x005F, 36, 8, 254, 6, 47, 0, 0, 0x60 }, // underscore + { 19933, 0x0060, 15, 13, 49, 0, 16, 0, 0, 0x00 }, // grave + { 19982, 0x0061, 35, 35, 34, 2, 41, 0, 0, 0x00 }, // a + { 20289, 0x0062, 35, 46, 45, 4, 41, 0, 0, 0x00 }, // b + { 20692, 0x0063, 32, 35, 34, 2, 36, 0, 0, 0x00 }, // c + { 20972, 0x0064, 35, 46, 45, 2, 41, 0, 0, 0x00 }, // d + { 21375, 0x0065, 33, 35, 34, 2, 37, 0, 0, 0x00 }, // e + { 21664, 0x0066, 19, 47, 47, 1, 21, 0, 0, 0x00 }, // f + { 21888, 0x0067, 35, 51, 34, 2, 41, 0, 0, 0x00 }, // g + { 22335, 0x0068, 32, 45, 45, 4, 40, 0, 0, 0x00 }, // h + { 22695, 0x0069, 11, 47, 47, 3, 17, 0, 0, 0x00 }, // i + { 22825, 0x006A, 16, 63, 47, -2, 17, 0, 0, 0x00 }, // j + { 23077, 0x006B, 31, 45, 45, 4, 35, 0, 0, 0x00 }, // k + { 23426, 0x006C, 9, 45, 45, 4, 17, 0, 0, 0x00 }, // l + { 23528, 0x006D, 55, 34, 34, 4, 63, 0, 0, 0x00 }, // m + { 23996, 0x006E, 32, 34, 34, 4, 40, 0, 0, 0x00 }, // n + { 24268, 0x006F, 35, 35, 34, 2, 38, 0, 0, 0x00 }, // o + { 24575, 0x0070, 35, 50, 34, 4, 41, 0, 0, 0x00 }, // p + { 25013, 0x0071, 35, 50, 34, 2, 41, 0, 0, 0x00 }, // q + { 25451, 0x0072, 19, 34, 34, 4, 24, 0, 0, 0x00 }, // r + { 25613, 0x0073, 28, 35, 34, 2, 33, 0, 0, 0x00 }, // s + { 25858, 0x0074, 21, 42, 42, 1, 23, 0, 0, 0x00 }, // t + { 26079, 0x0075, 32, 33, 33, 4, 40, 0, 0, 0x00 }, // u + { 26343, 0x0076, 35, 33, 33, 0, 36, 0, 0, 0x00 }, // v + { 26632, 0x0077, 50, 33, 33, 0, 51, 0, 0, 0x00 }, // w + { 27045, 0x0078, 32, 33, 33, 0, 32, 0, 0, 0x00 }, // x + { 27309, 0x0079, 36, 49, 33, 0, 36, 0, 0, 0x00 }, // y + { 27750, 0x007A, 25, 33, 33, 2, 29, 0, 0, 0x00 }, // z + { 27957, 0x007B, 20, 68, 56, 6, 30, 0, 0, 0x00 }, // braceleft + { 28297, 0x007C, 9, 56, 49, 5, 19, 0, 0, 0x00 }, // bar + { 28423, 0x007D, 19, 68, 56, 5, 30, 0, 0, 0x00 }, // braceright + { 28746, 0x007E, 32, 12, 25, 2, 36, 0, 0, 0x00 }, // asciitilde + { 0, 0x2026, 38, 10, 10, 2, 42, 0, 0, 0x00 } // ellipsis +}; + +// GSUB tables: + +// Poppins_SemiBold_60_2bpp +FONT_TABLE_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::GlyphNode glyphs_Poppins_SemiBold_60_2bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_60_2bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_GLYPH_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t unicodes_Poppins_SemiBold_60_2bpp_4[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE; +FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA +KEEP extern const uint8_t* const unicodes_Poppins_SemiBold_60_2bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = { + unicodes_Poppins_SemiBold_60_2bpp_0, + 0, + 0, + 0, + unicodes_Poppins_SemiBold_60_2bpp_4 +}; +FONT_KERNING_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::KerningNode kerning_Poppins_SemiBold_60_2bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE; +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_60_2bpp(); + +touchgfx::GeneratedFont& getFont_Poppins_SemiBold_60_2bpp() +{ + static touchgfx::GeneratedFont Poppins_SemiBold_60_2bpp(glyphs_Poppins_SemiBold_60_2bpp, 96, 77, 60, 0, 0, 2, 0, 2, 0, unicodes_Poppins_SemiBold_60_2bpp, kerning_Poppins_SemiBold_60_2bpp, 63, 8230, 0, 0); + return Poppins_SemiBold_60_2bpp; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/UnmappedDataFont.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/UnmappedDataFont.cpp new file mode 100644 index 00000000..a4386692 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/UnmappedDataFont.cpp @@ -0,0 +1,236 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include +#include + +namespace touchgfx +{ +GlyphNode UnmappedDataFont::glyphNodeBuffer; + +UnmappedDataFont::UnmappedDataFont(const GlyphNode* glyphs, const uint16_t* unicodeList, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable) + : Font(height, baseline, pixAboveTop, pixBelowBottom, bitsPerPixel, byteAlignRow, maxLeft, maxRight, fallbackChar, ellipsisChar), + glyphList(glyphs), + listSize(numGlyphs), + unicodes(unicodeList), + glyphDataList(glyphDataList), + kerningData(kerningList), + gsubTable(gsubData), + arabicTable(formsTable) +{ +} + +const GlyphNode* UnmappedDataFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const +{ + int index = lookupUnicode(unicode); + + if (index != -1) + { + // Read glyphNode from unmapped flash + touchgfx::FlashDataReader* const flashReader = ApplicationFontProvider::getFlashReader(); + if (flashReader) + { + flashReader->copyData(glyphList + index, &glyphNodeBuffer, sizeof(GlyphNode)); + + pixelData = getPixelData(const_cast(&glyphNodeBuffer)); + bitsPerPixel = getBitsPerPixel(); + return &glyphNodeBuffer; + } + } + return 0; +} + +const uint8_t* UnmappedDataFont::getPixelData(const GlyphNode* glyph) const +{ + const uint8_t* const* table = (const uint8_t* const*)glyphDataList; + return &(table[glyph->unicode / 2048][glyph->dataOffset]); +} + +int8_t UnmappedDataFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const +{ + if (!glyph || glyph->kerningTableSize == 0) + { + return 0; + } + + const KerningNode* kerndata = kerningData + glyph->kerningTablePos(); + for (uint16_t i = glyph->kerningTableSize; i > 0; i--, kerndata++) + { + if (prevChar == kerndata->unicodePrevChar) + { + return kerndata->distance; + } + if (prevChar < kerndata->unicodePrevChar) + { + break; + } + } + return 0; +} + +int UnmappedDataFont::lookupUnicode(uint16_t unicode) const +{ + int32_t min = 0; + int32_t max = listSize - 1; + + int32_t mid = min + (unicode - unicodes[min]); // Linear up from [min].unicode + if (mid < min) + { + // Unicode < unicodes[min] => not found + return -1; + } + if (mid > max) + { + // Linear up ends too high + mid = max - (unicodes[max] - unicode); // Linear down from [max].unicode + if (mid > max) + { + // Unicode > unicodes[max] => not found + return -1; + } + if (mid < min) + { + // Linear down ends too low, take the middle element + mid = (min + max) / 2; + } + } + while (min <= max) + { + if (unicode == unicodes[mid]) + { + // Found at [mid] + return mid; + } + if (unicode < unicodes[mid]) + { + // Unicode is in lower half + max = mid - 1; + if (max < min) + { + // Range is empty => not found + break; + } + // We adjusted max, try linear down from [max].unicode + mid = max - (unicodes[max] - unicode); + if (mid > max) + { + // Unicode > [max].unicode => not found + break; + } + if (mid < min) + { + // Linear down ends too low, take the middle element + mid = (min + max) / 2; + } + } + else + { + // Unicode is in upper half + min = mid + 1; + if (min > max) + { + // Range is empty => not found + break; + } + // We adjusted min, try linear up from [min].unicode + mid = min + (unicode - unicodes[min]); + if (mid < min) + { + // Unicode < [min].unicode => not found + break; + } + if (mid > max) + { + // Linear up ends too high, take the middle element + mid = (min + max) / 2; + } + } + } + return -1; +} + +CompressedUnmappedDataFont::CompressedUnmappedDataFont(const GlyphNode* glyphs, const uint16_t* unicodes, uint16_t numGlyphs, uint16_t height, uint16_t baseline, uint8_t pixAboveTop, uint8_t pixBelowBottom, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData, const FontContextualFormsTable* formsTable) + : UnmappedDataFont(glyphs, unicodes, numGlyphs, height, baseline, pixAboveTop, pixBelowBottom, bitsPerPixel, byteAlignRow, maxLeft, maxRight, glyphDataList, kerningList, fallbackChar, ellipsisChar, gsubData, formsTable) +{ +} + +const GlyphNode* CompressedUnmappedDataFont::getGlyph(Unicode::UnicodeChar unicode) const +{ + const int index = lookupUnicode(unicode); + if (index != -1) + { + const GlyphNode* glyphNode = glyphList + index; + + // Is the GlyphNode already cached + const GlyphNode* cachedNode = CompressedUnmappedFontCache::hasCachedGlyphNode(glyphNode); + if (cachedNode) + { + return cachedNode; + } + + // Read glyphNode from unmapped flash + touchgfx::FlashDataReader* const flashReader = ApplicationFontProvider::getFlashReader(); + if (flashReader) + { + GlyphNode* newGlyphNode = CompressedUnmappedFontCache::cacheGlyphNode(glyphNode); + flashReader->copyData(glyphList + index, (uint8_t*)newGlyphNode, sizeof(GlyphNode)); + return newGlyphNode; + } + } + + return 0; +} + +const GlyphNode* CompressedUnmappedDataFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const +{ + const int index = lookupUnicode(unicode); + if (index != -1) + { + const GlyphNode* glyphNode = glyphList + index; + const uint8_t* pixels = 0; + const GlyphNode* cachedNode = CompressedUnmappedFontCache::hasCachedGlyphData(glyphNode, pixels); + if (pixels) + { + pixelData = pixels; + bitsPerPixel = 4; + return cachedNode; + } + + // Cache glyphNode if not found already + if (cachedNode == 0) + { + cachedNode = getGlyph(unicode); + } + if (cachedNode->width() == 0) + { + bitsPerPixel = 4; + pixelData = 0; + return cachedNode; + } + + // Read data from unmapped flash + touchgfx::FlashDataReader* const flashReader = ApplicationFontProvider::getFlashReader(); + if (flashReader) + { + const uint8_t* const* table = (const uint8_t* const*)glyphDataList; + const uint32_t dataOffset = cachedNode->dataOffset & 0x3FFFFFFF; + const uint8_t* compressedData = &(table[unicode / 2048][dataOffset]); + const uint8_t* cachedData = CompressedUnmappedFontCache::cacheGlyphData(glyphNode, compressedData, flashReader); + if (cachedData) + { + bitsPerPixel = 4; + pixelData = cachedData; + return cachedNode; + } + } + } + return 0; +} + +const uint8_t* CompressedUnmappedDataFont::getPixelData(const GlyphNode* glyph) const +{ + return 0; +} +} // namespace touchgfx diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/VectorFontRendererBuffers.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/VectorFontRendererBuffers.cpp new file mode 100644 index 00000000..aa41900b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/fonts/src/VectorFontRendererBuffers.cpp @@ -0,0 +1,11 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ +#include + +void touchgfx::VectorFontRendererImpl::getVectorFontBuffers(float*& pointArray, int& pointArraySize, uint8_t*& commandArray, int& commandArraySize) +{ + pointArray = 0; + pointArraySize = 0; + commandArray = 0; + commandArraySize = 0; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendApplicationBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendApplicationBase.hpp new file mode 100644 index 00000000..d9386280 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendApplicationBase.hpp @@ -0,0 +1,107 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef FRONTENDAPPLICATIONBASE_HPP +#define FRONTENDAPPLICATIONBASE_HPP + +#include +#include + +class FrontendHeap; + +class FrontendApplicationBase : public touchgfx::MVPApplication +{ +public: + FrontendApplicationBase(Model& m, FrontendHeap& heap); + virtual ~FrontendApplicationBase() { } + + virtual void changeToStartScreen() + { + gotoMainScreenNoTransition(); + } + + // Main + void gotoMainScreenNoTransition(); + + // MenuSettings + void gotoMenuSettingsScreenNoTransition(); + + // MenuAlerts + void gotoMenuAlertsScreenNoTransition(); + + // MenuTime + void gotoMenuTimeScreenNoTransition(); + + // MenuTimeSaved + void gotoMenuTimeSavedScreenNoTransition(); + + // TrackStartConfirmation + void gotoTrackStartConfirmationScreenNoTransition(); + + // Track + void gotoTrackScreenNoTransition(); + + // TrackLap + void gotoTrackLapScreenNoTransition(); + + // TrackAction + void gotoTrackActionScreenNoTransition(); + + // TrackDiscardConfirmation + void gotoTrackDiscardConfirmationScreenNoTransition(); + + // TrackDiscarded + void gotoTrackDiscardedScreenNoTransition(); + + // TrackSaved + void gotoTrackSavedScreenNoTransition(); + + // TrackSummary + void gotoTrackSummaryScreenNoTransition(); + +protected: + touchgfx::Callback transitionCallback; + FrontendHeap& frontendHeap; + Model& model; + + // Main + void gotoMainScreenNoTransitionImpl(); + + // MenuSettings + void gotoMenuSettingsScreenNoTransitionImpl(); + + // MenuAlerts + void gotoMenuAlertsScreenNoTransitionImpl(); + + // MenuTime + void gotoMenuTimeScreenNoTransitionImpl(); + + // MenuTimeSaved + void gotoMenuTimeSavedScreenNoTransitionImpl(); + + // TrackStartConfirmation + void gotoTrackStartConfirmationScreenNoTransitionImpl(); + + // Track + void gotoTrackScreenNoTransitionImpl(); + + // TrackLap + void gotoTrackLapScreenNoTransitionImpl(); + + // TrackAction + void gotoTrackActionScreenNoTransitionImpl(); + + // TrackDiscardConfirmation + void gotoTrackDiscardConfirmationScreenNoTransitionImpl(); + + // TrackDiscarded + void gotoTrackDiscardedScreenNoTransitionImpl(); + + // TrackSaved + void gotoTrackSavedScreenNoTransitionImpl(); + + // TrackSummary + void gotoTrackSummaryScreenNoTransitionImpl(); +}; + +#endif // FRONTENDAPPLICATIONBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendHeapBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendHeapBase.hpp new file mode 100644 index 00000000..28f44ca8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/FrontendHeapBase.hpp @@ -0,0 +1,135 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef FRONTENDHEAPBASE_HPP +#define FRONTENDHEAPBASE_HPP + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + * This class provides the memory that shall be used for memory allocations + * in the frontend. A single instance of the FrontendHeap is allocated once (in heap + * memory), and all other frontend objects such as views, presenters and data model are + * allocated within the scope of this FrontendHeap. As such, the RAM usage of the entire + * user interface is sizeof(FrontendHeap). + * + * @note The FrontendHeap reserves memory for the most memory-consuming presenter and + * view only. The largest of these classes are determined at compile-time using template + * magic. As such, it is important to add all presenters, views and transitions to the + * type lists in this class. + * + */ +class FrontendHeapBase : public touchgfx::MVPHeap +{ +public: + /** + * A list of all view types. Must end with meta::Nil. + * @note All view types used in the application MUST be added to this list! + */ + typedef touchgfx::meta::TypeList< MainView, + touchgfx::meta::TypeList< MenuSettingsView, + touchgfx::meta::TypeList< MenuAlertsView, + touchgfx::meta::TypeList< MenuTimeView, + touchgfx::meta::TypeList< MenuTimeSavedView, + touchgfx::meta::TypeList< TrackStartConfirmationView, + touchgfx::meta::TypeList< TrackView, + touchgfx::meta::TypeList< TrackLapView, + touchgfx::meta::TypeList< TrackActionView, + touchgfx::meta::TypeList< TrackDiscardConfirmationView, + touchgfx::meta::TypeList< TrackDiscardedView, + touchgfx::meta::TypeList< TrackSavedView, + touchgfx::meta::TypeList< TrackSummaryView, + touchgfx::meta::Nil > > > > > > > > > > > > + > GeneratedViewTypes; + + /** + * Determine (compile time) the View type of largest size. + */ + typedef touchgfx::meta::select_type_maxsize< GeneratedViewTypes >::type MaxGeneratedViewType; + + /** + * A list of all presenter types. Must end with meta::Nil. + * @note All presenter types used in the application MUST be added to this list! + */ + typedef touchgfx::meta::TypeList< MainPresenter, + touchgfx::meta::TypeList< MenuSettingsPresenter, + touchgfx::meta::TypeList< MenuAlertsPresenter, + touchgfx::meta::TypeList< MenuTimePresenter, + touchgfx::meta::TypeList< MenuTimeSavedPresenter, + touchgfx::meta::TypeList< TrackStartConfirmationPresenter, + touchgfx::meta::TypeList< TrackPresenter, + touchgfx::meta::TypeList< TrackLapPresenter, + touchgfx::meta::TypeList< TrackActionPresenter, + touchgfx::meta::TypeList< TrackDiscardConfirmationPresenter, + touchgfx::meta::TypeList< TrackDiscardedPresenter, + touchgfx::meta::TypeList< TrackSavedPresenter, + touchgfx::meta::TypeList< TrackSummaryPresenter, + touchgfx::meta::Nil > > > > > > > > > > > > + > GeneratedPresenterTypes; + + /** + * Determine (compile time) the Presenter type of largest size. + */ + typedef touchgfx::meta::select_type_maxsize< GeneratedPresenterTypes >::type MaxGeneratedPresenterType; + + /** + * A list of all transition types. Must end with meta::Nil. + * @note All transition types used in the application MUST be added to this list! + */ + typedef touchgfx::meta::TypeList< touchgfx::NoTransition, + touchgfx::meta::Nil + > GeneratedTransitionTypes; + + /** + * Determine (compile time) the Transition type of largest size. + */ + typedef touchgfx::meta::select_type_maxsize< GeneratedTransitionTypes >::type MaxGeneratedTransitionType; + + virtual void gotoStartScreen(FrontendApplication& app) + { + app.gotoMainScreenNoTransition(); + } +protected: + FrontendHeapBase(touchgfx::AbstractPartition& presenters, touchgfx::AbstractPartition& views, touchgfx::AbstractPartition& transitions, FrontendApplication& app) + : MVPHeap(presenters, views, transitions, app) + { + + } + +}; + +#endif // FRONTENDHEAPBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/SimConstants.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/SimConstants.hpp new file mode 100644 index 00000000..712aaf1c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/common/SimConstants.hpp @@ -0,0 +1,11 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SIMCONSTANTS_HPP +#define SIMCONSTANTS_HPP + +static unsigned short SIM_WIDTH = 240; +static unsigned short SIM_HEIGHT = 240; +#define SIM_TITLE "WorkoutGUI" + +#endif // SIMCONSTANTS_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/BatteryBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/BatteryBase.hpp new file mode 100644 index 00000000..94fdca1c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/BatteryBase.hpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef BATTERYBASE_HPP +#define BATTERYBASE_HPP + +#include +#include +#include +#include +#include + +class BatteryBase : public touchgfx::Container +{ +public: + BatteryBase(); + virtual ~BatteryBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box s1box; + touchgfx::Line s1line1; + touchgfx::PainterABGR2222 s1line1Painter; + touchgfx::Line s1line2; + touchgfx::PainterABGR2222 s1line2Painter; + touchgfx::Box s2box; + touchgfx::Line s2line1; + touchgfx::PainterABGR2222 s2line1Painter; + touchgfx::Line s2line2; + touchgfx::PainterABGR2222 s2line2Painter; + touchgfx::Box s3box; + touchgfx::Line s3line1; + touchgfx::PainterABGR2222 s3line1Painter; + touchgfx::Line s3line2; + touchgfx::PainterABGR2222 s3line2Painter; + touchgfx::Box s4box; + touchgfx::Line s4line1; + touchgfx::PainterABGR2222 s4line1Painter; + touchgfx::Line s4line2; + touchgfx::PainterABGR2222 s4line2Painter; + touchgfx::Line s4line3; + touchgfx::PainterABGR2222 s4line3Painter; + +private: + +}; + +#endif // BATTERYBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ButtonsBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ButtonsBase.hpp new file mode 100644 index 00000000..a03f1f07 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ButtonsBase.hpp @@ -0,0 +1,40 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef BUTTONSBASE_HPP +#define BUTTONSBASE_HPP + +#include +#include +#include +#include + +class ButtonsBase : public touchgfx::Container +{ +public: + ButtonsBase(); + virtual ~ButtonsBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Circle bL1; + touchgfx::PainterABGR2222 bL1Painter; + touchgfx::Circle bL2; + touchgfx::PainterABGR2222 bL2Painter; + touchgfx::Circle bR2; + touchgfx::PainterABGR2222 bR2Painter; + touchgfx::Circle bR1; + touchgfx::PainterABGR2222 bR1Painter; + +private: + +}; + +#endif // BUTTONSBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/HeartRateZoneBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/HeartRateZoneBase.hpp new file mode 100644 index 00000000..7d6fb3c0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/HeartRateZoneBase.hpp @@ -0,0 +1,37 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef HEARTRATEZONEBASE_HPP +#define HEARTRATEZONEBASE_HPP + +#include +#include +#include + +class HeartRateZoneBase : public touchgfx::Container +{ +public: + HeartRateZoneBase(); + virtual ~HeartRateZoneBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Image group; + touchgfx::Image hr1; + touchgfx::Image hr2; + touchgfx::Image hr3; + touchgfx::Image hr4; + touchgfx::Image hr5; + +private: + +}; + +#endif // HEARTRATEZONEBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/InfoCarouselBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/InfoCarouselBase.hpp new file mode 100644 index 00000000..1a1818f8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/InfoCarouselBase.hpp @@ -0,0 +1,45 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef INFOCAROUSELBASE_HPP +#define INFOCAROUSELBASE_HPP + +#include +#include +#include +#include +#include + +class InfoCarouselBase : public touchgfx::Container +{ +public: + InfoCarouselBase(); + virtual ~InfoCarouselBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Line line; + touchgfx::PainterABGR2222 linePainter; + touchgfx::TextAreaWithOneWildcard dataValue; + touchgfx::TextAreaWithOneWildcard titleText; + + /* + * Wildcard Buffers + */ + static const uint16_t DATAVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar dataValueBuffer[DATAVALUE_SIZE]; + static const uint16_t TITLETEXT_SIZE = 15; + touchgfx::Unicode::UnicodeChar titleTextBuffer[TITLETEXT_SIZE]; + +private: + +}; + +#endif // INFOCAROUSELBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/LapListItemBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/LapListItemBase.hpp new file mode 100644 index 00000000..7c066c31 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/LapListItemBase.hpp @@ -0,0 +1,47 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef LAPLISTITEMBASE_HPP +#define LAPLISTITEMBASE_HPP + +#include +#include +#include + +class LapListItemBase : public touchgfx::Container +{ +public: + LapListItemBase(); + virtual ~LapListItemBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard maxHRText; + touchgfx::TextAreaWithOneWildcard avgHRText; + touchgfx::TextAreaWithOneWildcard timeText; + touchgfx::TextAreaWithOneWildcard indexText; + + /* + * Wildcard Buffers + */ + static const uint16_t MAXHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar maxHRTextBuffer[MAXHRTEXT_SIZE]; + static const uint16_t AVGHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar avgHRTextBuffer[AVGHRTEXT_SIZE]; + static const uint16_t TIMETEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar timeTextBuffer[TIMETEXT_SIZE]; + static const uint16_t INDEXTEXT_SIZE = 5; + touchgfx::Unicode::UnicodeChar indexTextBuffer[INDEXTEXT_SIZE]; + +private: + +}; + +#endif // LAPLISTITEMBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBackgroundBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBackgroundBase.hpp new file mode 100644 index 00000000..a0e7ba70 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBackgroundBase.hpp @@ -0,0 +1,34 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINMENUBACKGROUNDBASE_HPP +#define MAINMENUBACKGROUNDBASE_HPP + +#include +#include +#include +#include + +class MainMenuBackgroundBase : public touchgfx::Container +{ +public: + MainMenuBackgroundBase(); + virtual ~MainMenuBackgroundBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Circle circle; + touchgfx::PainterABGR2222 circlePainter; + +private: + +}; + +#endif // MAINMENUBACKGROUNDBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBase.hpp new file mode 100644 index 00000000..461d74a9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuBase.hpp @@ -0,0 +1,58 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINMENUBASE_HPP +#define MAINMENUBASE_HPP + +#include +#include +#include +#include +#include +#include + +class MainMenuBase : public touchgfx::Container +{ +public: + MainMenuBase(); + virtual ~MainMenuBase(); + virtual void initialize(); + + virtual void wheelUpdateItem(MainMenuItem& item, int16_t itemIndex) + { + // Override and implement this function in MainMenu + } + + virtual void wheelUpdateCenterItem(MainMenuCenterItem& item, int16_t itemIndex) + { + // Override and implement this function in MainMenu + } + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::ScrollWheelWithSelectionStyle wheel; + touchgfx::DrawableListItems wheelListItems; + touchgfx::DrawableListItems wheelSelectedListItems; + ScrollIndicator scrollIndicator; + +private: + + /* + * Callback Declarations + */ + touchgfx::Callback updateItemCallback; + + /* + * Callback Handler Declarations + */ + void updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex); + +}; + +#endif // MAINMENUBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuCenterItemBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuCenterItemBase.hpp new file mode 100644 index 00000000..b3b6648e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuCenterItemBase.hpp @@ -0,0 +1,45 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINMENUCENTERITEMBASE_HPP +#define MAINMENUCENTERITEMBASE_HPP + +#include +#include +#include +#include +#include + +class MainMenuCenterItemBase : public touchgfx::Container +{ +public: + MainMenuCenterItemBase(); + virtual ~MainMenuCenterItemBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard tipText; + touchgfx::TextAreaWithOneWildcard labelText; + Toggle toggle; + touchgfx::Image icon; + + /* + * Wildcard Buffers + */ + static const uint16_t TIPTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar tipTextBuffer[TIPTEXT_SIZE]; + static const uint16_t LABELTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar labelTextBuffer[LABELTEXT_SIZE]; + +private: + +}; + +#endif // MAINMENUCENTERITEMBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuItemBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuItemBase.hpp new file mode 100644 index 00000000..71ed036f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuItemBase.hpp @@ -0,0 +1,43 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINMENUITEMBASE_HPP +#define MAINMENUITEMBASE_HPP + +#include +#include +#include +#include + +class MainMenuItemBase : public touchgfx::Container +{ +public: + MainMenuItemBase(); + virtual ~MainMenuItemBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard tipText; + touchgfx::TextAreaWithOneWildcard labelText; + touchgfx::Image icon; + + /* + * Wildcard Buffers + */ + static const uint16_t TIPTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar tipTextBuffer[TIPTEXT_SIZE]; + static const uint16_t LABELTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar labelTextBuffer[LABELTEXT_SIZE]; + +private: + +}; + +#endif // MAINMENUITEMBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuLayoutBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuLayoutBase.hpp new file mode 100644 index 00000000..54bc0235 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/MainMenuLayoutBase.hpp @@ -0,0 +1,46 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINMENULAYOUTBASE_HPP +#define MAINMENULAYOUTBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class MainMenuLayoutBase : public touchgfx::Container +{ +public: + MainMenuLayoutBase(); + virtual ~MainMenuLayoutBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + MainMenuBackground background; + Buttons buttons; + MainMenu menu; + touchgfx::TextAreaWithOneWildcard infoText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t INFOTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar infoTextBuffer[INFOTEXT_SIZE]; + +private: + +}; + +#endif // MAINMENULAYOUTBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/PauseIndicatorBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/PauseIndicatorBase.hpp new file mode 100644 index 00000000..9970393a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/PauseIndicatorBase.hpp @@ -0,0 +1,44 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef PAUSEINDICATORBASE_HPP +#define PAUSEINDICATORBASE_HPP + +#include +#include +#include +#include +#include +#include + +class PauseIndicatorBase : public touchgfx::Container +{ +public: + PauseIndicatorBase(); + virtual ~PauseIndicatorBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Circle background; + touchgfx::PainterABGR2222 backgroundPainter; + touchgfx::TextAreaWithOneWildcard timerValue; + touchgfx::Image pauseIcon; + + /* + * Wildcard Buffers + */ + static const uint16_t TIMERVALUE_SIZE = 32; + touchgfx::Unicode::UnicodeChar timerValueBuffer[TIMERVALUE_SIZE]; + +private: + +}; + +#endif // PAUSEINDICATORBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ScrollIndicatorBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ScrollIndicatorBase.hpp new file mode 100644 index 00000000..fe3b09f5 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ScrollIndicatorBase.hpp @@ -0,0 +1,38 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SCROLLINDICATORBASE_HPP +#define SCROLLINDICATORBASE_HPP + +#include +#include +#include +#include + +class ScrollIndicatorBase : public touchgfx::Container +{ +public: + ScrollIndicatorBase(); + virtual ~ScrollIndicatorBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Circle rail; + touchgfx::PainterABGR2222 railPainter; + touchgfx::Circle handle; + touchgfx::PainterABGR2222 handlePainter; + touchgfx::Circle handleOvf; + touchgfx::PainterABGR2222 handleOvfPainter; + +private: + +}; + +#endif // SCROLLINDICATORBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp new file mode 100644 index 00000000..52749a98 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SUMMARYFACEHEARTRATEBASE_HPP +#define SUMMARYFACEHEARTRATEBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class SummaryFaceHeartRateBase : public touchgfx::Container +{ +public: + SummaryFaceHeartRateBase(); + virtual ~SummaryFaceHeartRateBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard maxHrText; + touchgfx::TextAreaWithOneWildcard maxHrValue; + touchgfx::Line line; + touchgfx::PainterABGR2222 linePainter; + touchgfx::TextAreaWithOneWildcard avgHrText; + touchgfx::TextAreaWithOneWildcard avgHrValue; + touchgfx::Image heartIcon; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t MAXHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar maxHrTextBuffer[MAXHRTEXT_SIZE]; + static const uint16_t MAXHRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar maxHrValueBuffer[MAXHRVALUE_SIZE]; + static const uint16_t AVGHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar avgHrTextBuffer[AVGHRTEXT_SIZE]; + static const uint16_t AVGHRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar avgHrValueBuffer[AVGHRVALUE_SIZE]; + +private: + +}; + +#endif // SUMMARYFACEHEARTRATEBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceLapsBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceLapsBase.hpp new file mode 100644 index 00000000..0b1dae03 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceLapsBase.hpp @@ -0,0 +1,72 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SUMMARYFACELAPSBASE_HPP +#define SUMMARYFACELAPSBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class SummaryFaceLapsBase : public touchgfx::Container +{ +public: + SummaryFaceLapsBase(); + virtual ~SummaryFaceLapsBase(); + virtual void initialize(); + + virtual void scrollListUpdateItem(LapListItem& item, int16_t itemIndex) + { + // Override and implement this function in SummaryFaceLaps + } + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::ScrollList scrollList; + touchgfx::DrawableListItems scrollListListItems; + touchgfx::TextArea maxHRText; + touchgfx::TextArea avgHRText; + touchgfx::TextArea timeText; + touchgfx::Line line; + touchgfx::PainterABGR2222 linePainter; + touchgfx::TextAreaWithOneWildcard timerText; + touchgfx::Image clockIcon; + touchgfx::TextAreaWithOneWildcard lapsText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t TIMERTEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar timerTextBuffer[TIMERTEXT_SIZE]; + static const uint16_t LAPSTEXT_SIZE = 16; + touchgfx::Unicode::UnicodeChar lapsTextBuffer[LAPSTEXT_SIZE]; + +private: + + /* + * Callback Declarations + */ + touchgfx::Callback updateItemCallback; + + /* + * Callback Handler Declarations + */ + void updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex); + +}; + +#endif // SUMMARYFACELAPSBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp new file mode 100644 index 00000000..394507cc --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp @@ -0,0 +1,60 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SUMMARYFACEOVERVIEWBASE_HPP +#define SUMMARYFACEOVERVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class SummaryFaceOverviewBase : public touchgfx::Container +{ +public: + SummaryFaceOverviewBase(); + virtual ~SummaryFaceOverviewBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard caloriesValue; + touchgfx::TextAreaWithOneWildcard caloriesText; + touchgfx::Line line2; + touchgfx::PainterABGR2222 line2Painter; + touchgfx::TextAreaWithOneWildcard avgHRValue; + touchgfx::TextAreaWithOneWildcard avgHRText; + touchgfx::Line line1; + touchgfx::PainterABGR2222 line1Painter; + touchgfx::TextAreaWithOneWildcard timerValue; + touchgfx::Image clockIcon; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t CALORIESVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar caloriesValueBuffer[CALORIESVALUE_SIZE]; + static const uint16_t CALORIESTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar caloriesTextBuffer[CALORIESTEXT_SIZE]; + static const uint16_t AVGHRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar avgHRValueBuffer[AVGHRVALUE_SIZE]; + static const uint16_t AVGHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar avgHRTextBuffer[AVGHRTEXT_SIZE]; + static const uint16_t TIMERVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar timerValueBuffer[TIMERVALUE_SIZE]; + +private: + +}; + +#endif // SUMMARYFACEOVERVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TimerRingBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TimerRingBase.hpp new file mode 100644 index 00000000..c603a5ee --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TimerRingBase.hpp @@ -0,0 +1,36 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TIMERRINGBASE_HPP +#define TIMERRINGBASE_HPP + +#include +#include +#include +#include + +class TimerRingBase : public touchgfx::Container +{ +public: + TimerRingBase(); + virtual ~TimerRingBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Circle track; + touchgfx::PainterABGR2222 trackPainter; + touchgfx::Circle progress; + touchgfx::PainterABGR2222 progressPainter; + +private: + +}; + +#endif // TIMERRINGBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TitleBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TitleBase.hpp new file mode 100644 index 00000000..7c118099 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TitleBase.hpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TITLEBASE_HPP +#define TITLEBASE_HPP + +#include +#include +#include +#include +#include + +class TitleBase : public touchgfx::Container +{ +public: + TitleBase(); + virtual ~TitleBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Line line; + touchgfx::PainterABGR2222 linePainter; + touchgfx::TextAreaWithOneWildcard titleText; + + /* + * Wildcard Buffers + */ + static const uint16_t TITLETEXT_SIZE = 16; + touchgfx::Unicode::UnicodeChar titleTextBuffer[TITLETEXT_SIZE]; + +private: + +}; + +#endif // TITLEBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ToggleBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ToggleBase.hpp new file mode 100644 index 00000000..a2363f8d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ToggleBase.hpp @@ -0,0 +1,37 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TOGGLEBASE_HPP +#define TOGGLEBASE_HPP + +#include +#include +#include +#include +#include + +class ToggleBase : public touchgfx::Container +{ +public: + ToggleBase(); + virtual ~ToggleBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Line rail; + touchgfx::PainterABGR2222 railPainter; + touchgfx::Circle handle; + touchgfx::PainterABGR2222 handlePainter; + +private: + +}; + +#endif // TOGGLEBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceLapBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceLapBase.hpp new file mode 100644 index 00000000..514c3721 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceLapBase.hpp @@ -0,0 +1,54 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKFACELAPBASE_HPP +#define TRACKFACELAPBASE_HPP + +#include +#include +#include +#include +#include +#include + +class TrackFaceLapBase : public touchgfx::Container +{ +public: + TrackFaceLapBase(); + virtual ~TrackFaceLapBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextArea timerText; + touchgfx::TextAreaWithOneWildcard timerValue; + touchgfx::Line line2; + touchgfx::PainterABGR2222 line2Painter; + touchgfx::TextAreaWithOneWildcard lapValue; + touchgfx::TextArea lapText; + touchgfx::Line line1; + touchgfx::PainterABGR2222 line1Painter; + touchgfx::TextAreaWithOneWildcard hrValue; + touchgfx::TextArea hrText; + + /* + * Wildcard Buffers + */ + static const uint16_t TIMERVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar timerValueBuffer[TIMERVALUE_SIZE]; + static const uint16_t LAPVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar lapValueBuffer[LAPVALUE_SIZE]; + static const uint16_t HRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar hrValueBuffer[HRVALUE_SIZE]; + +private: + +}; + +#endif // TRACKFACELAPBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceStatusBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceStatusBase.hpp new file mode 100644 index 00000000..3c6e139b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceStatusBase.hpp @@ -0,0 +1,47 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKFACESTATUSBASE_HPP +#define TRACKFACESTATUSBASE_HPP + +#include +#include +#include +#include +#include +#include + +class TrackFaceStatusBase : public touchgfx::Container +{ +public: + TrackFaceStatusBase(); + virtual ~TrackFaceStatusBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard percentValue; + Battery battery; + touchgfx::Line line; + touchgfx::PainterABGR2222 linePainter; + touchgfx::TextAreaWithOneWildcard dayTimeValue; + + /* + * Wildcard Buffers + */ + static const uint16_t PERCENTVALUE_SIZE = 5; + touchgfx::Unicode::UnicodeChar percentValueBuffer[PERCENTVALUE_SIZE]; + static const uint16_t DAYTIMEVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar dayTimeValueBuffer[DAYTIMEVALUE_SIZE]; + +private: + +}; + +#endif // TRACKFACESTATUSBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceTotalBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceTotalBase.hpp new file mode 100644 index 00000000..e921bd80 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/TrackFaceTotalBase.hpp @@ -0,0 +1,58 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKFACETOTALBASE_HPP +#define TRACKFACETOTALBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class TrackFaceTotalBase : public touchgfx::Container +{ +public: + TrackFaceTotalBase(); + virtual ~TrackFaceTotalBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextArea timerText; + touchgfx::TextAreaWithOneWildcard timerValue; + touchgfx::Line line3; + touchgfx::PainterABGR2222 line3Painter; + touchgfx::TextAreaWithOneWildcard caloriesValue; + touchgfx::TextArea caloriesText; + touchgfx::Line line1; + touchgfx::PainterABGR2222 line1Painter; + touchgfx::TextAreaWithOneWildcard hrText; + touchgfx::TextAreaWithOneWildcard hrValue; + HeartRateZone hrZone; + + /* + * Wildcard Buffers + */ + static const uint16_t TIMERVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar timerValueBuffer[TIMERVALUE_SIZE]; + static const uint16_t CALORIESVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar caloriesValueBuffer[CALORIESVALUE_SIZE]; + static const uint16_t HRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar hrTextBuffer[HRTEXT_SIZE]; + static const uint16_t HRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar hrValueBuffer[HRVALUE_SIZE]; + +private: + +}; + +#endif // TRACKFACETOTALBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/main_screen/MainViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/main_screen/MainViewBase.hpp new file mode 100644 index 00000000..2c2339fc --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/main_screen/MainViewBase.hpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MAINVIEWBASE_HPP +#define MAINVIEWBASE_HPP + +#include +#include +#include +#include +#include + +class MainViewBase : public touchgfx::View +{ +public: + MainViewBase(); + virtual ~MainViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + MainMenuLayout menuLayout; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // MAINVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menualerts_screen/MenuAlertsViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menualerts_screen/MenuAlertsViewBase.hpp new file mode 100644 index 00000000..aa9186d6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menualerts_screen/MenuAlertsViewBase.hpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MENUALERTSVIEWBASE_HPP +#define MENUALERTSVIEWBASE_HPP + +#include +#include +#include +#include +#include + +class MenuAlertsViewBase : public touchgfx::View +{ +public: + MenuAlertsViewBase(); + virtual ~MenuAlertsViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + MainMenuLayout menuLayout; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // MENUALERTSVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menusettings_screen/MenuSettingsViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menusettings_screen/MenuSettingsViewBase.hpp new file mode 100644 index 00000000..3453b4ce --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menusettings_screen/MenuSettingsViewBase.hpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MENUSETTINGSVIEWBASE_HPP +#define MENUSETTINGSVIEWBASE_HPP + +#include +#include +#include +#include +#include + +class MenuSettingsViewBase : public touchgfx::View +{ +public: + MenuSettingsViewBase(); + virtual ~MenuSettingsViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + MainMenuLayout menuLayout; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // MENUSETTINGSVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutime_screen/MenuTimeViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutime_screen/MenuTimeViewBase.hpp new file mode 100644 index 00000000..e45fc506 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutime_screen/MenuTimeViewBase.hpp @@ -0,0 +1,44 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MENUTIMEVIEWBASE_HPP +#define MENUTIMEVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include + +class MenuTimeViewBase : public touchgfx::View +{ +public: + MenuTimeViewBase(); + virtual ~MenuTimeViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + MainMenuLayout menuLayout; + touchgfx::Image tick; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // MENUTIMEVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutimesaved_screen/MenuTimeSavedViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutimesaved_screen/MenuTimeSavedViewBase.hpp new file mode 100644 index 00000000..9e006c43 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/menutimesaved_screen/MenuTimeSavedViewBase.hpp @@ -0,0 +1,53 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef MENUTIMESAVEDVIEWBASE_HPP +#define MENUTIMESAVEDVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class MenuTimeSavedViewBase : public touchgfx::View +{ +public: + MenuTimeSavedViewBase(); + virtual ~MenuTimeSavedViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + touchgfx::TextAreaWithOneWildcard savedText; + touchgfx::Image icon; + touchgfx::TextAreaWithOneWildcard messageText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t MESSAGETEXT_SIZE = 32; + touchgfx::Unicode::UnicodeChar messageTextBuffer[MESSAGETEXT_SIZE]; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // MENUTIMESAVEDVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/track_screen/TrackViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/track_screen/TrackViewBase.hpp new file mode 100644 index 00000000..606be3fb --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/track_screen/TrackViewBase.hpp @@ -0,0 +1,50 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKVIEWBASE_HPP +#define TRACKVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class TrackViewBase : public touchgfx::View +{ +public: + TrackViewBase(); + virtual ~TrackViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + ScrollIndicator scrollIndicator; + Buttons buttons; + TrackFaceStatus trackFaceStatus; + TrackFaceTotal trackFaceTotal; + TrackFaceLap trackFaceLap; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackaction_screen/TrackActionViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackaction_screen/TrackActionViewBase.hpp new file mode 100644 index 00000000..aec10596 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackaction_screen/TrackActionViewBase.hpp @@ -0,0 +1,46 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKACTIONVIEWBASE_HPP +#define TRACKACTIONVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class TrackActionViewBase : public touchgfx::View +{ +public: + TrackActionViewBase(); + virtual ~TrackActionViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + MainMenuLayout menuLayout; + PauseIndicator pauseIndicator; + InfoCarousel infoCarousel; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKACTIONVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.hpp new file mode 100644 index 00000000..366b9a44 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.hpp @@ -0,0 +1,54 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKDISCARDCONFIRMATIONVIEWBASE_HPP +#define TRACKDISCARDCONFIRMATIONVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +class TrackDiscardConfirmationViewBase : public touchgfx::View +{ +public: + TrackDiscardConfirmationViewBase(); + virtual ~TrackDiscardConfirmationViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + Buttons buttons; + touchgfx::TextAreaWithOneWildcard questionText; + touchgfx::Image tick; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t QUESTIONTEXT_SIZE = 40; + touchgfx::Unicode::UnicodeChar questionTextBuffer[QUESTIONTEXT_SIZE]; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKDISCARDCONFIRMATIONVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscarded_screen/TrackDiscardedViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscarded_screen/TrackDiscardedViewBase.hpp new file mode 100644 index 00000000..80b3f3ba --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackdiscarded_screen/TrackDiscardedViewBase.hpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKDISCARDEDVIEWBASE_HPP +#define TRACKDISCARDEDVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class TrackDiscardedViewBase : public touchgfx::View +{ +public: + TrackDiscardedViewBase(); + virtual ~TrackDiscardedViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + touchgfx::TextAreaWithOneWildcard subtitleText; + touchgfx::Image icon; + touchgfx::TextAreaWithOneWildcard headingText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t SUBTITLETEXT_SIZE = 30; + touchgfx::Unicode::UnicodeChar subtitleTextBuffer[SUBTITLETEXT_SIZE]; + static const uint16_t HEADINGTEXT_SIZE = 15; + touchgfx::Unicode::UnicodeChar headingTextBuffer[HEADINGTEXT_SIZE]; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKDISCARDEDVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracklap_screen/TrackLapViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracklap_screen/TrackLapViewBase.hpp new file mode 100644 index 00000000..74d2e76f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracklap_screen/TrackLapViewBase.hpp @@ -0,0 +1,68 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKLAPVIEWBASE_HPP +#define TRACKLAPVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class TrackLapViewBase : public touchgfx::View +{ +public: + TrackLapViewBase(); + virtual ~TrackLapViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + Buttons buttons; + touchgfx::Line line2; + touchgfx::PainterABGR2222 line2Painter; + touchgfx::TextAreaWithOneWildcard caloriesValue; + touchgfx::TextArea caloriesText; + touchgfx::TextAreaWithOneWildcard timeValue; + touchgfx::TextAreaWithOneWildcard timeText; + touchgfx::Line line1; + touchgfx::PainterABGR2222 line1Painter; + touchgfx::TextAreaWithOneWildcard hrValue; + touchgfx::TextArea hrText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t CALORIESVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar caloriesValueBuffer[CALORIESVALUE_SIZE]; + static const uint16_t TIMEVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar timeValueBuffer[TIMEVALUE_SIZE]; + static const uint16_t HRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar hrValueBuffer[HRVALUE_SIZE]; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKLAPVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksaved_screen/TrackSavedViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksaved_screen/TrackSavedViewBase.hpp new file mode 100644 index 00000000..e7d74092 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksaved_screen/TrackSavedViewBase.hpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKSAVEDVIEWBASE_HPP +#define TRACKSAVEDVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class TrackSavedViewBase : public touchgfx::View +{ +public: + TrackSavedViewBase(); + virtual ~TrackSavedViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + touchgfx::TextAreaWithOneWildcard subtitleText; + touchgfx::Image icon; + touchgfx::TextAreaWithOneWildcard headingText; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t SUBTITLETEXT_SIZE = 30; + touchgfx::Unicode::UnicodeChar subtitleTextBuffer[SUBTITLETEXT_SIZE]; + static const uint16_t HEADINGTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar headingTextBuffer[HEADINGTEXT_SIZE]; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKSAVEDVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackstartconfirmation_screen/TrackStartConfirmationViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackstartconfirmation_screen/TrackStartConfirmationViewBase.hpp new file mode 100644 index 00000000..c2389082 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/trackstartconfirmation_screen/TrackStartConfirmationViewBase.hpp @@ -0,0 +1,48 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKSTARTCONFIRMATIONVIEWBASE_HPP +#define TRACKSTARTCONFIRMATIONVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +class TrackStartConfirmationViewBase : public touchgfx::View +{ +public: + TrackStartConfirmationViewBase(); + virtual ~TrackStartConfirmationViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + Buttons buttons; + touchgfx::TextAreaWithOneWildcard questionText; + touchgfx::Image tick; + Title title; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKSTARTCONFIRMATIONVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp new file mode 100644 index 00000000..806f2fee --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp @@ -0,0 +1,50 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TRACKSUMMARYVIEWBASE_HPP +#define TRACKSUMMARYVIEWBASE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class TrackSummaryViewBase : public touchgfx::View +{ +public: + TrackSummaryViewBase(); + virtual ~TrackSummaryViewBase(); + virtual void setupScreen(); + virtual void transitionBegins(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Box __background; + Buttons buttons; + ScrollIndicator scrollIndicator; + SummaryFaceLaps summaryFaceLaps; + SummaryFaceHeartRate summaryFaceHeartRate; + SummaryFaceOverview summaryFaceOverview; + +private: + + /* + * Canvas Buffer Size + */ + static const uint32_t CANVAS_BUFFER_SIZE = 3600; + uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; + +}; + +#endif // TRACKSUMMARYVIEWBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp new file mode 100644 index 00000000..a9668045 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp @@ -0,0 +1,223 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace touchgfx; + +FrontendApplicationBase::FrontendApplicationBase(Model& m, FrontendHeap& heap) + : touchgfx::MVPApplication(), + transitionCallback(), + frontendHeap(heap), + model(m) +{ + touchgfx::HAL::getInstance()->setDisplayOrientation(touchgfx::ORIENTATION_PORTRAIT); + touchgfx::Texts::setLanguage(GB); + reinterpret_cast(touchgfx::HAL::lcd()).enableTextureMapperABGR2222_NearestNeighbor(); +} + +/* + * Screen Transition Declarations + */ + +// Main + +void FrontendApplicationBase::gotoMainScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoMainScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoMainScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// MenuSettings + +void FrontendApplicationBase::gotoMenuSettingsScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoMenuSettingsScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoMenuSettingsScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// MenuAlerts + +void FrontendApplicationBase::gotoMenuAlertsScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoMenuAlertsScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoMenuAlertsScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// MenuTime + +void FrontendApplicationBase::gotoMenuTimeScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoMenuTimeScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoMenuTimeScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// MenuTimeSaved + +void FrontendApplicationBase::gotoMenuTimeSavedScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoMenuTimeSavedScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoMenuTimeSavedScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackStartConfirmation + +void FrontendApplicationBase::gotoTrackStartConfirmationScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackStartConfirmationScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackStartConfirmationScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// Track + +void FrontendApplicationBase::gotoTrackScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackLap + +void FrontendApplicationBase::gotoTrackLapScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackLapScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackLapScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackAction + +void FrontendApplicationBase::gotoTrackActionScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackActionScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackActionScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackDiscardConfirmation + +void FrontendApplicationBase::gotoTrackDiscardConfirmationScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackDiscardConfirmationScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackDiscardConfirmationScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackDiscarded + +void FrontendApplicationBase::gotoTrackDiscardedScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackDiscardedScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackDiscardedScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackSaved + +void FrontendApplicationBase::gotoTrackSavedScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackSavedScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackSavedScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} + +// TrackSummary + +void FrontendApplicationBase::gotoTrackSummaryScreenNoTransition() +{ + transitionCallback = touchgfx::Callback(this, &FrontendApplicationBase::gotoTrackSummaryScreenNoTransitionImpl); + pendingScreenTransitionCallback = &transitionCallback; +} + +void FrontendApplicationBase::gotoTrackSummaryScreenNoTransitionImpl() +{ + touchgfx::makeTransition(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/BatteryBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/BatteryBase.cpp new file mode 100644 index 00000000..b44d679f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/BatteryBase.cpp @@ -0,0 +1,117 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +BatteryBase::BatteryBase() +{ + setWidth(90); + setHeight(28); + s1box.setPosition(4, 0, 14, 28); + s1box.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + add(s1box); + + s1line1.setPosition(0, 0, 8, 28); + s1line1Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s1line1.setPainter(s1line1Painter); + s1line1.setStart(4, 4); + s1line1.setEnd(4, 24); + s1line1.setLineWidth(8); + s1line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s1line1); + + s1line2.setPosition(16, 0, 4, 28); + s1line2Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s1line2.setPainter(s1line2Painter); + s1line2.setStart(2, 2); + s1line2.setEnd(2, 26); + s1line2.setLineWidth(4); + s1line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s1line2); + + s2box.setPosition(24, 0, 16, 28); + s2box.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + add(s2box); + + s2line1.setPosition(22, 0, 4, 28); + s2line1Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s2line1.setPainter(s2line1Painter); + s2line1.setStart(2, 2); + s2line1.setEnd(2, 26); + s2line1.setLineWidth(4); + s2line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s2line1); + + s2line2.setPosition(38, 0, 4, 28); + s2line2Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s2line2.setPainter(s2line2Painter); + s2line2.setStart(2, 2); + s2line2.setEnd(2, 26); + s2line2.setLineWidth(4); + s2line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s2line2); + + s3box.setPosition(46, 0, 16, 28); + s3box.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + add(s3box); + + s3line1.setPosition(44, 0, 4, 28); + s3line1Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s3line1.setPainter(s3line1Painter); + s3line1.setStart(2, 2); + s3line1.setEnd(2, 26); + s3line1.setLineWidth(4); + s3line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s3line1); + + s3line2.setPosition(60, 0, 4, 28); + s3line2Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s3line2.setPainter(s3line2Painter); + s3line2.setStart(2, 2); + s3line2.setEnd(2, 26); + s3line2.setLineWidth(4); + s3line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s3line2); + + s4box.setPosition(68, 0, 14, 28); + s4box.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + add(s4box); + + s4line1.setPosition(66, 0, 4, 28); + s4line1Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s4line1.setPainter(s4line1Painter); + s4line1.setStart(2, 2); + s4line1.setEnd(2, 26); + s4line1.setLineWidth(4); + s4line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s4line1); + + s4line2.setPosition(78, 0, 8, 28); + s4line2Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s4line2.setPainter(s4line2Painter); + s4line2.setStart(4, 4); + s4line2.setEnd(4, 24); + s4line2.setLineWidth(8); + s4line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s4line2); + + s4line3.setPosition(82, 6, 8, 16); + s4line3Painter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + s4line3.setPainter(s4line3Painter); + s4line3.setStart(4, 4); + s4line3.setEnd(4, 12); + s4line3.setLineWidth(8); + s4line3.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(s4line3); +} + +BatteryBase::~BatteryBase() +{ + +} + +void BatteryBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ButtonsBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ButtonsBase.cpp new file mode 100644 index 00000000..ffe13d63 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ButtonsBase.cpp @@ -0,0 +1,60 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +ButtonsBase::ButtonsBase() +{ + setWidth(240); + setHeight(146); + bL1.setPosition(0, 0, 240, 146); + bL1.setCenter(120, 73); + bL1.setRadius(113); + bL1.setLineWidth(6); + bL1.setArc(291, 308); + bL1.setCapPrecision(10); + bL1Painter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + bL1.setPainter(bL1Painter); + add(bL1); + + bL2.setPosition(0, 0, 240, 146); + bL2.setCenter(120, 73); + bL2.setRadius(113); + bL2.setLineWidth(6); + bL2.setArc(232, 249); + bL2.setCapPrecision(10); + bL2Painter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + bL2.setPainter(bL2Painter); + add(bL2); + + bR2.setPosition(0, 0, 240, 146); + bR2.setCenter(120, 73); + bR2.setRadius(113); + bR2.setLineWidth(6); + bR2.setArc(111, 128); + bR2.setCapPrecision(10); + bR2Painter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + bR2.setPainter(bR2Painter); + add(bR2); + + bR1.setPosition(0, 0, 240, 146); + bR1.setCenter(120, 73); + bR1.setRadius(113); + bR1.setLineWidth(6); + bR1.setArc(52, 69); + bR1.setCapPrecision(10); + bR1Painter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + bR1.setPainter(bR1Painter); + add(bR1); +} + +ButtonsBase::~ButtonsBase() +{ + +} + +void ButtonsBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/HeartRateZoneBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/HeartRateZoneBase.cpp new file mode 100644 index 00000000..df265fe8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/HeartRateZoneBase.cpp @@ -0,0 +1,49 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +HeartRateZoneBase::HeartRateZoneBase() +{ + setWidth(210); + setHeight(71); + group.setXY(0, 0); + group.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONEGROUP_ID)); + add(group); + + hr1.setXY(0, 28); + hr1.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONE1_ID)); + hr1.setVisible(false); + add(hr1); + + hr2.setXY(33, 3); + hr2.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONE2_ID)); + hr2.setVisible(false); + add(hr2); + + hr3.setXY(80, 0); + hr3.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONE3_ID)); + hr3.setVisible(false); + add(hr3); + + hr4.setXY(131, 3); + hr4.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONE4_ID)); + hr4.setVisible(false); + add(hr4); + + hr5.setXY(173, 28); + hr5.setBitmap(touchgfx::Bitmap(BITMAP_HEARTRATEZONE5_ID)); + hr5.setVisible(false); + add(hr5); +} + +HeartRateZoneBase::~HeartRateZoneBase() +{ + +} + +void HeartRateZoneBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/InfoCarouselBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/InfoCarouselBase.cpp new file mode 100644 index 00000000..83761079 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/InfoCarouselBase.cpp @@ -0,0 +1,46 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +InfoCarouselBase::InfoCarouselBase() +{ + setWidth(160); + setHeight(87); + line.setPosition(0, 65, 160, 3); + linePainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + line.setPainter(linePainter); + line.setStart(0, 0); + line.setEnd(160, 0); + line.setLineWidth(10); + line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line); + + dataValue.setPosition(0, 29, 160, 45); + dataValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + dataValue.setLinespacing(0); + dataValueBuffer[0] = 0; + dataValue.setWildcard(dataValueBuffer); + dataValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(dataValue); + + titleText.setPosition(0, 10, 160, 27); + titleText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + titleText.setLinespacing(0); + titleTextBuffer[0] = 0; + titleText.setWildcard(titleTextBuffer); + titleText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + add(titleText); +} + +InfoCarouselBase::~InfoCarouselBase() +{ + +} + +void InfoCarouselBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/LapListItemBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/LapListItemBase.cpp new file mode 100644 index 00000000..6a91ec09 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/LapListItemBase.cpp @@ -0,0 +1,53 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +LapListItemBase::LapListItemBase() +{ + setWidth(190); + setHeight(18); + maxHRText.setPosition(127, 0, 64, 18); + maxHRText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHRText.setLinespacing(0); + Unicode::snprintf(maxHRTextBuffer, MAXHRTEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_ACJE).getText()); + maxHRText.setWildcard(maxHRTextBuffer); + maxHRText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_14_L)); + add(maxHRText); + + avgHRText.setPosition(53, 0, 79, 18); + avgHRText.setColor(touchgfx::Color::getColorFromRGB(0, 192, 192)); + avgHRText.setLinespacing(0); + Unicode::snprintf(avgHRTextBuffer, AVGHRTEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_BOEQ).getText()); + avgHRText.setWildcard(avgHRTextBuffer); + avgHRText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_14_L)); + add(avgHRText); + + timeText.setPosition(19, 0, 40, 18); + timeText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timeText.setLinespacing(0); + Unicode::snprintf(timeTextBuffer, TIMETEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_NOCF).getText()); + timeText.setWildcard(timeTextBuffer); + timeText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_14_R)); + add(timeText); + + indexText.setPosition(0, 0, 21, 18); + indexText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + indexText.setLinespacing(0); + Unicode::snprintf(indexTextBuffer, INDEXTEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_U3YM).getText()); + indexText.setWildcard(indexTextBuffer); + indexText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_14_R)); + add(indexText); +} + +LapListItemBase::~LapListItemBase() +{ + +} + +void LapListItemBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBackgroundBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBackgroundBase.cpp new file mode 100644 index 00000000..a179d57d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBackgroundBase.cpp @@ -0,0 +1,29 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +MainMenuBackgroundBase::MainMenuBackgroundBase() +{ + setWidth(220); + setHeight(66); + circle.setPosition(0, 0, 220, 66); + circle.setCenter(110, 33); + circle.setRadius(110); + circle.setLineWidth(0); + circle.setArc(0, 360); + circlePainter.setColor(touchgfx::Color::getColorFromRGB(0, 64, 64)); + circle.setPainter(circlePainter); + add(circle); +} + +MainMenuBackgroundBase::~MainMenuBackgroundBase() +{ + +} + +void MainMenuBackgroundBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBase.cpp new file mode 100644 index 00000000..c5115475 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuBase.cpp @@ -0,0 +1,66 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include + +MainMenuBase::MainMenuBase() : + updateItemCallback(this, &MainMenuBase::updateItemCallbackHandler) +{ + setWidth(240); + setHeight(240); + wheel.setPosition(0, 87, 240, 132); + wheel.setHorizontal(false); + wheel.setCircular(true); + wheel.setEasingEquation(touchgfx::EasingEquations::linearEaseOut); + wheel.setSwipeAcceleration(10); + wheel.setDragAcceleration(10); + wheel.setNumberOfItems(10); + wheel.setSelectedItemOffset(0); + wheel.setOvershootPercentage(100); + wheel.setSelectedItemExtraSize(0, 0); + wheel.setSelectedItemMargin(0, 15); + wheel.setDrawableSize(66, 0); + wheel.setDrawables(wheelListItems, updateItemCallback, + + wheelSelectedListItems, updateItemCallback); + wheel.animateToItem(0, 0); + add(wheel); + + scrollIndicator.setXY(0, 47); + add(scrollIndicator); +} + +MainMenuBase::~MainMenuBase() +{ + +} + +void MainMenuBase::initialize() +{ + wheel.initialize(); + for (int i = 0; i < wheelListItems.getNumberOfDrawables(); i++) + { + wheelListItems[i].initialize(); + } + for (int i = 0; i < wheelSelectedListItems.getNumberOfDrawables(); i++) + { + wheelSelectedListItems[i].initialize(); + } + scrollIndicator.initialize(); +} + +void MainMenuBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex) +{ + if (items == &wheelListItems) + { + touchgfx::Drawable* d = items->getDrawable(containerIndex); + MainMenuItem* cc = (MainMenuItem*)d; + wheelUpdateItem(*cc, itemIndex); + } + if (items == &wheelSelectedListItems) + { + touchgfx::Drawable* d = items->getDrawable(containerIndex); + MainMenuCenterItem* cc = (MainMenuCenterItem*)d; + wheelUpdateCenterItem(*cc, itemIndex); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuCenterItemBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuCenterItemBase.cpp new file mode 100644 index 00000000..25d21984 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuCenterItemBase.cpp @@ -0,0 +1,47 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +MainMenuCenterItemBase::MainMenuCenterItemBase() +{ + setWidth(240); + setHeight(66); + tipText.setPosition(0, 40, 240, 25); + tipText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + tipText.setLinespacing(-8); + tipTextBuffer[0] = 0; + tipText.setWildcard(tipTextBuffer); + tipText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + tipText.setVisible(false); + add(tipText); + + labelText.setPosition(0, 13, 240, 40); + labelText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + labelText.setLinespacing(-8); + labelTextBuffer[0] = 0; + labelText.setWildcard(labelTextBuffer); + labelText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(labelText); + + toggle.setXY(151, 18); + toggle.setVisible(false); + add(toggle); + + icon.setXY(20, 3); + icon.setVisible(false); + add(icon); +} + +MainMenuCenterItemBase::~MainMenuCenterItemBase() +{ + +} + +void MainMenuCenterItemBase::initialize() +{ + toggle.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuItemBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuItemBase.cpp new file mode 100644 index 00000000..19af5745 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuItemBase.cpp @@ -0,0 +1,43 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +MainMenuItemBase::MainMenuItemBase() +{ + setWidth(240); + setHeight(66); + tipText.setPosition(0, 44, 240, 25); + tipText.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + tipText.setLinespacing(-8); + tipTextBuffer[0] = 0; + tipText.setWildcard(tipTextBuffer); + tipText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + tipText.setVisible(false); + add(tipText); + + labelText.setPosition(0, 20, 240, 23); + labelText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + labelText.setLinespacing(-6); + labelTextBuffer[0] = 0; + labelText.setWildcard(labelTextBuffer); + labelText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(labelText); + + icon.setXY(46, 7); + icon.setVisible(false); + add(icon); +} + +MainMenuItemBase::~MainMenuItemBase() +{ + +} + +void MainMenuItemBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuLayoutBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuLayoutBase.cpp new file mode 100644 index 00000000..354b8df4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/MainMenuLayoutBase.cpp @@ -0,0 +1,45 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +MainMenuLayoutBase::MainMenuLayoutBase() +{ + setWidth(240); + setHeight(240); + background.setXY(16, 87); + add(background); + + buttons.setXY(0, 47); + add(buttons); + + menu.setXY(0, 0); + add(menu); + + infoText.setPosition(35, 57, 170, 23); + infoText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + infoText.setLinespacing(0); + infoTextBuffer[0] = 0; + infoText.setWildcard(infoTextBuffer); + infoText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + infoText.setVisible(false); + add(infoText); + + title.setXY(50, 0); + add(title); +} + +MainMenuLayoutBase::~MainMenuLayoutBase() +{ + +} + +void MainMenuLayoutBase::initialize() +{ + background.initialize(); + buttons.initialize(); + menu.initialize(); + title.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/PauseIndicatorBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/PauseIndicatorBase.cpp new file mode 100644 index 00000000..6a59c306 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/PauseIndicatorBase.cpp @@ -0,0 +1,43 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +PauseIndicatorBase::PauseIndicatorBase() +{ + setWidth(240); + setHeight(34); + background.setPosition(38, 0, 164, 34); + background.setCenter(82, -82); + background.setRadius(116); + background.setLineWidth(0); + background.setArc(0, 360); + backgroundPainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + background.setPainter(backgroundPainter); + add(background); + + timerValue.setPosition(88, 5, 85, 23); + timerValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerValue.setLinespacing(0); + timerValueBuffer[0] = 0; + timerValue.setWildcard(timerValueBuffer); + timerValue.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + add(timerValue); + + pauseIcon.setXY(76, 10); + pauseIcon.setBitmap(touchgfx::Bitmap(BITMAP_PAUSE_14X14_ID)); + add(pauseIcon); +} + +PauseIndicatorBase::~PauseIndicatorBase() +{ + +} + +void PauseIndicatorBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ScrollIndicatorBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ScrollIndicatorBase.cpp new file mode 100644 index 00000000..6821c3b0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ScrollIndicatorBase.cpp @@ -0,0 +1,51 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +ScrollIndicatorBase::ScrollIndicatorBase() +{ + setWidth(36); + setHeight(146); + rail.setPosition(0, 0, 36, 146); + rail.setCenter(120, 73); + rail.setRadius(112); + rail.setLineWidth(8.5f); + rail.setArc(232, 308); + rail.setCapPrecision(10); + railPainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + rail.setPainter(railPainter); + add(rail); + + handle.setPosition(0, 0, 36, 146); + handle.setCenter(120, 73); + handle.setRadius(112); + handle.setLineWidth(8.5f); + handle.setArc(290, 308); + handle.setCapPrecision(10); + handlePainter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + handle.setPainter(handlePainter); + add(handle); + + handleOvf.setPosition(0, 0, 36, 146); + handleOvf.setCenter(120, 73); + handleOvf.setRadius(112); + handleOvf.setLineWidth(8.5f); + handleOvf.setArc(290, 308); + handleOvf.setCapPrecision(10); + handleOvfPainter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + handleOvf.setPainter(handleOvfPainter); + handleOvf.setVisible(false); + add(handleOvf); +} + +ScrollIndicatorBase::~ScrollIndicatorBase() +{ + +} + +void ScrollIndicatorBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp new file mode 100644 index 00000000..ffdd418f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp @@ -0,0 +1,70 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +SummaryFaceHeartRateBase::SummaryFaceHeartRateBase() +{ + setWidth(240); + setHeight(240); + maxHrText.setPosition(81, 118, 78, 25); + maxHrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHrText.setLinespacing(0); + Unicode::snprintf(maxHrTextBuffer, MAXHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_MAX_HR_UC).getText()); + maxHrText.setWildcard(maxHrTextBuffer); + maxHrText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); + add(maxHrText); + + maxHrValue.setPosition(70, 77, 100, 51); + maxHrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHrValue.setLinespacing(0); + Unicode::snprintf(maxHrValueBuffer, MAXHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_CMV2).getText()); + maxHrValue.setWildcard(maxHrValueBuffer); + maxHrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(maxHrValue); + + line.setPosition(25, 147, 190, 3); + linePainter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line.setPainter(linePainter); + line.setStart(0, 0); + line.setEnd(190, 0); + line.setLineWidth(10); + line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line); + + avgHrText.setPosition(81, 191, 75, 25); + avgHrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + avgHrText.setLinespacing(0); + Unicode::snprintf(avgHrTextBuffer, AVGHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_AVG_HR).getText()); + avgHrText.setWildcard(avgHrTextBuffer); + avgHrText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); + add(avgHrText); + + avgHrValue.setPosition(70, 150, 100, 51); + avgHrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + avgHrValue.setLinespacing(0); + Unicode::snprintf(avgHrValueBuffer, AVGHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_FMCS).getText()); + avgHrValue.setWildcard(avgHrValueBuffer); + avgHrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(avgHrValue); + + heartIcon.setXY(105, 48); + heartIcon.setBitmap(touchgfx::Bitmap(BITMAP_HEART_30X30_ID)); + add(heartIcon); + + title.setXY(50, 0); + add(title); +} + +SummaryFaceHeartRateBase::~SummaryFaceHeartRateBase() +{ + +} + +void SummaryFaceHeartRateBase::initialize() +{ + title.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceLapsBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceLapsBase.cpp new file mode 100644 index 00000000..fb043909 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceLapsBase.cpp @@ -0,0 +1,100 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +SummaryFaceLapsBase::SummaryFaceLapsBase() : + updateItemCallback(this, &SummaryFaceLapsBase::updateItemCallbackHandler) +{ + setWidth(240); + setHeight(240); + scrollList.setPosition(25, 126, 190, 90); + scrollList.setHorizontal(false); + scrollList.setCircular(false); + scrollList.setEasingEquation(touchgfx::EasingEquations::linearEaseOut); + scrollList.setSwipeAcceleration(10); + scrollList.setDragAcceleration(10); + scrollList.setNumberOfItems(3); + scrollList.setPadding(0, 0); + scrollList.setSnapping(false); + scrollList.setOvershootPercentage(100); + scrollList.setDrawableSize(18, 0); + scrollList.setDrawables(scrollListListItems, updateItemCallback); + add(scrollList); + + maxHRText.setPosition(151, 104, 64, 23); + maxHRText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHRText.setLinespacing(0); + maxHRText.setTypedText(touchgfx::TypedText(T_RESOURCEID10)); + add(maxHRText); + + avgHRText.setPosition(78, 104, 79, 21); + avgHRText.setColor(touchgfx::Color::getColorFromRGB(0, 192, 192)); + avgHRText.setLinespacing(0); + avgHRText.setTypedText(touchgfx::TypedText(T_RESOURCEID11)); + add(avgHRText); + + timeText.setXY(40, 104); + timeText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timeText.setLinespacing(0); + timeText.setTypedText(touchgfx::TypedText(T_RESOURCEID12)); + add(timeText); + + line.setPosition(25, 100, 190, 3); + linePainter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line.setPainter(linePainter); + line.setStart(0, 0); + line.setEnd(190, 0); + line.setLineWidth(10); + line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line); + + timerText.setPosition(73, 75, 118, 23); + timerText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerText.setLinespacing(0); + timerTextBuffer[0] = 0; + timerText.setWildcard(timerTextBuffer); + timerText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_18)); + add(timerText); + + clockIcon.setXY(54, 75); + clockIcon.setBitmap(touchgfx::Bitmap(BITMAP_CLOCK_16X19_ID)); + add(clockIcon); + + lapsText.setPosition(20, 40, 200, 38); + lapsText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + lapsText.setLinespacing(0); + lapsTextBuffer[0] = 0; + lapsText.setWildcard(lapsTextBuffer); + lapsText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(lapsText); + + title.setXY(50, 0); + add(title); +} + +SummaryFaceLapsBase::~SummaryFaceLapsBase() +{ + +} + +void SummaryFaceLapsBase::initialize() +{ + scrollList.initialize(); + for (int i = 0; i < scrollListListItems.getNumberOfDrawables(); i++) + { + scrollListListItems[i].initialize(); + } + title.initialize(); +} + +void SummaryFaceLapsBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex) +{ + if (items == &scrollListListItems) + { + scrollListUpdateItem(scrollListListItems[containerIndex], itemIndex); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp new file mode 100644 index 00000000..e448e3b2 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp @@ -0,0 +1,87 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +SummaryFaceOverviewBase::SummaryFaceOverviewBase() +{ + setWidth(240); + setHeight(240); + caloriesValue.setPosition(135, 173, 77, 32); + caloriesValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesValue.setLinespacing(0); + Unicode::snprintf(caloriesValueBuffer, CALORIESVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_XTK2).getText()); + caloriesValue.setWildcard(caloriesValueBuffer); + caloriesValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(caloriesValue); + + caloriesText.setPosition(43, 179, 91, 21); + caloriesText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesText.setLinespacing(0); + Unicode::snprintf(caloriesTextBuffer, CALORIESTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_CALORIE_UC).getText()); + caloriesText.setWildcard(caloriesTextBuffer); + caloriesText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(caloriesText); + + line2.setPosition(25, 166, 190, 3); + line2Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line2.setPainter(line2Painter); + line2.setStart(0, 0); + line2.setEnd(190, 0); + line2.setLineWidth(10); + line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line2); + + avgHRValue.setPosition(132, 127, 78, 32); + avgHRValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + avgHRValue.setLinespacing(0); + Unicode::snprintf(avgHRValueBuffer, AVGHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_ZJSJ).getText()); + avgHRValue.setWildcard(avgHRValueBuffer); + avgHRValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(avgHRValue); + + avgHRText.setPosition(39, 133, 100, 21); + avgHRText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + avgHRText.setLinespacing(0); + Unicode::snprintf(avgHRTextBuffer, AVGHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_AVG_HR_UC).getText()); + avgHRText.setWildcard(avgHRTextBuffer); + avgHRText.setTypedText(touchgfx::TypedText(T___SINGLEUSE_Q39K)); + add(avgHRText); + + line1.setPosition(25, 120, 190, 3); + line1Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line1.setPainter(line1Painter); + line1.setStart(0, 0); + line1.setEnd(190, 0); + line1.setLineWidth(10); + line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line1); + + timerValue.setPosition(66, 60, 134, 35); + timerValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerValue.setLinespacing(0); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_5T2E).getText()); + timerValue.setWildcard(timerValueBuffer); + timerValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(timerValue); + + clockIcon.setXY(45, 62); + clockIcon.setBitmap(touchgfx::Bitmap(BITMAP_CLOCK_24X29_ID)); + add(clockIcon); + + title.setXY(50, 0); + add(title); +} + +SummaryFaceOverviewBase::~SummaryFaceOverviewBase() +{ + +} + +void SummaryFaceOverviewBase::initialize() +{ + title.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TimerRingBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TimerRingBase.cpp new file mode 100644 index 00000000..b8230651 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TimerRingBase.cpp @@ -0,0 +1,40 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +TimerRingBase::TimerRingBase() +{ + setWidth(240); + setHeight(240); + track.setPosition(0, 0, 240, 240); + track.setCenter(120, 120); + track.setRadius(112); + track.setLineWidth(8.5f); + track.setArc(138, 402); + track.setCapPrecision(10); + trackPainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + track.setPainter(trackPainter); + add(track); + + progress.setPosition(0, 0, 240, 240); + progress.setCenter(120, 120); + progress.setRadius(112); + progress.setLineWidth(8.5f); + progress.setArc(138, 160); + progress.setCapPrecision(10); + progressPainter.setColor(touchgfx::Color::getColorFromRGB(192, 128, 0)); + progress.setPainter(progressPainter); + add(progress); +} + +TimerRingBase::~TimerRingBase() +{ + +} + +void TimerRingBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TitleBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TitleBase.cpp new file mode 100644 index 00000000..7f6ed290 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TitleBase.cpp @@ -0,0 +1,38 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TitleBase::TitleBase() +{ + setWidth(140); + setHeight(41); + line.setPosition(0, 38, 140, 3); + linePainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + line.setPainter(linePainter); + line.setStart(0, 0); + line.setEnd(140, 0); + line.setLineWidth(10); + line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line); + + titleText.setPosition(10, 11, 120, 23); + titleText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + titleText.setLinespacing(0); + titleTextBuffer[0] = 0; + titleText.setWildcard(titleTextBuffer); + titleText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + add(titleText); +} + +TitleBase::~TitleBase() +{ + +} + +void TitleBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ToggleBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ToggleBase.cpp new file mode 100644 index 00000000..884891e5 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ToggleBase.cpp @@ -0,0 +1,38 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +ToggleBase::ToggleBase() +{ + setWidth(60); + setHeight(30); + rail.setPosition(0, 0, 60, 30); + railPainter.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + rail.setPainter(railPainter); + rail.setStart(15, 15); + rail.setEnd(45, 15); + rail.setLineWidth(30); + rail.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(rail); + + handle.setPosition(0, 0, 30, 30); + handle.setCenter(15, 15); + handle.setRadius(15); + handle.setLineWidth(0); + handle.setArc(0, 360); + handlePainter.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + handle.setPainter(handlePainter); + add(handle); +} + +ToggleBase::~ToggleBase() +{ + +} + +void ToggleBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceLapBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceLapBase.cpp new file mode 100644 index 00000000..417f0fa9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceLapBase.cpp @@ -0,0 +1,81 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackFaceLapBase::TrackFaceLapBase() +{ + setWidth(240); + setHeight(240); + timerText.setPosition(60, 204, 120, 23); + timerText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerText.setLinespacing(0); + timerText.setTypedText(touchgfx::TypedText(T_RESOURCEID3)); + add(timerText); + + timerValue.setPosition(35, 162, 170, 42); + timerValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerValue.setLinespacing(0); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_KERT).getText()); + timerValue.setWildcard(timerValueBuffer); + timerValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(timerValue); + + line2.setPosition(35, 159, 170, 3); + line2Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line2.setPainter(line2Painter); + line2.setStart(0, 0); + line2.setEnd(170, 0); + line2.setLineWidth(10); + line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line2); + + lapValue.setPosition(53, 111, 134, 42); + lapValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + lapValue.setLinespacing(0); + Unicode::snprintf(lapValueBuffer, LAPVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_4SCV).getText()); + lapValue.setWildcard(lapValueBuffer); + lapValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(lapValue); + + lapText.setPosition(50, 88, 140, 23); + lapText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + lapText.setLinespacing(0); + lapText.setTypedText(touchgfx::TypedText(T_RESOURCEID4)); + add(lapText); + + line1.setPosition(35, 79, 170, 3); + line1Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line1.setPainter(line1Painter); + line1.setStart(0, 0); + line1.setEnd(170, 0); + line1.setLineWidth(10); + line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line1); + + hrValue.setPosition(58, 30, 124, 42); + hrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrValue.setLinespacing(0); + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_8WSQ).getText()); + hrValue.setWildcard(hrValueBuffer); + hrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(hrValue); + + hrText.setPosition(70, 10, 100, 23); + hrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrText.setLinespacing(0); + hrText.setTypedText(touchgfx::TypedText(T_RESOURCEID5)); + add(hrText); +} + +TrackFaceLapBase::~TrackFaceLapBase() +{ + +} + +void TrackFaceLapBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceStatusBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceStatusBase.cpp new file mode 100644 index 00000000..901b4ef1 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceStatusBase.cpp @@ -0,0 +1,49 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackFaceStatusBase::TrackFaceStatusBase() +{ + setWidth(240); + setHeight(240); + percentValue.setPosition(85, 172, 70, 32); + percentValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + percentValue.setLinespacing(0); + Unicode::snprintf(percentValueBuffer, PERCENTVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_ICBU).getText()); + percentValue.setWildcard(percentValueBuffer); + percentValue.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_25)); + add(percentValue); + + battery.setXY(75, 138); + add(battery); + + line.setPosition(35, 120, 170, 3); + linePainter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line.setPainter(linePainter); + line.setStart(170, 0); + line.setEnd(0, 0); + line.setLineWidth(10); + line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line); + + dayTimeValue.setPosition(35, 43, 170, 77); + dayTimeValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + dayTimeValue.setLinespacing(0); + Unicode::snprintf(dayTimeValueBuffer, DAYTIMEVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_YHFT).getText()); + dayTimeValue.setWildcard(dayTimeValueBuffer); + dayTimeValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_60)); + add(dayTimeValue); +} + +TrackFaceStatusBase::~TrackFaceStatusBase() +{ + +} + +void TrackFaceStatusBase::initialize() +{ + battery.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceTotalBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceTotalBase.cpp new file mode 100644 index 00000000..73e0946c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/TrackFaceTotalBase.cpp @@ -0,0 +1,86 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackFaceTotalBase::TrackFaceTotalBase() +{ + setWidth(240); + setHeight(240); + timerText.setPosition(75, 204, 91, 22); + timerText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerText.setLinespacing(0); + timerText.setTypedText(touchgfx::TypedText(T_RESOURCEID2)); + add(timerText); + + timerValue.setPosition(35, 162, 170, 42); + timerValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerValue.setLinespacing(0); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_GAMW).getText()); + timerValue.setWildcard(timerValueBuffer); + timerValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(timerValue); + + line3.setPosition(35, 159, 170, 3); + line3Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line3.setPainter(line3Painter); + line3.setStart(0, 0); + line3.setEnd(170, 0); + line3.setLineWidth(10); + line3.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line3); + + caloriesValue.setPosition(18, 111, 204, 48); + caloriesValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesValue.setLinespacing(0); + Unicode::snprintf(caloriesValueBuffer, CALORIESVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_OTQI).getText()); + caloriesValue.setWildcard(caloriesValueBuffer); + caloriesValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(caloriesValue); + + caloriesText.setPosition(20, 88, 200, 23); + caloriesText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesText.setLinespacing(0); + caloriesText.setTypedText(touchgfx::TypedText(T_RESOURCEID1)); + add(caloriesText); + + line1.setPosition(35, 79, 170, 3); + line1Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line1.setPainter(line1Painter); + line1.setStart(0, 0); + line1.setEnd(170, 0); + line1.setLineWidth(10); + line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line1); + + hrText.setPosition(160, 50, 45, 23); + hrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrText.setLinespacing(0); + Unicode::snprintf(hrTextBuffer, HRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_HR_UC).getText()); + hrText.setWildcard(hrTextBuffer); + hrText.setTypedText(touchgfx::TypedText(T_TMP_REGULAR_18_L)); + add(hrText); + + hrValue.setPosition(75, 29, 90, 44); + hrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrValue.setLinespacing(0); + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_HFND).getText()); + hrValue.setWildcard(hrValueBuffer); + hrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(hrValue); + + hrZone.setXY(15, 4); + add(hrZone); +} + +TrackFaceTotalBase::~TrackFaceTotalBase() +{ + +} + +void TrackFaceTotalBase::initialize() +{ + hrZone.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/main_screen/MainViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/main_screen/MainViewBase.cpp new file mode 100644 index 00000000..2d558b66 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/main_screen/MainViewBase.cpp @@ -0,0 +1,37 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +MainViewBase::MainViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + menuLayout.setXY(0, 0); + add(menuLayout); +} + +MainViewBase::~MainViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void MainViewBase::setupScreen() +{ + menuLayout.initialize(); + transitionBegins(); +} + +void MainViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to Main + //Go to Main with no screen transition + application().gotoMainScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menualerts_screen/MenuAlertsViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menualerts_screen/MenuAlertsViewBase.cpp new file mode 100644 index 00000000..10edb5d8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menualerts_screen/MenuAlertsViewBase.cpp @@ -0,0 +1,37 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +MenuAlertsViewBase::MenuAlertsViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + menuLayout.setXY(0, 0); + add(menuLayout); +} + +MenuAlertsViewBase::~MenuAlertsViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void MenuAlertsViewBase::setupScreen() +{ + menuLayout.initialize(); + transitionBegins(); +} + +void MenuAlertsViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to MenuAlerts + //Go to MenuAlerts with no screen transition + application().gotoMenuAlertsScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menusettings_screen/MenuSettingsViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menusettings_screen/MenuSettingsViewBase.cpp new file mode 100644 index 00000000..c2f44f38 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menusettings_screen/MenuSettingsViewBase.cpp @@ -0,0 +1,37 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +MenuSettingsViewBase::MenuSettingsViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + menuLayout.setXY(0, 0); + add(menuLayout); +} + +MenuSettingsViewBase::~MenuSettingsViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void MenuSettingsViewBase::setupScreen() +{ + menuLayout.initialize(); + transitionBegins(); +} + +void MenuSettingsViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to MenuSettings + //Go to MenuSettings with no screen transition + application().gotoMenuSettingsScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutime_screen/MenuTimeViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutime_screen/MenuTimeViewBase.cpp new file mode 100644 index 00000000..aebd04e8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutime_screen/MenuTimeViewBase.cpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +MenuTimeViewBase::MenuTimeViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + menuLayout.setXY(0, 0); + add(menuLayout); + + tick.setXY(186, 60); + tick.setBitmap(touchgfx::Bitmap(BITMAP_TICKAMBER_22X17_ID)); + add(tick); +} + +MenuTimeViewBase::~MenuTimeViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void MenuTimeViewBase::setupScreen() +{ + menuLayout.initialize(); + transitionBegins(); +} + +void MenuTimeViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to MenuTime + //Go to MenuTime with no screen transition + application().gotoMenuTimeScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutimesaved_screen/MenuTimeSavedViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutimesaved_screen/MenuTimeSavedViewBase.cpp new file mode 100644 index 00000000..69bfdb47 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/menutimesaved_screen/MenuTimeSavedViewBase.cpp @@ -0,0 +1,59 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +MenuTimeSavedViewBase::MenuTimeSavedViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + savedText.setXY(73, 150); + savedText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + savedText.setLinespacing(0); + savedText.setWildcard(touchgfx::TypedText(T_TEXT_SAVED).getText()); + savedText.resizeToCurrentText(); + savedText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(savedText); + + icon.setXY(95, 95); + icon.setBitmap(touchgfx::Bitmap(BITMAP_CIRCLETICK_50X50_ID)); + add(icon); + + messageText.setPosition(60, 53, 120, 32); + messageText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + messageText.setLinespacing(0); + messageTextBuffer[0] = 0; + messageText.setWildcard(messageTextBuffer); + messageText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_25)); + add(messageText); + + title.setXY(50, 0); + add(title); +} + +MenuTimeSavedViewBase::~MenuTimeSavedViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void MenuTimeSavedViewBase::setupScreen() +{ + title.initialize(); + transitionBegins(); +} + +void MenuTimeSavedViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to MenuTimeSaved + //Go to MenuTimeSaved with no screen transition + application().gotoMenuTimeSavedScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/track_screen/TrackViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/track_screen/TrackViewBase.cpp new file mode 100644 index 00000000..f1a789a7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/track_screen/TrackViewBase.cpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackViewBase::TrackViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + scrollIndicator.setXY(0, 47); + add(scrollIndicator); + + buttons.setXY(0, 47); + add(buttons); + + trackFaceStatus.setXY(0, 0); + trackFaceStatus.setVisible(false); + add(trackFaceStatus); + + trackFaceTotal.setXY(0, 0); + add(trackFaceTotal); + + trackFaceLap.setXY(0, 0); + trackFaceLap.setVisible(false); + add(trackFaceLap); +} + +TrackViewBase::~TrackViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackViewBase::setupScreen() +{ + scrollIndicator.initialize(); + buttons.initialize(); + trackFaceStatus.initialize(); + trackFaceTotal.initialize(); + trackFaceLap.initialize(); + transitionBegins(); +} + +void TrackViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to Track + //Go to Track with no screen transition + application().gotoTrackScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackaction_screen/TrackActionViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackaction_screen/TrackActionViewBase.cpp new file mode 100644 index 00000000..59b52ef8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackaction_screen/TrackActionViewBase.cpp @@ -0,0 +1,45 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackActionViewBase::TrackActionViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + menuLayout.setXY(0, 0); + add(menuLayout); + + pauseIndicator.setXY(0, 200); + add(pauseIndicator); + + infoCarousel.setXY(40, 0); + add(infoCarousel); +} + +TrackActionViewBase::~TrackActionViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackActionViewBase::setupScreen() +{ + menuLayout.initialize(); + pauseIndicator.initialize(); + infoCarousel.initialize(); + transitionBegins(); +} + +void TrackActionViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackAction + //Go to TrackAction with no screen transition + application().gotoTrackActionScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp new file mode 100644 index 00000000..5d45903b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +TrackDiscardConfirmationViewBase::TrackDiscardConfirmationViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + buttons.setXY(0, 47); + add(buttons); + + questionText.setPosition(35, 88, 170, 80); + questionText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + questionText.setLinespacing(-5); + questionTextBuffer[0] = 0; + questionText.setWildcard(questionTextBuffer); + questionText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); + add(questionText); + + tick.setXY(186, 60); + tick.setBitmap(touchgfx::Bitmap(BITMAP_TICKAMBER_22X17_ID)); + add(tick); + + title.setXY(50, 0); + add(title); +} + +TrackDiscardConfirmationViewBase::~TrackDiscardConfirmationViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackDiscardConfirmationViewBase::setupScreen() +{ + buttons.initialize(); + title.initialize(); + transitionBegins(); +} + +void TrackDiscardConfirmationViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackDiscardConfirmation + //Go to TrackDiscardConfirmation with no screen transition + application().gotoTrackDiscardConfirmationScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscarded_screen/TrackDiscardedViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscarded_screen/TrackDiscardedViewBase.cpp new file mode 100644 index 00000000..a910a155 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscarded_screen/TrackDiscardedViewBase.cpp @@ -0,0 +1,59 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +TrackDiscardedViewBase::TrackDiscardedViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + subtitleText.setPosition(48, 158, 144, 57); + subtitleText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + subtitleText.setLinespacing(0); + subtitleTextBuffer[0] = 0; + subtitleText.setWildcard(subtitleTextBuffer); + subtitleText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(subtitleText); + + icon.setXY(95, 95); + icon.setBitmap(touchgfx::Bitmap(BITMAP_CIRCLECROSS_50X50_ID)); + add(icon); + + headingText.setPosition(41, 47, 159, 42); + headingText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + headingText.setLinespacing(0); + Unicode::snprintf(headingTextBuffer, HEADINGTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_DISCARTED).getText()); + headingText.setWildcard(headingTextBuffer); + headingText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(headingText); + + title.setXY(50, 0); + add(title); +} + +TrackDiscardedViewBase::~TrackDiscardedViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackDiscardedViewBase::setupScreen() +{ + title.initialize(); + transitionBegins(); +} + +void TrackDiscardedViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackDiscarded + //Go to TrackDiscarded with no screen transition + application().gotoTrackDiscardedScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracklap_screen/TrackLapViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracklap_screen/TrackLapViewBase.cpp new file mode 100644 index 00000000..e9d28d0a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracklap_screen/TrackLapViewBase.cpp @@ -0,0 +1,104 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +TrackLapViewBase::TrackLapViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + buttons.setXY(0, 47); + add(buttons); + + line2.setPosition(35, 127, 170, 3); + line2Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line2.setPainter(line2Painter); + line2.setStart(0, 0); + line2.setEnd(170, 0); + line2.setLineWidth(10); + line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line2); + + caloriesValue.setPosition(70, 158, 100, 44); + caloriesValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesValue.setLinespacing(0); + Unicode::snprintf(caloriesValueBuffer, CALORIESVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_WXKL).getText()); + caloriesValue.setWildcard(caloriesValueBuffer); + caloriesValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(caloriesValue); + + caloriesText.setPosition(70, 137, 100, 23); + caloriesText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + caloriesText.setLinespacing(0); + caloriesText.setTypedText(touchgfx::TypedText(T_RESOURCEID7)); + add(caloriesText); + + timeValue.setPosition(122, 82, 100, 44); + timeValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timeValue.setLinespacing(0); + Unicode::snprintf(timeValueBuffer, TIMEVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_3KKT).getText()); + timeValue.setWildcard(timeValueBuffer); + timeValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(timeValue); + + timeText.setXY(136, 58); + timeText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timeText.setLinespacing(0); + timeText.setWildcard(touchgfx::TypedText(T_TEXT_TIME).getText()); + timeText.resizeToCurrentText(); + timeText.setTypedText(touchgfx::TypedText(T_TMP_ITALIC_18)); + add(timeText); + + line1.setPosition(119, 84, 3, 44); + line1Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line1.setPainter(line1Painter); + line1.setStart(0, 0); + line1.setEnd(0, 44); + line1.setLineWidth(10); + line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line1); + + hrValue.setPosition(18, 82, 100, 44); + hrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrValue.setLinespacing(0); + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_Z0WD).getText()); + hrValue.setWildcard(hrValueBuffer); + hrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_35)); + add(hrValue); + + hrText.setXY(40, 58); + hrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + hrText.setLinespacing(0); + hrText.setTypedText(touchgfx::TypedText(T_RESOURCEID6)); + add(hrText); + + title.setXY(50, 0); + add(title); +} + +TrackLapViewBase::~TrackLapViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackLapViewBase::setupScreen() +{ + buttons.initialize(); + title.initialize(); + transitionBegins(); +} + +void TrackLapViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackLap + //Go to TrackLap with no screen transition + application().gotoTrackLapScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksaved_screen/TrackSavedViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksaved_screen/TrackSavedViewBase.cpp new file mode 100644 index 00000000..36f47c7f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksaved_screen/TrackSavedViewBase.cpp @@ -0,0 +1,59 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +TrackSavedViewBase::TrackSavedViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + subtitleText.setPosition(48, 156, 144, 57); + subtitleText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + subtitleText.setLinespacing(0); + subtitleTextBuffer[0] = 0; + subtitleText.setWildcard(subtitleTextBuffer); + subtitleText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(subtitleText); + + icon.setXY(95, 95); + icon.setBitmap(touchgfx::Bitmap(BITMAP_CIRCLETICK_50X50_ID)); + add(icon); + + headingText.setPosition(41, 47, 159, 42); + headingText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + headingText.setLinespacing(0); + Unicode::snprintf(headingTextBuffer, HEADINGTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_SAVED).getText()); + headingText.setWildcard(headingTextBuffer); + headingText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_30)); + add(headingText); + + title.setXY(50, 0); + add(title); +} + +TrackSavedViewBase::~TrackSavedViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackSavedViewBase::setupScreen() +{ + title.initialize(); + transitionBegins(); +} + +void TrackSavedViewBase::transitionBegins() +{ + //Interaction2 + //When screen transition begins change screen to TrackSaved + //Go to TrackSaved with no screen transition + application().gotoTrackSavedScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackstartconfirmation_screen/TrackStartConfirmationViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackstartconfirmation_screen/TrackStartConfirmationViewBase.cpp new file mode 100644 index 00000000..e8b2351d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackstartconfirmation_screen/TrackStartConfirmationViewBase.cpp @@ -0,0 +1,53 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +TrackStartConfirmationViewBase::TrackStartConfirmationViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + buttons.setXY(0, 47); + add(buttons); + + questionText.setPosition(35, 94, 170, 52); + questionText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + questionText.setLinespacing(-5); + questionText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); + add(questionText); + + tick.setXY(186, 60); + tick.setBitmap(touchgfx::Bitmap(BITMAP_TICKAMBER_22X17_ID)); + add(tick); + + title.setXY(50, 0); + add(title); +} + +TrackStartConfirmationViewBase::~TrackStartConfirmationViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackStartConfirmationViewBase::setupScreen() +{ + buttons.initialize(); + title.initialize(); + transitionBegins(); +} + +void TrackStartConfirmationViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackStartConfirmation + //Go to TrackStartConfirmation with no screen transition + application().gotoTrackStartConfirmationScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp new file mode 100644 index 00000000..04a2ee06 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp @@ -0,0 +1,55 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +TrackSummaryViewBase::TrackSummaryViewBase() +{ + touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); + + __background.setPosition(0, 0, 240, 240); + __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); + add(__background); + + buttons.setXY(0, 46); + add(buttons); + + scrollIndicator.setXY(0, 47); + add(scrollIndicator); + + summaryFaceLaps.setXY(0, 0); + summaryFaceLaps.setVisible(false); + add(summaryFaceLaps); + + summaryFaceHeartRate.setXY(0, 0); + summaryFaceHeartRate.setVisible(false); + add(summaryFaceHeartRate); + + summaryFaceOverview.setXY(0, 0); + add(summaryFaceOverview); +} + +TrackSummaryViewBase::~TrackSummaryViewBase() +{ + touchgfx::CanvasWidgetRenderer::resetBuffer(); +} + +void TrackSummaryViewBase::setupScreen() +{ + buttons.initialize(); + scrollIndicator.initialize(); + summaryFaceLaps.initialize(); + summaryFaceHeartRate.initialize(); + summaryFaceOverview.initialize(); + transitionBegins(); +} + +void TrackSummaryViewBase::transitionBegins() +{ + //Interaction1 + //When screen transition begins change screen to TrackSummary + //Go to TrackSummary with no screen transition + application().gotoTrackSummaryScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/BitmapDatabase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/BitmapDatabase.hpp new file mode 100644 index 00000000..3ab724be --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/BitmapDatabase.hpp @@ -0,0 +1 @@ +#include diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/BitmapDatabase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/BitmapDatabase.hpp new file mode 100644 index 00000000..9f25cc72 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/BitmapDatabase.hpp @@ -0,0 +1,33 @@ +// Generated by imageconverter. Please, do not edit! + +#ifndef TOUCHGFX_BITMAPDATABASE_HPP +#define TOUCHGFX_BITMAPDATABASE_HPP + +#include +#include + +const uint16_t BITMAP_CIRCLECROSS_50X50_ID = 0; +const uint16_t BITMAP_CIRCLETICK_50X50_ID = 1; +const uint16_t BITMAP_CLOCK_16X19_ID = 2; +const uint16_t BITMAP_CLOCK_24X29_ID = 3; +const uint16_t BITMAP_CROSSAMBER_17X17_ID = 4; +const uint16_t BITMAP_CROSSWHITE_17X17_ID = 5; +const uint16_t BITMAP_HEART_30X30_ID = 6; +const uint16_t BITMAP_HEART_46X39_ID = 7; +const uint16_t BITMAP_HEARTRATEZONE1_ID = 8; +const uint16_t BITMAP_HEARTRATEZONE2_ID = 9; +const uint16_t BITMAP_HEARTRATEZONE3_ID = 10; +const uint16_t BITMAP_HEARTRATEZONE4_ID = 11; +const uint16_t BITMAP_HEARTRATEZONE5_ID = 12; +const uint16_t BITMAP_HEARTRATEZONEGROUP_ID = 13; +const uint16_t BITMAP_PAUSE_14X14_ID = 14; +const uint16_t BITMAP_TICKAMBER_22X17_ID = 15; +const uint16_t BITMAP_WORKOUTMAN_30X30_ID = 16; + +namespace BitmapDatabase +{ +const touchgfx::Bitmap::BitmapData* getInstance(); +uint16_t getInstanceSize(); +} // namespace BitmapDatabase + +#endif // TOUCHGFX_BITMAPDATABASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/SVGDatabase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/SVGDatabase.hpp new file mode 100644 index 00000000..1fba9b77 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/include/images/SVGDatabase.hpp @@ -0,0 +1,20 @@ +// Generated by imageconverter. Please, do not edit! + +#ifndef TOUCHGFX_SVGDATABASE_HPP +#define TOUCHGFX_SVGDATABASE_HPP + +#include +#include + +enum SVGImages +{ + NUMBER_OF_SVG_IMAGES = 0 +}; + +namespace SVGDatabase +{ +const touchgfx::VGObject* getInstance(); +uint16_t getInstanceSize(); +} // namespace SVGDatabase + +#endif // TOUCHGFX_SVGDATABASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/BitmapDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/BitmapDatabase.cpp new file mode 100644 index 00000000..5ab272b3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/BitmapDatabase.cpp @@ -0,0 +1,56 @@ +// 4.26.1 0x33c56435 +// Generated by imageconverter. Please, do not edit! + +#include +#include + +extern const unsigned char image_circlecross_50x50[]; // BITMAP_CIRCLECROSS_50X50_ID = 0, Size: 50x50 pixels +extern const unsigned char image_circletick_50x50[]; // BITMAP_CIRCLETICK_50X50_ID = 1, Size: 50x50 pixels +extern const unsigned char image_clock_16x19[]; // BITMAP_CLOCK_16X19_ID = 2, Size: 16x19 pixels +extern const unsigned char image_clock_24x29[]; // BITMAP_CLOCK_24X29_ID = 3, Size: 24x29 pixels +extern const unsigned char image_crossamber_17x17[]; // BITMAP_CROSSAMBER_17X17_ID = 4, Size: 17x17 pixels +extern const unsigned char image_crosswhite_17x17[]; // BITMAP_CROSSWHITE_17X17_ID = 5, Size: 17x17 pixels +extern const unsigned char image_heart_30x30[]; // BITMAP_HEART_30X30_ID = 6, Size: 30x30 pixels +extern const unsigned char image_heart_46x39[]; // BITMAP_HEART_46X39_ID = 7, Size: 46x39 pixels +extern const unsigned char image_heartratezone1[]; // BITMAP_HEARTRATEZONE1_ID = 8, Size: 39x44 pixels +extern const unsigned char image_heartratezone2[]; // BITMAP_HEARTRATEZONE2_ID = 9, Size: 47x37 pixels +extern const unsigned char image_heartratezone3[]; // BITMAP_HEARTRATEZONE3_ID = 10, Size: 50x28 pixels +extern const unsigned char image_heartratezone4[]; // BITMAP_HEARTRATEZONE4_ID = 11, Size: 47x37 pixels +extern const unsigned char image_heartratezone5[]; // BITMAP_HEARTRATEZONE5_ID = 12, Size: 39x44 pixels +extern const unsigned char image_heartratezonegroup[]; // BITMAP_HEARTRATEZONEGROUP_ID = 13, Size: 210x69 pixels +extern const unsigned char image_pause_14x14[]; // BITMAP_PAUSE_14X14_ID = 14, Size: 14x14 pixels +extern const unsigned char image_tickamber_22x17[]; // BITMAP_TICKAMBER_22X17_ID = 15, Size: 22x17 pixels +extern const unsigned char image_workoutman_30x30[]; // BITMAP_WORKOUTMAN_30X30_ID = 16, Size: 30x30 pixels + +const touchgfx::Bitmap::BitmapData bitmap_database[] = { + { image_circlecross_50x50, 0, 50, 50, 45, 15, 3, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 20, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_circletick_50x50, 0, 50, 50, 45, 15, 3, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 20, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_clock_16x19, 0, 16, 19, 4, 16, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 2, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_clock_24x29, 0, 24, 29, 12, 13, 4, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 8, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_crossamber_17x17, 0, 17, 17, 5, 5, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_crosswhite_17x17, 0, 17, 17, 5, 5, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heart_30x30, 0, 30, 30, 4, 7, 21, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 11, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heart_46x39, 0, 46, 39, 6, 6, 34, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 17, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezone1, 0, 39, 44, 6, 27, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 12, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezone2, 0, 47, 37, 28, 5, 16, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezone3, 0, 50, 28, 2, 2, 46, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 9, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezone4, 0, 47, 37, 2, 5, 16, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezone5, 0, 39, 44, 26, 27, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 12, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_heartratezonegroup, 0, 210, 69, 83, 2, 44, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 5, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_pause_14x14, 0, 14, 14, 8, 4, 2, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 6, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_tickamber_22x17, 0, 22, 17, 4, 11, 7, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 3, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 }, + { image_workoutman_30x30, 0, 30, 30, 13, 7, 3, ((uint8_t)touchgfx::Bitmap::ABGR2222) >> 3, 12, ((uint8_t)touchgfx::Bitmap::ABGR2222) & 0x7 } +}; + +namespace BitmapDatabase +{ +const touchgfx::Bitmap::BitmapData* getInstance() +{ + return bitmap_database; +} + +uint16_t getInstanceSize() +{ + return (uint16_t)(sizeof(bitmap_database) / sizeof(touchgfx::Bitmap::BitmapData)); +} +} // namespace BitmapDatabase diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/SVGDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/SVGDatabase.cpp new file mode 100644 index 00000000..29223276 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/SVGDatabase.cpp @@ -0,0 +1,19 @@ +// Generated by imageconverter. Please, do not edit! + +#include + +using namespace touchgfx; + + +namespace SVGDatabase +{ +const touchgfx::VGObject* getInstance() +{ + return (const touchgfx::VGObject*)0; +} + +uint16_t getInstanceSize() +{ + return 0; +} +} // namespace SVGDatabase diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp new file mode 100644 index 00000000..6120f805 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp @@ -0,0 +1,217 @@ +// 4.26.1 0x81f6eeca D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_circlecross_50x50[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x50 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, 0xca, 0xcb, + 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x0a, 0x00, 0x00, + 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4b, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x8b, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x8b, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, + 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp new file mode 100644 index 00000000..2a87d1aa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp @@ -0,0 +1,217 @@ +// 4.26.1 0x3d69eeb5 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_circletick_50x50[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x50 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, 0xca, 0xcb, + 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x0a, 0x00, 0x00, + 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, + 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4b, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, + 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, + 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp new file mode 100644 index 00000000..a44bb161 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp @@ -0,0 +1,34 @@ +// 4.26.1 0x9e364eb9 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_clock_16x19[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 16x19 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x68, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xd4, 0xa8, 0xa8, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, + 0x54, 0x2a, 0x6a, 0x6a, 0x2a, 0x28, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0x68, 0x6a, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x28, 0xe8, 0xe8, 0xe8, 0x28, 0xaa, 0xea, 0x6a, 0x28, 0xe8, 0xe8, + 0xa8, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x54, 0xe8, 0xe8, + 0x54, 0xff, 0xff, 0xea, 0x68, 0xe8, 0xe8, 0x68, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x28, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xa8, + 0xe8, 0xe8, 0x68, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x6a, 0x00, + 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xbf, 0x68, 0xe8, 0xe8, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xa8, 0xaa, 0xaa, + 0x2a, 0x28, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0x28, + 0x00, 0x00, 0x00, 0x2a, 0xa9, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xaa, 0x54, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0x00, 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xd4, 0xa8, 0x68, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp new file mode 100644 index 00000000..0235581c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp @@ -0,0 +1,33 @@ +// 4.26.1 0x2fbefec1 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_crossamber_17x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 17x17 ABGR2222 pixels. + 0x0a, 0x8a, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x8a, 0xcb, 0x8a, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0xca, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xca, + 0x0a +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp new file mode 100644 index 00000000..d747a4c0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp @@ -0,0 +1,33 @@ +// 4.26.1 0x56c43d46 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_crosswhite_17x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 17x17 ABGR2222 pixels. + 0x2a, 0xaa, 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xaa, 0xff, 0xaa, 0x2a, 0xbf, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x2a, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x6a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x2a, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xea, 0xff, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xff, 0xea, + 0x2a +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp new file mode 100644 index 00000000..a2813424 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp @@ -0,0 +1,151 @@ +// 4.26.1 0xda9d70fc D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezone1[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 39x44 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xaa, 0xea, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xaa, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, + 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xd5, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0x6a, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x15, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xaa, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp new file mode 100644 index 00000000..7940dac0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp @@ -0,0 +1,153 @@ +// 4.26.1 0x48e8b56c D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezone2[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 47x37 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4d, 0x8d, 0xcd, + 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4c, 0x89, 0xc9, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4c, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8d, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x89, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x49, 0x00, 0x00, 0x00, 0x0c, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x4d, 0x49, 0x49, 0x49, 0x49, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp new file mode 100644 index 00000000..22b91f14 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp @@ -0,0 +1,125 @@ +// 4.26.1 0x2ae91e69 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezone3[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x28 ABGR2222 pixels. + 0x00, 0x00, 0x8f, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xca, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x4a, 0x4a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xca, 0x8a, 0x4a, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp new file mode 100644 index 00000000..e723152c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp @@ -0,0 +1,153 @@ +// 4.26.1 0xf58c9149 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezone4[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 47x37 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x8a, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, + 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, + 0x00, 0x00, 0x0b, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x46, + 0x8a, 0x8a, 0x8a, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x06, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8a, 0xc6, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp new file mode 100644 index 00000000..09ecbb06 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp @@ -0,0 +1,151 @@ +// 4.26.1 0x5ca49022 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezone5[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 39x44 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0x83, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc2, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x83, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, + 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc2, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, + 0xc3, 0xc3, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x83, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x42, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp new file mode 100644 index 00000000..d724c202 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp @@ -0,0 +1,1216 @@ +// 4.26.1 0xeb18db9f D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heartratezonegroup[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 210x69 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x83, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x82, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x82, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x43, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x82, 0xc3, 0xc3, + 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0x82, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x0b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xca, 0x4b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8b, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, + 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4c, 0x8c, 0xcc, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xc9, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xc9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x49, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xcc, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xc9, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x8d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xaa, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xd5, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xd5, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xd5, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xaa, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0x15, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp new file mode 100644 index 00000000..57f3d9fa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp @@ -0,0 +1,83 @@ +// 4.26.1 0x20356b0a D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heart_30x30[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 30x30 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x3f, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe9, 0xe9, + 0xe9, 0xea, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, + 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp new file mode 100644 index 00000000..bfcd5701 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp @@ -0,0 +1,158 @@ +// 4.26.1 0x69bd077e D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_heart_46x39[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 46x39 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xea, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xfe, 0xff, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xea, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe9, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x3f, 0xea, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, + 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xea, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xa9, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x68, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, + 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, + 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xd4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x68, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp new file mode 100644 index 00000000..bcfcc354 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp @@ -0,0 +1,25 @@ +// 4.26.1 0xd46823bb D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_pause_14x14[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 14x14 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xaa, 0x6a, 0x6a, 0xaa, 0xff, + 0xff, 0x6a, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xbf, 0xff, 0x6a, 0x00, 0x2a, 0xff, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x2a, 0xbf, 0xff, 0x2a, 0x2a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x2a, 0xff, 0xaa, 0xff, 0xaa, + 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0xaa, 0xea, + 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, + 0x00, 0x00, 0x6a, 0xff, 0xff, 0xaa, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x2a, 0x00, 0xbf, 0xea, 0x7f, 0xff, 0x2a, 0x2a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x2a, 0x2a, 0xff, 0xaa, 0x2a, 0xff, 0xaa, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x2a, 0x00, 0x7f, + 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xbf, 0xff, 0x6a, 0x00, + 0x00, 0x00, 0x6a, 0xff, 0xff, 0xbf, 0x6a, 0x6a, 0xaa, 0xff, 0xff, 0x6a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xff, 0xff, 0xff, 0xea, 0xaa, + 0x2a, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp new file mode 100644 index 00000000..0021698a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp @@ -0,0 +1,40 @@ +// 4.26.1 0x9bf58d12 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_tickamber_22x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 22x17 ABGR2222 pixels. + 0x0a, 0x8b, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp new file mode 100644 index 00000000..219c91bd --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp @@ -0,0 +1,83 @@ +// 4.26.1 0xbff72c63 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_workoutman_30x30[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 30x30 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0x00, + 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, + 0xd4, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x94, 0x94, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x15, + 0x15, 0x15, 0x15, 0x15, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, + 0x94, 0xe8, 0xe8, 0xd4, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe8, 0xd4, + 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, + 0xff, 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, 0xff, 0xff, 0xff, 0xd4, 0xe8, 0xe8, + 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x54, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, + 0xff, 0xff, 0xff, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, + 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe8, 0xd4, + 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x94, 0x94, 0x14, 0x00, 0xe8, 0xd4, 0xe8, 0xe8, 0x94, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, + 0xd4, 0xe8, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, 0x00, + 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0x00, 0xa8, 0xe8, 0xd4, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0x14, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x94, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp new file mode 100644 index 00000000..5036a8c0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp @@ -0,0 +1,66 @@ +// 4.26.1 0x0250722d D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// Generated by imageconverter. Please, do not edit! + +#include + +LOCATION_PRAGMA("IntFlashSection") +KEEP extern const unsigned char image_clock_24x29[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 24x29 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x14, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xa8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x14, 0x00, 0x00, 0x14, 0x54, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x2a, 0x6a, 0x7f, 0x7f, + 0x7f, 0x2a, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, + 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x54, 0xe8, 0xe8, + 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, + 0xe8, 0xe8, 0xa8, 0x00, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0xff, 0xff, 0xff, + 0x7f, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x14, 0xe8, 0xe8, 0xe8, + 0xe8, 0x68, 0xff, 0xff, 0xff, 0xbf, 0x3f, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbf, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xbf, + 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, + 0xff, 0xff, 0xff, 0xff, 0xbf, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x2a, + 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x00, + 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x68, 0xe8, + 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, + 0xff, 0xbf, 0x2a, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, + 0xe8, 0xe8, 0x68, 0xbf, 0xff, 0xff, 0x6a, 0x00, 0x14, 0xe8, 0xe8, 0xe8, + 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0x6a, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xa8, 0x68, 0x14, 0x28, 0x68, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, + 0x69, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xff, 0xff, 0xbf, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xbf, 0x2a, 0x00, + 0x14, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x54, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xa8, 0x68, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/mainBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/mainBase.hpp new file mode 100644 index 00000000..bf27e23b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/mainBase.hpp @@ -0,0 +1,9 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include + +void setupSimulator(int argc, char** argv, touchgfx::HAL& hal); + +touchgfx::LCD& setupLCD(); diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/DirectFrameBufferVideoController.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/DirectFrameBufferVideoController.hpp new file mode 100644 index 00000000..ecc67eca --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/DirectFrameBufferVideoController.hpp @@ -0,0 +1,356 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TOUCHGFX_DIRECTFRAMEBUFFERVIDEOCONTROLLER_HPP +#define TOUCHGFX_DIRECTFRAMEBUFFERVIDEOCONTROLLER_HPP + +#include +#include +#include +#include + +/** + * Strategy: + * Decode directly into the framebuffer in draw. + * Tick will decide if we are going to a new frame. + */ +template +class DirectFrameBufferVideoController : public touchgfx::VideoController +{ +public: + DirectFrameBufferVideoController() + : VideoController(), allowSkipFrames(true) + { + assert((no_streams > 0) && "Video: Number of streams zero!"); + + // Clear arrays + memset(mjpegDecoders, 0, sizeof(mjpegDecoders)); + } + + Handle registerVideoWidget(touchgfx::VideoWidget& widget) + { + // Find stream handle for Widget + Handle handle = getFreeHandle(); + + streams[handle].isActive = true; + + //Set Widget buffer format and address + widget.setVideoBufferFormat(output_format, 0, 0); + widget.setVideoBuffer((uint8_t*)0); + + return handle; + } + + void unregisterVideoWidget(const Handle handle) + { + streams[handle].isActive = false; + } + + void setFrameRate(const Handle handle, uint32_t ui_frames, uint32_t video_frames) + { + assert(handle < no_streams); + Stream& stream = streams[handle]; + + // Reset counters + stream.frameCount = 0; + stream.tickCount = 0; + + // Save requested frame rate ratio + stream.frame_rate_ticks = ui_frames; + stream.frame_rate_video = video_frames; + } + + void setVideoData(const Handle handle, const uint8_t* movie, const uint32_t length) + { + assert(handle < no_streams); + + // Reset decoder to first frame + mjpegDecoders[handle]->setVideoData(movie, length); + + // Lower flag to show the first frame + Stream& stream = streams[handle]; + stream.frameNumber = mjpegDecoders[handle]->getCurrentFrameNumber(); + stream.doDecodeNextFrame = false; + + // Stop playing + setCommand(handle, PAUSE, 0); + } + + void setVideoData(const Handle handle, touchgfx::VideoDataReader& reader) + { + assert(handle < no_streams); + + // Reset decoder to first frame + mjpegDecoders[handle]->setVideoData(reader); + + // Lower flag to show the first frame + Stream& stream = streams[handle]; + stream.frameNumber = mjpegDecoders[handle]->getCurrentFrameNumber(); + stream.doDecodeNextFrame = false; + + // Stop playing + setCommand(handle, PAUSE, 0); + } + + void setCommand(const Handle handle, Command cmd, uint32_t param) + { + assert(handle < no_streams); + Stream& stream = streams[handle]; + + switch (cmd) + { + case PLAY: + // Cannot Play without movie + if (mjpegDecoders[handle]->hasVideo()) + { + stream.isPlaying = true; + stream.isShowingOneFrame = false; + // Reset counters + stream.frameCount = 0; + stream.tickCount = 0; + // If non-repeating video stopped at the end, kick to next frame + if (!stream.repeat) + { + MJPEGDecoder* const decoder = mjpegDecoders[handle]; + if (decoder->getCurrentFrameNumber() == decoder->getNumberOfFrames()) + { + decoder->gotoNextFrame(); + } + } + } + break; + case PAUSE: + stream.isPlaying = false; + stream.isShowingOneFrame = false; + break; + case SEEK: + stream.seek_to_frame = param; + // Reset counters + stream.frameCount = 0; + stream.tickCount = 0; + break; + case SHOW: + stream.seek_to_frame = param; + stream.isShowingOneFrame = true; + stream.doDecodeNextFrame = true; + // Reset counters + stream.frameCount = 0; + stream.tickCount = 0; + break; + case STOP: + stream.isPlaying = false; + stream.isShowingOneFrame = false; + stream.seek_to_frame = 1; + // Reset counters + stream.frameCount = 0; + stream.tickCount = 0; + break; + case SET_REPEAT: + stream.repeat = (param > 0); + break; + } + } + + bool updateFrame(const Handle handle, touchgfx::VideoWidget& widget) + { + assert(handle < no_streams); + Stream& stream = streams[handle]; + + bool hasMoreFrames = true; + + if (stream.isPlaying || stream.isShowingOneFrame) + { + // Increase tickCount + stream.tickCount+=HAL::getInstance()->getLCDRefreshCount(); + + // Lower flag + stream.isShowingOneFrame = false; + + if (stream.doDecodeNextFrame) + { + MJPEGDecoder* const decoder = mjpegDecoders[handle]; + // Invalidate to get widget redrawn + widget.invalidate(); + // Seek or increment video frame + if (stream.seek_to_frame > 0) + { + decoder->gotoFrame(stream.seek_to_frame); + hasMoreFrames = (stream.seek_to_frame < decoder->getNumberOfFrames()); + stream.seek_to_frame = 0; + } + else + { + if (stream.skip_frames > 0) + { + decoder->gotoFrame(decoder->getCurrentFrameNumber() + stream.skip_frames); + stream.frameCount += stream.skip_frames; + stream.skip_frames = 0; + } + if (stream.repeat) + { + hasMoreFrames = decoder->gotoNextFrame(); + } + else + { + if (decoder->getCurrentFrameNumber() < decoder->getNumberOfFrames()) + { + hasMoreFrames = decoder->gotoNextFrame(); + } + else + { + stream.isPlaying = false; + hasMoreFrames = false; + } + } + } + + stream.frameNumber = decoder->getCurrentFrameNumber(); + stream.frameCount++; + } + + // Save decode status for next frame + stream.doDecodeNextFrame = decodeForNextTick(stream); + } + + return hasMoreFrames; + } + + void draw(const Handle handle, const touchgfx::Rect& invalidatedArea, const touchgfx::VideoWidget& widget) + { + assert(handle < no_streams); + + if (output_format != Bitmap::RGB565 && output_format != Bitmap::RGB888 && output_format != Bitmap::ARGB8888) + { + return; + } + + if (mjpegDecoders[handle]->hasVideo()) + { + uint8_t* wbuf = (uint8_t*)touchgfx::HAL::getInstance()->lockFrameBuffer(); + touchgfx::Rect absolute = widget.getAbsoluteRect(); + DisplayTransformation::transformDisplayToFrameBuffer(absolute); + + // Get frame buffer pointer to upper left of widget in framebuffer coordinates + switch(output_format) + { + case Bitmap::RGB565: + wbuf += (absolute.x + absolute.y * touchgfx::HAL::FRAME_BUFFER_WIDTH) * 2; + break; + case Bitmap::RGB888: + wbuf += (absolute.x + absolute.y * touchgfx::HAL::FRAME_BUFFER_WIDTH) * 3; + break; + case Bitmap::ARGB8888: + wbuf += (absolute.x + absolute.y * touchgfx::HAL::FRAME_BUFFER_WIDTH) * 4; + break; + default: + break; + } + + // Decode relevant part of the frame to the framebuffer + mjpegDecoders[handle]->decodeFrame(invalidatedArea, wbuf, touchgfx::HAL::FRAME_BUFFER_WIDTH); + // Release frame buffer + touchgfx::HAL::getInstance()->unlockFrameBuffer(); + } + } + + void addDecoder(MJPEGDecoder& decoder, uint32_t index) + { + assert(index < no_streams); + mjpegDecoders[index] = &decoder; + } + + uint32_t getCurrentFrameNumber(const Handle handle) + { + assert(handle < no_streams); + Stream& stream = streams[handle]; + + return stream.frameNumber; + } + + void getVideoInformation(const Handle handle, touchgfx::VideoInformation* data) + { + assert(handle < no_streams); + mjpegDecoders[handle]->getVideoInfo(data); + } + + bool getIsPlaying(const Handle handle) + { + assert(handle < no_streams); + Stream& stream = streams[handle]; + return stream.isPlaying; + } + + void setVideoFrameRateCompensation(const bool allow) + { + allowSkipFrames = allow; + } + +private: + class Stream + { + public: + Stream() + : frameCount(0), frameNumber(0), tickCount(0), + frame_rate_video(0), frame_rate_ticks(0), + seek_to_frame(0), + isActive(false), isPlaying(false), isShowingOneFrame(false), repeat(true), + doDecodeNextFrame(false) + { + } + uint32_t frameCount; // Video frames decoded since play + uint32_t frameNumber; // Video frame showed number + uint32_t tickCount; // UI frames since play + uint32_t frame_rate_video; // Ratio of frames wanted counter + uint32_t frame_rate_ticks; // Ratio of frames wanted divider + uint32_t seek_to_frame; // Requested next frame number + uint32_t skip_frames; // Number of frames to skip to keep frame rate + bool isActive; + bool isPlaying; + bool isShowingOneFrame; + bool repeat; + bool doDecodeNextFrame; // High if we should go to next frame in next tick + }; + + MJPEGDecoder* mjpegDecoders[no_streams]; + Stream streams[no_streams]; + bool allowSkipFrames; + + /** + * Return true, if new video frame should be decoded for the next tick (keep video decode framerate low) + */ + bool decodeForNextTick(Stream& stream) + { + // Running in UI thread + + // Compare tickCount/frameNumber to frame_rate_ticks/frame_rate_video + if ((stream.tickCount * stream.frame_rate_video) > (stream.frame_rate_ticks * stream.frameCount)) + { + if (allowSkipFrames) + { + stream.skip_frames = (stream.tickCount * stream.frame_rate_video - stream.frame_rate_ticks * stream.frameCount) / stream.frame_rate_ticks; + if (stream.skip_frames > 0) + { + stream.skip_frames--; + } + } + return true; + } + return false; + } + + Handle getFreeHandle() + { + for (uint32_t i = 0; i < no_streams; i++) + { + if (streams[i].isActive == false) + { + return static_cast(i); + } + } + + assert(0 && "Unable to find free video stream handle!"); + return static_cast(0); + } +}; + +#endif // TOUCHGFX_DIRECTFRAMEBUFFERVIDEOCONTROLLER_HPP \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/MJPEGDecoder.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/MJPEGDecoder.hpp new file mode 100644 index 00000000..e367f7dd --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/MJPEGDecoder.hpp @@ -0,0 +1,75 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TOUCHGFX_MJPEGDECODER_HPP +#define TOUCHGFX_MJPEGDECODER_HPP + +#include +#include + +class MJPEGDecoder +{ +public: + virtual ~MJPEGDecoder() + { + } + + //Set video data for the decoder + virtual void setVideoData(const uint8_t* movie, const uint32_t length) = 0; + + //Set video data for the decoder + virtual void setVideoData(touchgfx::VideoDataReader& reader) = 0; + + /** + * Check if MJPEGDecoder has a video. + * + * @return Returns true if the MJPEGDecoder has a video. + */ + virtual bool hasVideo() = 0; + + //Increment position to next frame and decode and convert to RGB + virtual bool decodeNextFrame(uint8_t* buffer, uint16_t width, uint16_t height, uint32_t stride) = 0; + + //Increment position to next frame and decode. Used with decodeFrame. + virtual bool gotoNextFrame() = 0; + + //Decode part of the current frame, framebuffer is locked, area is drawn relative to frameBuffer + virtual bool decodeFrame(const touchgfx::Rect& area, uint8_t* frameBuffer, uint32_t framebufferStride) = 0; + + //Decode thumbnail, assumes buffer stride is width + virtual bool decodeThumbnail(uint32_t frameno, uint8_t* buffer, uint16_t width, uint16_t height) = 0; + + //Set current frame number + virtual void gotoFrame(uint32_t frameno) = 0; + + //Get current frame number + virtual uint32_t getCurrentFrameNumber() const = 0; + + //Get number of frames in video + virtual uint32_t getNumberOfFrames() = 0; + + //Read video information + virtual void getVideoInfo(touchgfx::VideoInformation* data) = 0; + + enum AVIErrors + { + AVI_NO_ERROR, + AVI_NO_BUFFERS, + AVI_NO_FILE, + AVI_ERROR_NOT_RIFF, + AVI_ERROR_AVI_HEADER_NOT_FOUND, + AVI_ERROR_AVI_LIST_NOT_FOUND, + AVI_ERROR_AVI_HDRL_NOT_FOUND, + AVI_ERROR_AVI_AVIH_NOT_FOUND, + AVI_ERROR_AVI_HEADER_TO_SHORT, //not full header provided + AVI_ERROR_FILE_BUFFER_TO_SMALL, + AVI_ERROR_MOVI_NOT_FOUND, + AVI_ERROR_IDX1_NOT_FOUND, + AVI_ERROR_FRAMENO_TO_HIGH, + AVI_ERROR_EOF_REACHED + }; + + AVIErrors virtual getLastError() = 0; +}; + +#endif // TOUCHGFX_MJPEGDECODER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/SoftwareMJPEGDecoder.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/SoftwareMJPEGDecoder.hpp new file mode 100644 index 00000000..d18831d4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/include/simulator/video/SoftwareMJPEGDecoder.hpp @@ -0,0 +1,73 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef TOUCHGFX_SOFTWAREMJPEGDECODER_HPP +#define TOUCHGFX_SOFTWAREMJPEGDECODER_HPP + +#include + +class SoftwareMJPEGDecoder : public MJPEGDecoder +{ +public: + SoftwareMJPEGDecoder(uint8_t* linebuffer); + + virtual void setVideoData(const uint8_t* movie, const uint32_t length); + + virtual void setVideoData(touchgfx::VideoDataReader& reader); + + virtual bool hasVideo(); + + virtual bool decodeNextFrame(uint8_t* frameBuffer, uint16_t width, uint16_t height, uint32_t framebuffer_width); + + virtual bool gotoNextFrame(); + + virtual bool decodeFrame(const touchgfx::Rect& area, uint8_t* frameBuffer, uint32_t framebuffer_width); + + virtual bool decodeThumbnail(uint32_t frameno, uint8_t* buffer, uint16_t width, uint16_t height); + + virtual void gotoFrame(uint32_t frameno); + + virtual uint32_t getCurrentFrameNumber() const + { + return frameNumber; + } + + virtual uint32_t getNumberOfFrames(); + + virtual void getVideoInfo(touchgfx::VideoInformation* data); + + void setAVIFileBuffer(uint8_t* buffer, uint32_t size) + { + aviBuffer = buffer, aviBufferLength = size; + } + + AVIErrors getLastError() + { + return lastError; + } + +private: + void readVideoHeader(); + void decodeMJPEGFrame(const uint8_t* const mjpgdata, const uint32_t length, uint8_t* buffer, uint16_t width, uint16_t height, uint32_t stride); + int compare(const uint32_t offset, const char* str, uint32_t num); + uint32_t getU32(const uint32_t offset); + uint32_t getU16(const uint32_t offset); + const uint8_t* readData(uint32_t offset, uint32_t length); + + touchgfx::VideoInformation videoInfo; + uint32_t frameNumber; + uint32_t currentMovieOffset; + uint32_t indexOffset; + uint32_t firstFrameOffset; + uint32_t lastFrameEnd; + uint32_t movieLength; + const uint8_t* movieData; + touchgfx::VideoDataReader* reader; + uint8_t* lineBuffer; + uint8_t* aviBuffer; + uint32_t aviBufferLength; + uint32_t aviBufferStartOffset; + AVIErrors lastError; +}; + +#endif // TOUCHGFX_SOFTWAREMJPEGDECODER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx.props b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx.props new file mode 100644 index 00000000..a90a8530 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx.props @@ -0,0 +1,31 @@ + + + + + + true + + + PATH=$(TouchGFXReleasePath)\lib\sdl\win32 + + + + $(ApplicationRoot)\gui\include;$(ApplicationRoot)\generated\images\include;$(ApplicationRoot)\generated\bitmaps\include;$(ApplicationRoot)\generated\fonts\include;$(ApplicationRoot)\generated\texts\include;$(ApplicationRoot)\generated\videos\include;$(ApplicationRoot)\generated\gui_generated\include;$(ApplicationRoot)\generated\simulator\include;$(TouchGFXReleasePath)\framework\common\include;$(TouchGFXReleasePath)\framework\mvp\include;$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl\vendor\win32;$(TouchGFXReleasePath)\framework\platform\hal\simulator\sdl\3rdparty\sdl\include\win32;$(TouchGFXReleasePath)\3rdparty\libjpeg\include;$(TouchGFXReleasePath)\framework\include + $(UseBPPOption) + SIMULATOR;_ITERATOR_DEBUG_LEVEL=0 + 4355 + + + + + $(TouchGFXReleasePath)\lib\sdl\win32\SDL.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDLmain.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDL_image.lib;$(TouchGFXReleasePath)\3rdparty\libjpeg\lib\win32\libjpeg-8.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset)_debug.lib;user32.lib;shell32.lib + /NODEFAULTLIB:msvcrt.lib + + + + + $(TouchGFXReleasePath)\lib\sdl\win32\SDL.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDLmain.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDL_image.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset).lib;user32.lib;shell32.lib + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_prebuild.targets b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_prebuild.targets new file mode 100644 index 00000000..9b8b27c3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_prebuild.targets @@ -0,0 +1,86 @@ + + + + + + + + + + + + /DUSE_BPP=$(UseBPP) + + + + /D$(LCD) + + + + + + + $(TouchGFXReleasePath)\..\env + $(TouchGFXEnvPath) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_sdl2.props b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_sdl2.props new file mode 100644 index 00000000..0815193e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/msvs/touchgfx_sdl2.props @@ -0,0 +1,29 @@ + + + + + + true + + + PATH=$(TouchGFXReleasePath)\lib\sdl2\win32 + + + + $(ApplicationRoot)\gui\include;$(ApplicationRoot)\generated\images\include;$(ApplicationRoot)\generated\bitmaps\include;$(ApplicationRoot)\generated\fonts\include;$(ApplicationRoot)\generated\texts\include;$(ApplicationRoot)\generated\videos\include;$(ApplicationRoot)\generated\gui_generated\include;$(ApplicationRoot)\generated\simulator\include;$(TouchGFXReleasePath)\framework\common\include;$(TouchGFXReleasePath)\framework\mvp\include;$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl2\vendor;$(TouchGFXReleasePath)\3rdparty\libjpeg\include;$(TouchGFXReleasePath)\framework\include + $(UseBPPOption) + SIMULATOR;_ITERATOR_DEBUG_LEVEL=0 + 4355 + + + + + $(TouchGFXReleasePath)\lib\sdl2\win32\SDL2.lib;$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2_image.lib;$(TouchGFXReleasePath)\3rdparty\libjpeg\lib\win32\libjpeg-8.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset)_debug.lib;user32.lib;shell32.lib /NODEFAULTLIB:msvcrt.lib + + + + + $(TouchGFXReleasePath)\lib\sdl2\win32\SDL2.lib;$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2_image.lib;$(TouchGFXReleasePath)\3rdparty\libjpeg\lib\win32\libjpeg-8.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset).lib;user32.lib;shell32.lib + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/mainBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/mainBase.cpp new file mode 100644 index 00000000..a4528cd0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/mainBase.cpp @@ -0,0 +1,29 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +#define fopen_s(pFile, filename, mode) (((*(pFile)) = fopen((filename), (mode))) == NULL) +#endif +touchgfx::LCD8bpp_ABGR2222 lcd; + +void setupSimulator(int argc, char** argv, touchgfx::HAL& hal) +{ + // Simulate hardware running at 60Hz generating a vsync every 16.6667 ms + static_cast(hal).setVsyncInterval(16.6667f); + static_cast(hal).setWindowTitle("WorkoutGUI"); + + // Initialize SDL + bool sdl_init_result = static_cast(hal).sdl_init(argc, argv); + assert(sdl_init_result && "Error during SDL initialization"); +} + +touchgfx::LCD& setupLCD() +{ + return lcd; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/video/SoftwareMJPEGDecoder.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/video/SoftwareMJPEGDecoder.cpp new file mode 100644 index 00000000..183cb4a2 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/src/video/SoftwareMJPEGDecoder.cpp @@ -0,0 +1,619 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include +#include + +#define VIDEO_DECODE_FORMAT 8 + +namespace +{ +struct JPEG_RGB +{ + uint8_t B; + uint8_t G; + uint8_t R; +}; +} // namespace + +SoftwareMJPEGDecoder::SoftwareMJPEGDecoder(uint8_t* buffer) + : frameNumber(0), currentMovieOffset(0), indexOffset(0), firstFrameOffset(0), lastFrameEnd(0), movieLength(0), movieData(0), + reader(0), lineBuffer(buffer), aviBuffer(0), aviBufferLength(0), aviBufferStartOffset(0), lastError(AVI_NO_ERROR) +{ + //clear video info + videoInfo.ms_between_frames = 0; + videoInfo.number_of_frames = 0; + videoInfo.frame_width = 0; + videoInfo.frame_height = 0; +} + +int SoftwareMJPEGDecoder::compare(const uint32_t offset, const char* str, uint32_t num) +{ + const char* src; + if (reader != 0) + { + // Assuming data is in buffer! + src = reinterpret_cast(aviBuffer + (offset - aviBufferStartOffset)); + } + else + { + src = (const char*)movieData + offset; + } + return strncmp(src, str, num); +} + +inline uint32_t SoftwareMJPEGDecoder::getU32(const uint32_t offset) +{ + if (reader != 0) + { + // Assuming data is in buffer! + const uint32_t index = offset - aviBufferStartOffset; + return aviBuffer[index + 0] | (aviBuffer[index + 1] << 8) | (aviBuffer[index + 2] << 16) | (aviBuffer[index + 3] << 24); + } + else + { + const uint8_t* const d = movieData + offset; + return d[0] | (d[1] << 8) | (d[2] << 16) | (d[3] << 24); + } +} + +inline uint32_t SoftwareMJPEGDecoder::getU16(const uint32_t offset) +{ + if (reader != 0) + { + // Assuming data is in buffer! + const uint32_t index = offset - aviBufferStartOffset; + return aviBuffer[index + 0] | (aviBuffer[index + 1] << 8); + } + else + { + const uint8_t* const d = movieData + offset; + return d[0] | (d[1] << 8); + } +} + +const uint8_t* SoftwareMJPEGDecoder::readData(uint32_t offset, uint32_t length) +{ + if (reader != 0) + { + if (length > aviBufferLength) + { + lastError = AVI_ERROR_FILE_BUFFER_TO_SMALL; + assert(!"Buffer to small"); + } + + reader->seek(offset); + if (!reader->readData(aviBuffer, length)) + { + lastError = AVI_ERROR_EOF_REACHED; + } + + aviBufferStartOffset = offset; + return aviBuffer; + } + + return movieData + offset; +} + +bool SoftwareMJPEGDecoder::decodeNextFrame(uint8_t* buffer, uint16_t buffer_width, uint16_t buffer_height, uint32_t buffer_stride) +{ + assert((frameNumber > 0) && "SoftwareMJPEGDecoder decoding without frame data!"); + + //find next frame and decode it + readData(currentMovieOffset, 8); + uint32_t streamNo = getU16(currentMovieOffset); + uint32_t chunkType = getU16(currentMovieOffset + 2); + uint32_t chunkSize = getU32(currentMovieOffset + 4); + const uint16_t STREAM0 = 0x3030; + const uint16_t TYPEDC = 0x6364; + + bool isCurrentFrameLast; + //play frame if we have it all + if (currentMovieOffset + 8 + chunkSize < movieLength) + { + if (streamNo == STREAM0 && chunkType == TYPEDC && chunkSize > 0) + { + currentMovieOffset += 8; + //decode frame + const uint8_t* chunk = readData(currentMovieOffset, chunkSize); + decodeMJPEGFrame(chunk, chunkSize, buffer, buffer_width, buffer_height, buffer_stride); + frameNumber++; + } + + isCurrentFrameLast = false; + + // Advance to next frame + currentMovieOffset += chunkSize; + if (chunkSize == 0) // Skip empty frame + { + currentMovieOffset += 8; + } + currentMovieOffset = (currentMovieOffset + 1) & 0xFFFFFFFE; //pad to next word + + if (currentMovieOffset == lastFrameEnd) + { + frameNumber = 1; + currentMovieOffset = firstFrameOffset; //start over + isCurrentFrameLast = true; + } + } + else + { + frameNumber = 1; + currentMovieOffset = firstFrameOffset; //start over + isCurrentFrameLast = true; + } + return !isCurrentFrameLast; +} + +bool SoftwareMJPEGDecoder::gotoNextFrame() +{ + assert((frameNumber > 0) && "SoftwareMJPEGDecoder decoding without frame data!"); + + readData(currentMovieOffset, 8); + uint32_t chunkSize = getU32(currentMovieOffset + 4); + + //increment until next video frame + while (currentMovieOffset + 8 + chunkSize < movieLength) + { + //increment one frame + currentMovieOffset += chunkSize + 8; + currentMovieOffset = (currentMovieOffset + 1) & 0xFFFFFFFE; //pad to next word + frameNumber++; + + //next chunk + readData(currentMovieOffset, 8); + //check it is a video frame + uint32_t streamNo = getU16(currentMovieOffset); + uint32_t chunkType = getU16(currentMovieOffset + 2); + chunkSize = getU32(currentMovieOffset + 4); + const uint16_t STREAM0 = 0x3030; + const uint16_t TYPEDC = 0x6364; + + if (streamNo == STREAM0 && chunkType == TYPEDC && chunkSize > 0) + { + // Found next frame + return true; + } + } + + //skip back to first frame + frameNumber = 1; + currentMovieOffset = firstFrameOffset; //start over + return false; +} + +void SoftwareMJPEGDecoder::setVideoData(const uint8_t* movie, const uint32_t length) +{ + movieData = movie; + movieLength = length; + reader = 0; //not using reader + + readVideoHeader(); +} + +void SoftwareMJPEGDecoder::setVideoData(touchgfx::VideoDataReader& reader) +{ + this->reader = &reader; + movieData = 0; + movieLength = reader.getDataLength(); + + readVideoHeader(); +} + +bool SoftwareMJPEGDecoder::hasVideo() +{ + return (reader != 0) || (movieData != 0); +} + +void SoftwareMJPEGDecoder::readVideoHeader() +{ + // Start from the start + currentMovieOffset = 0; + lastError = AVI_NO_ERROR; + + // Make header available in buffer + readData(0, 72); + + // Decode the movie header to find first frame + // Must be RIFF file + if (compare(currentMovieOffset, "RIFF", 4)) + { + lastError = AVI_ERROR_NOT_RIFF; + assert(!"RIFF header not found"); + } + + //skip fourcc and length + currentMovieOffset += 8; + if (compare(currentMovieOffset, "AVI ", 4)) + { + lastError = AVI_ERROR_AVI_HEADER_NOT_FOUND; + assert(!"AVI header not found"); + } + + currentMovieOffset += 4; + if (compare(currentMovieOffset, "LIST", 4)) + { + lastError = AVI_ERROR_AVI_LIST_NOT_FOUND; + assert(!"AVI LIST not found"); + } + + //save AVI List info + const uint32_t aviListSize = getU32(currentMovieOffset + 4); + const uint32_t aviListOffset = currentMovieOffset; + assert(aviListSize); + + //look into header to find frame rate + bool foundFrame = true; + uint32_t offset = currentMovieOffset + 8; + if (compare(offset, "hdrl", 4)) + { + lastError = AVI_ERROR_AVI_HDRL_NOT_FOUND; + foundFrame = false; + } + + offset += 4; + if (compare(offset, "avih", 4)) + { + lastError = AVI_ERROR_AVI_AVIH_NOT_FOUND; + foundFrame = false; + } + + if (foundFrame) + { + offset += 8; //skip fourcc and cb in AVIMAINHEADER + videoInfo.ms_between_frames = getU32(offset) / 1000; + videoInfo.number_of_frames = getU32(offset + 16); + videoInfo.frame_width = getU32(offset + 32); + videoInfo.frame_height = getU32(offset + 36); + } + //skip rest of AVI header, start from end of AVI List + + //look for list with 'movi' header + uint32_t listOffset = aviListOffset + aviListSize + 8; + readData(listOffset, 12); + while (compare(listOffset + 8, "movi", 4) && (lastError == AVI_NO_ERROR) && listOffset < movieLength) + { + const uint32_t listSize = getU32(listOffset + 4) + 8; + listOffset += listSize; + readData(listOffset, 12); + } + + if (lastError != AVI_NO_ERROR) + { + lastError = AVI_ERROR_MOVI_NOT_FOUND; + return; + } + + //save first frame and end of last frame + currentMovieOffset = listOffset + 8 + 4; //skip LIST and 'movi' + lastFrameEnd = listOffset + 8 + getU32(listOffset + 4); + + //find idx + const uint32_t listSize = getU32(listOffset + 4) + 8; + listOffset += listSize; + readData(listOffset, 4); + if (!compare(listOffset, "idx1", 4)) + { + indexOffset = listOffset; + } + else + { + lastError = AVI_ERROR_IDX1_NOT_FOUND; + return; + } + + //start on first frame + frameNumber = 1; //next frame number is 1 + firstFrameOffset = currentMovieOffset; +} + +#if VIDEO_DECODE_FORMAT == 16 || VIDEO_DECODE_FORMAT == 24 || VIDEO_DECODE_FORMAT == 32 +void SoftwareMJPEGDecoder::decodeMJPEGFrame(const uint8_t* const mjpgdata, const uint32_t length, uint8_t* outputBuffer, uint16_t bufferWidth, uint16_t bufferHeight, uint32_t bufferStride) +{ + if (length == 0) + { + return; + } + + if (outputBuffer && lineBuffer) //only decode if buffers are assigned. + { + /* This struct contains the JPEG decompression parameters */ + struct jpeg_decompress_struct cinfo; + /* This struct represents a JPEG error handler */ + struct jpeg_error_mgr jerr; + + JSAMPROW lines[2] = { lineBuffer, 0 }; /* Output row buffer */ + + /* Step 1: allocate and initialize JPEG decompression object */ + cinfo.err = jpeg_std_error(&jerr); + + /* Initialize the JPEG decompression object */ + jpeg_create_decompress(&cinfo); + + //jpeg_stdio_src (&cinfo, file); + jpeg_mem_src(&cinfo, const_cast(mjpgdata), length); + + /* Step 3: read image parameters with jpeg_read_header() */ + jpeg_read_header(&cinfo, TRUE); + + /* Step 4: set parameters for decompression */ + cinfo.dct_method = JDCT_FLOAT; + + /* Step 5: start decompressor */ + jpeg_start_decompress(&cinfo); + + //restrict to minimum of movie and output buffer size + const uint32_t width = MIN(bufferWidth, cinfo.image_width); + const uint32_t height = MIN(bufferHeight, cinfo.output_height); + +#if VIDEO_DECODE_FORMAT == 16 + uint16_t* lineptr = reinterpret_cast(outputBuffer); +#elif VIDEO_DECODE_FORMAT == 24 + uint8_t* lineptr = outputBuffer; +#else + uint32_t* lineptr = reinterpret_cast(outputBuffer); +#endif + while (cinfo.output_scanline < height) + { + (void)jpeg_read_scanlines(&cinfo, lines, 1); +#if VIDEO_DECODE_FORMAT == 16 + JPEG_RGB* RGB_matrix = (JPEG_RGB*)lineBuffer; + JPEG_RGB* const RGB_end = RGB_matrix + width; + while (RGB_matrix < RGB_end) + { + const uint16_t pix = ((RGB_matrix->R & 0xF8) << 8) | ((RGB_matrix->G & 0xFC) << 3) | ((RGB_matrix->B & 0xF8) >> 3); + *lineptr++ = pix; + RGB_matrix++; + } + lineptr = (uint16_t*)((uint8_t*)lineptr + bufferStride - width * 2); //move to next line +#elif VIDEO_DECODE_FORMAT == 24 + memcpy(lineptr, lineBuffer, width * 3); + lineptr += bufferStride; //move to next line +#else + JPEG_RGB* RGB_matrix = (JPEG_RGB*)lineBuffer; + JPEG_RGB* const RGB_end = RGB_matrix + width; + while (RGB_matrix < RGB_end) + { + const uint32_t pix = (0xFF << 24) | (RGB_matrix->R << 16) | (RGB_matrix->G << 8) | (RGB_matrix->B); + *lineptr++ = pix; + RGB_matrix++; + } + lineptr = (uint32_t*)((uint8_t*)lineptr + bufferStride - width * 4); //move to next line +#endif + } + +#ifdef SIMULATOR + cinfo.output_scanline = cinfo.output_height; +#endif + /* Step 6: Finish decompression */ + jpeg_finish_decompress(&cinfo); + + /* Step 7: Release JPEG decompression object */ + jpeg_destroy_decompress(&cinfo); + } +} + +bool SoftwareMJPEGDecoder::decodeFrame(const touchgfx::Rect& area, uint8_t* frameBuffer, uint32_t framebuffer_width) +{ + // Assuming that chunk is available and streamNo and chunkType is correct. + // Check by gotoNextFrame + + readData(currentMovieOffset, 8); + const uint32_t length = getU32(currentMovieOffset + 4); + + // Ensure whole frame is read + const uint8_t* mjpgdata = readData(currentMovieOffset + 8, length); + + assert(lineBuffer && "LineBuffer must be assigned prior to decoding directly to framebuffer"); + + /* This struct contains the JPEG decompression parameters */ + struct jpeg_decompress_struct cinfo; + /* This struct represents a JPEG error handler */ + struct jpeg_error_mgr jerr; + + JSAMPROW lines[2] = { lineBuffer, 0 }; /* Output row buffer */ + + /* Step 1: allocate and initialize JPEG decompression object */ + cinfo.err = jpeg_std_error(&jerr); + + /* Initialize the JPEG decompression object */ + jpeg_create_decompress(&cinfo); + + //jpeg_stdio_src (&cinfo, file); + jpeg_mem_src(&cinfo, const_cast(mjpgdata), length); + + /* Step 3: read image parameters with jpeg_read_header() */ + jpeg_read_header(&cinfo, TRUE); + + /* Step 4: set parameters for decompression */ + cinfo.dct_method = JDCT_FLOAT; + + /* Step 5: start decompressor */ + jpeg_start_decompress(&cinfo); + + //restrict to minimum of movie and output buffer size + const uint32_t startY = area.y; + + //scan down to startY + while (cinfo.output_scanline < startY) + { + (void)jpeg_read_scanlines(&cinfo, lines, 1); + } + + const uint32_t startX = area.x; + const uint32_t endX = MIN((uint32_t)area.right(), cinfo.image_width); + +#if VIDEO_DECODE_FORMAT == 16 + uint16_t* lineptr = reinterpret_cast(frameBuffer); + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + lineptr += framebuffer_width * startY; + } + else + { + lineptr += framebuffer_width * (cinfo.image_width - 1); + lineptr += startY; + } +#elif VIDEO_DECODE_FORMAT == 24 + uint8_t* lineptr = frameBuffer; + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + lineptr += framebuffer_width * 3 * startY; + } + else + { + lineptr += framebuffer_width * (cinfo.image_width - 1) * 3; + lineptr += startY * 3; + } +#else + uint32_t* lineptr = reinterpret_cast(frameBuffer); + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + lineptr += framebuffer_width * startY; + } + else + { + lineptr += framebuffer_width * (cinfo.image_width - 1); + lineptr += startY; + } +#endif + const uint32_t endY = MIN((uint32_t)area.bottom(), cinfo.output_height); + + //scan relevant part + while (cinfo.output_scanline < endY) + { + (void)jpeg_read_scanlines(&cinfo, lines, 1); +#if VIDEO_DECODE_FORMAT == 16 + JPEG_RGB* RGB_matrix = (JPEG_RGB*)lineBuffer; + //loop row RGB888->RGB565 for required line part + for (uint32_t counter = startX; counter < endX; counter++) + { + const uint16_t pix = ((RGB_matrix[counter].R & 0xF8) << 8) | ((RGB_matrix[counter].G & 0xFC) << 3) | ((RGB_matrix[counter].B & 0xF8) >> 3); + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + *(lineptr + counter) = pix; + } + else + { + *(lineptr - counter * framebuffer_width) = pix; + } + } + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + lineptr += framebuffer_width; //move to next line + } + else + { + lineptr++; //move to next line + } +#elif VIDEO_DECODE_FORMAT == 24 + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + memcpy(lineptr + startX * 3, lineBuffer + startX * 3, (endX - startX) * 3); + lineptr += framebuffer_width * 3; //move to next line + } + else + { + JPEG_RGB* RGB_matrix = (JPEG_RGB*)lineBuffer; + //loop row RGB888->RGB888 for required line part + for (uint32_t counter = startX; counter < endX; counter++) + { + *(lineptr - counter * framebuffer_width * 3) = RGB_matrix[counter].B; + *(lineptr - counter * framebuffer_width * 3 + 1) = RGB_matrix[counter].G; + *(lineptr - counter * framebuffer_width * 3 + 2) = RGB_matrix[counter].R; + } + lineptr += 3; //move to next line + } +#else + JPEG_RGB* RGB_matrix = (JPEG_RGB*)lineBuffer; + //loop row RGB888->ARGB8888 for required line part + for (uint32_t counter = startX; counter < endX; counter++) + { + const uint32_t pix = (0xFF << 24) | (RGB_matrix[counter].R << 16) | (RGB_matrix[counter].G << 8) | RGB_matrix[counter].B; + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + *(lineptr + counter) = pix; + } + else + { + *(lineptr - counter * framebuffer_width) = pix; + } + } + if (touchgfx::HAL::DISPLAY_ROTATION == touchgfx::rotate0) + { + lineptr += framebuffer_width; //move to next line + } + else + { + lineptr++; //move to next line + } +#endif + } + +#ifdef SIMULATOR + cinfo.output_scanline = cinfo.output_height; +#endif + + /* Step 6: Finish decompression */ + jpeg_finish_decompress(&cinfo); + + /* Step 7: Release JPEG decompression object */ + jpeg_destroy_decompress(&cinfo); + + return true; +} +#else +void SoftwareMJPEGDecoder::decodeMJPEGFrame(const uint8_t* const, const uint32_t, uint8_t*, uint16_t, uint16_t, uint32_t) +{ +} +bool SoftwareMJPEGDecoder::decodeFrame(const touchgfx::Rect&, uint8_t*, uint32_t) +{ + return true; +} +#endif // VIDEO_DECODE_FORMAT == 16 || VIDEO_DECODE_FORMAT == 24 || VIDEO_DECODE_FORMAT == 32 + +bool SoftwareMJPEGDecoder::decodeThumbnail(uint32_t frameno, uint8_t* buffer, uint16_t width, uint16_t height) +{ + assert(0); + return false; +} + +void SoftwareMJPEGDecoder::gotoFrame(uint32_t frameNumber) +{ + if (frameNumber == 0) + { + frameNumber = 1; + } + + if (frameNumber > getNumberOfFrames()) + { + frameNumber = getNumberOfFrames(); + } + + uint32_t offset = indexOffset + 8 + (frameNumber - 1) * 16; + + readData(offset, 16); + + currentMovieOffset = getU32(offset + 8) + firstFrameOffset - 4; + this->frameNumber = frameNumber; +} + +uint32_t SoftwareMJPEGDecoder::getNumberOfFrames() +{ + return videoInfo.number_of_frames; +} + +void SoftwareMJPEGDecoder::getVideoInfo(touchgfx::VideoInformation* data) +{ + *data = videoInfo; + // For unsupported decode formats, set video dimension to 0x0, to avoid drawing anything +#if VIDEO_DECODE_FORMAT == 16 || VIDEO_DECODE_FORMAT == 24 || VIDEO_DECODE_FORMAT == 32 +#else + data->frame_width = 0; + data->frame_height = 0; +#endif +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/touchgfx.ico b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/simulator/touchgfx.ico new file mode 100644 index 0000000000000000000000000000000000000000..89a1888e2523e453aab7571284118c55a01752b8 GIT binary patch literal 384440 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

    {Rh<&XdD|g$k>sa5B=6g~uE9gxk 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

    Fh7_dSYzq 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

    <%?MZ!eI-_4I?5rQrC*`2$JhDHz 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 literal 0 HcmV?d00001 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp new file mode 100644 index 00000000..a405e449 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp @@ -0,0 +1,149 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_TEXTKEYSANDLANGUAGES_HPP +#define TOUCHGFX_TEXTKEYSANDLANGUAGES_HPP + +enum LANGUAGES +{ + GB, + NUMBER_OF_LANGUAGES +}; + +enum TEXTS +{ + T_RESOURCEID13, + T_RESOURCEID12, + T_RESOURCEID11, + T_RESOURCEID10, + T_RESOURCEID9, + T_RESOURCEID7, + T_RESOURCEID6, + T_RESOURCEID5, + T_RESOURCEID4, + T_RESOURCEID3, + T_RESOURCEID2, + T_RESOURCEID1, + T_TMP_REGULAR_14, + T_TMP_REGULAR_14_L, + T_TMP_REGULAR_14_R, + T_TMP_REGULAR_16, + T_TMP_REGULAR_16_L, + T_TMP_REGULAR_16_R, + T_TMP_REGULAR_18, + T_TMP_REGULAR_18_L, + T_TMP_REGULAR_18_R, + T_TMP_MEDIUM_10, + T_TMP_MEDIUM_10_L, + T_TMP_MEDIUM_10_R, + T_TMP_MEDIUM_18, + T_TMP_MEDIUM_18_L, + T_TMP_MEDIUM_18_R, + T_TMP_MEDIUM_25, + T_TMP_MEDIUM_25_L, + T_TMP_MEDIUM_25_R, + T_TMP_MEDIUM_50, + T_TMP_MEDIUM_50_L, + T_TMP_MEDIUM_50_R, + T_TMP_SEMIBOLD_18, + T_TMP_SEMIBOLD_18_L, + T_TMP_SEMIBOLD_18_R, + T_TMP_SEMIBOLD_20, + T_TMP_SEMIBOLD_20_L, + T_TMP_SEMIBOLD_20_R, + T_TMP_SEMIBOLD_25, + T_TMP_SEMIBOLD_25_L, + T_TMP_SEMIBOLD_25_R, + T_TMP_SEMIBOLD_30, + T_TMP_SEMIBOLD_30_L, + T_TMP_SEMIBOLD_30_R, + T_TMP_SEMIBOLD_35, + T_TMP_SEMIBOLD_35_R, + T_TMP_SEMIBOLD_35_L, + T_TMP_SEMIBOLD_40, + T_TMP_SEMIBOLD_40_L, + T_TMP_SEMIBOLD_40_R, + T_TMP_SEMIBOLD_60, + T_TMP_SEMIBOLD_60_L, + T_TMP_SEMIBOLD_60_R, + T_TMP_ITALIC_18, + T_TMP_ITALIC_18_L, + T_TMP_ITALIC_18_R, + T_TMP_ITALIC_20, + T_TMP_ITALIC_20_L, + T_TMP_ITALIC_20_R, + T_TEXT_APP_NAME_UC, + T_TEXT_TOTAL, + T_TEXT_SUMMARY_UC, + T_TEXT_MAP_UC, + T_TEXT_LAPS_UC, + T_TEXT_HEART_RATE_UC, + T_TEXT_WORKOUT, + T_TEXT_COMPLETED, + T_TEXT_REMAINING, + T_TEXT_REMAINING_LC, + T_TEXT_ELAPSED, + T_TEXT_TIME, + T_TEXT_TIMER, + T_TEXT_TIME_UC, + T_TEXT_SAVED, + T_TEXT_SAVE, + T_TEXT_SETTINGS, + T_TEXT_SETTINGS_UC, + T_TEXT_START, + T_TEXT_LAP_ALERTS, + T_TEXT_LAP_ALERTS_UC, + T_TEXT_PHONE_NOTIF_DOT, + T_TEXT_PHONE_BR_NOTIF_DOT, + T_TEXT_MINUTES_LC, + T_TEXT_MINUTE_LC, + T_TEXT_MIN, + T_TEXT_SEC, + T_TEXT_MILE, + T_TEXT_MILES, + T_TEXT_MI, + T_TEXT_KM, + T_TEXT_M, + T_TEXT_OPEN, + T_TEXT_ON_UC, + T_TEXT_OFF_UC, + T_TEXT_AVG_HR_UC, + T_TEXT_CALORIE_UC, + T_TEXT_MAX_HR_UC, + T_TEXT_AVG_HR, + T_TEXT_AVG_DOT_PACE, + T_TEXT_HR_UC, + T_TEXT_LAP_TIME, + T_TEXT_PERCENT, + T_TEXT_DISCARTED, + T_TEXT_DISCARD, + T_TEXT_RESUME, + T_TEXT_SUMMARY, + T_TEXT_LAP, + T_TEXT_AVG_DOT_HR, + T___SINGLEUSE_Q39K, + T_RESOURCEID8, + T___SINGLEUSE_ICBU, + T___SINGLEUSE_YHFT, + T___SINGLEUSE_WXKL, + T___SINGLEUSE_NOCF, + T___SINGLEUSE_U3YM, + T___SINGLEUSE_ACJE, + T___SINGLEUSE_BOEQ, + T___SINGLEUSE_5T2E, + T___SINGLEUSE_CMV2, + T___SINGLEUSE_FMCS, + T___SINGLEUSE_XTK2, + T___SINGLEUSE_ZJSJ, + T___SINGLEUSE_GAMW, + T___SINGLEUSE_Z0WD, + T___SINGLEUSE_3KKT, + T___SINGLEUSE_HFND, + T___SINGLEUSE_OTQI, + T___SINGLEUSE_8WSQ, + T___SINGLEUSE_4SCV, + T___SINGLEUSE_KERT, + NUMBER_OF_TEXT_KEYS +}; + +#endif // TOUCHGFX_TEXTKEYSANDLANGUAGES_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TypedTextDatabase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TypedTextDatabase.hpp new file mode 100644 index 00000000..0faee811 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TypedTextDatabase.hpp @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#ifndef TOUCHGFX_TYPEDTEXTDATABASE_HPP +#define TOUCHGFX_TYPEDTEXTDATABASE_HPP + +#include +#include + +namespace TypedTextDatabase +{ +class TypedTextData; +const touchgfx::TypedText::TypedTextData* getInstance(touchgfx::LanguageId id); +const touchgfx::TypedText::TypedTextData* getInstance(); +const touchgfx::Font** getFonts(); +const touchgfx::Font* setFont(touchgfx::FontId fontId, const touchgfx::Font*); +void resetFont(touchgfx::FontId fontId); +uint16_t getInstanceSize(); +} // namespace TypedTextDatabase + +#endif // TOUCHGFX_TYPEDTEXTDATABASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp new file mode 100644 index 00000000..bc6130fb --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp @@ -0,0 +1,144 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include + +TEXT_LOCATION_FLASH_PRAGMA +KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE; + +// Remap all strings +TEXT_LOCATION_FLASH_PRAGMA +KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + 168, // T_RESOURCEID13: "New Text" + 163, // T_RESOURCEID12: "Time" + 266, // T_RESOURCEID11: "Avg HR" + 280, // T_RESOURCEID10: "Max HR" + 168, // T_RESOURCEID9: "New Text" + 141, // T_RESOURCEID7: "CALORIES" + 195, // T_RESOURCEID6: "AVG. HR" + 266, // T_RESOURCEID5: "Avg HR" + 26, // T_RESOURCEID4: "Current Lap" + 159, // T_RESOURCEID3: "Lap Time" + 163, // T_RESOURCEID2: "Time" + 150, // T_RESOURCEID1: "Calories" + 446, // T_TMP_REGULAR_14: "<>" + 446, // T_TMP_REGULAR_14_L: "<>" + 446, // T_TMP_REGULAR_14_R: "<>" + 446, // T_TMP_REGULAR_16: "<>" + 446, // T_TMP_REGULAR_16_L: "<>" + 446, // T_TMP_REGULAR_16_R: "<>" + 446, // T_TMP_REGULAR_18: "<>" + 446, // T_TMP_REGULAR_18_L: "<>" + 446, // T_TMP_REGULAR_18_R: "<>" + 446, // T_TMP_MEDIUM_10: "<>" + 446, // T_TMP_MEDIUM_10_L: "<>" + 446, // T_TMP_MEDIUM_10_R: "<>" + 446, // T_TMP_MEDIUM_18: "<>" + 446, // T_TMP_MEDIUM_18_L: "<>" + 446, // T_TMP_MEDIUM_18_R: "<>" + 446, // T_TMP_MEDIUM_25: "<>" + 446, // T_TMP_MEDIUM_25_L: "<>" + 446, // T_TMP_MEDIUM_25_R: "<>" + 446, // T_TMP_MEDIUM_50: "<>" + 446, // T_TMP_MEDIUM_50_L: "<>" + 446, // T_TMP_MEDIUM_50_R: "<>" + 446, // T_TMP_SEMIBOLD_18: "<>" + 446, // T_TMP_SEMIBOLD_18_L: "<>" + 446, // T_TMP_SEMIBOLD_18_R: "<>" + 446, // T_TMP_SEMIBOLD_20: "<>" + 446, // T_TMP_SEMIBOLD_20_L: "<>" + 446, // T_TMP_SEMIBOLD_20_R: "<>" + 446, // T_TMP_SEMIBOLD_25: "<>" + 446, // T_TMP_SEMIBOLD_25_L: "<>" + 446, // T_TMP_SEMIBOLD_25_R: "<>" + 446, // T_TMP_SEMIBOLD_30: "<>" + 446, // T_TMP_SEMIBOLD_30_L: "<>" + 446, // T_TMP_SEMIBOLD_30_R: "<>" + 446, // T_TMP_SEMIBOLD_35: "<>" + 446, // T_TMP_SEMIBOLD_35_R: "<>" + 446, // T_TMP_SEMIBOLD_35_L: "<>" + 446, // T_TMP_SEMIBOLD_40: "<>" + 446, // T_TMP_SEMIBOLD_40_L: "<>" + 446, // T_TMP_SEMIBOLD_40_R: "<>" + 446, // T_TMP_SEMIBOLD_60: "<>" + 446, // T_TMP_SEMIBOLD_60_L: "<>" + 446, // T_TMP_SEMIBOLD_60_R: "<>" + 446, // T_TMP_ITALIC_18: "<>" + 446, // T_TMP_ITALIC_18_L: "<>" + 446, // T_TMP_ITALIC_18_R: "<>" + 446, // T_TMP_ITALIC_20: "<>" + 446, // T_TMP_ITALIC_20_L: "<>" + 446, // T_TMP_ITALIC_20_R: "<>" + 235, // T_TEXT_APP_NAME_UC: "WORKOUT" + 337, // T_TEXT_TOTAL: "Total" + 219, // T_TEXT_SUMMARY_UC: "SUMMARY" + 430, // T_TEXT_MAP_UC: "MAP" + 374, // T_TEXT_LAPS_UC: "LAPS" + 38, // T_TEXT_HEART_RATE_UC: "HEART RATE" + 243, // T_TEXT_WORKOUT: "Workout" + 92, // T_TEXT_COMPLETED: "Completed" + 112, // T_TEXT_REMAINING: "Remaining" + 122, // T_TEXT_REMAINING_LC: "remaining" + 211, // T_TEXT_ELAPSED: "Elapsed" + 163, // T_TEXT_TIME: "Time" + 331, // T_TEXT_TIMER: "Timer" + 384, // T_TEXT_TIME_UC: "TIME" + 319, // T_TEXT_SAVED: "Saved" + 71, // T_TEXT_SAVE: "Save & End" + 186, // T_TEXT_SETTINGS: "Settings" + 177, // T_TEXT_SETTINGS_UC: "SETTINGS" + 325, // T_TEXT_START: "Start" + 60, // T_TEXT_LAP_ALERTS: "Lap Alerts" + 49, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" + 13, // T_TEXT_PHONE_NOTIF_DOT: "Phone Notif." + 0, // T_TEXT_PHONE_BR_NOTIF_DOT: "Phone\nNotif." + 251, // T_TEXT_MINUTES_LC: "minutes" + 294, // T_TEXT_MINUTE_LC: "minute" + 438, // T_TEXT_MIN: "min" + 442, // T_TEXT_SEC: "sec" + 389, // T_TEXT_MILE: "mile" + 343, // T_TEXT_MILES: "miles" + 454, // T_TEXT_MI: "mi" + 451, // T_TEXT_KM: "km" + 452, // T_TEXT_M: "m" + 379, // T_TEXT_OPEN: "Open" + 448, // T_TEXT_ON_UC: "ON" + 434, // T_TEXT_OFF_UC: "OFF" + 259, // T_TEXT_AVG_HR_UC: "AVG HR" + 141, // T_TEXT_CALORIE_UC: "CALORIES" + 273, // T_TEXT_MAX_HR_UC: "MAX HR" + 259, // T_TEXT_AVG_HR: "AVG HR" + 82, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" + 200, // T_TEXT_HR_UC: "HR" + 159, // T_TEXT_LAP_TIME: "Lap Time" + 428, // T_TEXT_PERCENT: "%" + 102, // T_TEXT_DISCARTED: "Discarded" + 203, // T_TEXT_DISCARD: "Discard" + 287, // T_TEXT_RESUME: "Resume" + 227, // T_TEXT_SUMMARY: "Summary" + 34, // T_TEXT_LAP: "Lap" + 195, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 446, // T___SINGLEUSE_Q39K: "<>" + 168, // T_RESOURCEID8: "New Text" + 426, // T___SINGLEUSE_ICBU: "96%" + 307, // T___SINGLEUSE_YHFT: "17:35" + 354, // T___SINGLEUSE_WXKL: "4:27" + 359, // T___SINGLEUSE_NOCF: "5:02" + 418, // T___SINGLEUSE_U3YM: "24." + 414, // T___SINGLEUSE_ACJE: "208" + 402, // T___SINGLEUSE_BOEQ: "128" + 132, // T___SINGLEUSE_5T2E: "10:05:49" + 410, // T___SINGLEUSE_CMV2: "165" + 398, // T___SINGLEUSE_FMCS: "117" + 422, // T___SINGLEUSE_XTK2: "566" + 406, // T___SINGLEUSE_ZJSJ: "133" + 133, // T___SINGLEUSE_GAMW: "0:05:49" + 349, // T___SINGLEUSE_Z0WD: "2.33" + 301, // T___SINGLEUSE_3KKT: "15:37" + 394, // T___SINGLEUSE_HFND: "115" + 369, // T___SINGLEUSE_OTQI: "8:32" + 364, // T___SINGLEUSE_8WSQ: "6:27" + 313, // T___SINGLEUSE_4SCV: "44.44" + 133 // T___SINGLEUSE_KERT: "0:05:49" +}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp new file mode 100644 index 00000000..3a89c13b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp @@ -0,0 +1,191 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include +#include +#include +#include +#include +#include + +uint16_t touchgfx::Font::getStringWidth(const touchgfx::Unicode::UnicodeChar* text, ...) const +{ + va_list pArg; + va_start(pArg, text); + uint16_t width = getStringWidthLTR(TEXT_DIRECTION_LTR, text, pArg); + va_end(pArg); + return width; +} + +uint16_t touchgfx::Font::getStringWidth(touchgfx::TextDirection textDirection, const touchgfx::Unicode::UnicodeChar* text, ...) const +{ + va_list pArg; + va_start(pArg, text); + uint16_t width = getStringWidthLTR(textDirection, text, pArg); + va_end(pArg); + return width; +} + +touchgfx::Unicode::UnicodeChar touchgfx::TextProvider::getNextLigature(TextDirection direction) +{ + if (fontGsubTable && nextCharacters.peekChar()) + { + substituteGlyphs(); + if (nextCharacters.peekChar(1) == 0x093F) // Hindi I-matra + { + nextCharacters.replaceAt1(nextCharacters.peekChar()); + nextCharacters.replaceAt0(0x093F); + } + } + return getNextChar(); +} + +void touchgfx::TextProvider::initializeInternal() +{ + fillInputBuffer(); +} + +void touchgfx::LCD::drawString(touchgfx::Rect widgetArea, const touchgfx::Rect& invalidatedArea, const touchgfx::LCD::StringVisuals& stringVisuals, const touchgfx::Unicode::UnicodeChar* format, ...) +{ + va_list pArg; + va_start(pArg, format); + drawStringLTR(widgetArea, invalidatedArea, stringVisuals, format, pArg); + va_end(pArg); +} + +// Default TypedTextDatabase +extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[]; + +TEXT_LOCATION_FLASH_PRAGMA +KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0xa, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @0 "Phone\nNotif." + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @13 "Phone Notif." + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4c, 0x61, 0x70, 0x0, // @26 "Current Lap" + 0x48, 0x45, 0x41, 0x52, 0x54, 0x20, 0x52, 0x41, 0x54, 0x45, 0x0, // @38 "HEART RATE" + 0x4c, 0x41, 0x50, 0x20, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x0, // @49 "LAP ALERTS" + 0x4c, 0x61, 0x70, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x0, // @60 "Lap Alerts" + 0x53, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x45, 0x6e, 0x64, 0x0, // @71 "Save & End" + 0x41, 0x76, 0x67, 0x2e, 0x20, 0x50, 0x61, 0x63, 0x65, 0x0, // @82 "Avg. Pace" + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0, // @92 "Completed" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x65, 0x64, 0x0, // @102 "Discarded" + 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @112 "Remaining" + 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @122 "remaining" + 0x31, 0x30, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x39, 0x0, // @132 "10:05:49" + 0x43, 0x41, 0x4c, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x0, // @141 "CALORIES" + 0x43, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x0, // @150 "Calories" + 0x4c, 0x61, 0x70, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, // @159 "Lap Time" + 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @168 "New Text" + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @177 "SETTINGS" + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @186 "Settings" + 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @195 "AVG. HR" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @203 "Discard" + 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @211 "Elapsed" + 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @219 "SUMMARY" + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @227 "Summary" + 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @235 "WORKOUT" + 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @243 "Workout" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @251 "minutes" + 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @259 "AVG HR" + 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @266 "Avg HR" + 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @273 "MAX HR" + 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @280 "Max HR" + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @287 "Resume" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @294 "minute" + 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @301 "15:37" + 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @307 "17:35" + 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @313 "44.44" + 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @319 "Saved" + 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @325 "Start" + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @331 "Timer" + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @337 "Total" + 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @343 "miles" + 0x32, 0x2e, 0x33, 0x33, 0x0, // @349 "2.33" + 0x34, 0x3a, 0x32, 0x37, 0x0, // @354 "4:27" + 0x35, 0x3a, 0x30, 0x32, 0x0, // @359 "5:02" + 0x36, 0x3a, 0x32, 0x37, 0x0, // @364 "6:27" + 0x38, 0x3a, 0x33, 0x32, 0x0, // @369 "8:32" + 0x4c, 0x41, 0x50, 0x53, 0x0, // @374 "LAPS" + 0x4f, 0x70, 0x65, 0x6e, 0x0, // @379 "Open" + 0x54, 0x49, 0x4d, 0x45, 0x0, // @384 "TIME" + 0x6d, 0x69, 0x6c, 0x65, 0x0, // @389 "mile" + 0x31, 0x31, 0x35, 0x0, // @394 "115" + 0x31, 0x31, 0x37, 0x0, // @398 "117" + 0x31, 0x32, 0x38, 0x0, // @402 "128" + 0x31, 0x33, 0x33, 0x0, // @406 "133" + 0x31, 0x36, 0x35, 0x0, // @410 "165" + 0x32, 0x30, 0x38, 0x0, // @414 "208" + 0x32, 0x34, 0x2e, 0x0, // @418 "24." + 0x35, 0x36, 0x36, 0x0, // @422 "566" + 0x39, 0x36, 0x25, 0x0, // @426 "96%" + 0x4d, 0x41, 0x50, 0x0, // @430 "MAP" + 0x4f, 0x46, 0x46, 0x0, // @434 "OFF" + 0x6d, 0x69, 0x6e, 0x0, // @438 "min" + 0x73, 0x65, 0x63, 0x0, // @442 "sec" + 0x2, 0x0, // @446 "<>" + 0x4f, 0x4e, 0x0, // @448 "ON" + 0x6b, 0x6d, 0x0, // @451 "km" + 0x6d, 0x69, 0x0 // @454 "mi" +}; + +TEXT_LOCATION_FLASH_PRAGMA +KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE; + +// Array holding dynamically installed languages +struct TranslationHeader +{ + uint32_t offset_to_texts; + uint32_t offset_to_indices; + uint32_t offset_to_typedtext; +}; +static const TranslationHeader* languagesArray[1] = { 0 }; + +// Compiled and linked in languages +static const uint32_t* const staticLanguageIndices[] = { + indicesGb +}; + +touchgfx::LanguageId touchgfx::Texts::currentLanguage = static_cast(0); +static const touchgfx::Unicode::UnicodeChar* currentLanguagePtr = 0; +static const uint32_t* currentLanguageIndices = 0; + +void touchgfx::Texts::setLanguage(touchgfx::LanguageId id) +{ + const touchgfx::TypedText::TypedTextData* currentLanguageTypedText = 0; + if (id < 1) + { + if (languagesArray[id] != 0) + { + // Dynamic translation is added + const TranslationHeader* translation = languagesArray[id]; + currentLanguagePtr = (const touchgfx::Unicode::UnicodeChar*)(((const uint8_t*)translation) + translation->offset_to_texts); + currentLanguageIndices = (const uint32_t*)(((const uint8_t*)translation) + translation->offset_to_indices); + currentLanguageTypedText = (const touchgfx::TypedText::TypedTextData*)(((const uint8_t*)translation) + translation->offset_to_typedtext); + } + else + { + // Compiled and linked in languages + currentLanguagePtr = texts_all_languages; + currentLanguageIndices = staticLanguageIndices[id]; + currentLanguageTypedText = typedTextDatabaseArray[id]; + } + } + + if (currentLanguageTypedText) + { + currentLanguage = id; + touchgfx::TypedText::registerTypedTextDatabase(currentLanguageTypedText, + TypedTextDatabase::getFonts(), TypedTextDatabase::getInstanceSize()); + } +} + +void touchgfx::Texts::setTranslation(touchgfx::LanguageId id, const void* translation) +{ + languagesArray[id] = (const TranslationHeader*)translation; +} + +const touchgfx::Unicode::UnicodeChar* touchgfx::Texts::getText(TypedTextId id) const +{ + return ¤tLanguagePtr[currentLanguageIndices[id]]; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp new file mode 100644 index 00000000..736590a4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp @@ -0,0 +1,264 @@ +/* DO NOT EDIT THIS FILE */ +/* This file is autogenerated by the text-database code generator */ + +#include +#include +#include + +extern touchgfx::GeneratedFont& getFont_Poppins_Regular_18_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Regular_14_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Regular_16_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Medium_10_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Medium_18_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Medium_25_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Medium_50_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_18_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_20_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_25_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_30_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_35_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_40_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_SemiBold_60_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Italic_18_2bpp(); +extern touchgfx::GeneratedFont& getFont_Poppins_Italic_20_2bpp(); + +const touchgfx::Font* touchgfx_fonts[] = { + &(getFont_Poppins_Regular_18_2bpp()), + &(getFont_Poppins_Regular_14_2bpp()), + &(getFont_Poppins_Regular_16_2bpp()), + &(getFont_Poppins_Medium_10_2bpp()), + &(getFont_Poppins_Medium_18_2bpp()), + &(getFont_Poppins_Medium_25_2bpp()), + &(getFont_Poppins_Medium_50_2bpp()), + &(getFont_Poppins_SemiBold_18_2bpp()), + &(getFont_Poppins_SemiBold_20_2bpp()), + &(getFont_Poppins_SemiBold_25_2bpp()), + &(getFont_Poppins_SemiBold_30_2bpp()), + &(getFont_Poppins_SemiBold_35_2bpp()), + &(getFont_Poppins_SemiBold_40_2bpp()), + &(getFont_Poppins_SemiBold_60_2bpp()), + &(getFont_Poppins_Italic_18_2bpp()), + &(getFont_Poppins_Italic_20_2bpp()) +}; + +extern const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[]; +extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[]; + +TEXT_LOCATION_FLASH_PRAGMA +const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 1, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 1, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 1, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 3, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 3, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 3, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 4, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 5, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 5, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 5, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 6, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 6, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 7, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 7, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 7, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 8, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 8, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 8, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 9, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 9, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 9, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 11, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 11, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 11, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 12, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 12, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 13, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 13, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 13, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 14, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 15, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 15, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 15, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR } +}; + +const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[] = { + typedText_database_DEFAULT +}; + +namespace TypedTextDatabase +{ +const touchgfx::TypedText::TypedTextData* getInstance(touchgfx::LanguageId id) +{ + return typedTextDatabaseArray[id]; +} + +uint16_t getInstanceSize() +{ + return sizeof(typedText_database_DEFAULT) / sizeof(touchgfx::TypedText::TypedTextData); +} + +const touchgfx::Font** getFonts() +{ + return touchgfx_fonts; +} + +const touchgfx::Font* setFont(touchgfx::FontId fontId, const touchgfx::Font* font) +{ + const touchgfx::Font* old = touchgfx_fonts[fontId]; + touchgfx_fonts[fontId] = font; + return old; +} + +void resetFont(touchgfx::FontId fontId) +{ + switch (fontId) + { + case 0: + touchgfx_fonts[0] = &(getFont_Poppins_Regular_18_2bpp()); + break; + case 1: + touchgfx_fonts[1] = &(getFont_Poppins_Regular_14_2bpp()); + break; + case 2: + touchgfx_fonts[2] = &(getFont_Poppins_Regular_16_2bpp()); + break; + case 3: + touchgfx_fonts[3] = &(getFont_Poppins_Medium_10_2bpp()); + break; + case 4: + touchgfx_fonts[4] = &(getFont_Poppins_Medium_18_2bpp()); + break; + case 5: + touchgfx_fonts[5] = &(getFont_Poppins_Medium_25_2bpp()); + break; + case 6: + touchgfx_fonts[6] = &(getFont_Poppins_Medium_50_2bpp()); + break; + case 7: + touchgfx_fonts[7] = &(getFont_Poppins_SemiBold_18_2bpp()); + break; + case 8: + touchgfx_fonts[8] = &(getFont_Poppins_SemiBold_20_2bpp()); + break; + case 9: + touchgfx_fonts[9] = &(getFont_Poppins_SemiBold_25_2bpp()); + break; + case 10: + touchgfx_fonts[10] = &(getFont_Poppins_SemiBold_30_2bpp()); + break; + case 11: + touchgfx_fonts[11] = &(getFont_Poppins_SemiBold_35_2bpp()); + break; + case 12: + touchgfx_fonts[12] = &(getFont_Poppins_SemiBold_40_2bpp()); + break; + case 13: + touchgfx_fonts[13] = &(getFont_Poppins_SemiBold_60_2bpp()); + break; + case 14: + touchgfx_fonts[14] = &(getFont_Poppins_Italic_18_2bpp()); + break; + case 15: + touchgfx_fonts[15] = &(getFont_Poppins_Italic_20_2bpp()); + break; + } +} +} // namespace TypedTextDatabase diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/videos/include/videos/VideoDatabase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/videos/include/videos/VideoDatabase.hpp new file mode 100644 index 00000000..af678e5a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/videos/include/videos/VideoDatabase.hpp @@ -0,0 +1,8 @@ +// Generated by videoconvert. Please, do not edit! + +#ifndef TOUCHGFX_VIDEODATABASE_HPP +#define TOUCHGFX_VIDEODATABASE_HPP + +#include + +#endif // TOUCHGFX_VIDEODATABASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendApplication.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendApplication.hpp new file mode 100644 index 00000000..7f96e6a0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendApplication.hpp @@ -0,0 +1,50 @@ +#ifndef FRONTENDAPPLICATION_HPP +#define FRONTENDAPPLICATION_HPP + +#include +#include "SDK/Port/TouchGFX/TouchGFXCommandProcessor.hpp" + +class FrontendHeap; + +#if defined(SIMULATOR) +#include "SDK/Simulator/Kernel/Kernel.hpp" +#include "SDK/Simulator/Components/InstanceSensorLayer.hpp" +#endif + +using namespace touchgfx; + +class FrontendApplication : public FrontendApplicationBase +{ +public: + FrontendApplication(Model& m, FrontendHeap& heap); + virtual ~FrontendApplication() { } + + virtual void handleTickEvent() + { +#if defined(SIMULATOR) + SDK::Simulator::KernelHolder::Get().tick(); +#endif + SDK::TouchGFXCommandProcessor::GetInstance().callCustomMessageHandler(); + model.tick(); + FrontendApplicationBase::handleTickEvent(); + } + + // Get keys event in Model to simulate backend actions + void handleKeyEvent(uint8_t key) + { +#if defined(SIMULATOR) + Instance::SensorLayer::getInstance().handlerButtons(key); + if (SDK::Simulator::KernelHolder::Get().keyFilter(key)) { + model.handleKeyEvent(key); + FrontendApplicationBase::handleKeyEvent(key); + } +#else + model.handleKeyEvent(key); + FrontendApplicationBase::handleKeyEvent(key); +#endif + } + +private: +}; + +#endif // FRONTENDAPPLICATION_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendHeap.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendHeap.hpp new file mode 100644 index 00000000..c054ff52 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/common/FrontendHeap.hpp @@ -0,0 +1,74 @@ +#ifndef FRONTENDHEAP_HPP +#define FRONTENDHEAP_HPP + +#include + +class FrontendHeap : public FrontendHeapBase +{ +public: + /* List any user-defined view types here*/ + typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type + touchgfx::meta::Nil //List must always end with meta::Nil ! + > UserDefinedViewTypes; + + /* List any user-defined presenter types here*/ + typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type + touchgfx::meta::Nil //List must always end with meta::Nil ! + > UserDefinedPresenterTypes; + + /* List any user-defined transition types here*/ + typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type + touchgfx::meta::Nil //List must always end with meta::Nil ! + > UserDefinedTransitionTypes; + + + + /* Calculate largest view, both from generated and user-defined typelists */ + typedef touchgfx::meta::select_type_maxsize< UserDefinedViewTypes >::type MaxUserViewType; + + typedef touchgfx::meta::TypeList< MaxGeneratedViewType, + touchgfx::meta::TypeList< MaxUserViewType, + touchgfx::meta::Nil + > > CombinedViewTypes; + + typedef touchgfx::meta::select_type_maxsize< CombinedViewTypes >::type MaxViewType; + + /* Calculate largest presenter, both from generated and user-defined typelists */ + typedef touchgfx::meta::select_type_maxsize< UserDefinedPresenterTypes >::type MaxUserPresenterType; + + typedef touchgfx::meta::TypeList< MaxGeneratedPresenterType, + touchgfx::meta::TypeList< MaxUserPresenterType, + touchgfx::meta::Nil + > > CombinedPresenterTypes; + typedef touchgfx::meta::select_type_maxsize< CombinedPresenterTypes >::type MaxPresenterType; + + /* Calculate largest transition, both from generated and user-defined typelists */ + typedef touchgfx::meta::select_type_maxsize< UserDefinedTransitionTypes >::type MaxUserTransitionType; + + typedef touchgfx::meta::TypeList< MaxGeneratedTransitionType, + touchgfx::meta::TypeList< MaxUserTransitionType, + touchgfx::meta::Nil + > > CombinedTransitionTypes; + typedef touchgfx::meta::select_type_maxsize< CombinedTransitionTypes >::type MaxTransitionType; + + static FrontendHeap& getInstance() + { + static FrontendHeap instance; + return instance; + } + + touchgfx::Partition< CombinedPresenterTypes, 1 > presenters; + touchgfx::Partition< CombinedViewTypes, 1 > views; + touchgfx::Partition< CombinedTransitionTypes, 1 > transitions; + Model model; + FrontendApplication app; + +private: + FrontendHeap() : FrontendHeapBase(presenters, views, transitions, app), + app(model, *this) + { + gotoStartScreen(app); + } +}; + +#endif // FRONTENDHEAP_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Battery.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Battery.hpp new file mode 100644 index 00000000..e7a46c71 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Battery.hpp @@ -0,0 +1,47 @@ +#ifndef BATTERY_HPP +#define BATTERY_HPP + +#include + +/** + * @brief Four-segment battery level indicator. + * + * Each segment (s1-s4) represents a 25 % charge band (left to right). + * A segment is painted in the active color when the charge level reaches + * its lower bound; otherwise it uses the inactive (background) color. + * + * Special case: s1 is shown in red when the level is below 25 %. + * + * Level s1 s2 s3 s4 + * 0 % off off off off + * 1-24 % red off off off + * 25-49 % teal teal off off + * 50-74 % teal teal teal off + * 75-100 % teal teal teal teal + */ +class Battery : public BatteryBase +{ +public: + Battery(); + virtual ~Battery() {} + + virtual void initialize(); + + /** + * @brief Update the displayed charge level. + * @param level Charge percentage (0-100). + */ + void setLevel(uint8_t level); + +private: + /** Paint a two-line segment (s1-s3). */ + void setSegment(touchgfx::Box& box, + touchgfx::Line& line1, touchgfx::PainterABGR2222& p1, + touchgfx::Line& line2, touchgfx::PainterABGR2222& p2, + touchgfx::colortype color); + + /** Paint the three-line segment (s4, includes terminal nub). */ + void setSegment4(touchgfx::colortype color); +}; + +#endif // BATTERY_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Buttons.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Buttons.hpp new file mode 100644 index 00000000..79dcd9b5 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Buttons.hpp @@ -0,0 +1,54 @@ +#ifndef BUTTONS_HPP +#define BUTTONS_HPP + +#include + +/** + * @brief Physical button indicator container. + * + * Displays four watch-bezel arc indicators (L1, L2, R1, R2), each in one of + * four visual states: hidden (NONE), white, amber, or red. + * + * The arc geometry is fixed by the Designer-generated base. Only the colour + * and visibility are controlled at runtime. + * + * Usage: + * @code + * buttons.setL1(Buttons::NONE); + * buttons.setR1(Buttons::AMBER); + * buttons.setR2(Buttons::WHITE); + * @endcode + */ +class Buttons : public ButtonsBase +{ +public: + Buttons(); + virtual ~Buttons() {} + + virtual void initialize(); + + /** @brief Visual state for a single button indicator. */ + enum Color + { + NONE = 0, ///< Indicator hidden + WHITE, ///< White -- neutral action (#C0C0C0) + AMBER, ///< Amber -- primary action (#C08000) + RED, ///< Red -- warning / destructive action (#C00000) + }; + + void setL1(Color color = NONE); ///< Top-left button + void setL2(Color color = NONE); ///< Bottom-left button + void setR1(Color color = NONE); ///< Top-right button + void setR2(Color color = NONE); ///< Bottom-right button + +private: + /** Map a Color enum value to its RGB colortype. */ + static touchgfx::colortype toColortype(Color color); + + /** Apply @p color to a single arc indicator. */ + void applyColor(touchgfx::Circle& arc, + touchgfx::PainterABGR2222& painter, + Color color); +}; + +#endif // BUTTONS_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/CountdownTimer.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/CountdownTimer.hpp new file mode 100644 index 00000000..6bb06b9b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/CountdownTimer.hpp @@ -0,0 +1,79 @@ +#ifndef COUNTDOWNTIMER_HPP +#define COUNTDOWNTIMER_HPP + +#include +#include + +/** + * @brief Self-registering countdown timer for auto-dismissing screens. + * + * Inherits from touchgfx::Container solely to gain access to + * Application::registerTimerWidget(). Does not render anything and does + * not need to be added to the display tree. + * + * The callback is fired once when the countdown reaches zero. + * After firing, the timer stops automatically. + * + * Typical usage in a View: + * @code + * // .hpp member: + * CountdownTimer mDismissTimer; + * touchgfx::Callback mDismissCb; + * + * // constructor: + * MyView() : mDismissCb(this, &MyView::onDismiss) {} + * + * // setupScreen(): + * mDismissTimer.setDuration(SDK::Utils::secToTicks(3, 10)); + * mDismissTimer.setCallback(mDismissCb); + * mDismissTimer.start(); + * + * // callback: + * void onDismiss() { application().gotoXxxScreenNoTransition(); } + * + * // handleKeyEvent (optional -- manual dismiss): + * mDismissTimer.stop(); + * application().gotoXxxScreenNoTransition(); + * @endcode + */ +class CountdownTimer : public touchgfx::Container +{ +public: + CountdownTimer(); + virtual ~CountdownTimer(); + + /** + * @brief Set the countdown duration. + * @param ticks Number of ticks (use SDK::Utils::secToTicks / SDK::Utils::msToTicks). + */ + void setDuration(uint16_t ticks); + + /** + * @brief Register the callback invoked when the countdown expires. + * @param cb Callback with no arguments. + */ + void setCallback(touchgfx::GenericCallback<>& cb); + + /** @brief Start (or restart) the countdown and register the timer widget. */ + void start(); + + /** @brief Stop the countdown and unregister the timer widget. */ + void stop(); + + /** @brief Restart the countdown from the full duration without unregistering. */ + void reset(); + + virtual void handleTickEvent() override; + +private: + void registerTimer(); + void unregisterTimer(); + + uint16_t mDuration = 0; + uint16_t mCounter = 0; + bool mRegistered = false; + + touchgfx::GenericCallback<>* mpCb = nullptr; +}; + +#endif // COUNTDOWNTIMER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/HeartRateZone.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/HeartRateZone.hpp new file mode 100644 index 00000000..dc97144e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/HeartRateZone.hpp @@ -0,0 +1,41 @@ +#ifndef HEARTRATEZONE_HPP +#define HEARTRATEZONE_HPP + +#include + +/** + * @brief Segmented arc indicator showing the current heart rate zone. + * + * Displays one of five zone segments (hr1-hr5) based on the current HR value + * measured against a threshold array. Segments represent zones from lowest (1) + * to highest (5). No segment is shown when HR is below all thresholds. + * + * Usage: + * @code + * heartRateZone.setHR(bpm, thresholds, kHrThresholdsCount); + * @endcode + */ +class HeartRateZone : public HeartRateZoneBase +{ +public: + HeartRateZone(); + virtual ~HeartRateZone() {} + + virtual void initialize(); + + /** + * @brief Update the displayed heart rate zone. + * @param hr Current heart rate in bpm. + * @param thresholds Array of zone lower-bound thresholds in ascending order (bpm). + * @param thresholdCount Number of thresholds (must not exceed kZoneCount). + */ + void setHR(float hr, const uint8_t* thresholds, uint8_t thresholdCount); + +protected: + static constexpr uint8_t kZoneCount = 5; + + /** Ordered references to zone segment images (index 0 = zone 1, lowest). */ + touchgfx::Image* const mZones[kZoneCount]; +}; + +#endif // HEARTRATEZONE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/InfoCarousel.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/InfoCarousel.hpp new file mode 100644 index 00000000..acf49567 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/InfoCarousel.hpp @@ -0,0 +1,94 @@ +#ifndef INFOCAROUSEL_HPP +#define INFOCAROUSEL_HPP + +#include +#include + +/** + * @brief Cycling info panel that periodically rotates through a set of data slots. + * + * The component registers itself as a TouchGFX timer widget lazily -- only when + * count > 1 -- and unregisters in the destructor. This is safe because the + * Application outlives all screens. + * + * Typical setup in View::setupScreen(): + * @code + * infoCarousel.setPeriod(3000); + * infoCarousel.setUpdateCallback(mCarouselCb); + * infoCarousel.setCount(5); // registers timer, fires cb(0) immediately + * @endcode + * + * Inside the callback: + * @code + * void MyView::onCarouselUpdate(int16_t index) { + * infoCarousel.setTitle(T_TEXT_SOME_LABEL); + * infoCarousel.setValue(myBuffer); + * } + * @endcode + */ +class InfoCarousel : public InfoCarouselBase +{ +public: + InfoCarousel(); + virtual ~InfoCarousel(); + + virtual void initialize(); + + // ---- Cycling control --------------------------------------------------- + + /** + * @brief Set the number of slots to cycle through. + * Lazily registers the timer widget when count > 1, unregisters when <= 1. + * Resets the index to 0 and fires the callback immediately. + * @param count Number of slots (0 or 1 disables cycling). + */ + void setCount(uint16_t count); + + /** + * @brief Set the number of ticks between slot advances. + * @param ticks Must be > 0. + */ + void setPeriod(uint16_t ticks); + + /** + * @brief Register the update callback (must be called before setCount). + * Signature: void onUpdate(int16_t index). + */ + void setUpdateCallback(touchgfx::GenericCallback& cb); + + /** + * @brief Re-fire the callback for the current slot index. + * Call this whenever the underlying data changes so the visible slot + * stays up to date. + */ + void refresh(); + + // ---- Content (call from inside the update callback) -------------------- + + /** @brief Set the label text from a typed-text ID. */ + void setTitle(TypedTextId msgId); + + /** + * @brief Set the dataValue text. Pass nullptr to hide the dataValue field. + * @param messageText Null-terminated Unicode string (may be nullptr). + */ + void setValue(const touchgfx::Unicode::UnicodeChar* messageText); + + virtual void handleTickEvent() override; + +protected: + uint16_t mCount = 0; + uint16_t mPeriod = 1; + uint16_t mIndex = 0; + uint16_t mTick = 0; + bool mRegistered = false; + + touchgfx::GenericCallback* mpUpdateCb = nullptr; + +private: + void registerTimer(); + void unregisterTimer(); + void fireCallback(); +}; + +#endif // INFOCAROUSEL_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/LapListItem.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/LapListItem.hpp new file mode 100644 index 00000000..59b89977 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/LapListItem.hpp @@ -0,0 +1,38 @@ +#ifndef LAPLISTITEM_HPP +#define LAPLISTITEM_HPP + +#include + +/** + * @brief ScrollList item rendering one row of the lap table. + * + * Columns (left to right): lap index, lap time, lap average HR, lap max HR. + * Each setter takes pre-formatted text so the caller (typically + * @c SummaryFaceLaps::scrollListUpdateItem) controls formatting and unit + * decisions. Passing an empty (zero-terminated) buffer clears that field -- + * used for padding rows beyond the last real lap. + */ +class LapListItem : public LapListItemBase +{ +public: + LapListItem(); + virtual ~LapListItem() {} + + virtual void initialize(); + + /** @brief Lap index column (e.g. "3."). */ + void setIndex(const touchgfx::Unicode::UnicodeChar* text); + + /** @brief Lap time column (e.g. "4:12"). */ + void setTime (const touchgfx::Unicode::UnicodeChar* text); + + /** @brief Lap average HR column (e.g. "128" or "---"). */ + void setAvgHR(const touchgfx::Unicode::UnicodeChar* text); + + /** @brief Lap max HR column (e.g. "145" or "---"). */ + void setMaxHR(const touchgfx::Unicode::UnicodeChar* text); + +protected: +}; + +#endif // LAPLISTITEM_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenu.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenu.hpp new file mode 100644 index 00000000..1fcaaac3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenu.hpp @@ -0,0 +1,135 @@ +#ifndef MAINMENU_HPP +#define MAINMENU_HPP + +#include +#include +#include + +/** + * @brief Scroll-wheel menu container (wheel + scroll only). + * + * Pure navigation component -- no chrome (title / buttons / info / background). + * Use MainMenuLayout for the standard full-screen menu layout. + * + * Usage: + * 1. Call setNumberOfItems() to configure the wheel and scroll counter. + * 2. Register callbacks via setUpdateItemCallback() and + * setUpdateCenterItemCallback(). The screen owns MenuItemConfig arrays + * and calls item.apply(cfg) inside each callback. + * 3. Optionally call setCenterItemLayout() / setItemLayout() to adjust + * item geometry for all items of each type. + * 4. Navigate with selectNext() / selectPrev() / selectItem(). + * + * Animation callbacks: + * setAnimationMiddleCallback() -- fires at the midpoint of the animation, + * useful for updating background before the new item is fully centered. + * setAnimationEndedCallback() -- fires when animation completes. + * Both pass the target item index as argument. + * + * Layout priority (per item): + * MenuItemConfig::centerLayout / itemLayout + * > MainMenu::setCenterItemLayout() / setItemLayout() + * > built-in defaults + */ +class MainMenu : public MainMenuBase +{ +public: + MainMenu(); + virtual ~MainMenu() {} + + virtual void initialize(); + + /** Re-render all wheel items (call after batch config changes). */ + virtual void invalidate(); + + // ---- Wheel size -------------------------------------------------------- + void setNumberOfItems(int16_t numberOfItems); + int16_t getNumberOfItems(); + + // ---- Navigation -------------------------------------------------------- + void selectNext(); + void selectPrev(); + void selectItem(int16_t itemIndex); + uint16_t getSelectedItem(); + + // ---- Low-level access -------------------------------------------------- + touchgfx::ScrollWheelWithSelectionStyle &getWheel(); + + // ---- Item callbacks ---------------------------------------------------- + /** + * @brief Register the callback invoked for each surrounding item. + * Signature: void callback(MainMenuItem &item, int16_t index) + */ + void setUpdateItemCallback( + touchgfx::GenericCallback &cb); + + /** + * @brief Register the callback invoked for the center item. + * Signature: void callback(MainMenuCenterItem &item, int16_t index) + */ + void setUpdateCenterItemCallback( + touchgfx::GenericCallback &cb); + + // ---- Animation callbacks ----------------------------------------------- + /** + * @brief Fires at the midpoint of a selectNext/selectPrev animation. + * + * Useful for updating the background while the old item is still + * partially visible -- change happens smoothly mid-transition. + * Not fired by selectItem() (instant, no animation). + * Signature: void callback(int16_t targetItemIndex) + */ + void setAnimationMiddleCallback( + touchgfx::GenericCallback &cb); + + /** + * @brief Fires when the wheel animation completes. + * + * Signature: void callback(int16_t selectedItemIndex) + */ + void setAnimationEndedCallback( + touchgfx::GenericCallback &cb); + + // ---- Animation speed --------------------------------------------------- + /** + * @brief Set the number of animation steps for selectNext/selectPrev. + * Default: 4. Higher values = slower animation. + */ + void setAnimationSteps(int16_t steps); + + // ---- Layout ------------------------------------------------------------ + /** + * @brief Apply a geometry layout to all center items in the wheel buffer. + * Individual items may still override it via MenuItemConfig::centerLayout. + */ + void setCenterItemLayout(const CenterItemLayout &layout); + + /** + * @brief Apply a geometry layout to all surrounding items in the wheel buffer. + * Individual items may still override it via MenuItemConfig::itemLayout. + */ + void setItemLayout(const ItemLayout &layout); + +protected: + virtual void wheelUpdateItem(MainMenuItem &item, int16_t itemIndex) override; + virtual void wheelUpdateCenterItem(MainMenuCenterItem &item, int16_t itemIndex) override; + virtual void handleTickEvent() override; + +private: + touchgfx::Callback mWheelAnimationEndCb; + void onWheelAnimationEnded(); + + touchgfx::GenericCallback *mpUpdateItemCb = nullptr; + touchgfx::GenericCallback *mpUpdateCenterItemCb = nullptr; + touchgfx::GenericCallback *mpAnimationMiddleCb = nullptr; + touchgfx::GenericCallback *mpAnimationEndedCb = nullptr; + + int16_t mAnimSteps = 4; ///< Steps per selectNext/selectPrev animation + int16_t mAnimCountdown = 0; ///< Ticks remaining in current animation + int16_t mAnimTargetItem = 0; ///< Item index we are animating toward + + CenterItemLayout mCenterItemLayout; + ItemLayout mItemLayout; +}; + +#endif // MAINMENU_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuBackground.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuBackground.hpp new file mode 100644 index 00000000..9417f8bc --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuBackground.hpp @@ -0,0 +1,29 @@ +#ifndef MAINMENUBACKGROUND_HPP +#define MAINMENUBACKGROUND_HPP + +#include + +/** + * @brief Background for the main menu screen. + * + * Wraps a single canvas Circle that fills the region under center menu item. + * The fill color can be changed at any time via setColor(). + */ +class MainMenuBackground : public MainMenuBackgroundBase +{ +public: + MainMenuBackground(); + virtual ~MainMenuBackground() {} + + virtual void initialize(); + + /** + * @brief Set the background fill color. + * @param color Desired fill color. + */ + void setColor(touchgfx::colortype color); + +protected: +}; + +#endif // MAINMENUBACKGROUND_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuCenterItem.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuCenterItem.hpp new file mode 100644 index 00000000..12080f8d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuCenterItem.hpp @@ -0,0 +1,53 @@ +#ifndef MAINMENUCENTERITEM_HPP +#define MAINMENUCENTERITEM_HPP + +#include +#include + +/** + * @brief Center item for MainMenu's scroll wheel. + * + * Supports all display styles defined by MenuItemConfig::Style: + * SIMPLE -- centered labelText only + * TOGGLE -- labelText + interactive toggle switch + * TIP -- labelText + smaller hint line below + * ICON -- static bitmap + labelText + * ICON_EXT -- dynamic (external raw pixels) bitmap + labelText + * + * Layout resolution priority: + * MenuItemConfig::centerLayout > MainMenu::setCenterItemLayout() > built-in defaults + */ +class MainMenuCenterItem : public MainMenuCenterItemBase +{ +public: + MainMenuCenterItem(); + virtual ~MainMenuCenterItem() {} + + virtual void initialize() override; + + /** + * @brief Render this item according to the given configuration. + * Called from the screen's wheelUpdateCenterItem callback. + */ + void apply(const MenuItemConfig &cfg); + + /** + * @brief Set the default geometry layout for this item instance. + * Called by MainMenu::setCenterItemLayout() on all center wheel buffer items. + */ + void setLayout(const CenterItemLayout &layout); + +private: + const CenterItemLayout *mpLayout = nullptr; + BitmapId mDynamicIconId = BITMAP_INVALID; + + // Designer defaults -- captured in initialize() from the generated base widgets + TypedTextId mDefaultMsgType = TYPED_TEXT_INVALID; + TypedTextId mDefaultTipType = TYPED_TEXT_INVALID; + + const CenterItemLayout &activeLayout(const MenuItemConfig &cfg) const; + void renderStyle(const MenuItemConfig &cfg, + const CenterItemLayout &layout); +}; + +#endif // MAINMENUCENTERITEM_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuItem.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuItem.hpp new file mode 100644 index 00000000..72314d68 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuItem.hpp @@ -0,0 +1,54 @@ +#ifndef MAINMENUITEM_HPP +#define MAINMENUITEM_HPP + +#include +#include + +/** + * @brief Surrounding item for MainMenu's scroll wheel. + * + * Supports display styles defined by MenuItemConfig::Style: + * SIMPLE -- centered labelText only + * TIP -- labelText + smaller hint line below + * ICON -- static bitmap + labelText + * + * Note: TOGGLE and ICON_EXT styles gracefully degrade: + * - TOGGLE -> rendered as SIMPLE (toggle is only interactive in the center item) + * - ICON_EXT -> rendered as ICON if iconId is set, otherwise as SIMPLE + * + * Layout resolution priority: + * MenuItemConfig::itemLayout > MainMenu::setItemLayout() > built-in defaults + */ +class MainMenuItem : public MainMenuItemBase +{ +public: + MainMenuItem(); + virtual ~MainMenuItem() {} + + virtual void initialize() override; + + /** + * @brief Render this item according to the given configuration. + * Called from the screen's wheelUpdateItem callback. + */ + void apply(const MenuItemConfig &cfg); + + /** + * @brief Set the default geometry layout for this item instance. + * Called by MainMenu::setItemLayout() on all surrounding wheel buffer items. + */ + void setLayout(const ItemLayout &layout); + +private: + const ItemLayout *mpLayout = nullptr; + + // Designer defaults -- captured in initialize() from the generated base widgets + TypedTextId mDefaultMsgType = TYPED_TEXT_INVALID; + TypedTextId mDefaultTipType = TYPED_TEXT_INVALID; + + const ItemLayout &activeLayout(const MenuItemConfig &cfg) const; + void renderStyle(const MenuItemConfig &cfg, + const ItemLayout &layout); +}; + +#endif // MAINMENUITEM_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuLayout.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuLayout.hpp new file mode 100644 index 00000000..3c6246a0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MainMenuLayout.hpp @@ -0,0 +1,77 @@ +#ifndef MAINMENULAYOUT_HPP +#define MAINMENULAYOUT_HPP + +#include +#include +#include + +/** + * @brief Standard full-screen menu layout container. + * + * Combines MainMenu (scroll wheel + scroll indicator) with the common chrome: + * background image, title, infoText text, and navigation buttons. + * + * Most MainMenu operations are delegated directly, so screens can call + * layout.setNumberOfItems(5) instead of layout.getMenu().setNumberOfItems(5). + * For advanced wheel access use getMenu(). + * + * Typical screen setup: + * @code + * menuLayout.setTitle(T_TEXT_SETTINGS); + * menuLayout.getButtons().setR1(Buttons::AMBER); + * menuLayout.setUpdateItemCallback(mUpdateItemCb); + * menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + * menuLayout.setNumberOfItems(kNumItems); + * menuLayout.invalidate(); + * @endcode + */ +class MainMenuLayout : public MainMenuLayoutBase +{ +public: + MainMenuLayout(); + virtual ~MainMenuLayout() {} + + virtual void initialize(); + + // ---- Delegated wheel operations ---------------------------------------- + void setNumberOfItems(int16_t numberOfItems); + int16_t getNumberOfItems(); + void selectNext(); + void selectPrev(); + void selectItem(int16_t itemIndex); + uint16_t getSelectedItem(); + virtual void invalidate(); + + void setUpdateItemCallback( + touchgfx::GenericCallback &cb); + void setUpdateCenterItemCallback( + touchgfx::GenericCallback &cb); + + /** @brief Apply geometry layout to all center items. */ + void setCenterItemLayout(const CenterItemLayout &layout); + + /** @brief Apply geometry layout to all surrounding items. */ + void setItemLayout(const ItemLayout &layout); + + void setAnimationSteps(int16_t steps); + void setAnimationMiddleCallback(touchgfx::GenericCallback &cb); + void setAnimationEndedCallback(touchgfx::GenericCallback &cb); + + // ---- Chrome ------------------------------------------------------------ + void setTitle(TypedTextId msgId); + void showTitle(bool state); + + void setBackground(touchgfx::colortype color); + void showBackground(bool state); + + void setInfoMsg(TypedTextId msgId); + void setInfoMsgColor(touchgfx::colortype color); + + // ---- Getters ----------------------------------------------------------- + /** Direct access to navigation buttons (set L1/L2/R1/R2 state). */ + Buttons &getButtons(); + /** Direct access to the scroll wheel menu (for advanced operations). */ + MainMenu &getMenu(); +}; + +#endif // MAINMENULAYOUT_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemConfig.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemConfig.hpp new file mode 100644 index 00000000..2042a547 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemConfig.hpp @@ -0,0 +1,169 @@ +#ifndef MENUITEMCONFIG_HPP +#define MENUITEMCONFIG_HPP + +#include +#include +#include +#include +#include + +// ============================================================================= +// CenterItemLayout +// ============================================================================= + +/** + * @brief Geometry layout for MainMenuCenterItem (default container: 240 x 66 px). + * + * Fields are grouped by style. Only the sub-struct relevant to the item's style + * is used during rendering; the rest are ignored. + * + * Set once per menu via MainMenu::setCenterItemLayout(). + * Override per individual item via MenuItemConfig::centerLayout. + * Omitting both uses the built-in defaults. + * + * @code + * static CenterItemLayout myLayout; + * myLayout.inl.mainX = 37; + * myLayout.inl.mainW = 130; + * item.centerLayout = &myLayout; + * @endcode + */ +struct CenterItemLayout +{ + struct { + int16_t textX = 21; ///< Text X when toggle is visible + int16_t textW = 128; ///< Text width when toggle is visible + int16_t x = 151; ///< Toggle widget X; Y is always centred vertically + } toggle; + + struct { + int16_t msgOffsetY = 3; ///< Main text Y nudge from centre of top half (+ = down) + int16_t hintOffsetY = -3; ///< Hint text Y nudge from centre of bottom half (+ = down) + } tip; + + struct { + int16_t mainX = 10; ///< Main text X + int16_t mainW = 110; ///< Main text width + int16_t tipX = 130; ///< Hint label X + int16_t tipW = 110; ///< Hint label width + } inl; + + struct { + int16_t x = 20; ///< Icon X + int16_t y = 3; ///< Icon Y + int16_t w = 60; ///< Icon width + int16_t h = 60; ///< Icon height + int16_t textX = 87; ///< Text X when icon is shown + int16_t textW = 153; ///< Text width when icon is shown + } icon; +}; + + +// ============================================================================= +// ItemLayout +// ============================================================================= + +/** + * @brief Geometry layout for MainMenuItem / surrounding items (default container: 240 x 60 px). + * + * Fields are grouped by style. Only the sub-struct relevant to the item's style + * is used during rendering; the rest are ignored. + * + * Set once per menu via MainMenu::setItemLayout(). + * Override per individual item via MenuItemConfig::itemLayout. + * Omitting both uses the built-in defaults. + * + * @code + * static ItemLayout myLayout; + * myLayout.inl.mainX = 70; + * myLayout.inl.mainW = 50; + * item.itemLayout = &myLayout; + * @endcode + */ +struct ItemLayout +{ + struct { + int16_t msgOffsetY = 0; ///< Main text Y nudge from vertical centre (+ = down) + } simple; + + struct { + int16_t msgOffsetY = 4; ///< Main text Y nudge from centre of top half (+ = down) + int16_t hintOffsetY = -4; ///< Hint text Y nudge from centre of bottom half (+ = down) + } tip; + + struct { + int16_t mainX = 10; ///< Main text X + int16_t mainW = 110; ///< Main text width + int16_t tipX = 130; ///< Hint label X + int16_t tipW = 110; ///< Hint label width + } inl; + + struct { + int16_t x = 46; ///< Icon X + int16_t y = 7; ///< Icon Y + int16_t w = 46; ///< Icon width + int16_t h = 46; ///< Icon height + int16_t textX = 102; ///< Text X when icon is shown + int16_t textW = 100; ///< Text width when icon is shown + } icon; +}; + + +// ============================================================================= +// MenuItemConfig +// ============================================================================= + +/** + * @brief Configuration for a single menu item. + * + * Owned by the screen. Passed into MainMenuCenterItem / MainMenuItem + * via apply() inside the wheel update callback. + * + * Text source priority: msgId (TypedText) > msgText (UnicodeChar*) > msgChar (UTF-8) + * Layout priority: cfg.centerLayout / cfg.itemLayout + * > MainMenu::setCenterItemLayout / setItemLayout() + * > built-in defaults + */ +struct MenuItemConfig +{ + /** + * @brief Visual style -- defines which widgets are shown. + */ + enum Style + { + SIMPLE = 0, ///< Centred text only + TOGGLE, ///< Text + interactive toggle switch (MainMenuCenterItem only) + TIP, ///< Main text + smaller hint below + INLINE, ///< Main text + hint on the same line, baseline-aligned + ICON, ///< Static bitmap icon + text + ICON_EXT, ///< External (dynamic) bitmap icon + text (MainMenuCenterItem only) + }; + + Style style = SIMPLE; + + // ---- Main text ---------------------------------------------------------- + TypedTextId msgId = TYPED_TEXT_INVALID; ///< Localized text (highest priority) + TypedTextId msgIdType = TYPED_TEXT_INVALID; ///< Text style; INVALID = use Designer default + const touchgfx::Unicode::UnicodeChar *msgText = nullptr; ///< Raw Unicode fallback + const char *msgChar = nullptr; ///< UTF-8 C-string (lowest priority) + + // ---- Tip / hint text (TIP / INLINE styles) ----------------------------- + TypedTextId tipId = TYPED_TEXT_INVALID; + TypedTextId tipIdType = TYPED_TEXT_INVALID; ///< Tip style; INVALID = use Designer default + const touchgfx::Unicode::UnicodeChar *tipText = nullptr; ///< Raw Unicode fallback + const char *tipChar = nullptr; ///< UTF-8 C-string (lowest priority) + touchgfx::colortype tipColor = touchgfx::Color::getColorFromRGB(192, 192, 192); + + // ---- Icon (ICON / ICON_EXT styles) ------------------------------------- + BitmapId iconId = BITMAP_INVALID; ///< Static bitmap (ICON) + const uint8_t *extIcon = nullptr; ///< Raw pixels, 60x60 ABGR2222 (ICON_EXT) + + // ---- Toggle (TOGGLE style) --------------------------------------------- + bool toggleState = false; + + // ---- Per-item layout overrides (optional) ------------------------------ + const CenterItemLayout *centerLayout = nullptr; ///< nullptr = use menu-level default + const ItemLayout *itemLayout = nullptr; ///< nullptr = use menu-level default +}; + +#endif // MENUITEMCONFIG_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemRenderer.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemRenderer.hpp new file mode 100644 index 00000000..f07b9e2d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/MenuItemRenderer.hpp @@ -0,0 +1,182 @@ +#ifndef MENUITEMRENDERER_HPP +#define MENUITEMRENDERER_HPP + +#include +#include +#include +#include +#include +#include + +/** + * @brief Stateless rendering helpers shared between menu item types. + * + * Header-only -- no .cpp required. + * All methods are static. Not intended to be instantiated. + */ +struct MenuItemRenderer +{ + /** + * @brief Write content into a wildcard TextArea. + * + * Text source priority: textId (TypedText) > rawText > clear. + * + * Always writes to @p buffer -- clears it when neither source is provided. + * This is important for scroll-wheel items, where the same container is + * reused for different items and must not retain stale text. + * + * Font is updated if typeId is valid. + * + * @param area Target TextArea widget. + * @param buffer Wildcard buffer belonging to the widget. + * @param bufSize Buffer capacity (in UnicodeChar units). + * @param textId Localized text ID; TYPED_TEXT_INVALID = fall through. + * @param typeId Text style (font, alignment); screens should always provide this + * to prevent stale style from a previously rendered item. + * @param rawText Raw Unicode string; nullptr = fall through. + * @param charText UTF-8 / ASCII C-string (lowest priority); nullptr = fall through. + */ + static void applyText( + touchgfx::TextAreaWithOneWildcard &area, + touchgfx::Unicode::UnicodeChar *buffer, uint16_t bufSize, + TypedTextId textId, + TypedTextId typeId, + const touchgfx::Unicode::UnicodeChar *rawText, + const char *charText = nullptr) + { + if (textId != TYPED_TEXT_INVALID) { + touchgfx::Unicode::snprintf(buffer, bufSize, "%s", + touchgfx::TypedText(textId).getText()); + } else if (rawText != nullptr) { + touchgfx::Unicode::strncpy(buffer, rawText, bufSize); + } else if (charText != nullptr) { + touchgfx::Unicode::fromUTF8( + reinterpret_cast(charText), buffer, bufSize); + } else { + buffer[0] = 0; // no content -- clear to prevent stale text from a previous item + } + + if (typeId != TYPED_TEXT_INVALID) { + area.setTypedText(touchgfx::TypedText(typeId)); + } + } + + /** + * @brief Write content + color into a tip TextArea. + * + * Same as applyText(), plus sets the text color. + */ + static void applyTip( + touchgfx::TextAreaWithOneWildcard &area, + touchgfx::Unicode::UnicodeChar *buffer, uint16_t bufSize, + TypedTextId textId, + TypedTextId typeId, + const touchgfx::Unicode::UnicodeChar *rawText, + touchgfx::colortype color, + const char *charText = nullptr) + { + applyText(area, buffer, bufSize, textId, typeId, rawText, charText); + area.setColor(color); + } + + /** + * @brief Set a static bitmap on an Image widget. + * + * Does nothing if iconId == BITMAP_INVALID. + */ + static void applyStaticIcon(touchgfx::Image &icon, BitmapId iconId) + { + if (iconId != BITMAP_INVALID) { + icon.setBitmap(touchgfx::Bitmap(iconId)); + } + } + + /** + * @brief Create a dynamic bitmap from raw pixel data and set it on an Image. + * + * Deletes the previous dynamic bitmap (if any) before creating a new one. + * Assumes ABGR2222 pixel format. + * + * @param icon Target Image widget. + * @param dynamicId In/out: tracks the current dynamic bitmap ID for cleanup. + * @param extIconData Raw pixel data pointer; nullptr = only deletes previous. + * @param w Bitmap width in pixels. + * @param h Bitmap height in pixels. + */ + static void applyDynamicIcon( + touchgfx::Image &icon, + BitmapId &dynamicId, + const uint8_t *extIconData, + int16_t w, int16_t h) + { + if (dynamicId != BITMAP_INVALID) { + touchgfx::Bitmap::dynamicBitmapDelete(dynamicId); + dynamicId = BITMAP_INVALID; + } + + if (extIconData != nullptr) { + dynamicId = touchgfx::Bitmap::dynamicBitmapCreateExternal( + w, h, extIconData, touchgfx::Bitmap::ABGR2222); + icon.setBitmap(touchgfx::Bitmap(dynamicId)); + } + } + + /** + * @brief Resize a TextArea to its content height and center it vertically. + * + * Uses resizeHeightToCurrentText(), which measures the rendered height of + * the TypedText string (including line wrapping). Correct for multi-line + * or variable-length text. + * + * @param area Target TextArea. + * @param containerHeight Height of the parent container in pixels. + */ + static void centerTextY(touchgfx::TextArea &area, int16_t containerHeight) + { + area.resizeHeightToCurrentText(); + area.setY((containerHeight - area.getHeight()) / 2); + } + + /** + * @brief Align @p tipArea's baseline to the baseline of the already-positioned @p mainText. + * + * Used in INLINE style so that the smaller hint label sits on the same + * optical line as the larger main text, regardless of font size difference. + * + * Algorithm: + * mainBaseline = mainText.getY() + mainFont->getBaseline() + * tipArea.Y = mainBaseline - tipFont->getBaseline() + * + * resizeHeightToCurrentText() is called on @p tipArea before positioning so + * the widget bounds reflect the actual rendered height. + * + * Falls back to centering @p tipArea at the same mid-Y as @p mainText when + * either font is unavailable. + * + * @param mainText Main text area -- must already have Y and font set. + * @param tipArea Tip text area to position. + */ + static void alignBaselineY(const touchgfx::TextArea &mainText, + touchgfx::TextArea &tipArea) + { + const touchgfx::Font *mainFont = mainText.getTypedText().getFont(); + const touchgfx::Font *tipFont = tipArea.getTypedText().getFont(); + + tipArea.resizeHeightToCurrentText(); + + if (mainFont != nullptr && tipFont != nullptr) + { + const int16_t baseline = mainText.getY() + + static_cast(mainFont->getBaseline()); + tipArea.setY(baseline - static_cast(tipFont->getBaseline())); + } + else + { + // Fallback: align vertical mid-points + const int16_t mainMid = mainText.getY() + mainText.getHeight() / 2; + tipArea.setY(mainMid - tipArea.getHeight() / 2); + } + } +}; + +#endif // MENUITEMRENDERER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/PauseIndicator.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/PauseIndicator.hpp new file mode 100644 index 00000000..a05828d7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/PauseIndicator.hpp @@ -0,0 +1,34 @@ +#ifndef PAUSEINDICATOR_HPP +#define PAUSEINDICATOR_HPP + +#include + +/** + * @brief Overlay indicator shown when a workout is paused. + * + * Displays a pause icon alongside an elapsed time in H:MM:SS / MM:SS format. + * + * @code + * pauseIndicator.setTime(7424); // -> "2:03:44" + * pauseIndicator.setTime(125); // -> "02:05" + * @endcode + */ +class PauseIndicator : public PauseIndicatorBase +{ +public: + PauseIndicator(); + virtual ~PauseIndicator() {} + + virtual void initialize() override; + + /** + * @brief Set the displayed elapsed time. + * + * Formats as H:MM:SS when hours > 0, otherwise MM:SS. + * + * @param seconds Total elapsed seconds. + */ + void setTime(std::time_t seconds); +}; + +#endif // PAUSEINDICATOR_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ScrollIndicator.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ScrollIndicator.hpp new file mode 100644 index 00000000..764ffb2b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ScrollIndicator.hpp @@ -0,0 +1,139 @@ +#ifndef SCROLLINDICATOR_HPP +#define SCROLLINDICATOR_HPP + +#include +#include + +/** + * @brief Appearance and geometry configuration for ScrollIndicator. + * + * Two predefined configs are available as ScrollIndicator::kBig and kSmall. + * Both share the same circle geometry set by the Designer (center, radius, + * line width) but differ in rail arc range, handle length, and colours. + * + * You can also build a custom config: + * @code + * ScrollIndicatorConfig cfg = ScrollIndicator::kBig; + * cfg.handleColor = SDK::GUI::Color::rgb(255, 128, 0); + * scrollIndicator.setConfig(cfg); + * @endcode + */ +struct ScrollIndicatorConfig +{ + float handleLen = 18.0f; ///< Handle arc span (degrees) + float railMin = 232.0f; ///< Rail low bound (degrees) + float railMax = 308.0f; ///< Rail high bound (degrees) + uint32_t handleColor = 0; ///< Handle and overflow-handle colour (0xFFRRGGBB) + uint32_t railColor = 0; ///< Background rail colour (0xFFRRGGBB) +}; + +// --------------------------------------------------------------------------- + +/** + * @brief Circular arc position indicator for scroll-wheel menus. + * + * Renders a sliding arc handle on a circular rail that tracks the currently + * selected item in a list. Supports smooth animated transitions including + * wrap-around (last -> first and first -> last) using a dual-handle technique. + * + * The geometry (circle center, radius, line width) is fixed by the + * Designer-generated base. Only the arc range and colours are configurable + * at runtime via setConfig(). + * + * Usage: + * @code + * scrollIndicator.setConfig(ScrollIndicator::kSmall); // optional + * scrollIndicator.setCount(5); + * scrollIndicator.setActiveId(0); + * scrollIndicator.animateToId(2, 8); + * @endcode + */ +class ScrollIndicator : public ScrollIndicatorBase +{ +public: + ScrollIndicator(); + virtual ~ScrollIndicator(); + + virtual void initialize(); + + // ------------------------------------------------------------------ + // Predefined configs + // ------------------------------------------------------------------ + + /** Config matching the Big indicator: 76 deg rail, 18 deg handle. */ + static constexpr ScrollIndicatorConfig kBig = { 18.0f, 232.0f, 308.0f, 0xC0C0C0u, 0x404040u }; + + /** Config matching the Small indicator: 36 deg rail, 10 deg handle. */ + static constexpr ScrollIndicatorConfig kSmall = { 10.0f, 252.0f, 288.0f, 0xC0C0C0u, 0x404040u }; + + // ------------------------------------------------------------------ + // Configuration + // ------------------------------------------------------------------ + + /** + * @brief Apply an arc config (range + colours). Safe to call at any time. + * + * The Designer-generated base already applies kBig defaults in its + * constructor, so this call is only needed to switch to kSmall or a + * custom config. + */ + void setConfig(const ScrollIndicatorConfig& cfg); + + // ------------------------------------------------------------------ + // Item navigation + // ------------------------------------------------------------------ + + /** + * @brief Set the total number of items. Resets position to 0. + * The handle is hidden when count <= 1. + */ + void setCount(uint16_t count); + + /** @brief Instantly move the handle to the given item index. */ + void setActiveId(uint16_t index); + + /** + * @brief Animate the handle to the given item index. + * @param index Target item (wraps around if out of range). + * @param animationSteps Tick count for the animation; <= 0 means instant. + */ + void animateToId(int16_t index, int16_t animationSteps = 0); + + /** @brief Return the current (or target, if animating) item index. */ + uint16_t getActiveId(); + + virtual void handleTickEvent() override; + +protected: + // Arc geometry -- mirrors ScrollIndicatorConfig, updated by setConfig() + float mHandleLen = 18.0f; + float mRailMin = 232.0f; + float mRailMax = 308.0f; + + uint16_t mCount = 1; + uint16_t mPosition = 0; + + bool mAnimationRunning = false; + uint16_t mAnimationCounter = 0; + uint16_t mAnimationDuration = 0; + float mAnimationStartPos = 0.0f; + float mAnimationEndPos = 0.0f; + + bool mAnimWrap = false; ///< True when the animation wraps around the rail ends + float mAnimOutgoingEnd = 0.0f; ///< Outgoing handle's target position (slides off rail edge) + float mAnimIncomingStart = 0.0f; ///< Incoming handle's start position (slides in from opposite edge) + +private: + void nextAnimationStep(); + float getStartAngle(uint16_t index) const; + + /** + * @brief Stop any running animation and clean up the overflow handle. + * + * Must be called before setActiveId() or before starting a new animation + * when an overflow animation might be in progress. + */ + void stopAnimation(); +}; + +#endif // SCROLLINDICATOR_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp new file mode 100644 index 00000000..92dfae8f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp @@ -0,0 +1,34 @@ +#ifndef SUMMARYFACEHEARTRATE_HPP +#define SUMMARYFACEHEARTRATE_HPP + +#include + +/** + * @brief Summary face showing heart rate summary: peak and average HR over the session. + * + * One of four swipeable faces on the TrackSummary screen. + */ +class SummaryFaceHeartRate : public SummaryFaceHeartRateBase +{ +public: + SummaryFaceHeartRate(); + virtual ~SummaryFaceHeartRate() {} + + virtual void initialize(); + + /** + * @brief Display peak heart rate. + * @param hr Maximum HR recorded during the session, in bpm. + */ + void setMaxHR(float hr); + + /** + * @brief Display average heart rate. + * @param hr Average HR over the session, in bpm. + */ + void setAvgHR(float hr); + +protected: +}; + +#endif // SUMMARYFACEHEARTRATE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceLaps.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceLaps.hpp new file mode 100644 index 00000000..8950ff7b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceLaps.hpp @@ -0,0 +1,71 @@ +#ifndef SUMMARYFACELAPS_HPP +#define SUMMARYFACELAPS_HPP + +#include +#include +#include +#include "ActivitySummary.hpp" + +/** + * @brief Summary face showing individual lap metrics in a paginated scrollable list. + * + * One of four swipeable faces on the TrackSummary screen. Displays up to + * @c kVisible rows at a time; the L1/L2 buttons page through the list in + * increments of @c kPageSize. Unit conversion is performed internally so + * callers only need to supply the raw @c LapSummary vector. + * + * Padding items are appended to the underlying ScrollList so that every page + * transition always selects an off-screen item, guaranteeing the list scrolls + * by exactly @c kPageSize rows per button press. + * + * Unlike other containers that receive pre-converted values, this container + * stores a reference to the raw lap vector and formats each row on demand in + * scrollListUpdateItem(), filling the four columns: lap index, lap time, + * lap average HR, lap max HR. + */ +class SummaryFaceLaps : public SummaryFaceLapsBase +{ +public: + static constexpr uint8_t kPageSize = 3; ///< Rows advanced per L1/L2 press + static constexpr uint8_t kVisible = 5; ///< Rows visible on screen at once + + SummaryFaceLaps(); + virtual ~SummaryFaceLaps() {} + + virtual void initialize(); + + /** + * @brief Populate the list with lap data and reset to the first page. + * @param laps Reference to the lap vector owned by the activity summary. + * The reference must remain valid for the lifetime of this container. + */ + void setLaps(const std::vector& laps); + + /** @brief Return true if there is at least one more page below the current one. */ + bool canScrollDown() const; + + /** @brief Return true if there is at least one more page above the current one. */ + bool canScrollUp() const; + + /** @brief Advance to the next page and animate the list. No-op if already on the last page. */ + void scrollDown(); + + /** @brief Return to the previous page and animate the list. No-op if already on the first page. */ + void scrollUp(); + + /** @brief Return the zero-based index of the currently displayed page. */ + uint8_t getScrollPage() const { return mCurrentPage; } + + /** @brief Return the total number of pages for the current lap vector. */ + uint8_t getPageCount() const { return mNumPages; } + +protected: + /** @brief ScrollList callback -- formats and writes data for item at @p itemIndex. */ + virtual void scrollListUpdateItem(LapListItem& item, int16_t itemIndex) override; + + const std::vector* mLaps = nullptr; + uint8_t mCurrentPage = 0; + uint8_t mNumPages = 0; +}; + +#endif // SUMMARYFACELAPS_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp new file mode 100644 index 00000000..949cc99b --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp @@ -0,0 +1,33 @@ +#ifndef SUMMARYFACEOVERVIEW_HPP +#define SUMMARYFACEOVERVIEW_HPP + +#include +#include + +/** + * @brief Summary face: session time (H:MM:SS), average HR, and total calories. + * + * One of the swipeable faces on the TrackSummary screen. + * Label text widgets are expected to be set in TouchGFX Designer. + */ +class SummaryFaceOverview : public SummaryFaceOverviewBase +{ +public: + SummaryFaceOverview(); + virtual ~SummaryFaceOverview() {} + + virtual void initialize(); + + /** @brief Total active time as "H:MM:SS" in the top value area; no unit suffix. */ + void setTotalTime(std::time_t sec); + + /** @brief Average heart rate (bpm), or "---" when below @ref App::Display::kMinHR. */ + void setAvgHR(float hr); + + /** @brief Total calories (kcal), displayed as a whole number. */ + void setCalories(float kcal); + +protected: +}; + +#endif // SUMMARYFACEOVERVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TimerRing.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TimerRing.hpp new file mode 100644 index 00000000..a4758f1e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TimerRing.hpp @@ -0,0 +1,180 @@ +#ifndef TIMERRING_HPP +#define TIMERRING_HPP + +#include + +/** + * @brief Animated arc-based ring for countdown / count-up timers. + * + * Wraps two Circle widgets from the Designer -- `track` (background ring) + * and `progress` (animated arc) -- plus their PainterABGR2222 painters. + * + * Arc direction (always clockwise): + * FILL -- progress.End moves from track.Start toward track.End as value grows. + * DRAIN -- progress.Start moves from track.Start toward track.End as value shrinks; + * progress.End stays fixed at track.End. + * + * Animation is tick-driven at a configurable speed (units per second). + * At 60 fps, speed = 60 means one full unit per tick. + * + * Designer requirements: + * Circle "track" -- background ring + * Circle "progress" -- animated progress arc + * PainterABGR2222 "trackPainter" -- track colour + * PainterABGR2222 "progressPainter" -- progress colour + * + * @code + * ring.setMaxValue(60); // 60-second countdown + * ring.setSpeed(1.0f); // 1 unit/s -> 60 s to complete + * ring.setMode(TimerRing::DRAIN); + * ring.setProgressColor(0xC08000); + * ring.setValue(60); // start full + * ring.setCompleteCallback(onDoneCb); + * ring.animateTo(0); // begin countdown + * @endcode + */ +class TimerRing : public TimerRingBase +{ +public: + /** Determines which arc endpoint moves as the value changes. */ + enum Mode + { + FILL, ///< End moves track.Start -> track.End (0 -> max: empty -> full) + DRAIN, ///< Start moves track.Start -> track.End (max -> 0: full -> empty) + }; + + TimerRing(); + virtual ~TimerRing() {} + + virtual void initialize() override; + virtual void handleTickEvent() override; + + // ------------------------------------------------------------------------- + // Configuration + // ------------------------------------------------------------------------- + + /** Maximum value; maps to 100 % of the arc. Must be > 0. Default: 100. */ + void setMaxValue(int32_t max); + + /** + * @brief Set the display refresh rate in Hz. + * + * Must be called before animateTo() to ensure correct speed calculation. + * The system may run anywhere from 10 Hz upward, so this value must be + * provided by the screen rather than hardcoded in the component. + * + * @param fps Frames per second (e.g. 10.0f, 30.0f, 60.0f). + */ + void setFPS(float fps); + + /** + * @brief Animation speed in value-units per second. + * + * Examples (at any fps): + * speed = 1, max = 60 -> 60-second countdown + * speed = 30, max = 100 -> ~3.3-second animation + */ + void setSpeed(float unitsPerSecond); + + /** Set which arc endpoint moves (FILL or DRAIN). Default: FILL. */ + void setMode(Mode mode); + + /** Set the progress arc colour at runtime. */ + void setProgressColor(touchgfx::colortype color); + + /** Set the track (background ring) colour at runtime. */ + void setTrackColor(touchgfx::colortype color); + + /** + * @brief Enable looping: when the target is reached the animation restarts + * automatically from the opposite end. + * + * The complete callback fires on every cycle. Default: disabled. + */ + void setLoopEnabled(bool enabled); + + // ------------------------------------------------------------------------- + // Control + // ------------------------------------------------------------------------- + + /** + * @brief Instantly position the arc at @p value with no animation. + * Clamps to [0, maxValue]. Stops any running animation. + */ + void setValue(int32_t value); + + /** + * @brief Start animating toward @p target at the configured speed. + * + * Registers this widget as a timer. Stops automatically when the target + * is reached. Calling animateTo() while already animating redirects to + * the new target without resetting the fractional accumulator. + */ + void animateTo(int32_t target); + + /** + * @brief Freeze animation; target is preserved. + * Call resume() to continue from the current position. + */ + void pause(); + + /** Resume a paused animation. No-op if not paused. */ + void resume(); + + /** Stop animation and discard the current target. */ + void stop(); + + // ------------------------------------------------------------------------- + // Getters + // ------------------------------------------------------------------------- + + int32_t getValue() const { return mValue; } + int32_t getTarget() const { return mTarget; } + float getProgress() const; ///< Normalised [0.0 ... 1.0] + bool isAnimating() const { return mAnimating; } + bool isPaused() const { return mPaused; } + Mode getMode() const { return mMode; } + + // ------------------------------------------------------------------------- + // Callbacks + // ------------------------------------------------------------------------- + + /** + * @brief Called on every tick where the integer value changes. + * Argument: new value. + */ + void setValueChangedCallback(touchgfx::GenericCallback& cb) + { + mpValueChangedCb = &cb; + } + + /** + * @brief Called when the animation reaches its target. + * Argument: final value (equals the target that was set). + * In loop mode this fires on every cycle. + */ + void setCompleteCallback(touchgfx::GenericCallback& cb) + { + mpCompleteCb = &cb; + } + +private: + int32_t mValue = 0; + int32_t mTarget = 0; + int32_t mMaxValue = 100; + float mSpeed = 10.0f; + float mFPS = 10.0f; + float mAccumulator = 0.0f; ///< Sub-tick fractional remainder + bool mAnimating = false; + bool mPaused = false; + bool mLoop = false; + Mode mMode = FILL; + + touchgfx::GenericCallback *mpValueChangedCb = nullptr; + touchgfx::GenericCallback *mpCompleteCb = nullptr; + + /** Recompute progress arc angles from mValue and repaint. */ + void updateArc(); +}; + +#endif // TIMERRING_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Title.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Title.hpp new file mode 100644 index 00000000..c991457a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Title.hpp @@ -0,0 +1,40 @@ +#ifndef TITLE_HPP +#define TITLE_HPP + +#include + +/** + * @brief Screen title titleText container. + * + * Wraps a TextAreaWithOneWildcard to display a localised or raw Unicode + * string as the screen heading. + * + * Usage: + * @code + * title.set(T_SCREEN_HEADING); // from typed-titleText ID + * title.set(myUnicodeBuffer); // from raw buffer + * title.setVisible(false); // hide when not needed + * @endcode + */ +class Title : public TitleBase +{ +public: + Title(); + virtual ~Title() {} + + virtual void initialize(); + + /** @brief Set title from a localised typed-titleText ID. */ + void set(TypedTextId msgId); + + /** @brief Set title from a raw Unicode string. Ignored if @p messageText is null. */ + void set(touchgfx::Unicode::UnicodeChar* messageText); + + /** @brief Set title from a UTF-8 / ASCII C-string. Ignored if @p messageText is null. */ + void set(const char* messageText); + + /** @brief Change the accent color (line + titleText). */ + void setColor(touchgfx::colortype color); +}; + +#endif // TITLE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Toggle.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Toggle.hpp new file mode 100644 index 00000000..f1515670 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/Toggle.hpp @@ -0,0 +1,65 @@ +#ifndef TOGGLE_HPP +#define TOGGLE_HPP + +#include + +/** + * @brief Two-state toggle switch widget. + * + * The rail (Line) changes color and the handle (Circle) slides + * between two positions to indicate ON / OFF state. + * + * Default colors: + * - Rail OFF : #000000 (black) + * - Rail ON : #C08000 (amber) + * - Handle : unchanged + * + * Colors can be customised at runtime via setRailOnColor() etc. + * before the first setState() call. + * + * Usage: + * @code + * toggle.setState(true); // switch ON with default colors + * toggle.setRailOnColor(myColor); // override ON rail color + * bool on = toggle.getState(); + * @endcode + */ +class Toggle : public ToggleBase +{ +public: + Toggle(); + virtual ~Toggle() {} + + virtual void initialize(); + + /** @brief Set the ON/OFF state and update visuals immediately. */ + void setState(bool state); + + /** @brief Return the current ON/OFF state. */ + bool getState() const; + + /** @brief Set the rail color used when the toggle is ON. */ + void setRailOnColor(touchgfx::colortype color); + + /** @brief Set the rail color used when the toggle is OFF. */ + void setRailOffColor(touchgfx::colortype color); + + /** @brief Set the handle color used when the toggle is ON. */ + void setHandleOnColor(touchgfx::colortype color); + + /** @brief Set the handle color used when the toggle is OFF. */ + void setHandleOffColor(touchgfx::colortype color); + +protected: + static constexpr int16_t kHandleOnX = 30; ///< Handle X position when ON + static constexpr int16_t kHandleOffX = 0; ///< Handle X position when OFF + + bool mState = false; ///< Current ON/OFF state + + touchgfx::colortype mRailOnColor; + touchgfx::colortype mRailOffColor; + touchgfx::colortype mHandleOnColor; + touchgfx::colortype mHandleOffColor; +}; + +#endif // TOGGLE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceLap.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceLap.hpp new file mode 100644 index 00000000..0a8f88aa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceLap.hpp @@ -0,0 +1,26 @@ +#ifndef TRACKFACELAP_HPP +#define TRACKFACELAP_HPP + +#include + +/** + * @brief Track face showing lap-focused metrics. + */ +class TrackFaceLap : public TrackFaceLapBase +{ +public: + TrackFaceLap(); + virtual ~TrackFaceLap() {} + + virtual void initialize(); + + void setLapAvgHR(float hr); + void setLapNumber(uint32_t lapNum); + + /** @brief Display current lap elapsed time as "M:SS" (or "H:MM" when >= 1 h). */ + void setTimer(std::time_t sec); + +protected: +}; + +#endif // TRACKFACELAP_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceStatus.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceStatus.hpp new file mode 100644 index 00000000..fd1a4c07 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceStatus.hpp @@ -0,0 +1,35 @@ +#ifndef TRACKFACESTATUS_HPP +#define TRACKFACESTATUS_HPP + +#include + +/** + * @brief Track face showing device status: current time of day and battery level. + * + * Intended as a low-information "status" face that the user can switch to during a session. + */ +class TrackFaceStatus : public TrackFaceStatusBase +{ +public: + TrackFaceStatus(); + virtual ~TrackFaceStatus() {} + + virtual void initialize(); + + /** + * @brief Display the current time of day. + * @param h Hour (0-23). + * @param m Minute (0-59). + */ + void setTime(uint8_t h, uint8_t m); + + /** + * @brief Display the battery charge level. + * @param level Charge percentage (0-100). + */ + void setBatteryLevel(uint8_t level); + +protected: +}; + +#endif // TRACKFACESTATUS_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceTotal.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceTotal.hpp new file mode 100644 index 00000000..ab4ff427 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/TrackFaceTotal.hpp @@ -0,0 +1,28 @@ +#ifndef TRACKFACETOTAL_HPP +#define TRACKFACETOTAL_HPP + +#include + +/** + * @brief Track face showing live HR, calories and elapsed time. + * + * All values are display-ready -- unit conversion is the view's responsibility. + */ +class TrackFaceTotal : public TrackFaceTotalBase +{ +public: + TrackFaceTotal(); + virtual ~TrackFaceTotal() {} + + virtual void initialize(); + + void setHR(float hr, const uint8_t* thresholds, uint8_t thresholdCount); + void setCalories(float calories); + + /** @brief Display total elapsed time as "H:MM:SS". */ + void setTimer(std::time_t sec); + +protected: +}; + +#endif // TRACKFACETOTAL_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainPresenter.hpp new file mode 100644 index 00000000..c7575a61 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainPresenter.hpp @@ -0,0 +1,41 @@ +#ifndef MAINPRESENTER_HPP +#define MAINPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class MainView; + +class MainPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + MainPresenter(MainView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~MainPresenter() {} + + virtual void onIdleTimeout() override; + + void startTrack(); + void exitApp(); + +private: + MainPresenter(); + + MainView& view; +}; + +#endif // MAINPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainView.hpp new file mode 100644 index 00000000..23e4dd6c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/main_screen/MainView.hpp @@ -0,0 +1,38 @@ +#ifndef MAINVIEW_HPP +#define MAINVIEW_HPP + +#include +#include + +class MainView : public MainViewBase +{ +public: + MainView(); + virtual ~MainView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setPositionId(uint16_t id); + uint16_t getPositionId(); + +protected: + using Menu = App::MenuNav::Root; + + MenuItemConfig mItems[Menu::ID_COUNT] {}; + MenuItemConfig mCenterItems[Menu::ID_COUNT] {}; + + touchgfx::Callback mUpdateItemCb; + touchgfx::Callback mUpdateCenterItemCb; + touchgfx::Callback mpAnimationMiddleCb; + + void setupItems(); + void updateItem(MainMenuItem& item, int16_t index); + void updateCenterItem(MainMenuCenterItem& item, int16_t index); + void onAnimationMiddle(int16_t index); + + virtual void handleKeyEvent(uint8_t key) override; + void onConfirm(); + void updateBackground(int16_t index); +}; + +#endif // MAINVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsPresenter.hpp new file mode 100644 index 00000000..5a18734c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsPresenter.hpp @@ -0,0 +1,38 @@ +#ifndef MENUALERTSPRESENTER_HPP +#define MENUALERTSPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class MenuAlertsView; + +class MenuAlertsPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + MenuAlertsPresenter(MenuAlertsView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~MenuAlertsPresenter() {} + + virtual void onIdleTimeout() override { model->exitApp(); } + +private: + MenuAlertsPresenter(); + + MenuAlertsView& view; +}; + +#endif // MENUALERTSPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsView.hpp new file mode 100644 index 00000000..d1fad663 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menualerts_screen/MenuAlertsView.hpp @@ -0,0 +1,41 @@ +#ifndef MENUALERTSVIEW_HPP +#define MENUALERTSVIEW_HPP + +#include +#include +#include + +class MenuAlertsView : public MenuAlertsViewBase +{ +public: + MenuAlertsView(); + virtual ~MenuAlertsView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setTime(Settings::Alerts::Time::Id id); + void setPositionId(uint16_t id); + uint16_t getPositionId(); + +protected: + using Menu = App::MenuNav::Root::Settings::Alerts; + using Time = App::MenuNav::Root::Settings::Alerts::Time; + + static const uint16_t kBuffSize = 32; + + Time::Id mTimeId = Time::ID_OFF; + + touchgfx::Unicode::UnicodeChar mTimeTipBuff[kBuffSize] {}; + touchgfx::colortype mTimeTipColor {}; + + touchgfx::Callback mUpdateItemCb; + touchgfx::Callback mUpdateCenterItemCb; + + void updateItem(MainMenuItem& item, int16_t index); + void updateCenterItem(MainMenuCenterItem& item, int16_t index); + void formatTips(); + + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // MENUALERTSVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsPresenter.hpp new file mode 100644 index 00000000..390a1e73 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsPresenter.hpp @@ -0,0 +1,40 @@ +#ifndef MENUSETTINGSPRESENTER_HPP +#define MENUSETTINGSPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class MenuSettingsView; + +class MenuSettingsPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + MenuSettingsPresenter(MenuSettingsView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~MenuSettingsPresenter() {} + + virtual void onIdleTimeout() override { model->exitApp(); } + + void savePhoneNotif(bool state); + +private: + MenuSettingsPresenter(); + + MenuSettingsView& view; +}; + +#endif // MENUSETTINGSPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsView.hpp new file mode 100644 index 00000000..4701a3a0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menusettings_screen/MenuSettingsView.hpp @@ -0,0 +1,34 @@ +#ifndef MENUSETTINGSVIEW_HPP +#define MENUSETTINGSVIEW_HPP + +#include +#include +#include + +class MenuSettingsView : public MenuSettingsViewBase +{ +public: + MenuSettingsView(); + virtual ~MenuSettingsView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setPhoneNotif(bool state); + void setPositionId(uint16_t id); + uint16_t getPositionId(); + +protected: + using Menu = App::MenuNav::Root::Settings; + + bool mPhoneNotif = false; + + touchgfx::Callback mUpdateItemCb; + touchgfx::Callback mUpdateCenterItemCb; + + void updateItem(MainMenuItem& item, int16_t index); + void updateCenterItem(MainMenuCenterItem& item, int16_t index); + + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // MENUSETTINGSVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimePresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimePresenter.hpp new file mode 100644 index 00000000..b62c9178 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimePresenter.hpp @@ -0,0 +1,40 @@ +#ifndef MENUTIMEPRESENTER_HPP +#define MENUTIMEPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class MenuTimeView; + +class MenuTimePresenter : public touchgfx::Presenter, public ModelListener +{ +public: + MenuTimePresenter(MenuTimeView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~MenuTimePresenter() {} + + virtual void onIdleTimeout() override { model->exitApp(); } + + void saveTime(Settings::Alerts::Time::Id id); + +private: + MenuTimePresenter(); + + MenuTimeView& view; +}; + +#endif // MENUTIMEPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimeView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimeView.hpp new file mode 100644 index 00000000..628216d4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutime_screen/MenuTimeView.hpp @@ -0,0 +1,35 @@ +#ifndef MENUTIMEVIEW_HPP +#define MENUTIMEVIEW_HPP + +#include +#include +#include + +class MenuTimeView : public MenuTimeViewBase +{ +public: + MenuTimeView(); + virtual ~MenuTimeView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setTime(Settings::Alerts::Time::Id id); + +protected: + using Menu = App::MenuNav::Root::Settings::Alerts::Time; + + static const uint16_t kBuffSize = 32; + + touchgfx::Unicode::UnicodeChar mMainBuff[kBuffSize] {}; + touchgfx::Unicode::UnicodeChar mItemBuff[kBuffSize] {}; + + touchgfx::Callback mUpdateItemCb; + touchgfx::Callback mUpdateCenterItemCb; + + void updateItem(MainMenuItem& item, int16_t index); + void updateCenterItem(MainMenuCenterItem& item, int16_t index); + + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // MENUTIMEVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedPresenter.hpp new file mode 100644 index 00000000..cc4d5beb --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedPresenter.hpp @@ -0,0 +1,36 @@ +#ifndef MENUTIMESAVEDPRESENTER_HPP +#define MENUTIMESAVEDPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class MenuTimeSavedView; + +class MenuTimeSavedPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + MenuTimeSavedPresenter(MenuTimeSavedView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~MenuTimeSavedPresenter() {} + +private: + MenuTimeSavedPresenter(); + + MenuTimeSavedView& view; +}; + +#endif // MENUTIMESAVEDPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedView.hpp new file mode 100644 index 00000000..3e2b701d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/menutimesaved_screen/MenuTimeSavedView.hpp @@ -0,0 +1,28 @@ +#ifndef MENUTIMESAVEDVIEW_HPP +#define MENUTIMESAVEDVIEW_HPP + +#include +#include +#include +#include + +class MenuTimeSavedView : public MenuTimeSavedViewBase +{ +public: + MenuTimeSavedView(); + virtual ~MenuTimeSavedView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setTime(Settings::Alerts::Time::Id id); + +private: + using Menu = App::MenuNav::Root::Settings::Alerts::Time; + + void onDismiss(); + + CountdownTimer mDismissTimer; + touchgfx::Callback mDismissCb; +}; + +#endif // MENUTIMESAVEDVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/AppMenu.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/AppMenu.hpp new file mode 100644 index 00000000..b357564a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/AppMenu.hpp @@ -0,0 +1,130 @@ +/** + ****************************************************************************** + * @file AppMenu.hpp + * @date 17-04-2026 + * @author Denys Saienko + * @brief Menu configuration. + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef APP_MENU_HPP +#define APP_MENU_HPP + +#include +#include "Settings.hpp" + +// ============================================================================= +// App::MenuNav -- Navigation state with hierarchical position tracking. +// +// Usage in Model: +// App::MenuNav::Nav mMenu {}; +// App::MenuNav::Nav& menu() { return mMenu; } +// +// Usage in Presenter: +// activate() -- view.setPositionId(model->menu().get()); // root level +// view.setPositionId(model->menu().settings.get()); // sub-level +// model->menu().settings.resetChildren(); +// deactivate() -- model->menu().set(view.getPositionId()); +// model->menu().reset(); // full tree reset (e.g. on idle timeout) +// ============================================================================= +namespace App::MenuNav +{ + +// ----------------------------------------------------------------------------- +// Position +// Stores the selected index for one menu level. +// TMenu must expose ID_DEFAULT as an unscoped enum member. +// ----------------------------------------------------------------------------- +template +struct Position { + uint16_t value = static_cast(TMenu::ID_DEFAULT); + + void set(uint16_t v) { value = v; } + uint16_t get() const { return value; } + void reset() { value = static_cast(TMenu::ID_DEFAULT); } +}; + + +// ----------------------------------------------------------------------------- +// Menu descriptors +// Each struct describes one menu screen: +// enum Id -- ordered item list (ID_COUNT and ID_DEFAULT required) +// kValues[] -- optional: domain values mapped 1-to-1 to enum items +// ----------------------------------------------------------------------------- + +struct Root { + enum Id { ID_START = 0, ID_SETTINGS, + ID_COUNT, ID_DEFAULT = ID_START }; + + struct Settings { + enum Id { + ID_ALERTS = 0, ID_PHONE_NOTIF, + ID_COUNT, ID_DEFAULT = ID_ALERTS + }; + + struct Alerts { + enum Id { + ID_TIME = 0, + ID_COUNT, ID_DEFAULT = ID_TIME + }; + + using Time = ::Settings::Alerts::Time; + }; + }; +}; + + +// TrackView is a destination reached from Root::START, but is not nested +// inside Root because TrackAction is always an overlay of TrackView. +// TrackAction is always an overlay of TrackView, so it lives inside it. +struct TrackView { + enum Id { ID_TRACK1 = 0, ID_TRACK2, ID_TRACK3, + ID_COUNT, ID_DEFAULT = ID_TRACK1 }; + + struct Action { + enum Id { ID_RESUME = 0, ID_SUMMARY, ID_SAVE, ID_DISCARD, + ID_COUNT, ID_DEFAULT = ID_RESUME }; + }; +}; + + +// ----------------------------------------------------------------------------- +// Nav +// Hierarchical navigation state. Each node inherits Position to provide +// get() / set() / reset() for its own index, and adds: +// resetChildren() -- resets all direct child nodes to their defaults +// reset() -- resets own position + all children (full subtree) +// +// Leaf nodes are plain Position -- no children, reset() already defined. +// xNav structs are created only for nodes that have children. +// ----------------------------------------------------------------------------- +struct Nav : Position { + + // TrackView node -- Action is a child (entered from any TrackView page) + struct TrackViewNav : Position { + Position action; + + void resetChildren() { action.reset(); } + void reset() { Position::reset(); resetChildren(); } + }; + + // Settings node -- alerts picker is a child + struct SettingsNav : Position { + Position alerts; + + void resetChildren() { alerts.reset(); } + void reset() { Position::reset(); resetChildren(); } + }; + + TrackViewNav track; // TrackView page + nested TrackAction + SettingsNav settings; // Settings menu + nested alerts + + void resetChildren() { track.reset(); settings.reset(); } + void reset() { Position::reset(); resetChildren(); } +}; + +} // namespace App::MenuNav + +#endif // APP_MENU_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/Model.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/Model.hpp new file mode 100644 index 00000000..17086b0c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/Model.hpp @@ -0,0 +1,140 @@ +#ifndef MODEL_HPP +#define MODEL_HPP + +#include "touchgfx/UIEventListener.hpp" + +#include +#include + +#include "SDK/Kernel/Kernel.hpp" +#include "SDK/Interfaces/IGuiLifeCycleCallback.hpp" +#include "SDK/Interfaces/ICustomMessageHandler.hpp" +#include +#include +#include +#include + +#include "Commands.hpp" +#include "Settings.hpp" +#include "ActivitySummary.hpp" +#include "Track.hpp" +#include "AppMenu.hpp" + + +// --------------------------------------------------------------------------- +// App::Config -- application-level constants (timing, frame rate). +// Screens include this transitively via Presenter -> ModelListener -> Model.hpp. +// --------------------------------------------------------------------------- +namespace App::Config +{ +constexpr uint32_t kFrameRate = SDK::GUI::Config::kFrameRate; + +constexpr uint32_t kMenuAnimationSteps = 4; +constexpr uint32_t kScreenTimeoutSteps = SDK::Utils::secToTicks(30, kFrameRate); // 30 s + +// HR thresholds +constexpr uint8_t kHrThresholdsCount = CustomMessage::kHrThresholdsCount; +} // namespace App::Config + +// --------------------------------------------------------------------------- +// App::Display -- minimum valid values for on-screen display. +// Below these thresholds the widget shows "---" instead of a number. +// --------------------------------------------------------------------------- +namespace App::Display +{ +constexpr float kMinDist = 0.0f; ///< km or mi -- negative = no data +constexpr float kMinPace = 30.0f; ///< sec/km or sec/mi -- below any human running pace +constexpr float kMinHR = 20.0f; ///< bpm -- below physiological minimum +} // namespace App::Display + + +class FrontendApplication; +class ModelListener; + +class Model : public touchgfx::UIEventListener, + public SDK::Interface::IGuiLifeCycleCallback, + public SDK::Interface::ICustomMessageHandler +{ +public: + Model(); + + void bind(ModelListener* listener) { modelListener = listener; } + + // Controls + FrontendApplication& application(); + App::MenuNav::Nav& menu(); + void tick(); + void handleKeyEvent(uint8_t key); + void invalidate(); + void resetIdleTimer(); + void exitApp(); + + // Date/Time + void getDate(uint8_t& month, uint8_t& day, uint8_t& weekday); + void getTime(uint8_t& h, uint8_t& m, uint8_t& s); + + // Power + uint8_t getBatteryLevel() const; + + // Settings + bool isUnitsImperial() const; + const uint8_t* getHrThresholds() const; + uint8_t getHrThresholdsCount() const; + const Settings& getSettings() const; + void saveSettings(const Settings& sett); + + // Track + void trackStart(); + bool isTrackActive() const; + void trackPause(); + void trackResume(); + bool isTrackPaused() const; + const Track::Data& getTrackData() const; + void saveLap(); + void saveTrack(); + void discardTrack(); + bool isTrackSummaryAvailable() const; + const ActivitySummary& getTrackSummary() const; + +private: + // Fields required for GUI <-> Service communication + ModelListener* modelListener; + const SDK::Kernel& mKernel; + CustomMessage::Sender mSrvSender; + + // IGuiLifeCycleCallback + void onStart() override; + void onResume() override; + void onSuspend() override; + void onStop() override; + + // ICustomMessageHandler + bool customMessageHandler(SDK::MessageBase* message) override; + + void decIdleTimer(); + bool isAnyKeyPressed(uint8_t key) const; + + // State + bool mIsRunning = false; + bool mInvalidate = false; + uint32_t mIdleTimer = 0; + + App::MenuNav::Nav mMenu {}; + std::tm mTime {}; + + // Settings (mirrored from Service) + bool mUnitsImperial = false; + uint8_t mHrThresholds[App::Config::kHrThresholdsCount] = {}; + uint8_t mHrThresholdsCount = App::Config::kHrThresholdsCount; + Settings mSettings {}; + + // Kernel state + uint8_t mBatteryLevel = 0; + + // Track + Track::State mTrackState {}; + const ActivitySummary* mActivitySummary = nullptr; + Track::Data mTrackData {}; +}; + +#endif // MODEL_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/ModelListener.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/ModelListener.hpp new file mode 100644 index 00000000..bf87d6e2 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/model/ModelListener.hpp @@ -0,0 +1,37 @@ +#ifndef MODELLISTENER_HPP +#define MODELLISTENER_HPP + +#include +#include + +class ModelListener +{ +public: + ModelListener() : model(0) {} + + virtual ~ModelListener() {} + + void bind(Model* m) + { + model = m; + } + + + virtual void onIdleTimeout() {} + virtual void onBatteryLevel(uint8_t level) {} + virtual void onDate(uint16_t year, uint8_t month, uint8_t day, uint8_t wday) {} + virtual void onTime(uint8_t hour, uint8_t minute, uint8_t sec) {} + virtual void onSettings(const Settings& settings) {} + virtual void onTrackState(const Track::State& state) {} + virtual void onTrackData(const Track::Data& data) {} + virtual void onLapChanged(uint8_t lapEnd) {} + virtual void onActivitySummary(const ActivitySummary& summary) {} + + +protected: + Model* model; + + +}; + +#endif // MODELLISTENER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackPresenter.hpp new file mode 100644 index 00000000..54102307 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackPresenter.hpp @@ -0,0 +1,43 @@ +#ifndef TRACKPRESENTER_HPP +#define TRACKPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackView; + +class TrackPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackPresenter(TrackView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackPresenter() {} + + virtual void onTrackData(const Track::Data& data) override; + virtual void onBatteryLevel(uint8_t lvl) override; + virtual void onTime(uint8_t hour, uint8_t minute, uint8_t sec) override; + virtual void onLapChanged(uint8_t lapEnd) override; + + void saveLap(); + +private: + TrackPresenter(); + + TrackView& view; +}; + +#endif // TRACKPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackView.hpp new file mode 100644 index 00000000..bc10c6e7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/track_screen/TrackView.hpp @@ -0,0 +1,34 @@ +#ifndef TRACKVIEW_HPP +#define TRACKVIEW_HPP + +#include +#include + +class TrackView : public TrackViewBase +{ +public: + TrackView(); + virtual ~TrackView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setPositionId(uint16_t id); + uint16_t getPositionId(); + + void setConfig(bool isImperial, const uint8_t* thresholds, uint8_t thresholdCount); + void setTrackData(const Track::Data& data); + + void setTime(uint8_t h, uint8_t m); + void setBatteryLevel(uint8_t level); + +protected: + + virtual void handleKeyEvent(uint8_t key) override; + + uint16_t mCurrentFaceId = 0; + bool mIsImperial = false; + uint8_t mHrThresholds[App::Config::kHrThresholdsCount] = {}; + uint8_t mHrThresholdCount = 0; +}; + +#endif // TRACKVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionPresenter.hpp new file mode 100644 index 00000000..5f4d8c49 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionPresenter.hpp @@ -0,0 +1,40 @@ +#ifndef TRACKACTIONPRESENTER_HPP +#define TRACKACTIONPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackActionView; + +class TrackActionPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackActionPresenter(TrackActionView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackActionPresenter() {} + + virtual void onTrackData(const Track::Data& data) override; + + void resumeTrack(); + +private: + TrackActionPresenter(); + + TrackActionView& view; +}; + +#endif // TRACKACTIONPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp new file mode 100644 index 00000000..ce05eea8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp @@ -0,0 +1,48 @@ +#ifndef TRACKACTIONVIEW_HPP +#define TRACKACTIONVIEW_HPP + +#include +#include +#include + +class TrackActionView : public TrackActionViewBase +{ +public: + TrackActionView(); + virtual ~TrackActionView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setPositionId(uint16_t id); + uint16_t getPositionId(); + void setUnitsImperial(bool isImperial); + void setTimer(std::time_t sec); + void setCalories(float calories); + void setZoneTimes(const std::time_t zoneTimes[5]); + void setCurrentZone(uint8_t zone); + void setAvgHR(float hr); + +protected: + using Menu = App::MenuNav::TrackView::Action; + + bool mIsImperial = false; + + float mCalories = 0.0f; + std::time_t mZoneTotalSec = 0; + uint8_t mCurrentZone = 0; + float mAvgHr = 0.0f; + + ItemLayout mItemLayout {}; + + touchgfx::Callback mUpdateItemCb; + touchgfx::Callback mUpdateCenterItemCb; + touchgfx::Callback mCarouselCb; + + void updateItem(MainMenuItem& item, int16_t index); + void updateCenterItem(MainMenuCenterItem& item, int16_t index); + void onCarouselUpdate(int16_t index); + + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // TRACKACTIONVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.hpp new file mode 100644 index 00000000..ba578e50 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.hpp @@ -0,0 +1,38 @@ +#ifndef TRACKDISCARDCONFIRMATIONPRESENTER_HPP +#define TRACKDISCARDCONFIRMATIONPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackDiscardConfirmationView; + +class TrackDiscardConfirmationPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackDiscardConfirmationPresenter(TrackDiscardConfirmationView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackDiscardConfirmationPresenter() {} + + virtual void onIdleTimeout() override { model->application().gotoTrackActionScreenNoTransition(); } + +private: + TrackDiscardConfirmationPresenter(); + + TrackDiscardConfirmationView& view; +}; + +#endif // TRACKDISCARDCONFIRMATIONPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.hpp new file mode 100644 index 00000000..ca60bcec --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.hpp @@ -0,0 +1,18 @@ +#ifndef TRACKDISCARDCONFIRMATIONVIEW_HPP +#define TRACKDISCARDCONFIRMATIONVIEW_HPP + +#include +#include + +class TrackDiscardConfirmationView : public TrackDiscardConfirmationViewBase +{ +public: + TrackDiscardConfirmationView(); + virtual ~TrackDiscardConfirmationView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); +protected: + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // TRACKDISCARDCONFIRMATIONVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedPresenter.hpp new file mode 100644 index 00000000..3eddf3f4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedPresenter.hpp @@ -0,0 +1,38 @@ +#ifndef TRACKDISCARDEDPRESENTER_HPP +#define TRACKDISCARDEDPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackDiscardedView; + +class TrackDiscardedPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackDiscardedPresenter(TrackDiscardedView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackDiscardedPresenter() {} + + void exitApp(); + +private: + TrackDiscardedPresenter(); + + TrackDiscardedView& view; +}; + +#endif // TRACKDISCARDEDPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedView.hpp new file mode 100644 index 00000000..5d5c890f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackdiscarded_screen/TrackDiscardedView.hpp @@ -0,0 +1,24 @@ +#ifndef TRACKDISCARDEDVIEW_HPP +#define TRACKDISCARDEDVIEW_HPP + +#include +#include +#include +#include + +class TrackDiscardedView : public TrackDiscardedViewBase +{ +public: + TrackDiscardedView(); + virtual ~TrackDiscardedView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + +private: + void onDismiss(); + + CountdownTimer mDismissTimer; + touchgfx::Callback mDismissCb; +}; + +#endif // TRACKDISCARDEDVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapPresenter.hpp new file mode 100644 index 00000000..86fd6cae --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapPresenter.hpp @@ -0,0 +1,36 @@ +#ifndef TRACKLAPPRESENTER_HPP +#define TRACKLAPPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackLapView; + +class TrackLapPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackLapPresenter(TrackLapView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackLapPresenter() {} + +private: + TrackLapPresenter(); + + TrackLapView& view; +}; + +#endif // TRACKLAPPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapView.hpp new file mode 100644 index 00000000..6605000e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracklap_screen/TrackLapView.hpp @@ -0,0 +1,35 @@ +#ifndef TRACKLAPVIEW_HPP +#define TRACKLAPVIEW_HPP + +#include +#include +#include +#include + +class TrackLapView : public TrackLapViewBase +{ +public: + TrackLapView(); + virtual ~TrackLapView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setUnitsImperial(bool isImperial); + void setLapNum(uint32_t n); + void setLapCalories(float calories); + void setTimer(std::time_t sec); + void setAvgLapHR(float hr); + +protected: + virtual void handleKeyEvent(uint8_t key) override; + +private: + void onDismiss(); + + bool mIsImperial = false; + + CountdownTimer mDismissTimer; + touchgfx::Callback mDismissCb; +}; + +#endif // TRACKLAPVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedPresenter.hpp new file mode 100644 index 00000000..fa168565 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedPresenter.hpp @@ -0,0 +1,36 @@ +#ifndef TRACKSAVEDPRESENTER_HPP +#define TRACKSAVEDPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackSavedView; + +class TrackSavedPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackSavedPresenter(TrackSavedView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackSavedPresenter() {} + +private: + TrackSavedPresenter(); + + TrackSavedView& view; +}; + +#endif // TRACKSAVEDPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedView.hpp new file mode 100644 index 00000000..9e16f5e5 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksaved_screen/TrackSavedView.hpp @@ -0,0 +1,24 @@ +#ifndef TRACKSAVEDVIEW_HPP +#define TRACKSAVEDVIEW_HPP + +#include +#include +#include +#include + +class TrackSavedView : public TrackSavedViewBase +{ +public: + TrackSavedView(); + virtual ~TrackSavedView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + +private: + void onDismiss(); + + CountdownTimer mDismissTimer; + touchgfx::Callback mDismissCb; +}; + +#endif // TRACKSAVEDVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationPresenter.hpp new file mode 100644 index 00000000..ce8adf79 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationPresenter.hpp @@ -0,0 +1,39 @@ +#ifndef TRACKSTARTCONFIRMATIONPRESENTER_HPP +#define TRACKSTARTCONFIRMATIONPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackStartConfirmationView; + +class TrackStartConfirmationPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackStartConfirmationPresenter(TrackStartConfirmationView& v); + + /** + * The activate function is called automatically when this screen is "switched in" + * (ie. made active). Initialization logic can be placed here. + */ + virtual void activate(); + + /** + * The deactivate function is called automatically when this screen is "switched out" + * (ie. made inactive). Teardown functionality can be placed here. + */ + virtual void deactivate(); + + virtual ~TrackStartConfirmationPresenter() {} + + virtual void onIdleTimeout() override; + void startTrack(); + +private: + TrackStartConfirmationPresenter(); + + TrackStartConfirmationView& view; +}; + +#endif // TRACKSTARTCONFIRMATIONPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationView.hpp new file mode 100644 index 00000000..633efbb6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackstartconfirmation_screen/TrackStartConfirmationView.hpp @@ -0,0 +1,18 @@ +#ifndef TRACKSTARTCONFIRMATIONVIEW_HPP +#define TRACKSTARTCONFIRMATIONVIEW_HPP + +#include +#include + +class TrackStartConfirmationView : public TrackStartConfirmationViewBase +{ +public: + TrackStartConfirmationView(); + virtual ~TrackStartConfirmationView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); +protected: + virtual void handleKeyEvent(uint8_t key) override; +}; + +#endif // TRACKSTARTCONFIRMATIONVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryPresenter.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryPresenter.hpp new file mode 100644 index 00000000..d9749280 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryPresenter.hpp @@ -0,0 +1,35 @@ +#ifndef TRACKSUMMARYPRESENTER_HPP +#define TRACKSUMMARYPRESENTER_HPP + +#include +#include + +using namespace touchgfx; + +class TrackSummaryView; + +class TrackSummaryPresenter : public touchgfx::Presenter, public ModelListener +{ +public: + TrackSummaryPresenter(TrackSummaryView& v); + + virtual void activate(); + virtual void deactivate(); + + virtual ~TrackSummaryPresenter() {} + + void exitApp(); + + /** + * @brief Called when R1 is pressed. + * Returns to TrackAction screen if track is paused, otherwise exits the app. + */ + void backToTrack(); + +private: + TrackSummaryPresenter(); + + TrackSummaryView& view; +}; + +#endif // TRACKSUMMARYPRESENTER_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp new file mode 100644 index 00000000..afeaac54 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp @@ -0,0 +1,35 @@ +#ifndef TRACKSUMMARYVIEW_HPP +#define TRACKSUMMARYVIEW_HPP + +#include +#include +#include +#include "ActivitySummary.hpp" + +class TrackSummaryView : public TrackSummaryViewBase +{ +public: + TrackSummaryView(); + virtual ~TrackSummaryView() {} + virtual void setupScreen(); + virtual void tearDownScreen(); + + void setSummary(const ActivitySummary& s, bool isPaused); + +protected: + enum Face : uint8_t { + FACE_OVERVIEW = 0, + FACE_HEARTRATE = 1, + FACE_LAPS = 2, + }; + + uint8_t mCurrentFace = FACE_OVERVIEW; + bool mTrackIsPaused = false; + uint8_t mLapsPageCount = 0; + + virtual void handleKeyEvent(uint8_t key) override; + void updateFace(); + void updateScrollIndicator(); +}; + +#endif // TRACKSUMMARYVIEW_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/common/FrontendApplication.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/common/FrontendApplication.cpp new file mode 100644 index 00000000..5875945a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/common/FrontendApplication.cpp @@ -0,0 +1,7 @@ +#include + +FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap) + : FrontendApplicationBase(m, heap) +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Battery.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Battery.cpp new file mode 100644 index 00000000..382542e4 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Battery.cpp @@ -0,0 +1,67 @@ +#include + +// ----------------------------------------------------------------------------- +// Segment colors +// ----------------------------------------------------------------------------- +static constexpr uint32_t kColorInactive = 0x404040u; +static constexpr uint32_t kColorActive = 0x008080u; +static constexpr uint32_t kColorLow = 0xC00000u; + +// ----------------------------------------------------------------------------- +Battery::Battery() +{ +} + +void Battery::initialize() +{ + BatteryBase::initialize(); +} + +// ----------------------------------------------------------------------------- +// Private helpers +// ----------------------------------------------------------------------------- + +void Battery::setSegment(touchgfx::Box& box, + touchgfx::Line& line1, touchgfx::PainterABGR2222& p1, + touchgfx::Line& line2, touchgfx::PainterABGR2222& p2, + touchgfx::colortype color) +{ + box.setColor(color); + p1.setColor(color); + p2.setColor(color); + box.invalidate(); + line1.invalidate(); + line2.invalidate(); +} + +void Battery::setSegment4(touchgfx::colortype color) +{ + s4box.setColor(color); + s4line1Painter.setColor(color); + s4line2Painter.setColor(color); + s4line3Painter.setColor(color); + s4box.invalidate(); + s4line1.invalidate(); + s4line2.invalidate(); + s4line3.invalidate(); +} + +// ----------------------------------------------------------------------------- +// Public API +// ----------------------------------------------------------------------------- + +void Battery::setLevel(uint8_t level) +{ + // s1: red at 1-24 %, inactive at 0 % + const touchgfx::colortype c1 = (level == 0) ? kColorInactive : + (level < 25) ? kColorLow : kColorActive; + setSegment(s1box, s1line1, s1line1Painter, s1line2, s1line2Painter, c1); + + setSegment(s2box, s2line1, s2line1Painter, s2line2, s2line2Painter, + level >= 25 ? kColorActive : kColorInactive); + + setSegment(s3box, s3line1, s3line1Painter, s3line2, s3line2Painter, + level >= 50 ? kColorActive : kColorInactive); + + setSegment4(level >= 75 ? kColorActive : kColorInactive); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Buttons.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Buttons.cpp new file mode 100644 index 00000000..1d26ec72 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Buttons.cpp @@ -0,0 +1,41 @@ +#include +#include + +Buttons::Buttons() +{ +} + +void Buttons::initialize() +{ + ButtonsBase::initialize(); +} + +// --------------------------------------------------------------------------- + +touchgfx::colortype Buttons::toColortype(Color color) +{ + switch (color) { + case WHITE: return touchgfx::Color::getColorFromRGB(192, 192, 192); + case AMBER: return touchgfx::Color::getColorFromRGB(192, 128, 0); + case RED: return touchgfx::Color::getColorFromRGB(192, 0, 0); + default: return 0; + } +} + +void Buttons::applyColor(touchgfx::Circle& arc, + touchgfx::PainterABGR2222& painter, + Color color) +{ + arc.setVisible(color != NONE); + if (color != NONE) { + painter.setColor(toColortype(color)); + } + arc.invalidate(); +} + +// --------------------------------------------------------------------------- + +void Buttons::setL1(Color color) { applyColor(bL1, bL1Painter, color); } +void Buttons::setL2(Color color) { applyColor(bL2, bL2Painter, color); } +void Buttons::setR1(Color color) { applyColor(bR1, bR1Painter, color); } +void Buttons::setR2(Color color) { applyColor(bR2, bR2Painter, color); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/CountdownTimer.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/CountdownTimer.cpp new file mode 100644 index 00000000..cd2ecc5a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/CountdownTimer.cpp @@ -0,0 +1,76 @@ +#include +#include + +CountdownTimer::CountdownTimer() +{ +} + +CountdownTimer::~CountdownTimer() +{ + unregisterTimer(); +} + +// ---- Configuration --------------------------------------------------------- + +void CountdownTimer::setDuration(uint16_t ticks) +{ + mDuration = ticks; +} + +void CountdownTimer::setCallback(touchgfx::GenericCallback<>& cb) +{ + mpCb = &cb; +} + +// ---- Control --------------------------------------------------------------- + +void CountdownTimer::start() +{ + mCounter = mDuration; + registerTimer(); +} + +void CountdownTimer::stop() +{ + unregisterTimer(); +} + +void CountdownTimer::reset() +{ + mCounter = mDuration; + // Timer stays registered -- no unregister/register cycle needed. +} + +// ---- Tick ------------------------------------------------------------------ + +void CountdownTimer::handleTickEvent() +{ + if (mCounter == 0) { + return; + } + + if (--mCounter == 0) { + unregisterTimer(); + if (mpCb != nullptr && mpCb->isValid()) { + mpCb->execute(); + } + } +} + +// ---- Private --------------------------------------------------------------- + +void CountdownTimer::registerTimer() +{ + if (!mRegistered) { + touchgfx::Application::getInstance()->registerTimerWidget(this); + mRegistered = true; + } +} + +void CountdownTimer::unregisterTimer() +{ + if (mRegistered) { + touchgfx::Application::getInstance()->unregisterTimerWidget(this); + mRegistered = false; + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/HeartRateZone.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/HeartRateZone.cpp new file mode 100644 index 00000000..bd137afa --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/HeartRateZone.cpp @@ -0,0 +1,45 @@ +#include + +HeartRateZone::HeartRateZone() + : mZones{&hr1, &hr2, &hr3, &hr4, &hr5} +{ +} + +void HeartRateZone::initialize() +{ + HeartRateZoneBase::initialize(); +} + +void HeartRateZone::setHR(float hr, const uint8_t* thresholds, uint8_t thresholdCount) +{ + if (thresholds == nullptr || thresholdCount == 0) { + return; + } + + if (thresholdCount > kZoneCount) { + thresholdCount = kZoneCount; + } + + for (touchgfx::Image* zone : mZones) { + zone->setVisible(false); + } + + // Walk thresholds from highest to lowest; the first threshold that hr exceeds + // determines the active zone. activeZone starts at the top and decrements + // until a matching threshold is found (or goes negative -- no zone shown). + int activeZone = kZoneCount - 1; + for (int i = thresholdCount - 1; i >= 0; --i) { + if (hr > thresholds[i]) { + break; + } + --activeZone; + } + + if (activeZone >= 0) { + mZones[activeZone]->setVisible(true); + } + + for (touchgfx::Image* zone : mZones) { + zone->invalidate(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/InfoCarousel.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/InfoCarousel.cpp new file mode 100644 index 00000000..2502d835 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/InfoCarousel.cpp @@ -0,0 +1,108 @@ +#include +#include + +InfoCarousel::InfoCarousel() +{ +} + +InfoCarousel::~InfoCarousel() +{ + unregisterTimer(); +} + +void InfoCarousel::initialize() +{ + InfoCarouselBase::initialize(); +} + +// ---- Private helpers ------------------------------------------------------- + +void InfoCarousel::registerTimer() +{ + if (!mRegistered) { + touchgfx::Application::getInstance()->registerTimerWidget(this); + mRegistered = true; + } +} + +void InfoCarousel::unregisterTimer() +{ + if (mRegistered) { + touchgfx::Application::getInstance()->unregisterTimerWidget(this); + mRegistered = false; + } +} + +void InfoCarousel::fireCallback() +{ + if (mpUpdateCb != nullptr && mpUpdateCb->isValid()) { + mpUpdateCb->execute(static_cast(mIndex)); + } +} + +// ---- Cycling control ------------------------------------------------------- + +void InfoCarousel::setCount(uint16_t count) +{ + mCount = count; + + if (mCount > 1) { + registerTimer(); + } else { + unregisterTimer(); + } + + mIndex = 0; + mTick = mPeriod; + fireCallback(); +} + +void InfoCarousel::setPeriod(uint16_t ticks) +{ + mPeriod = (ticks > 0) ? ticks : 1; + mTick = mPeriod; +} + +void InfoCarousel::setUpdateCallback(touchgfx::GenericCallback& cb) +{ + mpUpdateCb = &cb; +} + +void InfoCarousel::refresh() +{ + fireCallback(); +} + +// ---- Content --------------------------------------------------------------- + +void InfoCarousel::setTitle(TypedTextId msgId) +{ + Unicode::snprintf(titleTextBuffer, TITLETEXT_SIZE, "%s", + touchgfx::TypedText(msgId).getText()); + titleText.invalidate(); +} + +void InfoCarousel::setValue(const touchgfx::Unicode::UnicodeChar* messageText) +{ + if (messageText != nullptr) { + Unicode::snprintf(dataValueBuffer, DATAVALUE_SIZE, "%s", messageText); + dataValue.setVisible(true); + } else { + dataValue.setVisible(false); + } + dataValue.invalidate(); +} + +// ---- Timer ----------------------------------------------------------------- + +void InfoCarousel::handleTickEvent() +{ + if (mTick > 0) { + --mTick; + return; + } + + mTick = mPeriod; + mIndex = (mIndex + 1) % mCount; + fireCallback(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/LapListItem.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/LapListItem.cpp new file mode 100644 index 00000000..6ed377d8 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/LapListItem.cpp @@ -0,0 +1,34 @@ +#include + +LapListItem::LapListItem() +{ +} + +void LapListItem::initialize() +{ + LapListItemBase::initialize(); +} + +void LapListItem::setIndex(const touchgfx::Unicode::UnicodeChar* text) +{ + Unicode::strncpy(indexTextBuffer, text, INDEXTEXT_SIZE); + indexText.invalidate(); +} + +void LapListItem::setTime(const touchgfx::Unicode::UnicodeChar* text) +{ + Unicode::strncpy(timeTextBuffer, text, TIMETEXT_SIZE); + timeText.invalidate(); +} + +void LapListItem::setAvgHR(const touchgfx::Unicode::UnicodeChar* text) +{ + Unicode::strncpy(avgHRTextBuffer, text, AVGHRTEXT_SIZE); + avgHRText.invalidate(); +} + +void LapListItem::setMaxHR(const touchgfx::Unicode::UnicodeChar* text) +{ + Unicode::strncpy(maxHRTextBuffer, text, MAXHRTEXT_SIZE); + maxHRText.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp new file mode 100644 index 00000000..aab5f144 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp @@ -0,0 +1,168 @@ +#include +#include + +MainMenu::MainMenu() : + mWheelAnimationEndCb(this, &MainMenu::onWheelAnimationEnded) +{ +} + +void MainMenu::initialize() +{ + MainMenuBase::initialize(); + wheel.setAnimationEndedCallback(mWheelAnimationEndCb); + touchgfx::Application::getInstance()->registerTimerWidget(this); +} + +void MainMenu::invalidate() +{ + for (int i = 0; i < wheel.getNumberOfItems(); i++) { + wheel.itemChanged(i); + } + wheel.invalidate(); +} + +void MainMenu::setNumberOfItems(int16_t numberOfItems) +{ + wheel.setNumberOfItems(numberOfItems); + scrollIndicator.setCount(numberOfItems); +} + +int16_t MainMenu::getNumberOfItems() +{ + return wheel.getNumberOfItems(); +} + +void MainMenu::selectNext() +{ + if (wheel.getNumberOfItems() <= 1) { + return; + } + + int16_t targetId = static_cast(wheel.getSelectedItem()) + 1; + wheel.animateToItem(targetId, mAnimSteps); + mAnimTargetItem = static_cast(wheel.getSelectedItem()); // actual index after wrap + mAnimCountdown = mAnimSteps; + + scrollIndicator.animateToId(targetId, mAnimSteps); // virtual id for correct wrap direction +} + +void MainMenu::selectPrev() +{ + if (wheel.getNumberOfItems() <= 1) { + return; + } + + int16_t targetId = static_cast(wheel.getSelectedItem()) - 1; + wheel.animateToItem(targetId, mAnimSteps); + mAnimTargetItem = static_cast(wheel.getSelectedItem()); // actual index after wrap + mAnimCountdown = mAnimSteps; + + scrollIndicator.animateToId(targetId, mAnimSteps); // virtual id for correct wrap direction +} + +void MainMenu::selectItem(int16_t itemIndex) +{ + if (wheel.getNumberOfItems() <= 1) { + return; + } + + // Instant jump -- no animation, no mid callback + wheel.animateToItem(itemIndex, 0); + scrollIndicator.setActiveId(wheel.getSelectedItem()); +} + +uint16_t MainMenu::getSelectedItem() +{ + return wheel.getSelectedItem(); +} + +touchgfx::ScrollWheelWithSelectionStyle &MainMenu::getWheel() +{ + return wheel; +} + +void MainMenu::setUpdateItemCallback( + touchgfx::GenericCallback &cb) +{ + mpUpdateItemCb = &cb; +} + +void MainMenu::setUpdateCenterItemCallback( + touchgfx::GenericCallback &cb) +{ + mpUpdateCenterItemCb = &cb; +} + +void MainMenu::setAnimationMiddleCallback( + touchgfx::GenericCallback &cb) +{ + mpAnimationMiddleCb = &cb; +} + +void MainMenu::setAnimationEndedCallback( + touchgfx::GenericCallback &cb) +{ + mpAnimationEndedCb = &cb; +} + +void MainMenu::setAnimationSteps(int16_t steps) +{ + mAnimSteps = steps; +} + +void MainMenu::setCenterItemLayout(const CenterItemLayout &layout) +{ + mCenterItemLayout = layout; + + for (int i = 0; i < wheelSelectedListItems.getNumberOfDrawables(); i++) { + wheelSelectedListItems[i].setLayout(mCenterItemLayout); + } +} + +void MainMenu::setItemLayout(const ItemLayout &layout) +{ + mItemLayout = layout; + + for (int i = 0; i < wheelListItems.getNumberOfDrawables(); i++) { + wheelListItems[i].setLayout(mItemLayout); + } +} + +void MainMenu::wheelUpdateItem(MainMenuItem &item, int16_t itemIndex) +{ + if (mpUpdateItemCb != nullptr && mpUpdateItemCb->isValid()) { + mpUpdateItemCb->execute(item, itemIndex); + } +} + +void MainMenu::wheelUpdateCenterItem(MainMenuCenterItem &item, int16_t itemIndex) +{ + if (mpUpdateCenterItemCb != nullptr && mpUpdateCenterItemCb->isValid()) { + mpUpdateCenterItemCb->execute(item, itemIndex); + } +} + +void MainMenu::handleTickEvent() +{ + if (mAnimCountdown <= 0) { + return; + } + + mAnimCountdown--; + + // Fire middle callback at the halfway point of the animation + if (mAnimCountdown == mAnimSteps / 2) { + if (mpAnimationMiddleCb != nullptr && mpAnimationMiddleCb->isValid()) { + mpAnimationMiddleCb->execute(mAnimTargetItem); + } + } +} + +void MainMenu::onWheelAnimationEnded() +{ + mAnimCountdown = 0; + + if (mpAnimationEndedCb != nullptr && mpAnimationEndedCb->isValid()) { + mpAnimationEndedCb->execute(static_cast(wheel.getSelectedItem())); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuBackground.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuBackground.cpp new file mode 100644 index 00000000..30da6764 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuBackground.cpp @@ -0,0 +1,16 @@ +#include + +MainMenuBackground::MainMenuBackground() +{ +} + +void MainMenuBackground::initialize() +{ + MainMenuBackgroundBase::initialize(); +} + +void MainMenuBackground::setColor(touchgfx::colortype color) +{ + circlePainter.setColor(color); + circle.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuCenterItem.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuCenterItem.cpp new file mode 100644 index 00000000..cb4b892c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuCenterItem.cpp @@ -0,0 +1,143 @@ +#include +#include + +MainMenuCenterItem::MainMenuCenterItem() +{ +} + +void MainMenuCenterItem::initialize() +{ + MainMenuCenterItemBase::initialize(); + // Capture the Designer-configured styles so we can restore them when + // MenuItemConfig leaves msgIdType / tipIdType as TYPED_TEXT_INVALID. + mDefaultMsgType = labelText.getTypedText().getId(); + mDefaultTipType = tipText.getTypedText().getId(); + if (mDefaultTipType == TYPED_TEXT_INVALID) { + mDefaultTipType = mDefaultMsgType; // fallback: ensure resizeHeightToCurrentText() works + } +} + +void MainMenuCenterItem::setLayout(const CenterItemLayout &layout) +{ + mpLayout = &layout; +} + +const CenterItemLayout &MainMenuCenterItem::activeLayout(const MenuItemConfig &cfg) const +{ + if (cfg.centerLayout != nullptr) { return *cfg.centerLayout; } + if (mpLayout != nullptr) { return *mpLayout; } + static const CenterItemLayout sDefault; + return sDefault; +} + +void MainMenuCenterItem::apply(const MenuItemConfig &cfg) +{ + const CenterItemLayout &layout = activeLayout(cfg); + + const TypedTextId msgType = (cfg.msgIdType != TYPED_TEXT_INVALID) + ? cfg.msgIdType : mDefaultMsgType; + const TypedTextId tipType = (cfg.tipIdType != TYPED_TEXT_INVALID) + ? cfg.tipIdType : mDefaultTipType; + + MenuItemRenderer::applyText(labelText, labelTextBuffer, LABELTEXT_SIZE, + cfg.msgId, msgType, cfg.msgText, cfg.msgChar); + + MenuItemRenderer::applyTip(tipText, tipTextBuffer, TIPTEXT_SIZE, + cfg.tipId, tipType, cfg.tipText, cfg.tipColor, cfg.tipChar); + + switch (cfg.style) { + case MenuItemConfig::ICON: + MenuItemRenderer::applyStaticIcon(icon, cfg.iconId); + break; + case MenuItemConfig::ICON_EXT: + MenuItemRenderer::applyDynamicIcon(icon, mDynamicIconId, + cfg.extIcon, layout.icon.w, layout.icon.h); + break; + default: + break; + } + + renderStyle(cfg, layout); +} + +void MainMenuCenterItem::renderStyle(const MenuItemConfig &cfg, + const CenterItemLayout &layout) +{ + // Reset all optional widgets to Designer defaults before applying the active style. + // This prevents stale geometry (height/Y set by a previous style) from leaking + // into the current render -- especially important when containers are reused by + // the scroll wheel. + labelText.setVisible(true); + tipText.setVisible(false); + icon.setVisible(false); + toggle.setVisible(false); + + switch (cfg.style) { + case MenuItemConfig::SIMPLE: + labelText.setWidth(getWidth()); + labelText.setX(0); + MenuItemRenderer::centerTextY(labelText, getHeight()); + break; + + case MenuItemConfig::TOGGLE: + labelText.setWidth(layout.toggle.textW); + labelText.setX(layout.toggle.textX); + MenuItemRenderer::centerTextY(labelText, getHeight()); + toggle.setX(layout.toggle.x); + toggle.setY((getHeight() - toggle.getHeight()) / 2); + toggle.setState(cfg.toggleState); + toggle.setVisible(true); + break; + + case MenuItemConfig::TIP: { + const int16_t half = getHeight() / 2; + + labelText.setWidth(getWidth()); + labelText.setX(0); + labelText.resizeHeightToCurrentText(); + labelText.setY((half - labelText.getHeight()) / 2 + layout.tip.msgOffsetY); + + tipText.setWidth(getWidth()); + tipText.setX(0); + tipText.resizeHeightToCurrentText(); + tipText.setY(half + (half - tipText.getHeight()) / 2 + layout.tip.hintOffsetY); + tipText.setVisible(true); + break; + } + + case MenuItemConfig::INLINE: + labelText.setWidth(layout.inl.mainW); + labelText.setX(layout.inl.mainX); + MenuItemRenderer::centerTextY(labelText, getHeight()); + tipText.setWidth(layout.inl.tipW); + tipText.setX(layout.inl.tipX); + MenuItemRenderer::alignBaselineY(labelText, tipText); + tipText.setVisible(true); + break; + + case MenuItemConfig::ICON: + case MenuItemConfig::ICON_EXT: + if (cfg.iconId != BITMAP_INVALID || cfg.extIcon != nullptr) { + labelText.setWidth(layout.icon.textW); + labelText.setX(layout.icon.textX); + MenuItemRenderer::centerTextY(labelText, getHeight()); + icon.setPosition(layout.icon.x, layout.icon.y, + layout.icon.w, layout.icon.h); + icon.setVisible(true); + } else { + // No icon data -- fall back to simple layout + labelText.setWidth(getWidth()); + labelText.setX(0); + MenuItemRenderer::centerTextY(labelText, getHeight()); + } + break; + + default: + break; + } + + labelText.invalidate(); + tipText.invalidate(); + icon.invalidate(); + toggle.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuItem.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuItem.cpp new file mode 100644 index 00000000..4dffb6a1 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuItem.cpp @@ -0,0 +1,125 @@ +#include +#include + +MainMenuItem::MainMenuItem() +{ +} + +void MainMenuItem::initialize() +{ + MainMenuItemBase::initialize(); + // Capture the Designer-configured styles so we can restore them when + // MenuItemConfig leaves msgIdType / tipIdType as TYPED_TEXT_INVALID. + mDefaultMsgType = labelText.getTypedText().getId(); + mDefaultTipType = tipText.getTypedText().getId(); + if (mDefaultTipType == TYPED_TEXT_INVALID) { + mDefaultTipType = mDefaultMsgType; // fallback: ensure resizeHeightToCurrentText() works + } +} + +void MainMenuItem::setLayout(const ItemLayout &layout) +{ + mpLayout = &layout; +} + +const ItemLayout &MainMenuItem::activeLayout(const MenuItemConfig &cfg) const +{ + if (cfg.itemLayout != nullptr) { return *cfg.itemLayout; } + if (mpLayout != nullptr) { return *mpLayout; } + static const ItemLayout sDefault; + return sDefault; +} + +void MainMenuItem::apply(const MenuItemConfig &cfg) +{ + const ItemLayout &layout = activeLayout(cfg); + + const TypedTextId msgType = (cfg.msgIdType != TYPED_TEXT_INVALID) + ? cfg.msgIdType : mDefaultMsgType; + const TypedTextId tipType = (cfg.tipIdType != TYPED_TEXT_INVALID) + ? cfg.tipIdType : mDefaultTipType; + + MenuItemRenderer::applyText(labelText, labelTextBuffer, LABELTEXT_SIZE, + cfg.msgId, msgType, cfg.msgText, cfg.msgChar); + + MenuItemRenderer::applyTip(tipText, tipTextBuffer, TIPTEXT_SIZE, + cfg.tipId, tipType, cfg.tipText, cfg.tipColor, cfg.tipChar); + + // Static icon only -- ICON_EXT falls back to static if iconId is set + if (cfg.iconId != BITMAP_INVALID) { + MenuItemRenderer::applyStaticIcon(icon, cfg.iconId); + } + + renderStyle(cfg, layout); +} + +void MainMenuItem::renderStyle(const MenuItemConfig &cfg, + const ItemLayout &layout) +{ + // Reset all optional widgets to Designer defaults before applying the active style. + // This prevents stale geometry (height/Y set by a previous style) from leaking + // into the current render -- especially important when containers are reused by + // the scroll wheel. + labelText.setVisible(true); + tipText.setVisible(false); + icon.setVisible(false); + + switch (cfg.style) { + case MenuItemConfig::SIMPLE: + case MenuItemConfig::TOGGLE: // toggle not shown in surrounding items + labelText.setWidth(getWidth()); + labelText.setX(0); + MenuItemRenderer::centerTextY(labelText, getHeight()); + labelText.setY(labelText.getY() + layout.simple.msgOffsetY); + break; + + case MenuItemConfig::TIP: { + const int16_t half = getHeight() / 2; + + labelText.setWidth(getWidth()); + labelText.setX(0); + labelText.resizeHeightToCurrentText(); + labelText.setY((half - labelText.getHeight()) / 2 + layout.tip.msgOffsetY); + + tipText.setWidth(getWidth()); + tipText.setX(0); + tipText.resizeHeightToCurrentText(); + tipText.setY(half + (half - tipText.getHeight()) / 2 + layout.tip.hintOffsetY); + tipText.setVisible(true); + break; + } + + case MenuItemConfig::INLINE: + labelText.setWidth(layout.inl.mainW); + labelText.setX(layout.inl.mainX); + MenuItemRenderer::centerTextY(labelText, getHeight()); + tipText.setWidth(layout.inl.tipW); + tipText.setX(layout.inl.tipX); + MenuItemRenderer::alignBaselineY(labelText, tipText); + tipText.setVisible(true); + break; + + case MenuItemConfig::ICON: + case MenuItemConfig::ICON_EXT: + if (cfg.iconId != BITMAP_INVALID) { + labelText.setWidth(layout.icon.textW); + labelText.setX(layout.icon.textX); + icon.setPosition(layout.icon.x, layout.icon.y, + layout.icon.w, layout.icon.h); + icon.setVisible(true); + } else { + // No icon available -- fall back to simple layout + labelText.setWidth(getWidth()); + labelText.setX(0); + } + MenuItemRenderer::centerTextY(labelText, getHeight()); + break; + + default: + break; + } + + labelText.invalidate(); + tipText.invalidate(); + icon.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuLayout.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuLayout.cpp new file mode 100644 index 00000000..be22a6d9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenuLayout.cpp @@ -0,0 +1,144 @@ +#include + +MainMenuLayout::MainMenuLayout() +{ +} + +void MainMenuLayout::initialize() +{ + MainMenuLayoutBase::initialize(); + + // Default button states + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::AMBER); + buttons.setR2(Buttons::WHITE); +} + +// ---- Delegated wheel operations -------------------------------------------- + +void MainMenuLayout::setNumberOfItems(int16_t numberOfItems) +{ + menu.setNumberOfItems(numberOfItems); +} + +int16_t MainMenuLayout::getNumberOfItems() +{ + return menu.getNumberOfItems(); +} + +void MainMenuLayout::selectNext() +{ + menu.selectNext(); +} + +void MainMenuLayout::selectPrev() +{ + menu.selectPrev(); +} + +void MainMenuLayout::selectItem(int16_t itemIndex) +{ + menu.selectItem(itemIndex); +} + +uint16_t MainMenuLayout::getSelectedItem() +{ + return menu.getSelectedItem(); +} + +void MainMenuLayout::invalidate() +{ + menu.invalidate(); +} + +void MainMenuLayout::setUpdateItemCallback( + touchgfx::GenericCallback &cb) +{ + menu.setUpdateItemCallback(cb); +} + +void MainMenuLayout::setUpdateCenterItemCallback( + touchgfx::GenericCallback &cb) +{ + menu.setUpdateCenterItemCallback(cb); +} + +void MainMenuLayout::setCenterItemLayout(const CenterItemLayout &layout) +{ + menu.setCenterItemLayout(layout); +} + +void MainMenuLayout::setItemLayout(const ItemLayout &layout) +{ + menu.setItemLayout(layout); +} + +void MainMenuLayout::setAnimationSteps(int16_t steps) +{ + menu.setAnimationSteps(steps); +} + +void MainMenuLayout::setAnimationMiddleCallback(touchgfx::GenericCallback &cb) +{ + menu.setAnimationMiddleCallback(cb); +} + +void MainMenuLayout::setAnimationEndedCallback(touchgfx::GenericCallback &cb) +{ + menu.setAnimationEndedCallback(cb); +} + +// ---- Chrome ---------------------------------------------------------------- + +void MainMenuLayout::setTitle(TypedTextId msgId) +{ + title.set(msgId); +} + +void MainMenuLayout::showTitle(bool state) +{ + title.setVisible(state); + title.invalidate(); +} + +void MainMenuLayout::setBackground(touchgfx::colortype color) +{ + background.setColor(color); +} + +void MainMenuLayout::showBackground(bool state) +{ + background.setVisible(state); + background.invalidate(); +} + +void MainMenuLayout::setInfoMsg(TypedTextId msgId) +{ + if (msgId != TYPED_TEXT_INVALID) { + touchgfx::Unicode::snprintf(infoTextBuffer, INFOTEXT_SIZE, "%s", + touchgfx::TypedText(msgId).getText()); + infoText.setVisible(true); + } else { + infoText.setVisible(false); + } + infoText.invalidate(); +} + +void MainMenuLayout::setInfoMsgColor(touchgfx::colortype color) +{ + infoText.setColor(color); + infoText.invalidate(); +} + +// ---- Getters --------------------------------------------------------------- + +Buttons &MainMenuLayout::getButtons() +{ + return buttons; +} + +MainMenu &MainMenuLayout::getMenu() +{ + return menu; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/PauseIndicator.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/PauseIndicator.cpp new file mode 100644 index 00000000..4d8969f2 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/PauseIndicator.cpp @@ -0,0 +1,27 @@ +#include + +PauseIndicator::PauseIndicator() +{ +} + +void PauseIndicator::initialize() +{ + PauseIndicatorBase::initialize(); +} + +void PauseIndicator::setTime(std::time_t seconds) +{ + const uint32_t h = static_cast(seconds / 3600u); + const uint32_t m = static_cast((seconds % 3600u) / 60u); + const uint32_t s = static_cast(seconds % 60u); + + if (h > 0u) { + touchgfx::Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%u:%02u:%02u", h, m, s); + } else { + touchgfx::Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%02u:%02u", m, s); + } + + timerValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ScrollIndicator.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ScrollIndicator.cpp new file mode 100644 index 00000000..147a95f6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ScrollIndicator.cpp @@ -0,0 +1,228 @@ +#include +#include + + +// --------------------------------------------------------------------------- + +ScrollIndicator::ScrollIndicator() +{ +} + +ScrollIndicator::~ScrollIndicator() +{ + stopAnimation(); +} + +void ScrollIndicator::initialize() +{ + ScrollIndicatorBase::initialize(); + // Designer-generated base already applies kBig geometry and colours + // in its constructor, so no explicit setConfig() call is needed here. +} + +// --------------------------------------------------------------------------- +// Configuration +// --------------------------------------------------------------------------- + +void ScrollIndicator::setConfig(const ScrollIndicatorConfig& cfg) +{ + mHandleLen = cfg.handleLen; + mRailMin = cfg.railMin; + mRailMax = cfg.railMax; + + rail.setArc(cfg.railMin, cfg.railMax); + railPainter.setColor(cfg.railColor); + rail.invalidate(); + + handlePainter.setColor(cfg.handleColor); + handleOvfPainter.setColor(cfg.handleColor); + + // Re-draw handle at the current position with the new geometry + setActiveId(mPosition); +} + +// --------------------------------------------------------------------------- +// Item navigation +// --------------------------------------------------------------------------- + +void ScrollIndicator::setCount(uint16_t count) +{ + if (count == 0) { + count = 1; + } + + mCount = count; + handle.setVisible(mCount > 1); + handle.invalidate(); + + setActiveId(0); +} + +void ScrollIndicator::stopAnimation() +{ + if (mAnimationRunning) { + touchgfx::Application::getInstance()->unregisterTimerWidget(this); + mAnimationRunning = false; + } + + // Always clean up the overflow handle -- it may be visible from a + // wrap-around animation that was interrupted before it could hide itself. + if (mAnimWrap) { + handleOvf.setVisible(false); + handleOvf.invalidate(); + mAnimWrap = false; + } +} + +void ScrollIndicator::setActiveId(uint16_t index) +{ + stopAnimation(); // ensure handleOvf is hidden and timer unregistered + + if (mCount <= 1) { + index = 0; + } + + mPosition = index; + const float start = getStartAngle(index); + + handle.setArc(start, start + mHandleLen); + handle.invalidate(); + rail.invalidate(); +} + +void ScrollIndicator::animateToId(int16_t index, int16_t animationSteps) +{ + if (mCount <= 1) { + index = 0; + } + + bool wrapForward = false; + bool isWrap = false; + + // Clamp and flag wrap-around for the dual-handle overflow animation + if (index < 0) { + index = static_cast(mCount) - 1; + isWrap = true; + } else if (index >= static_cast(mCount)) { + index = 0; + isWrap = true; + wrapForward = true; + } + + if (animationSteps <= 0) { + stopAnimation(); + setActiveId(static_cast(index)); + return; + } + + // Handle the case where a previous animation is still running + if (mAnimationRunning) { + if (mAnimWrap) { + // In a wrap-around animation the overflow handle is the one that + // visually approaches the target. Snap the main handle to its + // current position so the next animation starts from the right spot. + float snapPos; + handleOvf.getArcStart(snapPos); + handle.setArc(snapPos, snapPos + mHandleLen); + handleOvf.setVisible(false); + handleOvf.invalidate(); + mAnimWrap = false; + } + // Timer is already registered -- no need to re-register. + } else { + touchgfx::Application::getInstance()->registerTimerWidget(this); + } + + mAnimWrap = isWrap; + mAnimationDuration = static_cast(animationSteps); + mAnimationCounter = 0; + mPosition = static_cast(index); + + // Start from the current visual handle position (may be mid-animation) + handle.getArcStart(mAnimationStartPos); + mAnimationEndPos = getStartAngle(static_cast(index)); + + if (isWrap) { + // Outgoing handle slides off one end of the rail, + // incoming handle slides in from the opposite end. + if (wrapForward) { + mAnimOutgoingEnd = mAnimationStartPos - mHandleLen; + mAnimIncomingStart = mAnimationEndPos + mHandleLen; + } else { + mAnimOutgoingEnd = mAnimationStartPos + mHandleLen; + mAnimIncomingStart = mAnimationEndPos - mHandleLen; + } + } + + mAnimationRunning = true; +} + +uint16_t ScrollIndicator::getActiveId() +{ + return mPosition; +} + +// --------------------------------------------------------------------------- +// Tick / animation +// --------------------------------------------------------------------------- + +void ScrollIndicator::handleTickEvent() +{ + nextAnimationStep(); +} + +void ScrollIndicator::nextAnimationStep() +{ + if (!mAnimationRunning) { + return; + } + + mAnimationCounter++; + + const float t = static_cast(mAnimationCounter) / mAnimationDuration; + + float pos; + if (mAnimWrap) { + // Outgoing handle slides toward the rail edge + pos = mAnimationStartPos + t * (mAnimOutgoingEnd - mAnimationStartPos); + + // Incoming handle appears from the opposite rail edge + const float incomingPos = mAnimIncomingStart + t * (mAnimationEndPos - mAnimIncomingStart); + handleOvf.setArc(incomingPos, incomingPos + mHandleLen); + handleOvf.setVisible(true); + handleOvf.invalidate(); + } else { + pos = mAnimationStartPos + t * (mAnimationEndPos - mAnimationStartPos); + } + + handle.setArc(pos, pos + mHandleLen); + handle.invalidate(); + rail.invalidate(); + + if (mAnimationCounter >= mAnimationDuration) { + mAnimationRunning = false; + mAnimationCounter = 0; + touchgfx::Application::getInstance()->unregisterTimerWidget(this); + + if (mAnimWrap) { + mAnimWrap = false; + handleOvf.setVisible(false); + handleOvf.invalidate(); + setActiveId(mPosition); + } + } +} + +// --------------------------------------------------------------------------- + +float ScrollIndicator::getStartAngle(uint16_t index) const +{ + if (mCount <= 1) { + // Single item: center the handle on the rail + return (mRailMax + mRailMin - mHandleLen) / 2.0f; + } + + const float step = (mRailMax - mRailMin - mHandleLen) / (mCount - 1); + const float offset = step * index; + return (mRailMax - mHandleLen) - offset; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp new file mode 100644 index 00000000..46e8c570 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp @@ -0,0 +1,32 @@ +#include +#include + +SummaryFaceHeartRate::SummaryFaceHeartRate() +{ +} + +void SummaryFaceHeartRate::initialize() +{ + SummaryFaceHeartRateBase::initialize(); + title.set(T_TEXT_HEART_RATE_UC); +} + +void SummaryFaceHeartRate::setMaxHR(float hr) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(maxHrValueBuffer, MAXHRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(maxHrValueBuffer, MAXHRVALUE_SIZE, "%.0f", hr); + } + maxHrValue.invalidate(); +} + +void SummaryFaceHeartRate::setAvgHR(float hr) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(avgHrValueBuffer, AVGHRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(avgHrValueBuffer, AVGHRVALUE_SIZE, "%.0f", hr); + } + avgHrValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceLaps.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceLaps.cpp new file mode 100644 index 00000000..ba346c4d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceLaps.cpp @@ -0,0 +1,119 @@ +#include +#include +#include + +static constexpr uint32_t skListAnimationSteps = App::Config::kMenuAnimationSteps / 2; + +SummaryFaceLaps::SummaryFaceLaps() +{ +} + +void SummaryFaceLaps::initialize() +{ + SummaryFaceLapsBase::initialize(); + title.set(T_TEXT_LAPS_UC); +} + +void SummaryFaceLaps::setLaps(const std::vector& laps) +{ + mLaps = &laps; + + Unicode::snprintf(lapsTextBuffer, LAPSTEXT_SIZE, "%u %s", + static_cast(laps.size()), + touchgfx::TypedText(T_TEXT_LAPS_UC).getText()); + lapsText.invalidate(); + + time_t total = 0; + for (const auto& lap : laps) { + total += lap.duration; + } + auto hms = SDK::Utils::toHMS(total); + Unicode::snprintf(timerTextBuffer, TIMERTEXT_SIZE, "%s: %u:%02u:%02u", + touchgfx::TypedText(T_TEXT_TOTAL).getText(), hms.h, hms.m, hms.s); + timerText.invalidate(); + + mCurrentPage = 0; + mNumPages = (laps.empty()) + ? 0u + : static_cast((laps.size() + kPageSize - 1) / kPageSize); + + // Pad to (numPages-1)*kPageSize + kVisible so every page transition + // selects an item outside the current window, forcing a real scroll. + const int16_t paddedSize = (mNumPages > 0) + ? static_cast((mNumPages - 1) * kPageSize + kVisible) + : 0; + scrollList.setNumberOfItems(paddedSize); + scrollList.animateToItem(0, 0); +} + +bool SummaryFaceLaps::canScrollDown() const +{ + return mCurrentPage + 1 < mNumPages; +} + +bool SummaryFaceLaps::canScrollUp() const +{ + return mCurrentPage > 0; +} + +void SummaryFaceLaps::scrollDown() +{ + if (canScrollDown()) { + ++mCurrentPage; + // Select last item of new window -- always outside previous window. + scrollList.animateToItem( + static_cast(mCurrentPage * kPageSize + kVisible - 1), skListAnimationSteps); + } +} + +void SummaryFaceLaps::scrollUp() +{ + if (canScrollUp()) { + --mCurrentPage; + // Select first item of new window -- always outside previous window. + scrollList.animateToItem( + static_cast(mCurrentPage * kPageSize), skListAnimationSteps); + } +} + +void SummaryFaceLaps::scrollListUpdateItem(LapListItem& item, int16_t itemIndex) +{ + static const touchgfx::Unicode::UnicodeChar kEmpty[1] = {0}; + + if (mLaps == nullptr || itemIndex < 0 || itemIndex >= static_cast(mLaps->size())) { + item.setIndex(kEmpty); + item.setTime(kEmpty); + item.setAvgHR(kEmpty); + item.setMaxHR(kEmpty); + return; + } + + const LapSummary& lap = (*mLaps)[itemIndex]; + + touchgfx::Unicode::UnicodeChar buf[32]; + + Unicode::snprintf(buf, 32, "%u.", static_cast(itemIndex + 1)); + item.setIndex(buf); + + auto dur = SDK::Utils::toHMS(lap.duration); + if (dur.h > 0) { + Unicode::snprintf(buf, 32, "%u:%02u", dur.h, dur.m); + } else { + Unicode::snprintf(buf, 32, "%u:%02u", dur.m, dur.s); + } + item.setTime(buf); + + if (lap.hrAvg < App::Display::kMinHR) { + Unicode::snprintf(buf, 32, "---"); + } else { + Unicode::snprintfFloat(buf, 32, "%.0f", lap.hrAvg); + } + item.setAvgHR(buf); + + if (lap.hrMax < App::Display::kMinHR) { + Unicode::snprintf(buf, 32, "---"); + } else { + Unicode::snprintfFloat(buf, 32, "%.0f", lap.hrMax); + } + item.setMaxHR(buf); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp new file mode 100644 index 00000000..e2d571e6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include + +SummaryFaceOverview::SummaryFaceOverview() +{ +} + +void SummaryFaceOverview::initialize() +{ + SummaryFaceOverviewBase::initialize(); + title.set(T_TEXT_SUMMARY_UC); +} + +void SummaryFaceOverview::setTotalTime(std::time_t sec) +{ + auto hms = SDK::Utils::toHMS(sec); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%u:%02u:%02u", hms.h, hms.m, hms.s); + timerValue.invalidate(); +} + +void SummaryFaceOverview::setAvgHR(float hr) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(avgHRValueBuffer, AVGHRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(avgHRValueBuffer, AVGHRVALUE_SIZE, "%.0f", hr); + } + avgHRValue.invalidate(); +} + +void SummaryFaceOverview::setCalories(float kcal) +{ + Unicode::snprintfFloat(caloriesValueBuffer, CALORIESVALUE_SIZE, "%.0f", kcal); + caloriesValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TimerRing.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TimerRing.cpp new file mode 100644 index 00000000..a402da6d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TimerRing.cpp @@ -0,0 +1,187 @@ +#include +#include + +TimerRing::TimerRing() +{ +} + +void TimerRing::initialize() +{ + TimerRingBase::initialize(); + updateArc(); +} + +// ----------------------------------------------------------------------------- +// handleTickEvent +// ----------------------------------------------------------------------------- + +void TimerRing::handleTickEvent() +{ + if (!mAnimating || mPaused) return; + + mAccumulator += mSpeed / mFPS; + + bool changed = false; + while (mAccumulator >= 1.0f && mValue != mTarget) + { + mAccumulator -= 1.0f; + mValue += (mValue < mTarget) ? 1 : -1; + changed = true; + } + + if (changed) + { + updateArc(); + if (mpValueChangedCb != nullptr && mpValueChangedCb->isValid()) + { + mpValueChangedCb->execute(mValue); + } + } + + if (mValue == mTarget) + { + const int32_t finalValue = mValue; + + if (mLoop) + { + // Restart from the opposite end toward the original starting value + const int32_t newTarget = (finalValue == mMaxValue) ? 0 : mMaxValue; + mAccumulator = 0.0f; + mTarget = newTarget; + } + else + { + stop(); + } + + if (mpCompleteCb != nullptr && mpCompleteCb->isValid()) + { + mpCompleteCb->execute(finalValue); + } + } +} + +// ----------------------------------------------------------------------------- +// Configuration +// ----------------------------------------------------------------------------- + +void TimerRing::setFPS(float fps) +{ + mFPS = (fps > 0.0f) ? fps : 1.0f; +} + +void TimerRing::setMaxValue(int32_t max) +{ + mMaxValue = (max > 0) ? max : 1; + updateArc(); +} + +void TimerRing::setSpeed(float unitsPerSecond) +{ + mSpeed = (unitsPerSecond > 0.0f) ? unitsPerSecond : 1.0f; +} + +void TimerRing::setMode(Mode mode) +{ + mMode = mode; + updateArc(); +} + +void TimerRing::setProgressColor(touchgfx::colortype color) +{ + progressPainter.setColor(color); + progress.invalidate(); +} + +void TimerRing::setTrackColor(touchgfx::colortype color) +{ + trackPainter.setColor(color); + track.invalidate(); +} + +void TimerRing::setLoopEnabled(bool enabled) +{ + mLoop = enabled; +} + +// ----------------------------------------------------------------------------- +// Control +// ----------------------------------------------------------------------------- + +void TimerRing::setValue(int32_t value) +{ + stop(); + mValue = (value < 0) ? 0 : (value > mMaxValue ? mMaxValue : value); + mTarget = mValue; + mAccumulator = 0.0f; + updateArc(); +} + +void TimerRing::animateTo(int32_t target) +{ + mTarget = (target < 0) ? 0 : (target > mMaxValue ? mMaxValue : target); + if (mValue == mTarget) return; + + mAccumulator = 0.0f; + mPaused = false; + + if (!mAnimating) + { + touchgfx::Application::getInstance()->registerTimerWidget(this); + mAnimating = true; + } +} + +void TimerRing::pause() +{ + mPaused = true; +} + +void TimerRing::resume() +{ + if (mAnimating) mPaused = false; +} + +void TimerRing::stop() +{ + if (mAnimating) + { + touchgfx::Application::getInstance()->unregisterTimerWidget(this); + mAnimating = false; + } + mPaused = false; + mAccumulator = 0.0f; +} + +// ----------------------------------------------------------------------------- +// Getters +// ----------------------------------------------------------------------------- + +float TimerRing::getProgress() const +{ + return (mMaxValue > 0) ? float(mValue) / float(mMaxValue) : 0.0f; +} + +// ----------------------------------------------------------------------------- +// Private +// ----------------------------------------------------------------------------- + +void TimerRing::updateArc() +{ + const int16_t trackStart = track.getArcStart(); + const int16_t trackEnd = track.getArcEnd(); + const float span = float(trackEnd - trackStart); + const int16_t arcSpan = int16_t(span * getProgress() + 0.5f); + + if (mMode == FILL) + { + progress.setArc(trackStart, trackStart + arcSpan); + } + else // DRAIN + { + progress.setArc(trackEnd - arcSpan, trackEnd); + } + + progress.invalidate(); + track.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Title.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Title.cpp new file mode 100644 index 00000000..12309f29 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Title.cpp @@ -0,0 +1,42 @@ +#include + +Title::Title() +{ +} + +void Title::initialize() +{ + TitleBase::initialize(); +} + +void Title::set(TypedTextId msgId) +{ + touchgfx::Unicode::snprintf(titleTextBuffer, TITLETEXT_SIZE, "%s", + touchgfx::TypedText(msgId).getText()); + titleText.invalidate(); +} + +void Title::set(touchgfx::Unicode::UnicodeChar* messageText) +{ + if (messageText != nullptr) { + touchgfx::Unicode::snprintf(titleTextBuffer, TITLETEXT_SIZE, "%s", messageText); + titleText.invalidate(); + } +} + +void Title::set(const char* messageText) +{ + if (messageText != nullptr) { + touchgfx::Unicode::fromUTF8( + reinterpret_cast(messageText), titleTextBuffer, TITLETEXT_SIZE); + titleText.invalidate(); + } +} + +void Title::setColor(touchgfx::colortype color) +{ + linePainter.setColor(color); + line.invalidate(); + titleText.setColor(color); + titleText.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Toggle.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Toggle.cpp new file mode 100644 index 00000000..a31d7f60 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/Toggle.cpp @@ -0,0 +1,63 @@ +#include + +// Default colors -- must match the values set in ToggleBase constructor. +// PainterABGR2222 has no getColor(), so they cannot be read back at runtime. +static constexpr uint32_t kDefaultRailOff = 0x000000u; +static constexpr uint32_t kDefaultRailOn = 0xC08000u; +static constexpr uint32_t kDefaultHandleColor = 0xC0C0C0u; + +// ----------------------------------------------------------------------------- + +Toggle::Toggle() + : mRailOnColor(kDefaultRailOn) + , mRailOffColor(kDefaultRailOff) + , mHandleOnColor(kDefaultHandleColor) + , mHandleOffColor(kDefaultHandleColor) +{ +} + +void Toggle::initialize() +{ + ToggleBase::initialize(); +} + +// ----------------------------------------------------------------------------- + +void Toggle::setState(bool state) +{ + mState = state; + + railPainter.setColor(mState ? mRailOnColor : mRailOffColor); + rail.invalidate(); + + handlePainter.setColor(mState ? mHandleOnColor : mHandleOffColor); + handle.setX(mState ? kHandleOnX : kHandleOffX); + handle.invalidate(); +} + +bool Toggle::getState() const +{ + return mState; +} + +// ----------------------------------------------------------------------------- + +void Toggle::setRailOnColor(touchgfx::colortype color) +{ + mRailOnColor = color; +} + +void Toggle::setRailOffColor(touchgfx::colortype color) +{ + mRailOffColor = color; +} + +void Toggle::setHandleOnColor(touchgfx::colortype color) +{ + mHandleOnColor = color; +} + +void Toggle::setHandleOffColor(touchgfx::colortype color) +{ + mHandleOffColor = color; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceLap.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceLap.cpp new file mode 100644 index 00000000..54568d17 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceLap.cpp @@ -0,0 +1,34 @@ +#include + +TrackFaceLap::TrackFaceLap() +{ +} + +void TrackFaceLap::initialize() +{ + TrackFaceLapBase::initialize(); +} + +void TrackFaceLap::setLapAvgHR(float hr) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(hrValueBuffer, HRVALUE_SIZE, "%.0f", hr); + } + hrValue.invalidate(); +} + +void TrackFaceLap::setLapNumber(uint32_t lapNum) +{ + Unicode::snprintf(lapValueBuffer, LAPVALUE_SIZE, "%u", static_cast(lapNum + 1)); + lapValue.invalidate(); +} + +void TrackFaceLap::setTimer(std::time_t sec) +{ + auto hms = SDK::Utils::toHMS(sec); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%u:%02u:%02u", hms.h, hms.m, hms.s); + timerValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceStatus.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceStatus.cpp new file mode 100644 index 00000000..8a31eab9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceStatus.cpp @@ -0,0 +1,25 @@ +#include + +TrackFaceStatus::TrackFaceStatus() +{ +} + +void TrackFaceStatus::initialize() +{ + TrackFaceStatusBase::initialize(); +} + +void TrackFaceStatus::setTime(uint8_t h, uint8_t m) +{ + Unicode::snprintf(dayTimeValueBuffer, DAYTIMEVALUE_SIZE, "%u:%02u", h, m); + dayTimeValue.invalidate(); +} + +void TrackFaceStatus::setBatteryLevel(uint8_t level) +{ + battery.setLevel(level); + + Unicode::snprintf(percentValueBuffer, PERCENTVALUE_SIZE, "%u%s", + level, touchgfx::TypedText(T_TEXT_PERCENT).getText()); + percentValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceTotal.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceTotal.cpp new file mode 100644 index 00000000..677b91c6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/TrackFaceTotal.cpp @@ -0,0 +1,38 @@ +#include + +TrackFaceTotal::TrackFaceTotal() +{ +} + +void TrackFaceTotal::initialize() +{ + TrackFaceTotalBase::initialize(); +} + +void TrackFaceTotal::setHR(float hr, const uint8_t* thresholds, uint8_t thresholdCount) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "---"); + hrValue.invalidate(); + hrZone.setHR(0, thresholds, thresholdCount); + return; + } + + Unicode::snprintfFloat(hrValueBuffer, HRVALUE_SIZE, "%.0f", hr); + hrValue.invalidate(); + hrZone.setHR(static_cast(hr), thresholds, thresholdCount); +} + +void TrackFaceTotal::setCalories(float calories) +{ + Unicode::snprintfFloat(caloriesValueBuffer, CALORIESVALUE_SIZE, "%.0f", calories); + caloriesValue.invalidate(); +} + +void TrackFaceTotal::setTimer(std::time_t sec) +{ + auto hms = SDK::Utils::toHMS(sec); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%u:%02u:%02u", hms.h, hms.m, hms.s); + timerValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainPresenter.cpp new file mode 100644 index 00000000..6d5ba7f7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainPresenter.cpp @@ -0,0 +1,37 @@ +#include +#include + +MainPresenter::MainPresenter(MainView& v) + : view(v) +{ + +} + +void MainPresenter::activate() +{ + view.setPositionId(model->menu().get()); + model->menu().resetChildren(); + model->resetIdleTimer(); +} + +void MainPresenter::deactivate() +{ + model->menu().set(view.getPositionId()); +} + +void MainPresenter::onIdleTimeout() +{ + if (view.getPositionId() != App::MenuNav::Root::ID_START) { + model->exitApp(); + } +} + +void MainPresenter::startTrack() +{ + model->trackStart(); +} + +void MainPresenter::exitApp() +{ + model->exitApp(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainView.cpp new file mode 100644 index 00000000..998516b9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/main_screen/MainView.cpp @@ -0,0 +1,134 @@ +#include +#include + + +MainView::MainView() : + mUpdateItemCb(this, &MainView::updateItem), + mUpdateCenterItemCb(this, &MainView::updateCenterItem), + mpAnimationMiddleCb(this, &MainView::onAnimationMiddle) +{ +} + +void MainView::setupScreen() +{ + MainViewBase::setupScreen(); + + setupItems(); + menuLayout.setAnimationSteps(App::Config::kMenuAnimationSteps); + menuLayout.setTitle(T_TEXT_APP_NAME_UC); + menuLayout.setUpdateItemCallback(mUpdateItemCb); + menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + menuLayout.setAnimationMiddleCallback(mpAnimationMiddleCb); + menuLayout.setNumberOfItems(Menu::ID_COUNT); + menuLayout.invalidate(); + + updateBackground(menuLayout.getSelectedItem()); +} + +void MainView::tearDownScreen() +{ + MainViewBase::tearDownScreen(); +} + +void MainView::setPositionId(uint16_t id) +{ + menuLayout.selectItem(id); + updateBackground(menuLayout.getSelectedItem()); +} + +uint16_t MainView::getPositionId() +{ + return menuLayout.getSelectedItem(); +} + +void MainView::setupItems() +{ + // START + mCenterItems[Menu::ID_START].msgId = T_TEXT_START; + mCenterItems[Menu::ID_START].msgIdType = T_TMP_SEMIBOLD_35; + + mItems[Menu::ID_START].msgId = T_TEXT_START; + + + // SETTINGS + mCenterItems[Menu::ID_SETTINGS].msgId = T_TEXT_SETTINGS; + + mItems[Menu::ID_SETTINGS].msgId = T_TEXT_SETTINGS; +} + +void MainView::updateItem(MainMenuItem& item, int16_t index) +{ + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) { + return; + } + item.apply(mItems[index]); +} + +void MainView::updateCenterItem(MainMenuCenterItem& item, int16_t index) +{ + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) { + return; + } + item.apply(mCenterItems[index]); +} + +void MainView::onAnimationMiddle(int16_t index) +{ + updateBackground(index); +} + +void MainView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + menuLayout.selectPrev(); + } + + if (key == SDK::GUI::Button::L2) { + menuLayout.selectNext(); + } + + if (key == SDK::GUI::Button::R1) { + onConfirm(); + } + + if (key == SDK::GUI::Button::R2) { + presenter->exitApp(); + } +} + +void MainView::onConfirm() +{ + int16_t idx = static_cast(menuLayout.getSelectedItem()); + if (idx < 0 || idx >= static_cast(Menu::ID_COUNT)) { + return; + } + + switch (idx) { + case Menu::ID_START: + presenter->startTrack(); + application().gotoTrackScreenNoTransition(); + break; + + case Menu::ID_SETTINGS: + application().gotoMenuSettingsScreenNoTransition(); + break; + + default: + break; + }; +} + +void MainView::updateBackground(int16_t index) +{ + switch (index) { + case Menu::ID_START: + menuLayout.setBackground(SDK::GUI::Color::TEAL_DARK); + menuLayout.getButtons().setR1(Buttons::AMBER); + break; + + default: + menuLayout.setBackground(SDK::GUI::Color::TEAL_DARK); + menuLayout.getButtons().setR1(Buttons::AMBER); + break; + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsPresenter.cpp new file mode 100644 index 00000000..d6d79a9c --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsPresenter.cpp @@ -0,0 +1,21 @@ +#include +#include + +MenuAlertsPresenter::MenuAlertsPresenter(MenuAlertsView& v) + : view(v) +{ + +} + +void MenuAlertsPresenter::activate() +{ + view.setPositionId(model->menu().settings.alerts.get()); + model->resetIdleTimer(); + + view.setTime(model->getSettings().alertTimeId); +} + +void MenuAlertsPresenter::deactivate() +{ + model->menu().settings.alerts.set(view.getPositionId()); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsView.cpp new file mode 100644 index 00000000..edcec577 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menualerts_screen/MenuAlertsView.cpp @@ -0,0 +1,118 @@ +#include + +MenuAlertsView::MenuAlertsView() : + mUpdateItemCb(this, &MenuAlertsView::updateItem), + mUpdateCenterItemCb(this, &MenuAlertsView::updateCenterItem) +{ +} + +void MenuAlertsView::setupScreen() +{ + MenuAlertsViewBase::setupScreen(); + + menuLayout.setAnimationSteps(App::Config::kMenuAnimationSteps); + menuLayout.setTitle(T_TEXT_LAP_ALERTS_UC); + menuLayout.setUpdateItemCallback(mUpdateItemCb); + menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + menuLayout.setNumberOfItems(Menu::ID_COUNT); + + formatTips(); + menuLayout.invalidate(); +} + +void MenuAlertsView::tearDownScreen() +{ + MenuAlertsViewBase::tearDownScreen(); +} + +void MenuAlertsView::setTime(Time::Id id) +{ + mTimeId = id; + formatTips(); + menuLayout.invalidate(); +} + +void MenuAlertsView::setPositionId(uint16_t id) +{ + menuLayout.selectItem(id); +} + +uint16_t MenuAlertsView::getPositionId() +{ + return menuLayout.getSelectedItem(); +} + +void MenuAlertsView::formatTips() +{ + if (mTimeId == Time::ID_OFF) { + Unicode::snprintf(mTimeTipBuff, kBuffSize, "%s", + touchgfx::TypedText(T_TEXT_OFF_UC).getText()); + mTimeTipColor = SDK::GUI::Color::TEAL; + } else { + Unicode::snprintf(mTimeTipBuff, kBuffSize, "%d %s", + Time::kValues[mTimeId], touchgfx::TypedText(T_TEXT_MIN).getText()); + mTimeTipColor = SDK::GUI::Color::YELLOW_DARK; + } +} + +void MenuAlertsView::updateItem(MainMenuItem& item, int16_t index) +{ + MenuItemConfig cfg; + cfg.style = MenuItemConfig::TIP; + + switch (index) { + case Menu::ID_TIME: + cfg.msgId = T_TEXT_TIME; + cfg.tipText = mTimeTipBuff; + cfg.tipColor = mTimeTipColor; + break; + default: + return; + } + + item.apply(cfg); +} + +void MenuAlertsView::updateCenterItem(MainMenuCenterItem& item, int16_t index) +{ + MenuItemConfig cfg; + cfg.style = MenuItemConfig::TIP; + + switch (index) { + case Menu::ID_TIME: + cfg.msgId = T_TEXT_TIME; + cfg.tipText = mTimeTipBuff; + break; + default: + return; + } + + item.apply(cfg); +} + +void MenuAlertsView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + menuLayout.selectPrev(); + } + + if (key == SDK::GUI::Button::L2) { + menuLayout.selectNext(); + } + + if (key == SDK::GUI::Button::R1) { + uint32_t id = menuLayout.getSelectedItem(); + + switch (id) { + case Menu::ID_TIME: + application().gotoMenuTimeScreenNoTransition(); + break; + default: + break; + } + } + + if (key == SDK::GUI::Button::R2) { + application().gotoMenuSettingsScreenNoTransition(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsPresenter.cpp new file mode 100644 index 00000000..737e3e01 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsPresenter.cpp @@ -0,0 +1,29 @@ +#include +#include + +MenuSettingsPresenter::MenuSettingsPresenter(MenuSettingsView& v) + : view(v) +{ + +} + +void MenuSettingsPresenter::activate() +{ + view.setPositionId(model->menu().settings.get()); + model->menu().settings.resetChildren(); + model->resetIdleTimer(); + + view.setPhoneNotif(model->getSettings().phoneNotifEn); +} + +void MenuSettingsPresenter::deactivate() +{ + model->menu().settings.set(view.getPositionId()); +} + +void MenuSettingsPresenter::savePhoneNotif(bool state) +{ + Settings sett = model->getSettings(); + sett.phoneNotifEn = state; + model->saveSettings(sett); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsView.cpp new file mode 100644 index 00000000..99d76209 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menusettings_screen/MenuSettingsView.cpp @@ -0,0 +1,118 @@ +#include + +MenuSettingsView::MenuSettingsView() : + mUpdateItemCb(this, &MenuSettingsView::updateItem), + mUpdateCenterItemCb(this, &MenuSettingsView::updateCenterItem) +{ +} + +void MenuSettingsView::setupScreen() +{ + MenuSettingsViewBase::setupScreen(); + + menuLayout.setAnimationSteps(App::Config::kMenuAnimationSteps); + menuLayout.setTitle(T_TEXT_SETTINGS_UC); + menuLayout.setUpdateItemCallback(mUpdateItemCb); + menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + menuLayout.setNumberOfItems(Menu::ID_COUNT); + + menuLayout.invalidate(); +} + +void MenuSettingsView::tearDownScreen() +{ + MenuSettingsViewBase::tearDownScreen(); +} + +void MenuSettingsView::setPhoneNotif(bool state) +{ + mPhoneNotif = state; + menuLayout.invalidate(); +} + +void MenuSettingsView::setPositionId(uint16_t id) +{ + menuLayout.selectItem(id); +} + +uint16_t MenuSettingsView::getPositionId() +{ + return menuLayout.getSelectedItem(); +} + +void MenuSettingsView::updateItem(MainMenuItem& item, int16_t index) +{ + MenuItemConfig cfg; + + switch (index) { + case Menu::ID_ALERTS: + cfg.style = MenuItemConfig::SIMPLE; + cfg.msgId = T_TEXT_LAP_ALERTS; + break; + case Menu::ID_PHONE_NOTIF: + cfg.style = MenuItemConfig::TIP; + cfg.msgId = T_TEXT_PHONE_NOTIF_DOT; + cfg.tipId = mPhoneNotif ? T_TEXT_ON_UC : T_TEXT_OFF_UC; + cfg.tipColor = mPhoneNotif ? SDK::GUI::Color::YELLOW_DARK + : SDK::GUI::Color::TEAL; + break; + default: + return; + } + + item.apply(cfg); +} + +void MenuSettingsView::updateCenterItem(MainMenuCenterItem& item, int16_t index) +{ + MenuItemConfig cfg; + + switch (index) { + case Menu::ID_ALERTS: + cfg.style = MenuItemConfig::SIMPLE; + cfg.msgId = T_TEXT_LAP_ALERTS; + break; + case Menu::ID_PHONE_NOTIF: + cfg.style = MenuItemConfig::TOGGLE; + cfg.msgId = T_TEXT_PHONE_BR_NOTIF_DOT; + cfg.msgIdType = T_TMP_SEMIBOLD_25; + cfg.toggleState = mPhoneNotif; + break; + default: + return; + } + + item.apply(cfg); +} + +void MenuSettingsView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + menuLayout.selectPrev(); + } + + if (key == SDK::GUI::Button::L2) { + menuLayout.selectNext(); + } + + if (key == SDK::GUI::Button::R1) { + uint32_t id = menuLayout.getSelectedItem(); + + switch (id) { + case Menu::ID_ALERTS: + application().gotoMenuAlertsScreenNoTransition(); + break; + case Menu::ID_PHONE_NOTIF: + mPhoneNotif = !mPhoneNotif; + setPhoneNotif(mPhoneNotif); + presenter->savePhoneNotif(mPhoneNotif); + break; + default: + break; + } + } + + if (key == SDK::GUI::Button::R2) { + application().gotoMainScreenNoTransition(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimePresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimePresenter.cpp new file mode 100644 index 00000000..442499e6 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimePresenter.cpp @@ -0,0 +1,29 @@ +#include +#include + +MenuTimePresenter::MenuTimePresenter(MenuTimeView& v) + : view(v) +{ + +} + +void MenuTimePresenter::activate() +{ + // Set current menu position + view.setTime(model->getSettings().alertTimeId); + + // Reset idle timer + model->resetIdleTimer(); +} + +void MenuTimePresenter::deactivate() +{ + +} + +void MenuTimePresenter::saveTime(Settings::Alerts::Time::Id id) +{ + Settings sett = model->getSettings(); + sett.alertTimeId = id; + model->saveSettings(sett); +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimeView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimeView.cpp new file mode 100644 index 00000000..049e65ce --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutime_screen/MenuTimeView.cpp @@ -0,0 +1,84 @@ +#include + +MenuTimeView::MenuTimeView() : + mUpdateItemCb(this, &MenuTimeView::updateItem), + mUpdateCenterItemCb(this, &MenuTimeView::updateCenterItem) +{ +} + +void MenuTimeView::setupScreen() +{ + MenuTimeViewBase::setupScreen(); + + menuLayout.setAnimationSteps(App::Config::kMenuAnimationSteps); + menuLayout.setTitle(T_TEXT_TIME_UC); + menuLayout.setUpdateItemCallback(mUpdateItemCb); + menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + menuLayout.setNumberOfItems(Menu::ID_COUNT); + menuLayout.invalidate(); +} + +void MenuTimeView::tearDownScreen() +{ + MenuTimeViewBase::tearDownScreen(); +} + +void MenuTimeView::setTime(Menu::Id id) +{ + menuLayout.selectItem(static_cast(id)); +} + +void MenuTimeView::updateItem(MainMenuItem& item, int16_t index) +{ + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) return; + + if (index == 0) { + Unicode::snprintf(mItemBuff, kBuffSize, "%s", + touchgfx::TypedText(T_TEXT_OFF_UC).getText()); + } else { + Unicode::snprintf(mItemBuff, kBuffSize, "%d %s", + Menu::kValues[index], touchgfx::TypedText(T_TEXT_MIN).getText()); + } + + MenuItemConfig cfg; + cfg.msgText = mItemBuff; + item.apply(cfg); +} + +void MenuTimeView::updateCenterItem(MainMenuCenterItem& item, int16_t index) +{ + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) return; + + if (index == 0) { + Unicode::snprintf(mMainBuff, kBuffSize, "%s", + touchgfx::TypedText(T_TEXT_OFF_UC).getText()); + } else { + touchgfx::TypedTextId txt = Menu::kValues[index] > 1 ? T_TEXT_MINUTES_LC : T_TEXT_MINUTE_LC; + Unicode::snprintf(mMainBuff, kBuffSize, "%d %s", + Menu::kValues[index], touchgfx::TypedText(txt).getText()); + } + + MenuItemConfig cfg; + cfg.msgText = mMainBuff; + item.apply(cfg); +} + +void MenuTimeView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + menuLayout.selectPrev(); + } + + if (key == SDK::GUI::Button::L2) { + menuLayout.selectNext(); + } + + if (key == SDK::GUI::Button::R1) { + presenter->saveTime(static_cast(menuLayout.getSelectedItem())); + application().gotoMenuTimeSavedScreenNoTransition(); + } + + if (key == SDK::GUI::Button::R2) { + application().gotoMenuAlertsScreenNoTransition(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedPresenter.cpp new file mode 100644 index 00000000..e6a12365 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedPresenter.cpp @@ -0,0 +1,18 @@ +#include +#include + +MenuTimeSavedPresenter::MenuTimeSavedPresenter(MenuTimeSavedView& v) + : view(v) +{ + +} + +void MenuTimeSavedPresenter::activate() +{ + view.setTime(model->getSettings().alertTimeId); +} + +void MenuTimeSavedPresenter::deactivate() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedView.cpp new file mode 100644 index 00000000..ddf4984d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/menutimesaved_screen/MenuTimeSavedView.cpp @@ -0,0 +1,42 @@ +#include + + +static constexpr uint16_t kDismissTicks = SDK::Utils::secToTicks(1, App::Config::kFrameRate); + +MenuTimeSavedView::MenuTimeSavedView() + : mDismissCb(this, &MenuTimeSavedView::onDismiss) +{ +} + +void MenuTimeSavedView::setupScreen() +{ + MenuTimeSavedViewBase::setupScreen(); + + title.set(T_TEXT_TIME_UC); + + mDismissTimer.setDuration(kDismissTicks); + mDismissTimer.setCallback(mDismissCb); + mDismissTimer.start(); +} + +void MenuTimeSavedView::tearDownScreen() +{ + mDismissTimer.stop(); + MenuTimeSavedViewBase::tearDownScreen(); +} + +void MenuTimeSavedView::setTime(Menu::Id id) +{ + if (id == Menu::ID_OFF) { + Unicode::snprintf(messageTextBuffer, MESSAGETEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_OFF_UC).getText()); + } else { + Unicode::snprintf(messageTextBuffer, MESSAGETEXT_SIZE, "%d %s", + Menu::kValues[id], touchgfx::TypedText(T_TEXT_MIN).getText()); + } + messageText.invalidate(); +} + +void MenuTimeSavedView::onDismiss() +{ + application().gotoMenuAlertsScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/model/Model.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/model/Model.cpp new file mode 100644 index 00000000..8be638d2 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/model/Model.cpp @@ -0,0 +1,326 @@ +#include +#include +#include + +#include "SDK/Kernel/KernelProviderGUI.hpp" +#include "SDK/Port/TouchGFX/TouchGFXCommandProcessor.hpp" + +#define LOG_MODULE_PRX "Model" +#define LOG_MODULE_LEVEL LOG_LEVEL_INFO +#include "SDK/UnaLogger/Logger.h" + +Model::Model() + : modelListener(nullptr) + , mKernel(SDK::KernelProviderGUI::GetInstance().getKernel()) + , mSrvSender(mKernel) +{ + SDK::TouchGFXCommandProcessor::GetInstance().setAppLifeCycleCallback(this); + SDK::TouchGFXCommandProcessor::GetInstance().setCustomMessageHandler(this); + memcpy(mHrThresholds, CustomMessage::kHrThresholdsDefault, sizeof(mHrThresholds)); + +#if defined(SIMULATOR) + std::string fsPath = SDK::Simulator::KernelHolder::Get().getFsPath(); + LOG_INFO("Simulator.\n"); + LOG_INFO("FS path: [%s].\n", fsPath.c_str()); + LOG_INFO("Buttons: 1=L1 2=L2 3=R1 4=R2\n\n"); +#endif +} + +// Controls + +FrontendApplication& Model::application() +{ + return *static_cast(touchgfx::Application::getInstance()); +} + +App::MenuNav::Nav& Model::menu() +{ + return mMenu; +} + +void Model::invalidate() +{ + mInvalidate = true; +} + +void Model::tick() +{ +#if defined(SIMULATOR) + decIdleTimer(); +#else + if (mIsRunning) { + decIdleTimer(); + } +#endif + if (mInvalidate) { + mInvalidate = false; + application().invalidate(); + } +} + +void Model::handleKeyEvent(uint8_t key) +{ + LOG_DEBUG("key = %c\n", static_cast(key)); + if (isAnyKeyPressed(key)) { + resetIdleTimer(); + } +} + +void Model::resetIdleTimer() +{ + mIdleTimer = App::Config::kScreenTimeoutSteps; +} + +void Model::exitApp() +{ + LOG_INFO("Manually exiting the application\n"); + + SDK::TouchGFXCommandProcessor::GetInstance().setAppLifeCycleCallback(nullptr); + SDK::TouchGFXCommandProcessor::GetInstance().setCustomMessageHandler(nullptr); + + mKernel.sys.exit(); + // On simulator sys.exit() only sets a flag -- the current tick completes normally. +} + + +// Date/Time + +void Model::getDate(uint8_t& month, uint8_t& day, uint8_t& weekday) +{ + month = static_cast(mTime.tm_mon); + day = static_cast(mTime.tm_mday); + weekday = static_cast(mTime.tm_wday); +} + +void Model::getTime(uint8_t& h, uint8_t& m, uint8_t& s) +{ + h = static_cast(mTime.tm_hour); + m = static_cast(mTime.tm_min); + s = static_cast(mTime.tm_sec); +} + +// Power + +uint8_t Model::getBatteryLevel() const +{ + return mBatteryLevel; +} + + +// Settings + +bool Model::isUnitsImperial() const +{ + return mUnitsImperial; +} + +const uint8_t* Model::getHrThresholds() const +{ + return mHrThresholds; +} + +uint8_t Model::getHrThresholdsCount() const +{ + return mHrThresholdsCount; +} + +const Settings& Model::getSettings() const +{ + return mSettings; +} + +void Model::saveSettings(const Settings& sett) +{ + mSettings = sett; + mSrvSender.settingsSave(mSettings); +} + + +// Track + +void Model::trackStart() +{ + mSrvSender.trackStart(); +} + +bool Model::isTrackActive() const +{ + return mTrackState != Track::State::INACTIVE; +} + +void Model::trackPause() +{ + mSrvSender.trackPause(); +} + +void Model::trackResume() +{ + mSrvSender.trackResume(); +} + +bool Model::isTrackPaused() const +{ + return mTrackState == Track::State::PAUSED; +} + +const Track::Data& Model::getTrackData() const +{ + return mTrackData; +} + +void Model::saveLap() +{ + mSrvSender.manualLap(); +} + +void Model::saveTrack() +{ + mSrvSender.trackStop(false); +} + +void Model::discardTrack() +{ + mSrvSender.trackStop(true); +} + +bool Model::isTrackSummaryAvailable() const +{ + return mActivitySummary != nullptr && mActivitySummary->time != 0; +} + +const ActivitySummary& Model::getTrackSummary() const +{ + return *mActivitySummary; +} + + +// Private + +void Model::decIdleTimer() +{ + if (mIdleTimer > 0) { + if (--mIdleTimer == 0) { + modelListener->onIdleTimeout(); + } + } +} + +bool Model::isAnyKeyPressed(uint8_t key) const +{ + return key == SDK::GUI::Button::L1 || + key == SDK::GUI::Button::L2 || + key == SDK::GUI::Button::R1 || + key == SDK::GUI::Button::R2; +} + + +// IGuiLifeCycleCallback + +void Model::onStart() +{ + LOG_INFO("Started\n"); +} + +void Model::onResume() +{ + mIsRunning = true; + resetIdleTimer(); + invalidate(); +} + +void Model::onSuspend() +{ + mIsRunning = false; +} + +void Model::onStop() +{ + LOG_INFO("Force exit from the application\n"); +} + + +// ICustomMessageHandler + +bool Model::customMessageHandler(SDK::MessageBase* message) +{ + switch (message->getType()) { + case CustomMessage::SETTINGS_UPDATE: { + LOG_DEBUG("SETTINGS_UPDATE\n"); + auto* msg = static_cast(message); + mSettings = msg->settings; + mUnitsImperial = msg->unitsImperial; + memcpy(mHrThresholds, msg->hrThresholds, sizeof(mHrThresholds)); + mHrThresholdsCount = msg->hrThresholdsCount; + modelListener->onSettings(mSettings); + } break; + + case CustomMessage::LOCAL_TIME: { + auto* msg = static_cast(message); + std::tm newTime = msg->localTime; + LOG_DEBUG("LOCAL_TIME %04u-%02u-%02u %02u:%02u:%02u\n", + newTime.tm_year + 1900, newTime.tm_mon + 1, newTime.tm_mday, + newTime.tm_hour, newTime.tm_min, newTime.tm_sec); + + const bool dateChanged = newTime.tm_year != mTime.tm_year || + newTime.tm_mon != mTime.tm_mon || + newTime.tm_mday != mTime.tm_mday; + const bool timeChanged = newTime.tm_hour != mTime.tm_hour || + newTime.tm_min != mTime.tm_min || + newTime.tm_sec != mTime.tm_sec; + mTime = newTime; + + if (dateChanged) { + modelListener->onDate(mTime.tm_year + 1900, mTime.tm_mon + 1, + mTime.tm_mday, mTime.tm_wday); + } + if (timeChanged) { + modelListener->onTime(mTime.tm_hour, mTime.tm_min, mTime.tm_sec); + } + } break; + + case CustomMessage::BATTERY: { + auto* msg = static_cast(message); + LOG_DEBUG("BATTERY Level %u\n", msg->level); + if (mBatteryLevel != msg->level) { + mBatteryLevel = msg->level; + modelListener->onBatteryLevel(mBatteryLevel); + } + } break; + + case CustomMessage::TRACK_STATE_UPDATE: { + LOG_DEBUG("TRACK_STATE_UPDATE\n"); + auto* msg = static_cast(message); + if (mTrackState != msg->state) { + mTrackState = msg->state; + modelListener->onTrackState(mTrackState); + } + } break; + + case CustomMessage::TRACK_DATA_UPDATE: { + LOG_DEBUG("TRACK_DATA_UPDATE\n"); + auto* msg = static_cast(message); + mTrackData = msg->data; + modelListener->onTrackData(mTrackData); + } break; + + case CustomMessage::LAP_END: { + LOG_DEBUG("LAP_END\n"); + auto* msg = static_cast(message); + modelListener->onLapChanged(msg->lapNum); + } break; + + case CustomMessage::SUMMARY: { + LOG_DEBUG("SUMMARY\n"); + auto* msg = static_cast(message); + if (msg->summary) { + mActivitySummary = msg->summary; + modelListener->onActivitySummary(*mActivitySummary); + } + } break; + + default: + break; + } + + return true; +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackPresenter.cpp new file mode 100644 index 00000000..236f69bc --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackPresenter.cpp @@ -0,0 +1,58 @@ +#include +#include + +TrackPresenter::TrackPresenter(TrackView& v) + : view(v) +{ + +} + +void TrackPresenter::activate() +{ + // Reset nested action menu position + model->menu().track.action.reset(); + + view.setPositionId(model->menu().track.get()); + + view.setConfig(model->isUnitsImperial(), model->getHrThresholds(), model->getHrThresholdsCount()); + + onTrackData(model->getTrackData()); + + uint8_t hour; + uint8_t minute; + uint8_t sec; + model->getTime(hour, minute, sec); + view.setTime(hour, minute); + + view.setBatteryLevel(model->getBatteryLevel()); +} + +void TrackPresenter::deactivate() +{ + model->menu().track.set(view.getPositionId()); +} + +void TrackPresenter::onTrackData(const Track::Data& data) +{ + view.setTrackData(data); +} + +void TrackPresenter::onBatteryLevel(uint8_t lvl) +{ + view.setBatteryLevel(lvl); +} + +void TrackPresenter::onTime(uint8_t hour, uint8_t minute, uint8_t sec) +{ + view.setTime(hour, minute); +} + +void TrackPresenter::onLapChanged(uint8_t lapEnd) +{ + model->application().gotoTrackLapScreenNoTransition(); +} + +void TrackPresenter::saveLap() +{ + model->saveLap(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackView.cpp new file mode 100644 index 00000000..29e14c8d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/track_screen/TrackView.cpp @@ -0,0 +1,120 @@ +#include +#include + +using FaceId = App::MenuNav::TrackView::Id; + +TrackView::TrackView() +{ + +} + +void TrackView::setupScreen() +{ + TrackViewBase::setupScreen(); + + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::NONE); + buttons.setR2(Buttons::AMBER); + + scrollIndicator.setConfig(ScrollIndicator::kSmall); + scrollIndicator.setCount(FaceId::ID_COUNT); +} + +void TrackView::tearDownScreen() +{ + TrackViewBase::tearDownScreen(); +} + +void TrackView::setPositionId(uint16_t id) +{ + if (id < static_cast(FaceId::ID_TRACK1)) { + id = FaceId::ID_TRACK1; + } + if (id >= FaceId::ID_COUNT) { + id = FaceId::ID_COUNT - 1; + } + mCurrentFaceId = id; + + trackFaceTotal.setVisible(false); + trackFaceLap.setVisible(false); + trackFaceStatus.setVisible(false); + + scrollIndicator.setActiveId(id); + + switch (id) { + case FaceId::ID_TRACK1: trackFaceTotal.setVisible(true); break; + case FaceId::ID_TRACK2: trackFaceLap.setVisible(true); break; + case FaceId::ID_TRACK3: trackFaceStatus.setVisible(true); break; + default: break; + } + + trackFaceTotal.invalidate(); + trackFaceLap.invalidate(); + trackFaceStatus.invalidate(); +} + +uint16_t TrackView::getPositionId() +{ + return mCurrentFaceId; +} + +void TrackView::setConfig(bool isImperial, const uint8_t* thresholds, uint8_t thresholdCount) +{ + mIsImperial = isImperial; + mHrThresholdCount = thresholdCount < App::Config::kHrThresholdsCount ? + thresholdCount : static_cast(App::Config::kHrThresholdsCount); + memcpy(mHrThresholds, thresholds, mHrThresholdCount); +} + +void TrackView::setTrackData(const Track::Data& data) +{ + trackFaceTotal.setHR(data.hr, mHrThresholds, mHrThresholdCount); + trackFaceTotal.setCalories(data.totalCalories); + trackFaceTotal.setTimer(data.totalTime); + + trackFaceLap.setLapAvgHR(data.avgLapHR); + trackFaceLap.setLapNumber(data.lapNum); + trackFaceLap.setTimer(data.lapTime); + +} + +void TrackView::setTime(uint8_t h, uint8_t m) +{ + trackFaceStatus.setTime(h, m); +} + +void TrackView::setBatteryLevel(uint8_t level) +{ + trackFaceStatus.setBatteryLevel(level); +} + +void TrackView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + uint16_t p = mCurrentFaceId; + if (p <= FaceId::ID_TRACK1) { + p = FaceId::ID_COUNT - 1; + } else { + p--; + } + setPositionId(p); + } + + if (key == SDK::GUI::Button::L2) { + uint16_t p = mCurrentFaceId + 1u; + if (p >= FaceId::ID_COUNT) { + p = FaceId::ID_TRACK1; + } + setPositionId(p); + } + + if (key == SDK::GUI::Button::R1) { + application().gotoTrackActionScreenNoTransition(); + } + + if (key == SDK::GUI::Button::R2) { + presenter->saveLap(); + application().gotoTrackLapScreenNoTransition(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp new file mode 100644 index 00000000..7e014066 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp @@ -0,0 +1,39 @@ +#include +#include + +TrackActionPresenter::TrackActionPresenter(TrackActionView& v) + : view(v) +{ +} + +void TrackActionPresenter::activate() +{ + view.setUnitsImperial(model->isUnitsImperial()); + onTrackData(model->getTrackData()); + + // Reset idle timer + model->resetIdleTimer(); + + view.setPositionId(model->menu().track.action.get()); + + model->trackPause(); +} + +void TrackActionPresenter::deactivate() +{ + model->menu().track.action.set(view.getPositionId()); +} + +void TrackActionPresenter::onTrackData(const Track::Data& data) +{ + view.setTimer(data.totalTime); + view.setCalories(data.totalCalories); + view.setZoneTimes(data.zoneTimeSec); + view.setCurrentZone(data.hrZone); + view.setAvgHR(data.avgHR); +} + +void TrackActionPresenter::resumeTrack() +{ + model->trackResume(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp new file mode 100644 index 00000000..a82f3f7e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp @@ -0,0 +1,203 @@ +#include + +constexpr uint16_t kTrackTitleInfoSwitchPeriod = SDK::Utils::secToTicks(3, App::Config::kFrameRate); + +TrackActionView::TrackActionView() : + mUpdateItemCb(this, &TrackActionView::updateItem), + mUpdateCenterItemCb(this, &TrackActionView::updateCenterItem), + mCarouselCb(this, &TrackActionView::onCarouselUpdate) +{ +} + +void TrackActionView::setupScreen() +{ + TrackActionViewBase::setupScreen(); + + menuLayout.showTitle(false); + + menuLayout.getButtons().setL1(Buttons::NONE); + menuLayout.getButtons().setL2(Buttons::NONE); + menuLayout.getButtons().setR1(Buttons::AMBER); + menuLayout.getButtons().setR2(Buttons::NONE); + + menuLayout.setAnimationSteps(App::Config::kMenuAnimationSteps); + menuLayout.setUpdateItemCallback(mUpdateItemCb); + menuLayout.setUpdateCenterItemCallback(mUpdateCenterItemCb); + menuLayout.setNumberOfItems(Menu::ID_COUNT); + + mItemLayout.simple.msgOffsetY = -6; + menuLayout.getMenu().setItemLayout(mItemLayout); + + infoCarousel.setPeriod(kTrackTitleInfoSwitchPeriod); + infoCarousel.setUpdateCallback(mCarouselCb); + infoCarousel.setCount(4); // fires onCarouselUpdate(0) immediately + + menuLayout.invalidate(); +} + +void TrackActionView::tearDownScreen() +{ + TrackActionViewBase::tearDownScreen(); +} + +// ---- Presenter -> View ------------------------------------------------------ + +void TrackActionView::setPositionId(uint16_t id) +{ + menuLayout.selectItem(id); +} + +uint16_t TrackActionView::getPositionId() +{ + return menuLayout.getSelectedItem(); +} + +void TrackActionView::setUnitsImperial(bool isImperial) +{ + mIsImperial = isImperial; + infoCarousel.refresh(); +} + +void TrackActionView::setTimer(std::time_t sec) +{ + pauseIndicator.setTime(sec); +} + +void TrackActionView::setCalories(float calories) +{ + mCalories = calories; + infoCarousel.refresh(); +} + +void TrackActionView::setZoneTimes(const std::time_t zoneTimes[5]) +{ + mZoneTotalSec = 0; + for (uint8_t i = 0; i < 5; ++i) { + mZoneTotalSec += zoneTimes[i]; + } + infoCarousel.refresh(); +} + +void TrackActionView::setCurrentZone(uint8_t zone) +{ + mCurrentZone = zone; + infoCarousel.refresh(); +} + +void TrackActionView::setAvgHR(float hr) +{ + mAvgHr = hr; + infoCarousel.refresh(); +} + +// ---- Menu callbacks -------------------------------------------------------- + +void TrackActionView::updateItem(MainMenuItem& item, int16_t index) +{ + static const TypedTextId sIds[Menu::ID_COUNT] = { + T_TEXT_RESUME, + T_TEXT_SUMMARY, + T_TEXT_SAVE, + T_TEXT_DISCARD, + }; + + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) return; + + MenuItemConfig cfg; + cfg.msgId = sIds[index]; + item.apply(cfg); +} + +void TrackActionView::updateCenterItem(MainMenuCenterItem& item, int16_t index) +{ + static const TypedTextId sIds[Menu::ID_COUNT] = { + T_TEXT_RESUME, + T_TEXT_SUMMARY, + T_TEXT_SAVE, + T_TEXT_DISCARD, + }; + + if (index < 0 || index >= static_cast(Menu::ID_COUNT)) return; + + MenuItemConfig cfg; + cfg.msgId = sIds[index]; + item.apply(cfg); +} + +// ---- Carousel callback ----------------------------------------------------- + +void TrackActionView::onCarouselUpdate(int16_t index) +{ + const uint16_t kBufSize = 10; + touchgfx::Unicode::UnicodeChar buf[kBufSize] {}; + + switch (index) { + + case 0: + infoCarousel.setTitle(T_TEXT_TOTAL); + Unicode::snprintfFloat(buf, kBufSize, "%.0f", mCalories); + break; + + case 1: + infoCarousel.setTitle(T_TEXT_AVG_DOT_HR); + if (mAvgHr < App::Display::kMinHR) { + Unicode::snprintf(buf, kBufSize, "---"); + } else { + Unicode::snprintfFloat(buf, kBufSize, "%.0f", mAvgHr); + } + break; + + case 2: + infoCarousel.setTitle(T_TEXT_TIME_UC); + { + auto hms = SDK::Utils::toHMS(mZoneTotalSec); + Unicode::snprintf(buf, kBufSize, "%u:%02u", hms.h, hms.m); + } + break; + + case 3: + infoCarousel.setTitle(T_TEXT_HR_UC); + Unicode::snprintf(buf, kBufSize, "%u", mCurrentZone); + break; + + default: + break; + } + + infoCarousel.setValue(buf); +} + +// ---- Input ----------------------------------------------------------------- + +void TrackActionView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + menuLayout.selectPrev(); + infoCarousel.refresh(); // tick visibility depends on selected item + } + + if (key == SDK::GUI::Button::L2) { + menuLayout.selectNext(); + infoCarousel.refresh(); + } + + if (key == SDK::GUI::Button::R1) { + switch (menuLayout.getSelectedItem()) { + case Menu::ID_RESUME: + presenter->resumeTrack(); + application().gotoTrackScreenNoTransition(); + break; + case Menu::ID_SUMMARY: + application().gotoTrackSummaryScreenNoTransition(); + break; + case Menu::ID_SAVE: + application().gotoTrackSavedScreenNoTransition(); + break; + case Menu::ID_DISCARD: + application().gotoTrackDiscardConfirmationScreenNoTransition(); + break; + default: + break; + } + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.cpp new file mode 100644 index 00000000..4f6527d5 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationPresenter.cpp @@ -0,0 +1,19 @@ +#include +#include + +TrackDiscardConfirmationPresenter::TrackDiscardConfirmationPresenter(TrackDiscardConfirmationView& v) + : view(v) +{ + +} + +void TrackDiscardConfirmationPresenter::activate() +{ + // Reset idle timer + model->resetIdleTimer(); +} + +void TrackDiscardConfirmationPresenter::deactivate() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.cpp new file mode 100644 index 00000000..4b8a75dd --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationView.cpp @@ -0,0 +1,42 @@ +#include + +TrackDiscardConfirmationView::TrackDiscardConfirmationView() +{ + +} + +void TrackDiscardConfirmationView::setupScreen() +{ + TrackDiscardConfirmationViewBase::setupScreen(); + + title.set(T_TEXT_APP_NAME_UC); + + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::AMBER); + buttons.setR2(Buttons::WHITE); +} + +void TrackDiscardConfirmationView::tearDownScreen() +{ + TrackDiscardConfirmationViewBase::tearDownScreen(); +} + +void TrackDiscardConfirmationView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + + } + + if (key == SDK::GUI::Button::L2) { + + } + + if (key == SDK::GUI::Button::R1) { + application().gotoTrackDiscardedScreenNoTransition(); + } + + if (key == SDK::GUI::Button::R2) { + application().gotoTrackActionScreenNoTransition(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedPresenter.cpp new file mode 100644 index 00000000..2da0b991 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedPresenter.cpp @@ -0,0 +1,26 @@ +#include +#include + +TrackDiscardedPresenter::TrackDiscardedPresenter(TrackDiscardedView& v) + : view(v) +{ + +} + +void TrackDiscardedPresenter::activate() +{ + // Reset idle timer + model->resetIdleTimer(); + + model->discardTrack(); +} + +void TrackDiscardedPresenter::deactivate() +{ + +} + +void TrackDiscardedPresenter::exitApp() +{ + model->exitApp(); +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedView.cpp new file mode 100644 index 00000000..62e13141 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackdiscarded_screen/TrackDiscardedView.cpp @@ -0,0 +1,31 @@ +#include + + +static constexpr uint16_t kDismissTicks = SDK::Utils::secToTicks(2, App::Config::kFrameRate); + +TrackDiscardedView::TrackDiscardedView() + : mDismissCb(this, &TrackDiscardedView::onDismiss) +{ +} + +void TrackDiscardedView::setupScreen() +{ + TrackDiscardedViewBase::setupScreen(); + + title.set(T_TEXT_APP_NAME_UC); + + mDismissTimer.setDuration(kDismissTicks); + mDismissTimer.setCallback(mDismissCb); + mDismissTimer.start(); +} + +void TrackDiscardedView::tearDownScreen() +{ + mDismissTimer.stop(); + TrackDiscardedViewBase::tearDownScreen(); +} + +void TrackDiscardedView::onDismiss() +{ + presenter->exitApp(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapPresenter.cpp new file mode 100644 index 00000000..ed4626b0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapPresenter.cpp @@ -0,0 +1,26 @@ +#include +#include + +TrackLapPresenter::TrackLapPresenter(TrackLapView& v) + : view(v) +{ +} + +void TrackLapPresenter::activate() +{ + // Reset idle timer + model->resetIdleTimer(); + + view.setUnitsImperial(model->isUnitsImperial()); + + const Track::Data& data = model->getTrackData(); + + view.setLapNum(data.lapNum); + view.setTimer(data.lapTime); + view.setAvgLapHR(data.avgLapHR); + view.setLapCalories(data.lapCalories); +} + +void TrackLapPresenter::deactivate() +{ +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapView.cpp new file mode 100644 index 00000000..e1956c93 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracklap_screen/TrackLapView.cpp @@ -0,0 +1,87 @@ +#include +#include + + +static constexpr uint16_t kDismissTicks = SDK::Utils::secToTicks(5, App::Config::kFrameRate); + +TrackLapView::TrackLapView() + : mDismissCb(this, &TrackLapView::onDismiss) +{ +} + +void TrackLapView::setupScreen() +{ + TrackLapViewBase::setupScreen(); + + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::NONE); + buttons.setR2(Buttons::NONE); + + mDismissTimer.setDuration(kDismissTicks); + mDismissTimer.setCallback(mDismissCb); + mDismissTimer.start(); +} + +void TrackLapView::tearDownScreen() +{ + mDismissTimer.stop(); + TrackLapViewBase::tearDownScreen(); +} + +void TrackLapView::setUnitsImperial(bool isImperial) +{ + mIsImperial = isImperial; +} + +void TrackLapView::setLapNum(uint32_t n) +{ + const uint16_t kBuffSize = 16; + touchgfx::Unicode::UnicodeChar buffer[kBuffSize] { }; + + Unicode::snprintf(buffer, kBuffSize, "%s %u", + touchgfx::TypedText(T_TEXT_LAP).getText(), n + 1); + + title.set(buffer); +} + +void TrackLapView::setAvgLapHR(float hr) +{ + if (hr < App::Display::kMinHR) { + Unicode::snprintf(hrValueBuffer, HRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(hrValueBuffer, HRVALUE_SIZE, "%.0f", hr); + } + hrValue.invalidate(); +} + +void TrackLapView::setLapCalories(float calories) +{ + Unicode::snprintfFloat(caloriesValueBuffer, CALORIESVALUE_SIZE, "%.0f", calories); + caloriesValue.invalidate(); +} + +void TrackLapView::setTimer(std::time_t sec) +{ + auto hms = SDK::Utils::toHMS(sec); + if (hms.h == 0) { + Unicode::snprintf(timeValueBuffer, TIMEVALUE_SIZE, "%u:%02u", hms.m, hms.s); + } else { + Unicode::snprintf(timeValueBuffer, TIMEVALUE_SIZE, "%u:%02u", hms.h, hms.m); + } + timeValue.invalidate(); +} + +void TrackLapView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L2) { + // Disabled by design + //mDismissTimer.stop(); + //application().gotoTrackScreenNoTransition(); + } +} + +void TrackLapView::onDismiss() +{ + application().gotoTrackScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedPresenter.cpp new file mode 100644 index 00000000..c1f58237 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedPresenter.cpp @@ -0,0 +1,18 @@ +#include +#include + +TrackSavedPresenter::TrackSavedPresenter(TrackSavedView& v) + : view(v) +{ + +} + +void TrackSavedPresenter::activate() +{ + model->saveTrack(); +} + +void TrackSavedPresenter::deactivate() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedView.cpp new file mode 100644 index 00000000..6e1384c9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksaved_screen/TrackSavedView.cpp @@ -0,0 +1,31 @@ +#include + + +static constexpr uint16_t kDismissTicks = SDK::Utils::secToTicks(2, App::Config::kFrameRate); + +TrackSavedView::TrackSavedView() + : mDismissCb(this, &TrackSavedView::onDismiss) +{ +} + +void TrackSavedView::setupScreen() +{ + TrackSavedViewBase::setupScreen(); + + title.set(T_TEXT_APP_NAME_UC); + + mDismissTimer.setDuration(kDismissTicks); + mDismissTimer.setCallback(mDismissCb); + mDismissTimer.start(); +} + +void TrackSavedView::tearDownScreen() +{ + mDismissTimer.stop(); + TrackSavedViewBase::tearDownScreen(); +} + +void TrackSavedView::onDismiss() +{ + application().gotoTrackSummaryScreenNoTransition(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationPresenter.cpp new file mode 100644 index 00000000..4bccf8b1 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationPresenter.cpp @@ -0,0 +1,30 @@ +#include +#include + +TrackStartConfirmationPresenter::TrackStartConfirmationPresenter(TrackStartConfirmationView& v) + : view(v) +{ + +} + +void TrackStartConfirmationPresenter::activate() +{ + // Reset idle timer + model->resetIdleTimer(); +} + +void TrackStartConfirmationPresenter::deactivate() +{ + +} + +void TrackStartConfirmationPresenter::onIdleTimeout() +{ + model->application().gotoMainScreenNoTransition(); +} + +void TrackStartConfirmationPresenter::startTrack() +{ + model->trackStart(); + model->application().gotoTrackScreenNoTransition(); +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationView.cpp new file mode 100644 index 00000000..b4730e57 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackstartconfirmation_screen/TrackStartConfirmationView.cpp @@ -0,0 +1,42 @@ +#include + +TrackStartConfirmationView::TrackStartConfirmationView() +{ + +} + +void TrackStartConfirmationView::setupScreen() +{ + TrackStartConfirmationViewBase::setupScreen(); + + title.set(T_TEXT_APP_NAME_UC); + + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::AMBER); + buttons.setR2(Buttons::WHITE); +} + +void TrackStartConfirmationView::tearDownScreen() +{ + TrackStartConfirmationViewBase::tearDownScreen(); +} + +void TrackStartConfirmationView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L1) { + + } + + if (key == SDK::GUI::Button::L2) { + + } + + if (key == SDK::GUI::Button::R1) { + presenter->startTrack(); + } + + if (key == SDK::GUI::Button::R2) { + application().gotoMainScreenNoTransition(); + } +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryPresenter.cpp new file mode 100644 index 00000000..aa47dfa9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryPresenter.cpp @@ -0,0 +1,32 @@ +#include +#include + +TrackSummaryPresenter::TrackSummaryPresenter(TrackSummaryView& v) + : view(v) +{ +} + +void TrackSummaryPresenter::activate() +{ + model->resetIdleTimer(); + + view.setSummary(model->getTrackSummary(), model->isTrackPaused()); +} + +void TrackSummaryPresenter::deactivate() +{ +} + +void TrackSummaryPresenter::exitApp() +{ + model->exitApp(); +} + +void TrackSummaryPresenter::backToTrack() +{ + if (model->isTrackPaused()) { + model->application().gotoTrackActionScreenNoTransition(); + } else { + model->exitApp(); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp new file mode 100644 index 00000000..7efd6617 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp @@ -0,0 +1,114 @@ +#include +#include + +TrackSummaryView::TrackSummaryView() +{ +} + +void TrackSummaryView::setupScreen() +{ + TrackSummaryViewBase::setupScreen(); + + buttons.setL1(Buttons::NONE); + buttons.setL2(Buttons::NONE); + buttons.setR1(Buttons::NONE); + buttons.setR2(Buttons::NONE); + + scrollIndicator.setConfig(ScrollIndicator::kSmall); + scrollIndicator.setCount(2); + scrollIndicator.setActiveId(FACE_OVERVIEW); + + mCurrentFace = FACE_OVERVIEW; + updateFace(); +} + +void TrackSummaryView::tearDownScreen() +{ + TrackSummaryViewBase::tearDownScreen(); +} + +void TrackSummaryView::setSummary(const ActivitySummary& s, bool isPaused) +{ + mTrackIsPaused = isPaused; + + summaryFaceOverview.setTotalTime(s.time); + summaryFaceOverview.setAvgHR(s.hrAvg); + summaryFaceOverview.setCalories(s.calories); + summaryFaceHeartRate.setMaxHR(s.hrMax); + summaryFaceHeartRate.setAvgHR(s.hrAvg); + + summaryFaceLaps.setLaps(s.laps); + mLapsPageCount = summaryFaceLaps.getPageCount(); + scrollIndicator.setCount(2 + mLapsPageCount); + + if (isPaused) { + buttons.setR1(Buttons::NONE); + buttons.setR2(Buttons::AMBER); + } else { + buttons.setR1(Buttons::AMBER); + buttons.setR2(Buttons::NONE); + } +} + +void TrackSummaryView::updateFace() +{ + summaryFaceOverview.setVisible(mCurrentFace == FACE_OVERVIEW); + summaryFaceHeartRate.setVisible(mCurrentFace == FACE_HEARTRATE); + summaryFaceLaps.setVisible(mCurrentFace == FACE_LAPS); + + summaryFaceOverview.invalidate(); + summaryFaceHeartRate.invalidate(); + summaryFaceLaps.invalidate(); + + updateScrollIndicator(); +} + +void TrackSummaryView::updateScrollIndicator() +{ + const uint8_t id = (mCurrentFace < FACE_LAPS) + ? mCurrentFace + : static_cast(FACE_LAPS + summaryFaceLaps.getScrollPage()); + scrollIndicator.animateToId(id); +} + +void TrackSummaryView::handleKeyEvent(uint8_t key) +{ + if (key == SDK::GUI::Button::L2) { + if (mCurrentFace == FACE_LAPS) { + if (summaryFaceLaps.canScrollDown()) { + summaryFaceLaps.scrollDown(); + updateScrollIndicator(); + } + } else if (mCurrentFace < FACE_HEARTRATE || mLapsPageCount > 0) { + mCurrentFace++; + updateFace(); + } + return; + } + + if (key == SDK::GUI::Button::L1) { + if (mCurrentFace == FACE_LAPS) { + if (summaryFaceLaps.canScrollUp()) { + summaryFaceLaps.scrollUp(); + updateScrollIndicator(); + } else { + mCurrentFace--; + updateFace(); + } + } else if (mCurrentFace > FACE_OVERVIEW) { + mCurrentFace--; + updateFace(); + } + return; + } + + if (key == SDK::GUI::Button::R1) { + if (!mTrackIsPaused) presenter->backToTrack(); + return; + } + + if (key == SDK::GUI::Button::R2) { + if (mTrackIsPaused) presenter->backToTrack(); + return; + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/ConfigurationSimulator.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/ConfigurationSimulator.hpp new file mode 100644 index 00000000..df625359 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/ConfigurationSimulator.hpp @@ -0,0 +1,48 @@ +/** + ****************************************************************************** + * @file GonfigurationSimulator.hpp + * @date 28-March-2026 + * @author Vlad Andriyash + * @brief Gonfiguration Simulator file + * + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef __CONFIG_SIMULATOR_HPP +#define __CONFIG_SIMULATOR_HPP + +#include + +//GPS Sensor +#define GSP_SIM_ENABLE 1 // 0 - Disable +#define GSP_SIM_SPEED_MIN 15 // km/h +#define GPS_SIM_SPEED_BASE 20 // km/h +#define GPS_SIM_SPEED_MAX 25 // km/h +#define GPS_SIM_TIME_SEACH_SATELLITE 4 // seconds + +//HeatRate Sensor +#define HEAT_RATE_SIM_ENABLE 1 // 0 - Disable +#define HEAT_RATE_SIM_MIN_HR 120 // Max - 255 +#define HEAT_RATE_SIM_MAX_HR 180 // Max - 255 +#define HEAT_RATE_SIM_TYPE_TRAINING 1// 0 - Cycling, 1 - Hiking, 2 - Running + +// Pressure Sensor +#define PRESSURE_SIM_ENABLE 1 // 0 - Disable +#define PRESSURE_SIM_PRESS_VALLUE 1020.2 + +// Battery Level Sensor +#define BATT_LEVEL_SIM_ENABLE 1 // 0 - Disable +#define BATT_LEVEL_SIM_START_VALUE 100 // 10 - 100% +#define BATT_LEVEL_SIM_STEP_VALUE 0.2 //percent + +// IMU Writs Sensor +#define IMU_WRIST_SIM_ENABLE 1 // 0 - Disable +#define IMU_WRIST_SIM_WRIST_DETECT_KEY '5' // char type + +// IMU StepCounter Sensor +#define IMU_STEP_COUNTER_SIM_ENABLE 1 // 0 - Disable +#define IMU_STEP_COUNTER_SIM_STRIDE_LENGTH 1 //meters per step. Walking 0.65–0.75 m, hiking 0.55–0.70 m, running 1.0–1.4 m + +#endif /* __CONFIG_SIMULATOR_HPP */ \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile new file mode 100644 index 00000000..b981c97d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile @@ -0,0 +1,102 @@ +# Helper macros to convert spaces into question marks and back again +e := +sp := $(e) $(e) +qs = $(subst ?,$(sp),$1) +sq = $(subst $(sp),?,$1) + +# Get name of this Makefile (avoid getting word 0 and a starting space) +makefile_name := $(wordlist 1,1000,$(MAKEFILE_LIST)) + +# Get path of this Makefile +makefile_path := $(call qs,$(dir $(call sq,$(abspath $(call sq,$(makefile_name)))))) + +# Get path where the Application is +application_path := $(call qs,$(abspath $(call sq,$(makefile_path)../..))) + +.PHONY: clean assets all + +ifneq ($(words $(makefile_path))$(words $(MAKEFILE_LIST)),11) +all clean assets: +$(error Spaces not allowed in path) +else + +define replace_car +$(subst $(3),$(2),$(1)) +endef + +#Change symbol \ to / +SDK := $(call replace_car,$(UNA_SDK),/,\) +#Add path to seach source files in UNA-SDK +VPATH := $(SDK) + +#If you want to add a source file from UNA-SDK, just write the path starting with the internal UNA-SDK folder +ADDITIONAL_SOURCES_UNA :=\ +Libs/Source/Simulator/Kernel/Mock/Backlight.cpp\ +Libs/Source/Simulator/Kernel/Mock/Buzzer.cpp\ +Libs/Source/Simulator/Kernel/Mock/FileSystem.cpp\ +Libs/Source/Simulator/Kernel/Mock/Vibro.cpp\ +Libs/Source/UnaLogger/Logger.cpp\ +Libs/Source/Wrappers/StdLibWrappers.c\ +ThirdParty/coreJSON/source/core_json.c\ +ThirdParty/FitSDKRelease_21.171.00/c/fit.c\ +ThirdParty/FitSDKRelease_21.171.00/c/fit_convert.c\ +ThirdParty/FitSDKRelease_21.171.00/c/fit_crc.c\ +ThirdParty/FitSDKRelease_21.171.00/c/fit_product.c\ +Libs/Source/JSON/JsonStreamReader.cpp\ +Libs/Source/JSON/JsonStreamWriter.cpp\ +Libs/Source/TrackMap/TrackMapBuilder.cpp\ +Libs/Source/Kernel/KernelBuilder.cpp\ +Libs/Source/FitHelper/FitHelper.cpp\ +Libs/Source/Timer/Timer.cpp\ +Libs/Source/Port/TouchGFX/TouchGFXCommandProcessor.cpp\ +Libs/Source/SensorLayer/SensorConnection.cpp\ +Libs/Source/Simulator/App/DualAppComm.cpp\ +Libs/Source/Simulator/App/AppCore.cpp\ +Libs/Source/Simulator/App/AppMessageCore.cpp\ +Libs/Source/Simulator/App/KernelMessageDispatcher.cpp\ +Libs/Source/Simulator/App/MessageManager.cpp\ +Libs/Source/Simulator/Kernel/Kernel.cpp\ +Libs/Source/Simulator/Kernel/Mock/System.cpp\ +Libs/Source/Simulator/OS/OS.cpp\ +Libs/Source/Simulator/OS/SwTimer.cpp\ +Libs/Source/Simulator/OS/OneShotTimer.cpp\ +Libs/Source/Simulator/Components/SensorManager.cpp\ +Libs/Source/Simulator/Components/SensorDataSample.cpp\ +Libs/Source/Simulator/Components/SensorDataQueue.cpp\ +Libs/Source/Simulator/Components/SampleRateAdapter.cpp\ +Libs/Source/Simulator/Components/InstanceSensorLayer.cpp\ +Libs/Source/Simulator/Components/Sensors/Gps/GpsSpeed.cpp\ +Libs/Source/Simulator/Components/Sensors/Gps/GpsLocation.cpp\ +Libs/Source/Simulator/Components/Sensors/Gps/GpsDistance.cpp\ +Libs/Source/Simulator/Components/Sensors/Gps/GpsAltimeter.cpp\ +Libs/Source/Simulator/Components/Sensors/HeartRate/SensorHeartRateMetrics.cpp\ +Libs/Source/Simulator/Components/Sensors/SensorBatteryLevel.cpp\ +Libs/Source/Simulator/Components/Sensors/HeartRate/SensorHeartRate.cpp\ +Libs/Source/Simulator/Components/Sensors/SensorPressure.cpp\ +Libs/Source/Simulator/Components/Sensors/Imu/ImuWristMotion.cpp\ +Libs/Source/Simulator/Components/Sensors/Imu/ImuStepCounter.cpp\ +Libs/Source/Simulator/Components/ComponentSimulator.cpp\ +Libs/Source/Simulator/Components/Simulator/GpsStepCounterSimulator.cpp\ +Libs/Source/Simulator/Components/SensorListener.cpp\ +Libs/Source/Simulator/Components/SensorDriver.cpp\ +../../Libs/Sources/ActivitySummarySerializer.cpp\ +../../Libs/Sources/ActivityWriter.cpp\ +../../Libs/Sources/Service.cpp\ +../../Libs/Sources/SettingsSerializer.cpp\ +../../Libs/Sources/WristTiltDetector.cpp\ +ADDITIONAL_SOURCES := +ADDITIONAL_INCLUDE_PATHS := $(SDK)/Libs/Header\ +../../Libs/Header\ +$(SDK)/ThirdParty/coreJSON/source/include\ +$(SDK)/ThirdParty/FitSDKRelease_21.171.00/c\ +ADDITIONAL_LIBRARY_PATHS := +ADDITIONAL_LIBRARIES := + +export ADDITIONAL_SOURCES ADDITIONAL_INCLUDE_PATHS ADDITIONAL_LIBRARY_PATHS ADDITIONAL_LIBRARIES ADDITIONAL_SOURCES_UNA SDK VPATH + +all: $(filter assets,$(MAKECMDGOALS)) +all assets: $(filter clean,$(MAKECMDGOALS)) +all clean assets: + @$(MAKE) -r -f una/Makefile -s $(MFLAGS) $@ -C "$(application_path)" +endif + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/main.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/main.cpp new file mode 100644 index 00000000..4de05f61 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/main.cpp @@ -0,0 +1,165 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "touchgfx/Utils.hpp" + +#include "SDK/Kernel/KernelBuilder.hpp" +#include "SDK/Simulator/Kernel/Kernel.hpp" +#include "SDK/Kernel/KernelProviderGUI.hpp" +#include "SDK/Kernel/KernelProviderService.hpp" +#include "SDK/Simulator/OS/OS.hpp" +#include "SDK/Simulator/App/AppCore.hpp" +#include "SDK/Simulator/App/AppMessageCore.hpp" +#include "SDK/Simulator/App/KernelMessageDispatcher.hpp" +#include "SDK/Simulator/Kernel/Mock/Backlight.hpp" +#include "SDK/Simulator/Kernel/Mock/Buzzer.hpp" +#include "SDK/Simulator/Kernel/Mock/Vibro.hpp" + +#include "Service.hpp" + +#include +#include + +#ifdef __linux__ +#include +#else +#include "Windows.h" +#endif + +#define LOG_MODULE_PRX "main" +#define LOG_MODULE_LEVEL LOG_LEVEL_DEBUG +#include "SDK/UnaLogger/Logger.h" + +using namespace touchgfx; + +// Kernel thread function +static void kernelThreadFunction(App::Core* appCore) +{ + appCore->run(); +} + +// GUI communication thread +static void guiCommThreadFunction(App::Core* appCore) +{ + appCore->runGuiComm(); +} + +// Service thread function +static void serviceThreadFunction(Service* service) +{ + service->run(); +} + +// KernelMessage thread function +static void appMessageThreadFunction(SDK::App::KernelMessageDispatcher* appMessage) +{ + appMessage->run(); +} + +static int runTouchGFX(SDK::App::DualAppComm& appComm, + SDK::Simulator::Kernel& srvKernel, + SDK::Simulator::Kernel& guiKernel, + int argc, + char** argv) +{ + // Initialize Logger with Service's kernel. In real app Service and GUI will have each its own kernel. + Logger_init(srvKernel.getKernel().log); + + // Save Service's kernel for global access + SDK::KernelProviderService::CreateInstance(&srvKernel.getKernel()); + + // Save GUI's kernel for global access + SDK::KernelProviderGUI::CreateInstance(&guiKernel.getKernel()); + + // Create the Service of the application + Service service(SDK::KernelProviderService::GetInstance().getKernel()); + + // Create KernelMessageDispatcher core + SDK::Simulator::Mock::Backlight mBacklight; + SDK::Simulator::Mock::Buzzer mBuzzer; + SDK::Simulator::Mock::Vibro mVibro; + SDK::App::KernelMessageDispatcher kernelMessage(appComm, appComm.getMsgManager(), mVibro, mBacklight, mBuzzer); + + // Create the Application core + App::Core appCore(appComm, srvKernel, guiKernel); + + //For windows/linux, DMA transfers are simulated + touchgfx::NoDMA dma; + LCD& lcd = setupLCD(); + touchgfx::NoTouchController tc; + + touchgfx::HAL& hal = touchgfx::touchgfx_generic_init(dma, lcd, tc, SIM_WIDTH, SIM_HEIGHT, 0, 0); + + setupSimulator(argc, argv, hal); + + // Set custom frame rate + static_cast(hal).setVsyncInterval(1000.0f / SDK::GUI::Config::kFrameRate); + + //// Ensure there is a console window to print to using printf() or + //// std::cout, and read from using e.g. fgets or std::cin. + //// Alternatively, instead of using printf(), always use + //// touchgfx_printf() which will ensure there is a console to write + //// to. + touchgfx_enable_stdio(); + + // Start service thread + std::thread serviceThread(serviceThreadFunction, &service); + std::thread appThread(kernelThreadFunction, &appCore); + std::thread guiCommThread(guiCommThreadFunction, &appCore); + std::thread appMessageThread(appMessageThreadFunction, &kernelMessage); + + + touchgfx::HAL::getInstance()->taskEntry(); // Main GUI loop + + appCore.stopRequest(); + + // Stop threads + serviceThread.join(); + appThread.join(); + guiCommThread.join(); + appMessageThread.join(); + + return EXIT_SUCCESS; +} + +#ifdef __linux__ +int main(int argc, char** argv) +{ +#else +#include +#ifdef _UNICODE +#error Cannot run in unicode mode +#endif +int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) +{ + int argc; + char** argv = touchgfx::HALSDL2::getArgv(&argc); +#endif + + // Create kernel objects and service control + SDK::App::MessageCore appMessageCore; + + SDK::Simulator::Mock::SystemService serviceSystem; + SDK::Simulator::Kernel serviceKernel("service"); + serviceKernel.setIAppComm(appMessageCore.getAppComm().getServiceComm()); + serviceKernel.setISystem(&serviceSystem); + + SDK::Simulator::Mock::SystemGUI guiSystem; + SDK::Simulator::Kernel guiKernel("gui"); + guiKernel.setIAppComm(appMessageCore.getAppComm().getGuiComm()); + guiKernel.setISystem(&guiSystem); + + // Save GUI kernel for simulator + SDK::Simulator::KernelHolder::Create(guiKernel); + + return runTouchGFX(appMessageCore.getAppComm(), + serviceKernel, + guiKernel, + argc, + argv); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.sln b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.sln new file mode 100644 index 00000000..04ca9d5d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34408.163 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "Application.vcxproj", "{3C47683C-0505-487F-A1FD-75B8490BF72C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3C47683C-0505-487F-A1FD-75B8490BF72C}.Debug|x86.ActiveCfg = Debug|Win32 + {3C47683C-0505-487F-A1FD-75B8490BF72C}.Debug|x86.Build.0 = Debug|Win32 + {3C47683C-0505-487F-A1FD-75B8490BF72C}.Release|x86.ActiveCfg = Release|Win32 + {3C47683C-0505-487F-A1FD-75B8490BF72C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj new file mode 100644 index 00000000..0ceb74c0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj @@ -0,0 +1,559 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {3C47683C-0505-487F-A1FD-75B8490BF72C} + Win32Proj + Application + 10.0 + + + + Application + true + Unicode + v143 + + + Application + false + true + Unicode + v143 + + + + + + + + + + + + + + + + + + + true + $(ApplicationRoot)\build\$(Configuration)\bin\ + $(ApplicationRoot)\build\$(Configuration)\obj\ + + + false + $(ApplicationRoot)\build\$(Configuration)\bin\ + $(ApplicationRoot)\build\$(Configuration)\obj\ + + + + + + Level3 + Disabled + WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;APP_ID="ABCDEF1234567890";DEV_ID="UNA Simulator";BUILD_VERSION="1.2.3";NOMINMAX;%(PreprocessorDefinitions) + false + 4355 + true + false + stdcpp17 + %(AdditionalIncludeDirectories);../../gui/include;../../../../Libs/Header;$(SdkPath)/ThirdParty/FitSDKRelease_21.171.00/c;$(SdkPath)/ThirdParty/FitSDKRelease_21.171.00/cpp;$(SdkPath)/ThirdParty/coreJSON/source/include + + + Windows + true + true + + %(AdditionalOptions) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + stdcpp17 + $(ApplicationRoot)\simulator;(ApplicationRoot)\gui\include;$(ApplicationRoot)\generated\images\include;$(ApplicationRoot)\generated\bitmaps\include;$(ApplicationRoot)\generated\fonts\include;$(ApplicationRoot)\generated\texts\include;$(ApplicationRoot)\generated\videos\include;$(ApplicationRoot)\generated\gui_generated\include;$(ApplicationRoot)\generated\simulator\include;$(TouchGFXReleasePath)\framework\common\include;$(TouchGFXReleasePath)\framework\mvp\include;$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl2\vendor;$(TouchGFXReleasePath)\3rdparty\libjpeg\include;$(TouchGFXReleasePath)\framework\include;../../gui/include + + + Windows + true + true + true + + + + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters new file mode 100644 index 00000000..0886c9b9 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters @@ -0,0 +1,1993 @@ + + + + + {4D1BFFCC-9CEB-4ABF-A951-582870FE71FD} + h;hpp;hxx;hm;inl;inc;xsd + + + {29C60541-803D-4F43-8683-028D9DA5E0CB} + + + {AF2BF67C-89EC-4545-B0D2-5BD6803628D4} + + + {A8F51E02-A400-49F1-AC86-371872A7E5E6} + + + {493CF637-721C-4516-8638-3EE4790FB455} + + + {7187028B-6482-4EB3-8556-EECD38E0636B} + + + {D2E6B448-6B79-434F-A8EB-C8F8415957E9} + + + {07737357-9365-4A8F-B2F6-908B5FC4E808} + + + {085B248B-6BE1-4BF8-9913-35526BAEE4C7} + + + {E08C6B18-2F0E-4861-87D5-80FB0411017E} + + + {29D72404-E5CB-472C-B00F-3784DF3CCD1E} + + + {09561B72-532B-45EB-8E32-CAA31C349F83} + + + {A89B6308-CBC1-48EC-BF14-B3C6106FACCE} + + + {DB82A963-BE52-4494-BD5E-358C5E79C081} + + + {509E01BB-FBF4-4198-B748-936C1B67839A} + + + {3F023E56-225A-4D4C-9D20-74447A23BAD9} + + + {0E9A8FD3-B71B-46B9-B1F6-3A18292FFAC4} + + + {9B32A742-EBA9-4EBA-832E-0421D7E68BC5} + + + {8C31441B-2191-4B32-869D-7B253AECB28F} + + + {464CC9FB-AFF6-4FFA-B4D8-BCAC4B2B8898} + + + {B7237C13-DD69-4F78-8446-9A554431E3F8} + + + {5E0E884F-0059-4306-94BA-3197219750E3} + + + {DBFF640A-BD63-40BC-A0A5-2468BC461037} + + + {EA3962C0-553C-4CFD-A89B-A116A9493818} + + + {29C60541-803D-4F44-8783-028D9DA5E0CC} + + + {29C60541-803D-4F43-8683-028D9DA5E0CC} + + + {92BBFF14-FBDB-4755-BA47-A830D863D92B} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;ttf;otf;bdf;png;wav;xml;props;mfcribbon-ms + + + {AF899B0F-78BE-47F9-A912-E92CB9156E40} + + + {29E8A9F8-6504-4625-AB47-671A3F665E51} + + + {382278FD-2B19-4E89-AE4F-24AF77E7A270} + + + {C24EAEDB-9A3F-43DC-87FB-C7AC2729A078} + + + {2F3FC0AA-97C4-4366-9939-94A0FF4E028C} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {C07B02A9-A55E-47AA-AD61-59A6AAD754E6} + + + {33EDC2DB-AF72-480C-92E5-2A2833BCAB6F} + + + {1D8EFD90-430A-4539-9080-16A38861D20A} + + + {E8DECBF2-0C8E-4397-8603-3101D6F922D6} + + + {40F0D55D-79D9-488A-AF83-ADC96179EADF} + + + {3FB50DD5-31DA-4042-B7FD-2151C58CDA80} + + + {B48CB42B-0F9E-4815-BFE1-1ACC1150ED8A} + + + {C07B03A9-A55E-47AA-AD61-59A6AAD754E6} + + + {C07B02B9-A55E-47AB-AD61-59A6AAD754E6} + + + {C07B02B9-A55E-47AA-AD61-59A6AAD754E6} + + + 56CB138C-CFD0-A0EE-833B-AD28D1B4512A + + + 16773D8A-23C1-3956-9FC2-DAE101D52FA0 + + + F32817E6-3DEB-BFE8-110D-F6E3FD38AF1E + + + CD092808-4F60-2994-D149-689EE56DC046 + + + D3D41952-65CC-E40F-D8E4-A7BB3169CAB4 + + + 23F3D11A-F277-6CDA-17F7-5DB7F8718F9A + + + E6846738-A694-71B7-1486-D8FFC6B94219 + + + CEC9C1E3-7E5B-0095-3E6C-6AA9C90A7957 + + + A74FD522-93D5-DA25-B511-3D65F8772975 + + + 88E97328-415C-5E94-F511-7F5956C4A5AD + + + 6B6E9F0D-0971-1F1C-8DA1-4483493F62C3 + + + C9A0BBB1-4BEB-8CD2-6982-26654D3C09E2 + + + 46B7D464-311A-591F-AD2E-AD5C77A0EA63 + + + 94E01F87-DB76-902C-7138-CF36029A8FB7 + + + 6B1F0BC9-4996-BE14-87BB-7CC4F730CE64 + + + E51925A4-D8A1-C9E9-3AFA-5852FB086A96 + + + 54B68AB8-1135-8A46-B907-39D9F286D372 + + + 7EF39A15-A2D6-51F9-00CD-5F58F855E57B + + + 045B703E-2769-8C5D-C741-3BB18B1CF4A2 + + + D7D6EC85-EC3E-AC42-4285-C7B18043B0D1 + + + 1CD958FF-460B-F0CF-4E8D-1ACD034A0985 + + + DA4AF7E8-045C-E12E-AF49-D1157352A111 + + + 49C7ADC4-5B49-9AEA-51F3-923D9850915F + + + 5C88625D-D0BE-675F-76F8-F5E1EFC278E7 + + + 7D707D9D-016A-FE9D-BF26-F98BFEF1B254 + + + 04110E91-5706-9CA8-A17A-D44A1EA60B2F + + + 1443DA36-AD14-E305-12B1-E8F5AE08B1EA + + + 67FCC8FC-684F-55AE-7394-74C7AEC2F48A + + + 4C3C1BAD-8564-7A8B-70B2-19B9C2A3620D + + + 9729FA07-C555-C8DB-E4C3-2E1F252F7F2F + + + 63C6BF88-A222-F05F-B564-C9DD31EAABE5 + + + A44875C7-94D1-698D-1E93-565DC7D9D795 + + + 72237B83-A74E-D8E2-63EA-4EDB1FF04F80 + + + 255DAEDF-62C5-0FD9-F1DF-BC7EB6709A8B + + + B6AC79BC-115B-AC38-59B5-4FF14F75BDF3 + + + 2E8D7AA3-2A6A-37B7-1728-3F0020B2144F + + + 491236B9-E2F7-DDD8-3D34-905890DB7050 + + + DC31D8A2-2EDD-F2CB-5C04-D88AA289F48E + + + C57D9EF1-C75C-2A33-F1E6-E7652A303D62 + + + C2997098-7E94-A266-E8DF-D8B1E2799DF7 + + + 2D0A9746-AAC7-33C7-35FA-197B32FB46A9 + + + DE048CCF-CC2A-ECB4-86A1-3D44245B2189 + + + 92F8F0D7-3074-439B-DAD7-A5D1F4006260 + + + 38885DCB-99A5-F48D-01F4-A1BF56AA2228 + + + E2408EAB-CB97-D605-25FA-B735B986F544 + + + 208C8D5A-AD32-F901-E62F-5B267259E065 + + + 5D3C3F90-B221-27A7-2FAA-D606E697C4BA + + + 9C82A6EE-A2BC-5055-EC7D-EE11F90D22D0 + + + 8515888D-D9F1-1260-90A5-B287F98F7DCC + + + BA858B02-97E0-48E0-CB9B-80E6560AECF5 + + + 7F976D8F-F210-BBB6-D820-CD9837BEDE9A + + + 3DD4BBDC-556C-B93D-B8A4-962324E79328 + + + D57051EE-BE11-BA3D-5877-12A17F376257 + + + A538AE7E-B75F-0A5A-F047-F1DDC192DFFD + + + 6AFCECD8-F005-A2D5-61C5-E8A1A9AD0937 + + + 301B3006-8E1A-1DA8-E16F-60C13834A5F2 + + + 7E3CD9CC-E491-C872-B219-3EB15B80A218 + + + A45E60F6-D83E-E468-2F76-0D15F3A678BB + + + D72D0EAB-548E-E4FC-8427-AD0208EC185F + + + 72332534-20A6-3682-4680-5530F7ECF750 + + + FE1A2664-B032-ED72-39A7-DA38496FFCBB + + + 6D7395F6-5C2A-EC5C-D513-67318558748F + + + {d0cdfb97-73ff-438e-a07d-6af41ee69f07} + + + {ee319ebd-f4cf-4da8-9a28-0bdc60fe5396} + + + {885ad249-d458-4ba4-8197-a5acd251a8f1} + + + {8b2072b3-80a5-4927-833e-58bfd31407d5} + + + {f3a37b1c-c854-4ba3-b96e-328eb0bf19ab} + + + {b7bff1f9-96da-4789-bffb-93bf6598efd9} + + + {936f7fe8-8503-4ae1-bd54-61cd2f354962} + + + {31af974c-bc20-4bc4-b2c2-e17bd81ea7bb} + + + {d85bbeea-167f-4c7d-bdfd-2b1086994a6f} + + + {c851549a-bb1f-4d70-bc63-788af31a1731} + + + {2527059e-260c-41b8-884a-557422fa4b0f} + + + {01c51c06-4319-4f55-80eb-88ab07c34645} + + + {25900e2b-74a8-484e-89b7-c1194d6d58c1} + + + {d7152964-b9ee-428a-adda-c9bc99434d07} + + + {47483096-3e2f-4950-971a-2bb65a81dd0a} + + + {94578671-151e-4ee4-aba0-e4badca371ab} + + + {0f56cfeb-ec18-49a3-8760-93875ed47540} + + + {4a882200-7775-4f1a-aa25-f5f480bb91fc} + + + {12f3528f-87a4-4baf-a203-0df3431ded53} + + + {f2007c93-643c-48bc-8320-f9989601c8bf} + + + {fd72bbbd-1471-4bf9-9c29-3b072cf3c64f} + + + {93cc23c7-b7fd-49fc-9e11-1be4eac92649} + + + {9cd0adae-3b13-4746-856c-b082a0453afd} + + + {c4b438f5-0c7b-417b-8ecb-e9cdb39f2fbd} + + + {a243601f-2537-43ea-87f5-82ff31d0e05e} + + + {d7a58b9f-46e0-4d0c-ac26-1078f88d55bc} + + + {681f519e-2619-415d-b28b-2f31e2279e24} + + + {d3f5dab6-09b9-4f3a-a091-e23f8bbbf5ea} + + + {29a8ce23-5024-45c8-bbe6-04a2d71f6c57} + + + {aef3fa24-fad3-4b33-a450-aa593d4aa8da} + + + {deab211e-4017-4b58-a20d-097abc115779} + + + {8cdf5567-1961-475a-a78c-f7765128285c} + + + {9f9e93f4-b708-49c3-abb9-6fe1d40588dc} + + + {50a5fe9a-94d8-447f-97e7-9c8fab22b452} + + + {e439ad10-52f0-481e-90df-09921f7a272c} + + + {c64a867d-c7a3-4bdd-99c4-abdaaeed283a} + + + {bc5647a6-f65e-49a6-a3b3-16c2ef0420b8} + + + {880c652f-6b0e-40ec-9961-cc008d32d1e3} + + + 684A498E-6E05-BEEF-C5BC-BF9F710F4EED + + + C2CF844D-9BCD-29E8-AE28-CB3A0F49FCA7 + + + C55ABC64-9380-939D-F1D4-5183CB46421D + + + F53C5E99-978D-7BCE-47B4-2FA97C34903C + + + {42249b05-77bc-41d0-9f47-fa02b337a975} + + + {ea1796c2-2c2b-4213-bfcb-bb8abe331374} + + + {e026a777-ef2e-4d9d-ab78-42d024e31430} + + + {972e4538-d73d-4242-9c01-7238da07675a} + + + {3711fad0-35c4-4c3a-b6e8-48ec36558803} + + + {0bdabd9d-8e0a-49b2-97c8-e5dfc6b7120b} + + + A1741364-C8BC-25BE-9356-77915ADDC6C2 + + + CA96765C-1F2B-B9A8-17EC-6879FCABA54B + + + 59C8CF86-6D4C-66E5-7F3F-0E111A7C4D00 + + + E10D42FA-02A2-0305-D49C-6080FFEFF8C8 + + + {cb0b4b10-e351-4495-a6bf-12065ff03d5b} + + + {7430e326-5c8e-4861-a043-17db789dc42b} + + + {7fa16e35-32dd-44c1-b517-8c744e0eb5a6} + + + {b2edc6fe-a693-4d20-9bb3-0ac21b703264} + + + {d226e3e7-24da-4752-9b18-54985fd390c5} + + + {e5c63f6e-4e4c-4d28-aa43-bc6d11de66c1} + + + {7df059d7-271d-4b32-8096-de7b34e3376c} + + + + + Source Files\TouchGFX\platform\driver\touch + + + Source Files\TouchGFX\platform\hal\simulator\sdl2 + + + Source Files\TouchGFX\platform\hal\simulator\sdl2 + + + Source Files\TouchGFX\platform\hal\simulator\sdl2 + + + Source Files\simulator + + + Source Files\generated\simulator + + + Source Files\generated\gui_generated\common + + + Source Files\gui\model + + + Source Files\generated\simulator\video + + + Source Files\gui\common + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\menualerts_screen + + + Source Files\gui\menualerts_screen + + + Source Files\generated\gui_generated\menualerts_screen + + + Source Files\gui\menusettings_screen + + + Source Files\gui\menusettings_screen + + + Source Files\generated\gui_generated\menusettings_screen + + + Source Files\gui\menutime_screen + + + Source Files\gui\menutimesaved_screen + + + Source Files\gui\menutimesaved_screen + + + Source Files\generated\gui_generated\menutimesaved_screen + + + Source Files\gui\menutime_screen + + + Source Files\generated\gui_generated\menutime_screen + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\trackaction_screen + + + Source Files\gui\trackaction_screen + + + Source Files\generated\gui_generated\trackaction_screen + + + Source Files\gui\trackdiscardconfirmation_screen + + + Source Files\gui\trackdiscardconfirmation_screen + + + Source Files\generated\gui_generated\trackdiscardconfirmation_screen + + + Source Files\gui\trackdiscarded_screen + + + Source Files\gui\trackdiscarded_screen + + + Source Files\generated\gui_generated\trackdiscarded_screen + + + Source Files\gui\tracklap_screen + + + Source Files\gui\tracklap_screen + + + Source Files\generated\gui_generated\tracklap_screen + + + Source Files\gui\track_screen + + + Source Files\gui\tracksaved_screen + + + Source Files\gui\tracksaved_screen + + + Source Files\generated\gui_generated\tracksaved_screen + + + Source Files\gui\tracksummary_screen + + + Source Files\gui\tracksummary_screen + + + Source Files\generated\gui_generated\tracksummary_screen + + + Source Files\gui\track_screen + + + Source Files\generated\gui_generated\track_screen + + + SDK\Libs\Source\Simulator\Kernel\Mock + + + SDK\Libs\Source\Simulator\Kernel\Mock + + + SDK\Libs\Source\Simulator\Kernel\Mock + + + SDK\Libs\Source\Simulator\Kernel\Mock + + + SDK\Libs\Source\UnaLogger + + + SDK\Libs\Source\Wrappers + + + Libs\Source + + + Libs\Source + + + Libs\Source + + + Libs\Source + + + SDK\ThirdParty\coreJSON + + + SDK\ThirdParty\coreJSON + + + SDK\ThirdParty\FIT + + + SDK\ThirdParty\FIT + + + SDK\ThirdParty\FIT + + + SDK\ThirdParty\FIT + + + SDK\Libs\Source\JSON + + + SDK\Libs\Source\JSON + + + SDK\Libs\Source\TrackMap + + + SDK\Libs\Source\Kernel + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\common + + + Header Files\generated\gui_generated\common + + + Header Files\gui\common + + + Header Files\generated\gui_generated\common + + + Header Files\gui\menualerts_screen + + + Header Files\gui\menualerts_screen + + + Header Files\generated\gui_generated\menualerts_screen + + + Header Files\gui\menusettings_screen + + + Header Files\gui\menusettings_screen + + + Header Files\generated\gui_generated\menusettings_screen + + + Header Files\gui\menutime_screen + + + Header Files\gui\menutimesaved_screen + + + Header Files\gui\menutimesaved_screen + + + Header Files\generated\gui_generated\menutimesaved_screen + + + Header Files\gui\menutime_screen + + + Header Files\generated\gui_generated\menutime_screen + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\model + + + Header Files\gui\model + + + Header Files\generated\gui_generated\common + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\trackaction_screen + + + Header Files\gui\trackaction_screen + + + Header Files\generated\gui_generated\trackaction_screen + + + Header Files\gui\trackdiscardconfirmation_screen + + + Header Files\gui\trackdiscardconfirmation_screen + + + Header Files\generated\gui_generated\trackdiscardconfirmation_screen + + + Header Files\gui\trackdiscarded_screen + + + Header Files\gui\trackdiscarded_screen + + + Header Files\generated\gui_generated\trackdiscarded_screen + + + Header Files\gui\tracklap_screen + + + Header Files\gui\tracklap_screen + + + Header Files\generated\gui_generated\tracklap_screen + + + Header Files\gui\track_screen + + + Header Files\gui\tracksaved_screen + + + Header Files\gui\tracksaved_screen + + + Header Files\generated\gui_generated\tracksaved_screen + + + Header Files\gui\tracksummary_screen + + + Header Files\gui\tracksummary_screen + + + Header Files\generated\gui_generated\tracksummary_screen + + + Header Files\gui\track_screen + + + Header Files\generated\gui_generated\track_screen + + + Source Files\gui\trackstartconfirmation_screen + + + Source Files\gui\trackstartconfirmation_screen + + + Source Files\generated\gui_generated\trackstartconfirmation_screen + + + Header Files\gui\trackstartconfirmation_screen + + + Header Files\gui\trackstartconfirmation_screen + + + Header Files\generated\gui_generated\trackstartconfirmation_screen + + + SDK\Libs\Source\Simulator\App + + + SDK\Libs\Source\Simulator\App + + + SDK\Libs\Source\Simulator\App + + + SDK\Libs\Source\Simulator\App + + + SDK\Libs\Source\Simulator\App + + + SDK\Libs\Source\Simulator\OS + + + SDK\Libs\Source\Simulator\OS + + + SDK\Libs\Source\Simulator\OS + + + SDK\Libs\Source\Simulator\Kernel\Mock + + + SDK\Libs\Source\Simulator\Kernel + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\Simulator\Components + + + SDK\Libs\Source\SensorLayer + + + SDK\Libs\Source\Simulator\Components\Sensors\Imu + + + SDK\Libs\Source\Simulator\Components\Sensors\Imu + + + SDK\Libs\Source\Simulator\Components\Sensors\HeartRate + + + SDK\Libs\Source\Simulator\Components\Sensors\HeartRate + + + SDK\Libs\Source\Simulator\Components\Sensors\Gps + + + SDK\Libs\Source\Simulator\Components\Sensors\Gps + + + SDK\Libs\Source\Simulator\Components\Sensors\Gps + + + SDK\Libs\Source\Simulator\Components\Sensors\Gps + + + SDK\Libs\Source\Simulator\Components\Simulator + + + SDK\Libs\Source\Simulator\Components\Sensors + + + SDK\Libs\Source\Simulator\Components\Sensors + + + SDK\Libs\Source\FitHelper + + + Header Files\gui\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\main_screen + + + Source Files\gui\main_screen + + + Source Files\generated\gui_generated\main_screen + + + Header Files\gui\main_screen + + + Header Files\gui\main_screen + + + Header Files\generated\gui_generated\main_screen + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Header Files\gui\containers + + + SDK\Libs\Source\Timer + + + SDK\Libs\Source\FitHelper + + + SDK\Libs\Source\Port\TouchGFX + + + Header Files\gui\model + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Libs\Source + + + + + Resource Files\assets\texts + + + Resource Files\config\msvs + + + + + Header Files\TouchGFX\common + + + Header Files\TouchGFX\common + + + Header Files\TouchGFX\common + + + Header Files\TouchGFX\common + + + Header Files\TouchGFX\mvp + + + Header Files\TouchGFX\mvp + + + Header Files\TouchGFX\mvp + + + Header Files\TouchGFX\mvp + + + Header Files\TouchGFX\platform\driver\lcd + + + Header Files\TouchGFX\platform\driver\lcd + + + Header Files\TouchGFX\platform\driver\lcd + + + Header Files\TouchGFX\platform\driver\lcd + + + Header Files\TouchGFX\platform\driver\lcd + + + Header Files\TouchGFX\platform\driver\touch + + + Header Files\TouchGFX\platform\hal\simulator\sdl2 + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx\canvas_widget_renderer + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\containers\clock + + + Header Files\TouchGFX\touchgfx\containers\clock + + + Header Files\TouchGFX\touchgfx\containers\clock + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers\progress_indicators + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx\containers + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\events + + + Header Files\TouchGFX\touchgfx\events + + + Header Files\TouchGFX\touchgfx\events + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx\hal + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\lcd + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx\mixins + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\transforms + + + Header Files\TouchGFX\touchgfx\transforms + + + Header Files\TouchGFX\touchgfx\transitions + + + Header Files\TouchGFX\touchgfx\transitions + + + Header Files\TouchGFX\touchgfx\transitions + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets\canvas + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\TouchGFX\touchgfx\widgets + + + Header Files\generated\simulator + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\common + + + Header Files\generated\gui_generated\common + + + Header Files\gui\common + + + Header Files\generated\gui_generated\common + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\model + + + Header Files\gui\model + + + Header Files\generated\gui_generated\common + + + Header Files\generated\simulator\include\simulator\video + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\menualerts_screen + + + Header Files\gui\menualerts_screen + + + Header Files\generated\gui_generated\menualerts_screen + + + Header Files\gui\menusettings_screen + + + Header Files\gui\menusettings_screen + + + Header Files\generated\gui_generated\menusettings_screen + + + Header Files\gui\menutime_screen + + + Header Files\gui\menutimesaved_screen + + + Header Files\gui\menutimesaved_screen + + + Header Files\generated\gui_generated\menutimesaved_screen + + + Header Files\gui\menutime_screen + + + Header Files\generated\gui_generated\menutime_screen + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\trackaction_screen + + + Header Files\gui\trackaction_screen + + + Header Files\generated\gui_generated\trackaction_screen + + + Header Files\gui\trackdiscardconfirmation_screen + + + Header Files\gui\trackdiscardconfirmation_screen + + + Header Files\generated\gui_generated\trackdiscardconfirmation_screen + + + Header Files\gui\trackdiscarded_screen + + + Header Files\gui\trackdiscarded_screen + + + Header Files\generated\gui_generated\trackdiscarded_screen + + + Header Files\gui\tracklap_screen + + + Header Files\gui\tracklap_screen + + + Header Files\generated\gui_generated\tracklap_screen + + + Header Files\gui\track_screen + + + Header Files\gui\tracksaved_screen + + + Header Files\gui\tracksaved_screen + + + Header Files\generated\gui_generated\tracksaved_screen + + + Header Files\gui\tracksummary_screen + + + Header Files\gui\tracksummary_screen + + + Header Files\generated\gui_generated\tracksummary_screen + + + Header Files\gui\track_screen + + + Header Files\generated\gui_generated\track_screen + + + SDK\Libs\Header\Platform\OS + + + SDK\Libs\Header\Simulator\Kernel + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Kernel\Mock + + + SDK\Libs\Header\Simulator\Sensors + + + SDK\Libs\Header\Simulator\Sensors + + + SDK\Libs\Header\SynchManager + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Timer + + + SDK\Libs\Header\UnaLogger + + + SDK\Libs\Header\Wrappers + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + SDK\Libs\Header\Interfaces + + + Libs\Header + + + Libs\Header + + + Libs\Header + + + Libs\Header + + + Libs\Header + + + Libs\Header + + + Libs\Header + + + SDK\Libs\Header\TrackMap + + + SDK\Libs\Header\TrackMap + + + SDK\Libs\Header\JSON + + + SDK\Libs\Header\JSON + + + SDK\Libs\Header\Kernel + + + SDK\Libs\Header\Kernel + + + SDK\Libs\Header\Kernel + + + SDK\Libs\Header\Kernel + + + Source Files\simulator + + + SDK\Libs\Header\FitHelper + + + SDK\Libs\Header\Messages + + + SDK\Libs\Header\Messages + + + SDK\Libs\Header\Messages + + + SDK\Libs\Header\Messages + + + SDK\Libs\Header\Messages + + + SDK\Libs\Header\Utils + + + SDK\Libs\Header\GUI + + + SDK\Libs\Header\GUI + + + SDK\Libs\Header\GUI + + + Header Files\gui\model + + + Libs\Header + + + SDK\Libs\Header\Metrics + + + SDK\Libs\Header\Metrics + + + SDK\Libs\Header\Metrics + + + SDK\Libs\Header\Metrics + + + SDK\Libs\Header\Filters + + + Libs\Header + + + + + Resource Files + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/SDK.props b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/SDK.props new file mode 100644 index 00000000..8c1d3f69 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/SDK.props @@ -0,0 +1,18 @@ + + + + + $(UNA_SDK) + $(SdkPath)\Libs + + + <_PropertySheetDisplayName>SDK + + + + %(AdditionalIncludeDirectories);$(LibsPath)\Header + + + + + \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/target.config b/Apps/Workout/Software/Apps/TouchGFX-GUI/target.config new file mode 100644 index 00000000..04d46a41 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/target.config @@ -0,0 +1,12 @@ +{ + "target_configuration": { + "touchgfx_path": "../../../../../../ThirdParty/touchgfx", + "family": "STM32U5", + "sub_family": "STM32U575/585", + "toolchain": "STM32CubeIDE", + "platform": "m33", + "optional_components_root": "touchgfx_components", + "optional_components": [], + "additional_features": [] + } +} \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/touchgfx.cmake b/Apps/Workout/Software/Apps/TouchGFX-GUI/touchgfx.cmake new file mode 100644 index 00000000..b3a85cbd --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/touchgfx.cmake @@ -0,0 +1,21 @@ +file(GLOB_RECURSE TOUCHGFX_SOURCES + ${CMAKE_CURRENT_LIST_DIR}/gui/src/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/generated/fonts/src/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/generated/gui_generated/src/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/generated/images/src/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/generated/texts/src/*.cpp +) + +set(TOUCHGFX_INCLUDE_DIRS + $ENV{UNA_SDK}/ThirdParty/touchgfx/framework/include + ${CMAKE_CURRENT_LIST_DIR}/generated/fonts/include + ${CMAKE_CURRENT_LIST_DIR}/generated/gui_generated/include + ${CMAKE_CURRENT_LIST_DIR}/generated/images/include + ${CMAKE_CURRENT_LIST_DIR}/generated/texts/include + ${CMAKE_CURRENT_LIST_DIR}/generated/videos/include + ${CMAKE_CURRENT_LIST_DIR}/gui/include +) + +set(TOUCHGFX_LIBS + $ENV{UNA_SDK}/ThirdParty/touchgfx/lib/core/cortex_m33/gcc/libtouchgfx-float-abi-hard.a +) \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile b/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile new file mode 100644 index 00000000..7bd5fad0 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile @@ -0,0 +1,276 @@ +# Get identification of this system +ifeq ($(OS),Windows_NT) +UNAME := MINGW32_NT-6.2 +else +UNAME := $(shell uname -s) +endif + +board_name := $(UNAME) + +.PHONY: all clean assets + +# Directories containing application-specific source and header files. +# Additional components can be added to this list. make will look for +# source files recursively in comp_name/src and setup an include directive +# for comp_name/include. +components := gui simulator generated/gui_generated generated/simulator + +# Location of folder containing bmp/png files. +asset_images_input := assets/images + +# Location of folder to search for ttf font files +asset_fonts_input := assets/fonts + +# Location of folder where the texts.xml is placed +asset_texts_input := assets/texts + +# Location of folder where video files are places +asset_videos_input := assets/videos + +build_root_path := build +object_output_path := $(build_root_path)/$(board_name) +binary_output_path := $(build_root_path)/bin + +# Location of output folders where autogenerated code from assets is placed +asset_root_path := generated +asset_images_output := $(asset_root_path)/images +asset_fonts_output := $(asset_root_path)/fonts +asset_texts_output := $(asset_root_path)/texts +asset_videos_output := $(asset_root_path)/videos + +#include application specific configuration +include config/gcc/app.mk + +### END OF USER SECTION. THE FOLLOWING SHOULD NOT BE MODIFIED ### + +ifeq ($(UNAME), Linux) +library_path := $(touchgfx_path)/3rdparty/libjpeg/lib/linux $(touchgfx_path)/lib/linux $(ADDITIONAL_LIBRARY_PATHS) +libraries := touchgfx SDL2 SDL2_image jpeg rt m pthread dl $(ADDITIONAL_LIBRARIES) +libstart := -Wl,--start-group +libend := -Wl,--end-group +libextra := +library_includes += $(touchgfx_path)/3rdparty/libjpeg/include +linker_options_local := -Xlinker -rpath -Xlinker $(touchgfx_path)/3rdparty/libjpeg/lib/linux +resource_file := +imageconvert_executable := $(touchgfx_path)/framework/tools/imageconvert/build/linux/imageconvert.out +fontconvert_executable := $(touchgfx_path)/framework/tools/fontconvert/build/linux/fontconvert.out +simulator_executable := simulator.out +linker_options += -static-libgcc -Xlinker --no-as-needed +else +sdl_library_path := $(touchgfx_path)/lib/sdl2/win32 +jpeg_library_path := $(touchgfx_path)/3rdparty/libjpeg/lib/win32 +library_path := $(sdl_library_path) $(jpeg_library_path) $(touchgfx_path)/lib/win/mingw32 $(ADDITIONAL_LIBRARY_PATHS) +libraries := touchgfx SDL2 SDL2_image jpeg-8 m pthread mingw32 $(ADDITIONAL_LIBRARIES) +libstart := -Wl,--start-group +libend := -Wl,--end-group +libextra := -Wl,--subsystem,windows +library_includes += $(touchgfx_path)/framework/include/platform/hal/simulator/sdl2/vendor $(touchgfx_path)/3rdparty/libjpeg/include +resource_file := generated/simulator/touchgfx.res +imageconvert_executable := $(touchgfx_path)/framework/tools/imageconvert/build/win/imageconvert.out +fontconvert_executable := $(touchgfx_path)/framework/tools/fontconvert/build/win/fontconvert.out +simulator_executable := simulator.exe +$(resource_file): $(resource_file:%.res=%.rc) $(resource_file:%.res=%.ico) + @echo Creating Windows resource file with program icon + @windres $(resource_file:%.res=%.rc) -O coff -o $@ +linker_options += -static-libgcc -static-libstdc++ +endif + +c_compiler := g++ +c_compiler_options += -DSIMULATOR='' -g +cpp_compiler := g++ +cpp_compiler_options += -g -DSIMULATOR='' -DENABLE_LOG +linker := g++ + +WARN = error all extra write-strings init-self cast-qual \ + pointer-arith strict-aliasing format=2 uninitialized \ + missing-declarations no-long-long no-unused-parameter \ + no-variadic-macros no-format-extra-args \ + no-conversion no-overloaded-virtual +CXXWARN = non-virtual-dtor ctor-dtor-privacy + +c_compiler_options_local += -pedantic $(addprefix -W,$(WARN)) +cpp_compiler_options_local += -pedantic $(addprefix -W,$(WARN) $(CXXWARN)) + +#include everything + specific vendor folders +framework_includes := $(touchgfx_path)/framework/include + +#only take in the source we want to build for this sim +framework_files := $(touchgfx_path)/framework/source/platform/driver/touch/SDL2TouchController.cpp +framework_source := $(touchgfx_path)/framework/source/platform/hal/simulator/sdl2 + +#this needs to change when assset include folder changes. +all_components := $(components) \ + $(asset_fonts_output) \ + $(asset_images_output) \ + $(asset_texts_output) \ + $(asset_videos_output) + +#keep framework include and source out of this +include_paths := $(library_includes) $(foreach comp, $(all_components), $(comp)/include) $(framework_includes) $(ADDITIONAL_INCLUDE_PATHS) +source_paths = $(foreach comp, $(all_components), $(comp)/src) $(framework_source) simulator + +# Finds files that matches the specified pattern. The directory list +# is searched recursively. It is safe to invoke this function with an +# empty list of directories. +# +# Param $(1): List of directories to search +# Param $(2): The file pattern to search for +define find + $(foreach dir,$(1),$(foreach d,$(wildcard $(dir)/*),\ + $(call find,$(d),$(2))) $(wildcard $(dir)/$(strip $(2)))) +endef +unexport find + +fontconvert_ttf_lower_files := $(call find, $(asset_fonts_input), *.ttf) +fontconvert_ttf_upper_files := $(call find, $(asset_fonts_input), *.TTF) +fontconvert_otf_lower_files := $(call find, $(asset_fonts_input), *.otf) +fontconvert_otf_upper_files := $(call find, $(asset_fonts_input), *.OTF) +fontconvert_bdf_lower_files := $(call find, $(asset_fonts_input), *.bdf) +fontconvert_bdf_upper_files := $(call find, $(asset_fonts_input), *.BDF) +fontconvert_font_files := $(fontconvert_ttf_lower_files) \ + $(fontconvert_ttf_upper_files) \ + $(fontconvert_otf_lower_files) \ + $(fontconvert_otf_upper_files) \ + $(fontconvert_bdf_lower_files) \ + $(fontconvert_bdf_upper_files) + +source_files := $(call find, $(source_paths),*.cpp) $(framework_files) $(ADDITIONAL_SOURCES) +c_source_files := $(call find, $(source_paths),*.c) + +object_files := $(source_files:$(touchgfx_path)/%.cpp=$(object_output_path)/touchgfx/%.o) +$(c_source_files:$(touchgfx_path)/%.c=$(object_output_path)/touchgfx/%.o) +object_files := $(object_files:%.cpp=$(object_output_path)/%.o) +object_files := $(object_files:%.c=$(object_output_path)/%.o) +dependency_files := $(object_files:%.o=%.d) + +#-------------------UNA-------------------------------------------------------- +define delete_strip_dotdots +$(subst ../,,$(1)) +endef + +files := $(foreach f,$(ADDITIONAL_SOURCES_UNA),$(call delete_strip_dotdots,$f)) +cpp_sources := $(filter %.cpp,$(files)) +c_sources := $(filter %.c,$(files)) + +object_files += $(cpp_sources:%.cpp=$(object_output_path)/%.o) +object_files += $(c_sources:%.c=$(object_output_path)/%.o) +dependency_files += $(object_files:%.o=%.d) + +# Add path for source to VPATH +define get_leading_dotdots +$(foreach part,$(subst /, ,$(dir $(1))),$(if $(filter ..,$(part)),$(part)/,)) +endef + +define remove_space +$(subst $(2),,$(1)) +endef + +VPATH_dirs := + $(foreach f,$(ADDITIONAL_SOURCES_UNA),\ + $(eval VPATH_dirs += $(call remove_space,$(call get_leading_dotdots,$f), ))\ +) + +VPATH_dirs := $(sort $(VPATH_dirs)) +$(eval VPATH := $(VPATH):$(VPATH_dirs)) +override user_cflags += -Wno-error +override user_cflags += -DBUILD_VERSION=\"1.2.3\" -DAPP_ID=\"ABCDEF1234567890\" -DDEV_ID=\"UNA_Simulator\" +#------------------------------------------------------------------------------ + +textconvert_script_path := $(touchgfx_path)/framework/tools/textconvert +videoconvert_script_path := $(touchgfx_path)/framework/tools/videoconvert + +text_database := $(asset_texts_input)/texts.xml + +.PHONY: all clean assets generate_assets build_executable + +all: generate_assets + +generate_assets: assets + @$(MAKE) -f una/Makefile -r -s $(MFLAGS) build_executable + +build_executable: $(binary_output_path)/$(simulator_executable) post_build + +$(binary_output_path)/$(simulator_executable): $(object_files) $(resource_file) + @echo Linking $(@) + @mkdir -p $(@D) + @mkdir -p $(object_output_path) + @$(file >$(build_root_path)/objects.tmp) $(foreach F,$(object_files),$(file >>$(build_root_path)/objects.tmp,$F)) + @$(linker) \ + $(linker_options) $(linker_options_local) \ + $(patsubst %,-L%,$(library_path)) \ + @$(build_root_path)/objects.tmp -o $@ $(resource_file) \ + $(libstart) $(patsubst %,-l%,$(libraries)) $(libend) $(libextra) + @rm -f $(build_root_path)/objects.tmp + # Remove old images + @rm -f $(binary_output_path)/*.bin + @if ls $(asset_videos_output)/bin/*.bin >/dev/null 2>&1; then cp $(asset_videos_output)/bin/*.bin $(binary_output_path); fi +ifneq ($(UNAME), Linux) + @if [ ! -f $(binary_output_path)/SDL2.dll ]; then cp $(sdl_library_path)/SDL2.dll $(binary_output_path); fi + @if [ ! -f $(binary_output_path)/SDL2_image.dll ]; then cp $(sdl_library_path)/SDL2_image.dll $(binary_output_path); fi + @if [ ! -f $(binary_output_path)/libpng16-16.dll ]; then cp $(sdl_library_path)/libpng16-16.dll $(binary_output_path); fi + @if [ ! -f $(binary_output_path)/zlib1.dll ]; then cp $(sdl_library_path)/zlib1.dll $(binary_output_path); fi + @if [ ! -f $(binary_output_path)/libjpeg-8.dll ]; then cp $(jpeg_library_path)/libjpeg-8.dll $(binary_output_path); fi +endif + +.PHONY: post_build +post_build: + @mkdir -p $(binary_output_path) + @if [ -f simulator/landscape.png ]; then cp simulator/landscape.png $(binary_output_path); else rm -f $(binary_output_path)/landscape.png; fi + @if [ -f simulator/portrait.png ]; then cp simulator/portrait.png $(binary_output_path); else rm -f $(binary_output_path)/portrait.png; fi + +$(object_output_path)/touchgfx/%.o: $(touchgfx_path)/%.cpp config/gcc/app.mk + @echo Compiling $< + @mkdir -p $(@D) + @$(cpp_compiler) \ + -MMD -MP $(cpp_compiler_options) $(cpp_compiler_options_local) $(user_cflags) \ + $(patsubst %,-I%,$(include_paths)) \ + -c $< -o $@ + +$(object_output_path)/%.o: %.cpp config/gcc/app.mk + @echo Compiling $< + @mkdir -p $(@D) + @$(cpp_compiler) \ + -MMD -MP $(cpp_compiler_options) $(cpp_compiler_options_local) $(user_cflags) \ + $(patsubst %,-I%,$(include_paths)) \ + -c $< -o $@ + +$(object_output_path)/%.o: %.c config/gcc/app.mk + @echo Compiling $< + @mkdir -p $(@D) + @$(c_compiler) \ + -MMD -MP $(c_compiler_options) $(c_compiler_options_local) $(user_cflags) \ + $(patsubst %,-I%,$(include_paths)) \ + -c $< -o $@ + +ifeq ($(MAKECMDGOALS),build_executable) +$(firstword $(dependency_files)): config/gcc/app.mk + @rm -rf $(object_output_path) +-include $(dependency_files) +endif + +assets: images texts videos + +.PHONY: images +images: + @$(imageconvert_executable) -r $(asset_images_input) -w $(asset_images_output) + +.PHONY: texts +texts: + @ruby $(textconvert_script_path)/main.rb $(text_database) $(fontconvert_executable) $(asset_fonts_output) $(asset_texts_output) $(asset_fonts_input) . + +.PHONY: videos +videos: + @ruby $(videoconvert_script_path)/videoconvert.rb $(asset_videos_input) $(asset_videos_output) + +clean: + @echo Cleaning + @rm -rf $(build_root_path) + # Do not remove gui_generated + @rm -rf $(asset_images_output) + @rm -rf $(asset_fonts_output) + @rm -rf $(asset_texts_output) + @rm -rf $(asset_videos_output) + # Create directory to avoid error if it does not exist + @mkdir -p $(asset_root_path) + # Remove assets folder if it is empty (i.e. no gui_generated folder) + @rmdir --ignore-fail-on-non-empty $(asset_root_path) diff --git a/Apps/Workout/Software/Apps/Workout-CMake/.gitignore b/Apps/Workout/Software/Apps/Workout-CMake/.gitignore new file mode 100644 index 00000000..c795b054 --- /dev/null +++ b/Apps/Workout/Software/Apps/Workout-CMake/.gitignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt b/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt new file mode 100644 index 00000000..1288c739 --- /dev/null +++ b/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt @@ -0,0 +1,67 @@ +# Watch App CMakeLists.txt - Simplified version using SDK +cmake_minimum_required(VERSION 3.21) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build") + +# App configuration +set(APP_NAME "Workout") +set(APP_TYPE "Activity") +set(DEV_ID "UNA") +set(APP_ID "1430B92A76961A29") +set(RESOURCES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../Resources") +set(OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../Output") +set(LIBS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../Libs") +set(TOUCHGFX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../TouchGFX-GUI") + +# Includes all build steps and required tools +# Sets toolchain before project +include($ENV{UNA_SDK}/cmake/una-app.cmake) + +# Includes sets: SCRIPTS_PATH, +# UNA_SDK_SOURCES_COMMON, UNA_SDK_SOURCES_SERVICE, UNA_SDK_SOURCES_GUI, +# UNA_SDK_INCLUDE_DIRS_COMMON, UNA_SDK_INCLUDE_DIRS_SERVICE, UNA_SDK_INCLUDE_DIRS_GUI +include($ENV{UNA_SDK}/cmake/una-sdk.cmake) + +# Includes LIBS_SOURCES, LIBS_INCLUDE_DIRS +include(${LIBS_PATH}/libs.cmake) + +# Includes TOUCHGFX_SOURCES, TOUCHGFX_INCLUDE_DIRS +if(DEFINED TOUCHGFX_PATH) + include(${TOUCHGFX_PATH}/touchgfx.cmake) +endif() + +project(${APP_NAME}) + +# Set up version +una_app_setup_version(BUILD_VERSION ${CMAKE_CURRENT_SOURCE_DIR}) + +# Build service +set(SERVICE_SOURCES + ${LIBS_SOURCES} + ${UNA_SDK_SOURCES_COMMON} + ${UNA_SDK_SOURCES_SERVICE} +) +set(SERVICE_INCLUDE_DIRS + ${LIBS_INCLUDE_DIRS} + ${UNA_SDK_INCLUDE_DIRS_COMMON} + ${UNA_SDK_INCLUDE_DIRS_SERVICE} +) +una_app_build_service(${APP_NAME}Service.elf) + + +if(DEFINED TOUCHGFX_PATH) + set(GUI_SOURCES + ${TOUCHGFX_SOURCES} + ${UNA_SDK_SOURCES_COMMON} + ${UNA_SDK_SOURCES_GUI} + ) + set(GUI_INCLUDE_DIRS + ${LIBS_INCLUDE_DIRS} + ${UNA_SDK_INCLUDE_DIRS_COMMON} + ${UNA_SDK_INCLUDE_DIRS_GUI} + ${TOUCHGFX_INCLUDE_DIRS} + ) + una_app_build_gui(${APP_NAME}GUI.elf) +endif() + +# Build the complete app using SDK functions +una_app_build_app() \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.cproject b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.cproject new file mode 100644 index 00000000..9ced79ca --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.cproject @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.gitignore b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.gitignore new file mode 100644 index 00000000..3ff73754 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.gitignore @@ -0,0 +1,18 @@ +# Builds +/Debug/ +/Release/ +/MacOs/ + +#Local settings +/.settings/* + +# Contains firmware version +!/.settings/org.eclipse.cdt.core.prefs + +# Launch configuration +*.launch +*.cfg + +# fw images +*.hex +*.bin diff --git a/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.project b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.project new file mode 100644 index 00000000..8b7e1980 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.project @@ -0,0 +1,268 @@ + + + WorkoutGUI-CubeIDE + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature + com.st.stm32cube.ide.mcu.MCUNonSecureProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + GUI + 2 + virtual:/virtual + + + Libs + 2 + virtual:/virtual + + + SDK + 2 + virtual:/virtual + + + GUI/TouchGFX-GUI + 2 + PARENT-1-PROJECT_LOC/TouchGFX-GUI + + + Libs/Header + 2 + virtual:/virtual + + + Libs/Sources + 2 + virtual:/virtual + + + SDK/Libs + 2 + virtual:/virtual + + + Libs/Header/Commands.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Commands.hpp + + + Libs/Header/Settings.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Settings.hpp + + + Libs/Header/Track.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Track.hpp + + + SDK/Libs/Header + 2 + virtual:/virtual + + + SDK/Libs/Source + 2 + virtual:/virtual + + + SDK/Libs/Header/Interfaces + 2 + virtual:/virtual + + + SDK/Libs/Header/Port + 2 + virtual:/virtual + + + SDK/Libs/Header/UnaLogger + 2 + virtual:/virtual + + + SDK/Libs/Source/AppSystem + 2 + virtual:/virtual + + + SDK/Libs/Source/Kernel + 2 + virtual:/virtual + + + SDK/Libs/Source/Port + 2 + virtual:/virtual + + + SDK/Libs/Source/UnaLogger + 2 + virtual:/virtual + + + SDK/Libs/Header/Interfaces/IKernel.hpp + 1 + SDK_LOC/Libs/Header/SDK/Interfaces/IKernel.hpp + + + SDK/Libs/Header/Port/TouchGFX + 2 + virtual:/virtual + + + SDK/Libs/Header/UnaLogger/Logger.h + 1 + SDK_LOC/Libs/Header/SDK/UnaLogger/Logger.h + + + SDK/Libs/Source/AppSystem/AtExitImpl.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/AtExitImpl.cpp + + + SDK/Libs/Source/AppSystem/main.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/EntryPoint/TouchGFX/main.cpp + + + SDK/Libs/Source/AppSystem/startup_user_app.s + 1 + SDK_LOC/Libs/Source/AppSystem/startup_user_app.s + + + SDK/Libs/Source/AppSystem/system.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/system.cpp + + + SDK/Libs/Source/Kernel/KernelBuilder.cpp + 1 + SDK_LOC/Libs/Source/Kernel/KernelBuilder.cpp + + + SDK/Libs/Source/Port/TouchGFX + 2 + virtual:/virtual + + + SDK/Libs/Source/UnaLogger/Logger.cpp + 1 + SDK_LOC/Libs/Source/UnaLogger/Logger.cpp + + + SDK/Libs/Header/Port/TouchGFX/STM32TouchController.hpp + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/STM32TouchController.hpp + + + SDK/Libs/Header/Port/TouchGFX/TouchGFXCommandProcessor.hpp + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/TouchGFXCommandProcessor.hpp + + + SDK/Libs/Header/Port/TouchGFX/TouchGFXHAL.hpp + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/TouchGFXHAL.hpp + + + SDK/Libs/Header/Port/TouchGFX/app_touchgfx.h + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/app_touchgfx.h + + + SDK/Libs/Header/Port/TouchGFX/generated + 2 + virtual:/virtual + + + SDK/Libs/Source/Port/TouchGFX/STM32TouchController.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/STM32TouchController.cpp + + + SDK/Libs/Source/Port/TouchGFX/TouchGFXCommandProcessor.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/TouchGFXCommandProcessor.cpp + + + SDK/Libs/Source/Port/TouchGFX/TouchGFXGPIO.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/TouchGFXGPIO.cpp + + + SDK/Libs/Source/Port/TouchGFX/TouchGFXHAL.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/TouchGFXHAL.cpp + + + SDK/Libs/Source/Port/TouchGFX/generated + 2 + virtual:/virtual + + + SDK/Libs/Header/Port/TouchGFX/generated/STM32DMA.hpp + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/generated/STM32DMA.hpp + + + SDK/Libs/Header/Port/TouchGFX/generated/TouchGFXGeneratedHAL.hpp + 1 + SDK_LOC/Libs/Header/SDK/Port/TouchGFX/generated/TouchGFXGeneratedHAL.hpp + + + SDK/Libs/Source/Port/TouchGFX/generated/OSWrappers.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/generated/OSWrappers.cpp + + + SDK/Libs/Source/Port/TouchGFX/generated/STM32DMA.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/generated/STM32DMA.cpp + + + SDK/Libs/Source/Port/TouchGFX/generated/TouchGFXConfiguration.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/generated/TouchGFXConfiguration.cpp + + + SDK/Libs/Source/Port/TouchGFX/generated/TouchGFXGeneratedHAL.cpp + 1 + SDK_LOC/Libs/Source/Port/TouchGFX/generated/TouchGFXGeneratedHAL.cpp + + + + + SDK_LOC + $%7BPARENT-6-PROJECT_LOC%7D + + + diff --git a/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.settings/org.eclipse.cdt.core.prefs b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..30306b7b --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/value=../../../../Output +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/value=${UNA_SDK}/Utilities/Scripts +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/value=../../../../../../../ +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/append=true +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/appendContributed=true diff --git a/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/Linker.ld b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/Linker.ld new file mode 100644 index 00000000..54c1383b --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutGUI-CubeIDE/Linker.ld @@ -0,0 +1,4 @@ +STACK_SIZE = 10K; +RAM_LENGTH = 500K; + +INCLUDE "Main/Sections.ld" diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject new file mode 100644 index 00000000..f8d07ab7 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.gitignore b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.gitignore new file mode 100644 index 00000000..3ff73754 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.gitignore @@ -0,0 +1,18 @@ +# Builds +/Debug/ +/Release/ +/MacOs/ + +#Local settings +/.settings/* + +# Contains firmware version +!/.settings/org.eclipse.cdt.core.prefs + +# Launch configuration +*.launch +*.cfg + +# fw images +*.hex +*.bin diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project new file mode 100644 index 00000000..76920f43 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project @@ -0,0 +1,588 @@ + + + WorkoutService-CubeIDE + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature + com.st.stm32cube.ide.mcu.MCUNonSecureProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Libs + 2 + virtual:/virtual + + + SDK + 2 + virtual:/virtual + + + Libs/Header + 2 + virtual:/virtual + + + Libs/Sources + 2 + virtual:/virtual + + + SDK/Libs + 2 + virtual:/virtual + + + SDK/ThirdParty + 2 + virtual:/virtual + + + Libs/Header/ActivitySummary.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/ActivitySummary.hpp + + + Libs/Header/ActivitySummarySerializer.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/ActivitySummarySerializer.hpp + + + Libs/Header/ActivityWriter.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/ActivityWriter.hpp + + + Libs/Header/Commands.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Commands.hpp + + + Libs/Header/Service.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Service.hpp + + + Libs/Header/Settings.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Settings.hpp + + + Libs/Header/SettingsSerializer.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/SettingsSerializer.hpp + + + Libs/Header/Track.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/Track.hpp + + + Libs/Header/WristTiltDetector.hpp + 1 + PARENT-2-PROJECT_LOC/Libs/Header/WristTiltDetector.hpp + + + Libs/Sources/ActivitySummarySerializer.cpp + 1 + PARENT-2-PROJECT_LOC/Libs/Sources/ActivitySummarySerializer.cpp + + + Libs/Sources/ActivityWriter.cpp + 1 + PARENT-2-PROJECT_LOC/Libs/Sources/ActivityWriter.cpp + + + Libs/Sources/Service.cpp + 1 + PARENT-2-PROJECT_LOC/Libs/Sources/Service.cpp + + + Libs/Sources/SettingsSerializer.cpp + 1 + PARENT-2-PROJECT_LOC/Libs/Sources/SettingsSerializer.cpp + + + Libs/Sources/WristTiltDetector.cpp + 1 + PARENT-2-PROJECT_LOC/Libs/Sources/WristTiltDetector.cpp + + + SDK/Libs/Header + 2 + virtual:/virtual + + + SDK/Libs/Source + 2 + virtual:/virtual + + + SDK/ThirdParty/FitSDK + 2 + virtual:/virtual + + + SDK/ThirdParty/coreJSON + 2 + virtual:/virtual + + + SDK/Libs/Header/Filters + 2 + virtual:/virtual + + + SDK/Libs/Header/FitHelper + 2 + virtual:/virtual + + + SDK/Libs/Header/Interfaces + 2 + virtual:/virtual + + + SDK/Libs/Header/JSON + 2 + virtual:/virtual + + + SDK/Libs/Header/Kernel + 2 + virtual:/virtual + + + SDK/Libs/Header/Messages + 2 + virtual:/virtual + + + SDK/Libs/Header/Metrics + 2 + virtual:/virtual + + + SDK/Libs/Header/SensorLayer + 2 + virtual:/virtual + + + SDK/Libs/Header/Timer + 2 + virtual:/virtual + + + SDK/Libs/Header/TrackMap + 2 + virtual:/virtual + + + SDK/Libs/Header/UnaLogger + 2 + virtual:/virtual + + + SDK/Libs/Source/AppSystem + 2 + virtual:/virtual + + + SDK/Libs/Source/FitHelper + 2 + virtual:/virtual + + + SDK/Libs/Source/JSON + 2 + virtual:/virtual + + + SDK/Libs/Source/Kernel + 2 + virtual:/virtual + + + SDK/Libs/Source/SensorLayer + 2 + virtual:/virtual + + + SDK/Libs/Source/Timer + 2 + virtual:/virtual + + + SDK/Libs/Source/TrackMap + 2 + virtual:/virtual + + + SDK/Libs/Source/UnaLogger + 2 + virtual:/virtual + + + SDK/ThirdParty/FitSDK/fit.c + 1 + SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit.c + + + SDK/ThirdParty/FitSDK/fit_convert.c + 1 + SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_convert.c + + + SDK/ThirdParty/FitSDK/fit_crc.c + 1 + SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_crc.c + + + SDK/ThirdParty/FitSDK/fit_product.c + 1 + SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_product.c + + + SDK/ThirdParty/coreJSON/source + 2 + virtual:/virtual + + + SDK/Libs/Header/Filters/SimpleLPF.hpp + 1 + SDK_LOC/Libs/Header/SDK/Filters/SimpleLPF.hpp + + + SDK/Libs/Header/FitHelper/FitHelper.hpp + 1 + SDK_LOC/Libs/Header/SDK/FitHelper/FitHelper.hpp + + + SDK/Libs/Header/Interfaces/IKernel.hpp + 1 + SDK_LOC/Libs/Header/SDK/Interfaces/IKernel.hpp + + + SDK/Libs/Header/JSON/JsonStreamReader.hpp + 1 + SDK_LOC/Libs/Header/SDK/JSON/JsonStreamReader.hpp + + + SDK/Libs/Header/JSON/JsonStreamWriter.hpp + 1 + SDK_LOC/Libs/Header/SDK/JSON/JsonStreamWriter.hpp + + + SDK/Libs/Header/Kernel/Kernel.hpp + 1 + SDK_LOC/Libs/Header/SDK/Kernel/Kernel.hpp + + + SDK/Libs/Header/Kernel/KernelBuilder.hpp + 1 + SDK_LOC/Libs/Header/SDK/Kernel/KernelBuilder.hpp + + + SDK/Libs/Header/Kernel/KernelProviderService.hpp + 1 + SDK_LOC/Libs/Header/SDK/Kernel/KernelProviderService.hpp + + + SDK/Libs/Header/Messages/CommandMessages.hpp + 1 + SDK_LOC/Libs/Header/SDK/Messages/CommandMessages.hpp + + + SDK/Libs/Header/Messages/MessageBase.hpp + 1 + SDK_LOC/Libs/Header/SDK/Messages/MessageBase.hpp + + + SDK/Libs/Header/Messages/MessageGuard.hpp + 1 + SDK_LOC/Libs/Header/SDK/Messages/MessageGuard.hpp + + + SDK/Libs/Header/Messages/MessageTypes.hpp + 1 + SDK_LOC/Libs/Header/SDK/Messages/MessageTypes.hpp + + + SDK/Libs/Header/Messages/SensorLayerMessages.hpp + 1 + SDK_LOC/Libs/Header/SDK/Messages/SensorLayerMessages.hpp + + + SDK/Libs/Header/Metrics/DeltaCounter.hpp + 1 + SDK_LOC/Libs/Header/SDK/Metrics/DeltaCounter.hpp + + + SDK/Libs/Header/Metrics/MonotonicCounter.hpp + 1 + SDK_LOC/Libs/Header/SDK/Metrics/MonotonicCounter.hpp + + + SDK/Libs/Header/Metrics/MonotonicTime.hpp + 1 + SDK_LOC/Libs/Header/SDK/Metrics/MonotonicTime.hpp + + + SDK/Libs/Header/Metrics/ThrottledSample.hpp + 1 + SDK_LOC/Libs/Header/SDK/Metrics/ThrottledSample.hpp + + + SDK/Libs/Header/Metrics/VariableCounter.hpp + 1 + SDK_LOC/Libs/Header/SDK/Metrics/VariableCounter.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers + 2 + virtual:/virtual + + + SDK/Libs/Header/SensorLayer/SensorConnection.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/SensorConnection.hpp + + + SDK/Libs/Header/SensorLayer/SensorData.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/SensorData.hpp + + + SDK/Libs/Header/SensorLayer/SensorDataBatch.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/SensorDataBatch.hpp + + + SDK/Libs/Header/SensorLayer/SensorDataView.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/SensorDataView.hpp + + + SDK/Libs/Header/SensorLayer/SensorTypes.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/SensorTypes.hpp + + + SDK/Libs/Header/Timer/Timer.hpp + 1 + SDK_LOC/Libs/Header/SDK/Timer/Timer.hpp + + + SDK/Libs/Header/TrackMap/TrackMapBuilder.hpp + 1 + SDK_LOC/Libs/Header/SDK/TrackMap/TrackMapBuilder.hpp + + + SDK/Libs/Header/TrackMap/TrackMapScreen.hpp + 1 + SDK_LOC/Libs/Header/SDK/TrackMap/TrackMapScreen.hpp + + + SDK/Libs/Header/UnaLogger/Logger.h + 1 + SDK_LOC/Libs/Header/SDK/UnaLogger/Logger.h + + + SDK/Libs/Source/AppSystem/AtExitImpl.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/AtExitImpl.cpp + + + SDK/Libs/Source/AppSystem/main.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/EntryPoint/Service/main.cpp + + + SDK/Libs/Source/AppSystem/startup_user_app.s + 1 + SDK_LOC/Libs/Source/AppSystem/startup_user_app.s + + + SDK/Libs/Source/AppSystem/system.cpp + 1 + SDK_LOC/Libs/Source/AppSystem/system.cpp + + + SDK/Libs/Source/FitHelper/FitHelper.cpp + 1 + SDK_LOC/Libs/Source/FitHelper/FitHelper.cpp + + + SDK/Libs/Source/JSON/JsonStreamReader.cpp + 1 + SDK_LOC/Libs/Source/JSON/JsonStreamReader.cpp + + + SDK/Libs/Source/JSON/JsonStreamWriter.cpp + 1 + SDK_LOC/Libs/Source/JSON/JsonStreamWriter.cpp + + + SDK/Libs/Source/Kernel/KernelBuilder.cpp + 1 + SDK_LOC/Libs/Source/Kernel/KernelBuilder.cpp + + + SDK/Libs/Source/SensorLayer/SensorConnection.cpp + 1 + SDK_LOC/Libs/Source/SensorLayer/SensorConnection.cpp + + + SDK/Libs/Source/Timer/Timer.cpp + 1 + SDK_LOC/Libs/Source/Timer/Timer.cpp + + + SDK/Libs/Source/TrackMap/TrackMapBuilder.cpp + 1 + SDK_LOC/Libs/Source/TrackMap/TrackMapBuilder.cpp + + + SDK/Libs/Source/UnaLogger/Logger.cpp + 1 + SDK_LOC/Libs/Source/UnaLogger/Logger.cpp + + + SDK/ThirdParty/coreJSON/source/core_json.c + 1 + SDK_LOC/ThirdParty/coreJSON/source/core_json.c + + + SDK/ThirdParty/coreJSON/source/include + 2 + virtual:/virtual + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserAccelerometer.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserAccelerometer.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserAccelerometerRaw.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserAccelerometerRaw.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserActivity.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserActivity.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserActivityRecognition.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserActivityRecognition.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserAltimeter.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserAltimeter.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserBatteryCharging.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserBatteryCharging.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserBatteryLevel.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserBatteryLevel.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserBatteryMetrics.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserBatteryMetrics.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserFloorCounter.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserFloorCounter.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserGpsDistance.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserGpsDistance.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserGpsLocation.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserGpsLocation.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserGpsSpeed.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserGpsSpeed.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserHeartRate.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserHeartRate.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserMotionDetect.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserMotionDetect.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserPressure.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserPressure.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserStepCounter.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserStepCounter.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserStepDetector.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserStepDetector.hpp + + + SDK/Libs/Header/SensorLayer/DataParsers/SensorDataParserTemperature.hpp + 1 + SDK_LOC/Libs/Header/SDK/SensorLayer/DataParsers/SensorDataParserTemperature.hpp + + + SDK/ThirdParty/coreJSON/source/include/core_json.h + 1 + SDK_LOC/ThirdParty/coreJSON/source/include/core_json.h + + + + + SDK_LOC + $%7BPARENT-6-PROJECT_LOC%7D + + + diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.settings/org.eclipse.cdt.core.prefs b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..f4de6768 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,30 @@ +eclipse.preferences.version=1 +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_LINKER/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_LINKER/operation=append +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_LINKER/value=${UNA_SDK}/Libs/Source/AppSystem +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_OUTPUT/value=../../../../Output +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_RESOURCES/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_RESOURCES/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_RESOURCES/value=../../../../Resources +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/PATH_SCRIPTS/value=${UNA_SDK}/Utilities/Scripts +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/UNA_SDK/value=../../../../../../../ +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_ID__/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_ID__/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_ID__/value=A12E9F4C8B7D3A65 +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_NAME__/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_NAME__/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__APP_NAME__/value=Workout +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__BUILD_VERSION__/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__BUILD_VERSION__/operation=replace +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__BUILD_VERSION__/value=0.0.0-local_build +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__DEV_ID__/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__DEV_ID__/operation=append +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/__DEV_ID__/value=UNA +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/append=true +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.767823000/appendContributed=true diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/Linker.ld b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/Linker.ld new file mode 100644 index 00000000..79bb3a59 --- /dev/null +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/Linker.ld @@ -0,0 +1,4 @@ +STACK_SIZE = 10*1024; +RAM_LENGTH = 500K; + +INCLUDE "Main/Sections.ld" diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp new file mode 100644 index 00000000..076af24b --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp @@ -0,0 +1,43 @@ +/** + ****************************************************************************** + * @file ActivitySummary.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Represents a common summary track information. + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef ACTIVITY_SUMMARY_HPP +#define ACTIVITY_SUMMARY_HPP + +#include +#include +#include + +/** + * @struct LapSummary + * @brief Summary data for a single lap. + */ +struct LapSummary { + time_t duration; ///< Lap duration in seconds + float hrAvg; ///< Lap average heart rate (bpm) + float hrMax; ///< Lap maximum heart rate (bpm) +}; + +/** + * @struct ActivitySummary + * @brief Represents a common summary track information. + */ +struct ActivitySummary { + time_t utc; ///< Last activity UTC time + time_t time; ///< Total track time in seconds + float hrMax; ///< Maximum Heart Rate in bpm + float hrAvg; ///< Average Heart Rate in bpm + float calories; ///< Estimated total energy expenditure (kcal) + + std::vector laps; ///< Per-lap summary data +}; + +#endif // ACTIVITY_SUMMARY_HPP diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp new file mode 100644 index 00000000..6c90cefa --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp @@ -0,0 +1,78 @@ +/** + ****************************************************************************** + * @file ActivitySummarySerializer.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Serializes/Deserializes summary data to a file. + ****************************************************************************** + * + * The serialized format follows this structure: + * + * @code{.json} + * { + * "utc":1744163530, + * "time":125, + * "hr_max":84, + * "hr_avg":74, + * "calories":42.5, + * "lap_count":2, + * "laps":[ + * {"dur":62,"hr_avg":120,"hr_max":135}, + * {"dur":63,"hr_avg":118,"hr_max":132} + * ] + * } + * @endcode + * + ****************************************************************************** + */ + +#ifndef ACTIVITY_SUMMARY_SERIALIZER_HPP +#define ACTIVITY_SUMMARY_SERIALIZER_HPP + +#include "SDK/Kernel/Kernel.hpp" + +#include "ActivitySummary.hpp" + + /** + * @class ActivitySummarySerializer + * @brief Serializes/Deserializes summary data to a file. + */ +class ActivitySummarySerializer { + +public: + + /** + * @brief Constructor. + * @param kernel: Reference to the kernel interface. + * @param pathToFile: Path to the summary file. + */ + ActivitySummarySerializer(const SDK::Kernel& kernel, const char* pathToFile); + + /** + * @brief Destructor. + */ + virtual ~ActivitySummarySerializer() = default; + + /** + * @brief Save summary. + * @param summary: Reference to the Summary structure. + * @return True if summary saved successfully. + */ + bool save(const ActivitySummary& summary); + + /** + * @brief Save summary. + * @param summary: Reference to load the Summary structure. + * @return True if summary read successfully. + */ + bool load(ActivitySummary& summary); + +private: + /// A constant reference to an Kernel object. + const SDK::Kernel& mKernel; + + /// Path to summary file + const char* mPath = nullptr; +}; + +#endif // ACTIVITY_SUMMARY_SERIALIZER_HPP diff --git a/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp b/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp new file mode 100644 index 00000000..ea1c4c1e --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp @@ -0,0 +1,147 @@ +/** + ****************************************************************************** + * @file ActivityWriter.hpp + * @date 31-08-2025 + * @author Denys Saienko + * @brief Serializes activity data to a FIT file. + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef ACTIVITY_WRITER_HPP +#define ACTIVITY_WRITER_HPP + +#include +#include +#include + +#include "SDK/Kernel/Kernel.hpp" +#include "SDK/FitHelper/FitHelper.hpp" + +extern "C" { +#include "fit_example.h" +} + +/** + * @class ActivityWriter + * @brief Serializes activity data to a FIT file. + */ +class ActivityWriter { +public: + struct AppInfo { + std::time_t timestamp = 0; // UTC + uint32_t appVersion = 0; // Application version 4 bytes LE [patch, minor, major, 0] + std::string devID; // Developer ID (max len 16) + std::string appID; // Application ID (max len 16) + }; + + struct RecordData { + enum class Field : uint8_t { + HEART_RATE = 1u << 0, + BATTERY = 1u << 1, + }; + + void set(Field f) { mFlags |= mask(f); } + void clear(Field f) { mFlags &= static_cast(~mask(f)); } + void set(Field f, bool state) { state ? set(f) : clear(f); } + bool has(Field f) const { return (mFlags & mask(f)) != 0; } + void clearAll() { mFlags = 0; } + + std::time_t timestamp = 0; // UTC + float heartRate = 0.0f; // bpm + uint8_t batteryLevel = 0; // % + uint16_t batteryVoltage = 0; // mV + + private: + static constexpr uint8_t mask(Field f) + { + return static_cast(f); + } + + uint8_t mFlags = 0; + }; + + struct LapData { + std::time_t timestamp = 0; // UTC + std::time_t timeStart = 0; // UTC + std::time_t duration = 0; // seconds + std::time_t elapsed = 0; // seconds + float hrAvg = 0.0f; // bpm + float hrMax = 0.0f; // bpm + float calories = 0.0f; // kcal + }; + + struct TrackData { + std::time_t timestamp = 0; // UTC + std::time_t timeStart = 0; // UTC + std::time_t duration = 0; // seconds + std::time_t elapsed = 0; // seconds + float hrAvg = 0.0f; // bpm + float hrMax = 0.0f; // bpm + float calories = 0.0f; // kcal + }; + + ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir); + + void start(const AppInfo& info); + void pause(std::time_t timestamp); + void resume(std::time_t timestamp); + void addRecord(const RecordData& record); + void addLap(const LapData& lap); + void stop(const TrackData& track); + void discard(); + +private: + /// A constant reference to an Kernel object. + const SDK::Kernel& mKernel; + + /// Path to FIT file + const char* mPath = nullptr; + + std::unique_ptr mFile = nullptr; + uint16_t mLapCounter = 0; + FIT_UINT16 mDataCRC = 0; + + SDK::Component::FitHelper mFHFileID; + SDK::Component::FitHelper mFHDeveloper; + SDK::Component::FitHelper mFHLap; + SDK::Component::FitHelper mFHSession; + SDK::Component::FitHelper mFHEvent; + SDK::Component::FitHelper mFHActivity; + SDK::Component::FitHelper mFHRecord; + + SDK::Component::FitHelper mFHBatteryLevelField; + SDK::Component::FitHelper mFHBatteryVoltageField; + + enum class MsgNumber { + FILE = 1, + DEVELOP, + RECORD, + LAP, + SESSION, + ACTIVITY, + EVENT, + BATTERY_LEVEL, + BATTERY_VOLTAGE, + }; + + FIT_RECORD_MESG prepareRecordMsg(const RecordData& record); + + void AddMessageEvent(std::time_t t, FIT_EVENT_TYPE type); + + bool createAndOpenFile(std::time_t utc); + void saveFile(); + void deleteFile(); + + void saveSummary(const TrackData& track); + + static time_t tm2epoch(const struct tm* tm); + static time_t epochToLocal(time_t utc); + static FIT_DATE_TIME unixToFitTimestamp(std::time_t unixTimestamp); + + void WriteFileHeader(SDK::Interface::IFile* fp); + void WriteCRC(SDK::Interface::IFile* fp); +}; + +#endif // ACTIVITY_WRITER_HPP diff --git a/Apps/Workout/Software/Libs/Header/Commands.hpp b/Apps/Workout/Software/Libs/Header/Commands.hpp new file mode 100644 index 00000000..c05e3c7f --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/Commands.hpp @@ -0,0 +1,320 @@ + +#ifndef COMMANDS_HPP +#define COMMANDS_HPP + +#include + +#include "SDK/Messages/MessageBase.hpp" +#include "SDK/Messages/MessageTypes.hpp" +#include "SDK/Messages/CommandMessages.hpp" +#include "SDK/Messages/MessageGuard.hpp" +#include "SDK/Kernel/Kernel.hpp" + +// Application types +#include "Settings.hpp" +#include "Track.hpp" +#include "ActivitySummary.hpp" + +// Force 4-byte alignment for all message structures +#pragma pack(push, 4) + +namespace CustomMessage { + + // Kernel HR configuration — shared defaults used before first kernel update + static constexpr uint8_t kHrThresholdsCount = 6; + static constexpr uint8_t kHrThresholdsDefault[kHrThresholdsCount] = { 95, 114, 133, 152, 171, 190 }; + + // Application custom commands + // Service --> GUI + constexpr SDK::MessageType::Type SETTINGS_UPDATE = 0x00000001; + constexpr SDK::MessageType::Type LOCAL_TIME = 0x00000002; + constexpr SDK::MessageType::Type BATTERY = 0x00000003; + constexpr SDK::MessageType::Type TRACK_STATE_UPDATE = 0x00000005; + constexpr SDK::MessageType::Type TRACK_DATA_UPDATE = 0x00000006; + constexpr SDK::MessageType::Type LAP_END = 0x00000007; + constexpr SDK::MessageType::Type SUMMARY = 0x00000008; + + // GUI --> Service + constexpr SDK::MessageType::Type SETTINGS_SAVE = 0x0000000A; + constexpr SDK::MessageType::Type TRACK_START = 0x0000000B; + constexpr SDK::MessageType::Type TRACK_STOP = 0x0000000C; + constexpr SDK::MessageType::Type TRACK_PAUSE = 0x0000000D; + constexpr SDK::MessageType::Type TRACK_RESUME = 0x0000000E; + constexpr SDK::MessageType::Type MANUAL_LAP = 0x0000000F; + + // Service <-> GUI + struct SettingsUpd : public SDK::MessageBase { + // Application settings + Settings settings; + + // Kernel settings + bool unitsImperial; + uint8_t hrThresholds[kHrThresholdsCount]; + uint8_t hrThresholdsCount; + + SettingsUpd() + : SDK::MessageBase(SETTINGS_UPDATE) + , unitsImperial(false) + , hrThresholds {} + , hrThresholdsCount(0) + {} + }; + + // Service --> GUI + struct Time : public SDK::MessageBase { + std::tm localTime; + Time() + : SDK::MessageBase(LOCAL_TIME) + , localTime {} + {} + }; + + struct Battery : public SDK::MessageBase { + uint8_t level; + Battery() + : SDK::MessageBase(BATTERY) + , level(0) + {} + }; + + struct TrackStateUpd : public SDK::MessageBase { + Track::State state; + TrackStateUpd() + : SDK::MessageBase(TRACK_STATE_UPDATE) + , state{} + {} + }; + + struct TrackDataUpd : public SDK::MessageBase { + Track::Data data; + TrackDataUpd() + : SDK::MessageBase(TRACK_DATA_UPDATE) + , data{} + {} + }; + + struct LapEnded : public SDK::MessageBase { + uint32_t lapNum; + LapEnded() + : SDK::MessageBase(LAP_END) + , lapNum(0) + {} + }; + + struct Summary : public SDK::MessageBase { + const ActivitySummary* summary; ///< Non-owning pointer; receiver must copy before releaseMessage + Summary() + : SDK::MessageBase(SUMMARY) + , summary(nullptr) + {} + }; + + // GUI --> Service + struct SettingsSave : public SDK::MessageBase { + // Application settings + Settings settings; + + SettingsSave() + : SDK::MessageBase(SETTINGS_SAVE) + {} + }; + + struct TrackStart : public SDK::MessageBase { + TrackStart() : SDK::MessageBase(TRACK_START) {} + }; + + struct TrackStop : public SDK::MessageBase { + bool discard; // If true, tarck will be discarded, otherwise saved + TrackStop() + : SDK::MessageBase(TRACK_STOP) + , discard(false) + {} + }; + + struct TrackPause : public SDK::MessageBase { + TrackPause() : SDK::MessageBase(TRACK_PAUSE) {} + }; + + struct TrackResume : public SDK::MessageBase { + TrackResume() : SDK::MessageBase(TRACK_RESUME) {} + }; + + struct ManualLap : public SDK::MessageBase { + ManualLap() : SDK::MessageBase(MANUAL_LAP) {} + }; + + +// Helper wrapper +class Sender { +public: + Sender(const SDK::Kernel &kernel) : + mKernel(kernel) + { + } + virtual ~Sender() = default; + + // Service --> GUI + bool settingsUpd(Settings settings, bool units, + const uint8_t (&thresholds)[kHrThresholdsCount], uint8_t thresholdCount) + { + if (auto msg = SDK::make_msg(mKernel)) { + msg->settings = settings; + msg->unitsImperial = units; + memcpy(msg->hrThresholds, thresholds, sizeof(msg->hrThresholds)); + msg->hrThresholdsCount = thresholdCount; + return msg.send(); + } + + return false; + } + + bool time(std::tm localTime) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->localTime = localTime; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool battery(uint8_t level) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->level = level; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackState(Track::State state) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->state = state; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackData(const Track::Data &data) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->data = data; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool lapEnd(uint32_t lapNum) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->lapNum = lapNum; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool summary(const ActivitySummary* summaryPtr) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->summary = summaryPtr; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + // GUI --> Service + bool settingsSave(Settings settings) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->settings = settings; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackStart() + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackStop(bool discard) + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->discard = discard; + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackPause() + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool trackResume() + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } + + bool manualLap() + { + bool status = false; + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + status = mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } + return status; + } +private: + const SDK::Kernel &mKernel; +}; + + +} // namespace CustomMessage + +#pragma pack(pop) + +#endif // COMMANDS_HPP diff --git a/Apps/Workout/Software/Libs/Header/Service.hpp b/Apps/Workout/Software/Libs/Header/Service.hpp new file mode 100644 index 00000000..de66de1c --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/Service.hpp @@ -0,0 +1,151 @@ +#ifndef SERVICE_HPP +#define SERVICE_HPP + +#include "SDK/Kernel/Kernel.hpp" +#include "SDK/SensorLayer/SensorConnection.hpp" +#include "SDK/SensorLayer/SensorDataBatch.hpp" +#include "SDK/Metrics/MonotonicTime.hpp" +#include "SDK/Metrics/MonotonicCounter.hpp" +#include "SDK/Metrics/VariableCounter.hpp" +#include "SDK/Metrics/DeltaCounter.hpp" +#include "SDK/Metrics/ThrottledSample.hpp" +#include "SDK/Filters/SimpleLPF.hpp" + +#include "SettingsSerializer.hpp" +#include "ActivitySummarySerializer.hpp" +#include "ActivityWriter.hpp" +#include "Commands.hpp" +#include "WristTiltDetector.hpp" +#include + +class Service : public WristTiltDetector::IListener +{ +public: + Service(SDK::Kernel &kernel); + + virtual ~Service(); + + void run(); + +private: + // -- Constants ------------------------------------------------------------ + + static constexpr uint32_t skBacklightTimeout = 5000; + static constexpr uint32_t skSamplePeriod = 1000; + static constexpr uint32_t skSampleLatency = 1000; + + static constexpr uint32_t skBatteryLogPeriodMs = 5 * 60 * 1000; + static constexpr float skFusionSampleRateHz = 100.0f; + static constexpr float skDefaultWeightKg = 75.0f; ///< Fixed indoor-workout estimate until user profile weight is wired in. + + // -- Infrastructure ------------------------------------------------------- + + SDK::Kernel& mKernel; + bool mGuiStarted; + CustomMessage::Sender mGuiSender; + + // -- Settings & persistence ----------------------------------------------- + + Settings mSettings; + bool mIsImperial = false; + SettingsSerializer mSettingsSerializer; + ActivitySummary mSummary; + ActivitySummarySerializer mActivitySummarySerializer; + ActivityWriter mActivityWriter; + + // -- Sensors -------------------------------------------------------------- + + SDK::Sensor::Connection mSensorPressure; + SDK::Sensor::Connection mSensorHr; + SDK::Sensor::Connection mSensorBatteryLevel; + SDK::Sensor::Connection mSensorBatteryMetrics; + SDK::Sensor::Connection mSensorWristMotion; + SDK::Sensor::Connection mSensorFusion; + bool mIsSensorsConnected = false; + + // -- Metrics -------------------------------------------------------------- + + SDK::Metric::MonotonicTime mTimeTracker; + SDK::Metric::MonotonicCounter mTimeCounter; + SDK::Metric::MonotonicCounter mDistanceCounter; + SDK::Metric::VariableCounter mSpeedCounter; + SDK::Metric::VariableCounter mHrCounter; + SDK::Filter::SimpleLPF mAltitudeFilter; + SDK::Metric::DeltaCounter mAltitudeCounter; + + // Battery SoC and voltage are sampled independently; + // a FIT record is written only when both are due. + SDK::Metric::ThrottledSample mBatterySoc; ///< State of charge, percent + SDK::Metric::ThrottledSample mBatteryVoltage; ///< Voltage, volts + + float mSeaLevelPressure = 0.0f; // Pa + std::array mHrThresholds = {}; + uint8_t mHrThresholdCount = 0; + + // -- Track state ---------------------------------------------------------- + + enum class LapDivSource { + OFF = 0, + TIME, + }; + + LapDivSource mLapDivSource = LapDivSource::OFF; + Track::State mTrackState = Track::State::INACTIVE; + bool mSessionNotEmpty = false; + bool mLapNotEmpty = false; + Track::Data mTrackData{}; + + // -- Wrist tilt ----------------------------------------------------------- + + WristTiltDetector mWristTiltDetector; + + // -- Lifecycle ------------------------------------------------------------ + + void connectSensors(); + void disconnect(); + void onStartGUI(); + void onStopGUI(); + + // -- Sensor data dispatch ------------------------------------------------- + + void handleSensorsData(uint16_t handle, SDK::Sensor::DataBatch& data); + + // -- Event handlers ------------------------------------------------------- + + void handleEvent(const CustomMessage::TrackStart& event); + void handleEvent(const CustomMessage::TrackStop& event); + void handleEvent(const CustomMessage::SettingsSave& event); + void handleEvent(const CustomMessage::TrackPause& event); + void handleEvent(const CustomMessage::TrackResume& event); + void handleEvent(const CustomMessage::ManualLap& event); + + // -- Track control -------------------------------------------------------- + + void sendInitialInfoToGui(); + void startTrack(std::time_t utc); + void processTrack(); + void updateHrDerivedMetrics(); + void saveLap(); + void stopTrack(bool discard); + void pauseTrack(bool pause); + void buildPartialSummary(); + ActivityWriter::RecordData prepareRecordData(); + LapDivSource getLapDivSource(); + uint8_t getHrZone(float hr) const; + float getZoneMet(uint8_t zone) const; + + // -- Notifications -------------------------------------------------------- + + void setCapabilities(); + void notifyLapEnd(); + void notifyNewActivity(); + void backlightOn(uint32_t timeoutMs = skBacklightTimeout); + void playBuzzerPattern(uint16_t beepMs, uint8_t count = 1, uint16_t silenceMs = 100); + void playVibroPattern(SDK::Message::RequestVibroPlay::Effect effect, uint8_t count = 1, uint16_t silenceMs = 100); + + // -- WristTilt callback --------------------------------------------------- + + virtual void onWristTilt(uint32_t timestampMs) override; +}; + +#endif // SERVICE_HPP diff --git a/Apps/Workout/Software/Libs/Header/Settings.hpp b/Apps/Workout/Software/Libs/Header/Settings.hpp new file mode 100644 index 00000000..9491376b --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/Settings.hpp @@ -0,0 +1,47 @@ +/** + ****************************************************************************** + * @file Settings.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Application settings structure and alert sub-types. + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef SETTINGS_HPP +#define SETTINGS_HPP + +#include + +/** + * @brief Application settings persisted to storage. + */ +struct Settings { + /// Settings version. + static constexpr uint8_t kVersion = 1; + + struct Alerts { + struct Time { + enum Id : uint8_t { + ID_OFF = 0, ID_MIN_1, ID_MIN_5, ID_MIN_10, + ID_MIN_15, ID_MIN_20, ID_MIN_30, + ID_COUNT, ID_DEFAULT = ID_OFF + }; + static constexpr uint16_t kValues[ID_COUNT] = { 0, 1, 5, 10, 15, 20, 30 }; + + static constexpr uint32_t toSeconds(Id id) { + return kValues[id] * 60u; + } + }; + }; + + + // Fields + uint32_t version = kVersion; ///< Settings version. + + bool phoneNotifEn = true; ///< Flag to enable receiving phone notification when app is run. + Alerts::Time::Id alertTimeId = Alerts::Time::ID_OFF; ///< Time alert option. +}; + +#endif // SETTINGS_HPP diff --git a/Apps/Workout/Software/Libs/Header/SettingsSerializer.hpp b/Apps/Workout/Software/Libs/Header/SettingsSerializer.hpp new file mode 100644 index 00000000..1d56a7e5 --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/SettingsSerializer.hpp @@ -0,0 +1,68 @@ +/** + ****************************************************************************** + * @file SettingsSerializer.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Serializes/Deserializes settings to a file. + ****************************************************************************** + * + * The serialized format follows this structure: + * + * @code{.json} + * { + * "version":1, + * "phone_notif_en":true, + * "alert_time_id":0 + * } + * @endcode + * + ****************************************************************************** + */ + +#ifndef SETTINGS_SERIALIZER_HPP +#define SETTINGS_SERIALIZER_HPP + +#include +#include + +#include "SDK/Kernel/Kernel.hpp" + +#include "Settings.hpp" + + +/** + * @brief Serializes/Deserializes settings to a file. + */ +class SettingsSerializer { + +public: + + /** + * @brief Constructor. + * @param kernel Reference to the kernel interface. + * @param pathToFile Path to the settings file. + */ + SettingsSerializer(const SDK::Kernel& kernel, const char *pathToFile); + + ~SettingsSerializer() = default; + + /** + * @brief Save settings to file. + * @param settings Reference to the Settings structure to save. + * @return True if settings saved successfully. + */ + bool save(const Settings &settings); + + /** + * @brief Load settings from file. + * @param settings Reference to the Settings structure to populate. + * @return True if settings loaded successfully. + */ + bool load(Settings &settings); + +private: + const SDK::Kernel& mKernel; ///< Reference to the kernel interface. + const char* mPath; ///< Path to the settings file. +}; + +#endif // SETTINGS_SERIALIZER_HPP diff --git a/Apps/Workout/Software/Libs/Header/Track.hpp b/Apps/Workout/Software/Libs/Header/Track.hpp new file mode 100644 index 00000000..0e5ae06e --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/Track.hpp @@ -0,0 +1,55 @@ +/** + ****************************************************************************** + * @file Track.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Track namespace: state and real-time metrics. + ****************************************************************************** + * + ****************************************************************************** + */ + +#ifndef TRACK_HPP +#define TRACK_HPP + +#include +#include + +namespace Track +{ + +/** + * @brief Activity tracking state. + */ +enum class State { + INACTIVE = 0, + ACTIVE, + PAUSED +}; + +/** + * @brief Real-time metrics snapshot; updated every second by the Service. + */ +struct Data { + // Time, s + std::time_t totalTime = 0; + std::time_t lapTime = 0; + + uint32_t lapNum = 0; + + // Heart rate, bpm + float hr = 0.0f; + float hrTrustLevel = 0.0f; + float avgHR = 0.0f; + float maxHR = 0.0f; + float avgLapHR = 0.0f; + float maxLapHR = 0.0f; + uint8_t hrZone = 0; ///< 0 = none, 1..5 = active zone + float totalCalories = 0.0f; + float lapCalories = 0.0f; + std::time_t zoneTimeSec[5] = {0, 0, 0, 0, 0}; ///< cumulative time in zones 1..5 +}; + +} // namespace Track + +#endif // TRACK_HPP diff --git a/Apps/Workout/Software/Libs/Header/WristTiltDetector.hpp b/Apps/Workout/Software/Libs/Header/WristTiltDetector.hpp new file mode 100644 index 00000000..de24b725 --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/WristTiltDetector.hpp @@ -0,0 +1,316 @@ +/******************************************************************************* + * @file WristTiltDetector.hpp + * @date 22-04-2025 + * @author Denys Saienko + * @brief Wrist-tilt (watch-look) gesture detector for walking and running. + * + * Algorithm overview: + * 1. MOTION CLASSIFICATION (5 s sliding window on AY delta) + * Computes avg_swing = mean(|ay[i] - ay[i-1]|) over the window. + * Maps avg_swing to one of three motion classes: + * STATIONARY, WALKING, RUNNING. + * Hysteresis: state only changes when a threshold is strictly + * crossed; the STATIONARY class has a dedicated lower bound so + * that noise near zero does not flip the state back and forth. + * + * 2. DYNAMIC GX THRESHOLD + * Each motion class has its own peak-GX detection threshold + * (raw int16 LSB from the sensor register). Higher thresholds + * for more vigorous activities prevent running arm-swing from + * flooding the gesture output. + * + * 3. TILT STATE MACHINE + * IDLE -> if |GX| exceeds the dynamic threshold -> ACTIVE + * ACTIVE -> held for holdDurationS seconds, listener notified + * once on entry -> COOLDOWN + * COOLDOWN -> held for cooldownDurationS seconds -> IDLE + * + * Raw LSB units (not converted to physical units) are used throughout + * for efficiency and to avoid floating-point on resource-limited MCUs. + * + * Default tuning values are taken directly from wrist_tilt11.py and + * validated on three BMI270 datasets (running, walking, stationary): + * motionWindowS = 5.0 s + * avgSwingStationary= 50 LSB + * avgSwingWalking = 60 LSB + * avgSwingRunning = 400 LSB + * gxThreshStationary= 3000 LSB + * gxThreshWalking = 5100 LSB + * gxThreshRunning = 5300 LSB + * holdDurationS = 3.0 s + * cooldownDurationS = 0.5 s + * + * Sample rate assumption: 100 Hz (10 ms / sample). + * Adjustable via Config::sampleRateHz. + ******************************************************************************/ + +#ifndef WRIST_TILT_DETECTOR_HPP +#define WRIST_TILT_DETECTOR_HPP + +#include +#include + + /******************************************************************************* + * @brief Single IMU sample carrying the two axes used by this detector. + * + * Values are raw 16-bit signed integers as delivered by the sensor + * FIFO — no scaling or unit conversion applied. + ******************************************************************************/ +struct TiltImuSample { + int16_t ayLsb; /**< Accelerometer Y axis, raw LSB (motion classification) */ + int16_t gxLsb; /**< Gyroscope X axis, raw LSB (gesture trigger) */ + uint32_t timestampMs; /**< Absolute timestamp of this sample, ms */ +}; + +/******************************************************************************* + * @brief Motion activity class reported by the internal classifier. + ******************************************************************************/ +enum class MotionClass : uint8_t { + STATIONARY = 0, + WALKING = 1, + RUNNING = 2, +}; + +/******************************************************************************* + * @brief Wrist-tilt gesture detector. + * + * Thread safety: NOT thread-safe. Call addBatch() from a single task. + * + * Typical usage (FIFO interrupt context, 50-sample batches at 100 Hz): + * + * WristTiltDetector detector; + * detector.setListener(&myListener); + * + * // in FIFO callback: + * TiltImuSample batch[50]; + * fillBatchFromFifo(batch, 50); + * detector.addBatch(batch, 50); + ******************************************************************************/ +class WristTiltDetector { +public: + /*-------------------------------------------------------------------------- + * Configuration + *------------------------------------------------------------------------*/ + struct Config { + /** Input sample rate, Hz. Used to size the motion window and timers. */ + float sampleRateHz = 100.0f; + + /** + * Motion classification window length, seconds. + * avg_swing is computed over the most recent (sampleRateHz * motionWindowS) + * samples. Longer windows give more stable classification but respond + * slower to activity changes. + */ + float motionWindowS = 5.0f; + + /** + * @defgroup MotionThresholds avg_swing thresholds (raw LSB) + * + * avg_swing = mean of |ay[i] - ay[i-1]| over the motion window. + * + * Classification logic: + * avg_swing > avgSwingRunning -> RUNNING + * avg_swing > avgSwingWalking -> WALKING + * avg_swing < avgSwingStationary -> STATIONARY + * (else: retain current class — hysteresis band between thresholds) + * @{ + */ + float avgSwingStationary = 50.0f; /**< Upper bound for STATIONARY */ + float avgSwingWalking = 60.0f; /**< Lower bound for WALKING */ + float avgSwingRunning = 400.0f; /**< Lower bound for RUNNING */ + /** @} */ + + /** + * @defgroup GxThresholds Peak |GX| thresholds per motion class (raw LSB) + * + * A single sample must exceed this threshold to trigger the state + * machine transition IDLE -> ACTIVE. + * @{ + */ + int32_t gxThreshStationary = 3000; /**< LSB — stationary wrist tilt */ + int32_t gxThreshWalking = 5100; /**< LSB — walking wrist tilt */ + int32_t gxThreshRunning = 5300; /**< LSB — running wrist tilt */ + /** @} */ + + /** + * Duration to hold the ACTIVE state after a gesture is detected, s. + * The listener is called once when entering ACTIVE. + */ + float holdDurationS = 3.0f; + + /** Minimum gap between two consecutive gesture events, s. */ + float cooldownDurationS = 0.5f; + }; + + /*-------------------------------------------------------------------------- + * IListener + *------------------------------------------------------------------------*/ + class IListener { + public: + virtual ~IListener() = default; + + /** + * @brief Called once when a wrist-tilt gesture is detected. + * @param timestampMs Timestamp of the triggering sample, ms. + */ + virtual void onWristTilt(uint32_t timestampMs) = 0; + + /** + * @brief Called every time the detected motion class changes. + * @param motionClass New motion class. + * @param timestampMs Timestamp of the sample that caused the change, ms. + */ + virtual void onMotionClassChange(MotionClass motionClass, + uint32_t timestampMs) + {} + }; + + /*-------------------------------------------------------------------------- + * Construction / lifecycle + *------------------------------------------------------------------------*/ + + /** + * @brief Construct with explicit configuration. + * @param cfg Tuning parameters. + */ + explicit WristTiltDetector(const Config& cfg) noexcept; + + /** @brief Construct with default configuration. */ + WristTiltDetector() noexcept : WristTiltDetector(Config{}) {} + + /** + * @brief Set or replace the event listener. + * @param listener Pointer to listener; nullptr disables all callbacks. + */ + void setListener(IListener* listener) noexcept; + + /** + * @brief Reset all internal state to initial values. + * Configuration and listener are preserved. + */ + void reset() noexcept; + + /** + * @brief Apply a new configuration and reset all internal state. + * + * Equivalent to constructing a fresh instance with the given config + * while keeping the current listener. Must be called before the + * first addBatch() call when the default constructor was used and + * non-default tuning is required. + * + * @param cfg New tuning parameters to apply. + */ + void setConfig(const Config& cfg) noexcept; + + /*-------------------------------------------------------------------------- + * Main processing + *------------------------------------------------------------------------*/ + + /** + * @brief Process one batch of IMU samples. + * + * Must be called for every incoming batch in chronological order. + * Samples within the batch must also be in chronological order. + * + * @param samples Pointer to array of TiltImuSample. + * @param count Number of valid samples in the array. + * @return true if at least one gesture event was fired in this batch. + * @return false otherwise. + */ + bool addBatch(const TiltImuSample* samples, size_t count) noexcept; + + /*-------------------------------------------------------------------------- + * Diagnostics + *------------------------------------------------------------------------*/ + + /** @brief Total gesture events fired since construction or last reset(). */ + uint32_t totalEvents() const noexcept { return mTotalEvents; } + + /** @brief Current motion classification. */ + MotionClass currentMotionClass() const noexcept { return mMotionClass; } + + /** @brief Current avg_swing value (last computed, raw LSB). */ + float lastAvgSwing() const noexcept { return mLastAvgSwing; } + +private: + /*-------------------------------------------------------------------------- + * Internal types + *------------------------------------------------------------------------*/ + enum class TiltState : uint8_t { IDLE, ACTIVE, COOLDOWN }; + + /*-------------------------------------------------------------------------- + * Internal helpers + *------------------------------------------------------------------------*/ + + /** + * @brief Push one AY sample into the sliding window and update mGxSum. + * @param ay AY value of the new sample. + * @param prevAy AY value of the previous sample (for delta computation). + */ + void pushMotionSample(int16_t ay, int16_t prevAy) noexcept; + + /** + * @brief Compute current avg_swing from the running sum. + * @retval Average absolute delta of AY over the motion window, LSB. + */ + float computeAvgSwing() const noexcept; + + /** + * @brief Update mMotionClass based on current avg_swing. + * @param avgSwing Result of computeAvgSwing(). + * @param tsMs Timestamp of the triggering sample for the callback. + */ + void updateMotionClass(float avgSwing, uint32_t tsMs) noexcept; + + /** + * @brief Return the GX detection threshold for the current motion class. + * @retval Threshold in raw LSB. + */ + int32_t dynamicGxThreshold() const noexcept; + + /** + * @brief Process one sample through the tilt state machine. + * @param sample Current IMU sample. + * @return true if a gesture event was fired. + */ + bool processSample(const TiltImuSample& sample) noexcept; + + /*-------------------------------------------------------------------------- + * Motion window ring buffer + * + * Stores the absolute delta |ay[i] - ay[i-1]| for each sample so the + * running sum can be maintained in O(1) per sample. + *------------------------------------------------------------------------*/ + static constexpr uint16_t MAX_MOTION_WIN = 1024u; /**< Max window samples */ + + float mDeltaBuf[MAX_MOTION_WIN] = {}; /**< Ring: |ay[i] - ay[i-1]| */ + uint16_t mMotionHead = 0u; /**< Write index in ring */ + uint16_t mMotionFilled = 0u; /**< Samples stored (<= capacity)*/ + uint16_t mMotionCapacity = 0u; /**< Window size in samples */ + float mDeltaSum = 0.0f; /**< Running sum of mDeltaBuf */ + + int16_t mPrevAy = 0; /**< Previous AY for delta calc */ + bool mHasPrevAy = false; + + /*-------------------------------------------------------------------------- + * Tilt state machine + *------------------------------------------------------------------------*/ + TiltState mTiltState = TiltState::IDLE; + uint32_t mStateDeadline = 0u; /**< Sample count when state timer expires */ + uint32_t mSampleCount = 0u; /**< Total samples processed */ + + uint32_t mHoldSamples = 0u; /**< holdDurationS * sampleRateHz */ + uint32_t mCooldownSamples = 0u; /**< cooldownDurationS * sampleRateHz */ + + /*-------------------------------------------------------------------------- + * Classification & diagnostics + *------------------------------------------------------------------------*/ + MotionClass mMotionClass = MotionClass::STATIONARY; + float mLastAvgSwing = 0.0f; + uint32_t mTotalEvents = 0u; + + Config mCfg; + IListener* mListener = nullptr; +}; + +#endif // WRIST_TILT_DETECTOR_HPP diff --git a/Apps/Workout/Software/Libs/Header/icon_30x30.h b/Apps/Workout/Software/Libs/Header/icon_30x30.h new file mode 100644 index 00000000..e3c62d02 --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/icon_30x30.h @@ -0,0 +1,78 @@ +/* + * Auto-generated by png2abgr2222.py + * Do not edit by hand. + */ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Source: icon_30x30.png | 30x30 | 900 bytes ABGR2222 */ +#define ICON_30X30_WIDTH 30 +#define ICON_30X30_HEIGHT 30 +#define ICON_30X30_SIZE 900 +static const uint8_t ICON_30X30_ABGR2222[900] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xA8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, + 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xA8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x28, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, + 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, 0xAA, 0x6A, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x28, 0x68, 0x68, 0x28, 0x00, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE9, 0xFF, 0xFF, 0xFF, 0xEA, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE9, 0xFF, 0xFF, 0xFF, 0xE9, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE9, 0xFF, + 0xFF, 0xFF, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE9, 0xFF, 0xFF, 0xFF, + 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xE8, 0xA8, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xAA, 0xFF, 0xFF, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x2A, 0xAA, 0xE9, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x68, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, + 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, + 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xD4, 0xE8, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, + 0x68, 0x00, 0x00, 0x00 +}; + +#ifdef __cplusplus +} +#endif diff --git a/Apps/Workout/Software/Libs/Header/icon_60x60.h b/Apps/Workout/Software/Libs/Header/icon_60x60.h new file mode 100644 index 00000000..f5329ee5 --- /dev/null +++ b/Apps/Workout/Software/Libs/Header/icon_60x60.h @@ -0,0 +1,246 @@ +/* + * Auto-generated by png2abgr2222.py + * Do not edit by hand. + */ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Source: icon_60x60.png | 60x60 | 3600 bytes ABGR2222 */ +#define ICON_60X60_WIDTH 60 +#define ICON_60X60_HEIGHT 60 +#define ICON_60X60_SIZE 3600 +static const uint8_t ICON_60X60_ABGR2222[3600] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xA8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xD4, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xA8, 0xA8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xD4, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xA8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xD4, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0xA8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xD4, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0xA8, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, + 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0xA8, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, + 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, 0xFF, 0xFF, 0xEA, 0xAA, 0x2A, + 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0xA8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x28, 0x00, 0x00, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xAA, 0x2A, 0x00, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, + 0x28, 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEA, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xD4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE9, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xD4, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xA8, 0xA8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xD4, 0x00, 0x6A, 0xEA, 0xFF, 0xFF, 0xFF, 0xE9, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, + 0x00, 0x6A, 0xEA, 0xFF, 0xEA, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, + 0xAA, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xA8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xE8, 0xE8, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, + 0xE8, 0xE8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xA8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, + 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xA8, 0xE8, 0xA8, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#ifdef __cplusplus +} +#endif diff --git a/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp new file mode 100644 index 00000000..938250bb --- /dev/null +++ b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp @@ -0,0 +1,182 @@ +/** + ****************************************************************************** + * @file ActivitySummarySerializer.cpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Serializes/Deserializes summary data to a file. + ****************************************************************************** + * + ****************************************************************************** + */ + +#include "ActivitySummarySerializer.hpp" + +#include +#include +#include + +#include "SDK/JSON/JsonStreamWriter.hpp" +#include "SDK/JSON/JsonStreamReader.hpp" + +#define LOG_MODULE_PRX "ActivitySummarySerializer" +#define LOG_MODULE_LEVEL LOG_LEVEL_DEBUG +#include "SDK/UnaLogger/Logger.h" + +ActivitySummarySerializer::ActivitySummarySerializer(const SDK::Kernel& kernel, + const char* pathToFile) : + mKernel(kernel), mPath(pathToFile) +{ + assert(pathToFile != nullptr); +} + +bool ActivitySummarySerializer::save(const ActivitySummary& summary) +{ + const char* slash = strrchr(mPath, '/'); + if (slash) { + char buff[SDK::Interface::IFileSystem::skMaxPathLen]{ }; + snprintf(buff, sizeof(buff), "%.*s", static_cast(slash - mPath), mPath); + // Create dir + if (!mKernel.fs.mkdir(buff)) { + return false; + } + } + + std::unique_ptr file = mKernel.fs.file(mPath); + + if (!file) { + return false; + } + + if (!file->open(true, true)) { + file.reset(); + return false; + } + + SDK::JsonStreamWriter writer(file.get()); + + writer.startMap(); + + writer.add("utc", static_cast(summary.utc)); + writer.add("time", static_cast(summary.time)); + writer.add("hr_max", summary.hrMax); + writer.add("hr_avg", summary.hrAvg); + writer.add("calories", summary.calories); + + writer.add("lap_count", static_cast(summary.laps.size())); + writer.startArray("laps"); + for (const LapSummary& lap : summary.laps) { + writer.startMap(); + writer.add("dur", static_cast(lap.duration)); + writer.add("hr_avg", lap.hrAvg); + writer.add("hr_max", lap.hrMax); + writer.endMap(); + } + writer.endArray(); + + writer.endMap(); + + file->flush(); + file->close(); + + return true; +} + +bool ActivitySummarySerializer::load(ActivitySummary& summary) +{ + std::unique_ptr file = mKernel.fs.file(mPath); + + if (!file) { + return false; + } + + if (!file->exist()) { + file.reset(); + return false; + } + + if (!file->open(false, false)) { + file.reset(); + return false; + } + + size_t fileSize = file->size(); + if (fileSize == 0) { // Check for adequate size + file->close(); + file.reset(); + return false; + } + + char* buffer = new (std::nothrow)char[fileSize]; + if (buffer == nullptr) { + file->close(); + file.reset(); + return false; + } + + size_t read = 0; + bool status = (file->read(buffer, fileSize, read) || read != fileSize); + + file->close(); + file.reset(); + + if (!status) { + delete[] buffer; + return false; + } + + SDK::JsonStreamReader reader(buffer, fileSize); + + if (!reader.validate()) { + LOG_ERROR("JSON is invalid\n"); + delete[] buffer; + return false; + } + + // If any fields are missing, just ignore it. + +#if defined(SIMULATOR) +#if defined(_USE_32BIT_TIME_T) + uint32_t tmp; +#else + uint64_t tmp; +#endif + reader.get("time", tmp); + summary.time = static_cast(tmp); + reader.get("utc", tmp); + summary.utc = static_cast(tmp); +#else + reader.get("time", summary.time); + reader.get("utc", summary.utc); +#endif + reader.get("hr_max", summary.hrMax); + reader.get("hr_avg", summary.hrAvg); + summary.calories = 0.0f; + reader.get("calories", summary.calories); + + // Laps + uint32_t lapCount = 0; + reader.get("lap_count", lapCount); + summary.laps.clear(); + summary.laps.reserve(lapCount); + for (uint32_t i = 0; i < lapCount; ++i) { + char query[32]; + LapSummary lap{}; + + uint32_t dur = 0; + snprintf(query, sizeof(query), "laps[%" PRIu32 "].dur", i); + reader.get(query, dur); + lap.duration = static_cast(dur); + + snprintf(query, sizeof(query), "laps[%" PRIu32 "].hr_avg", i); + reader.get(query, lap.hrAvg); + + snprintf(query, sizeof(query), "laps[%" PRIu32 "].hr_max", i); + reader.get(query, lap.hrMax); + + summary.laps.push_back(lap); + } + + delete[] buffer; + + return true; +} diff --git a/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp b/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp new file mode 100644 index 00000000..033dcc17 --- /dev/null +++ b/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp @@ -0,0 +1,527 @@ +/** + ****************************************************************************** + * @file ActivityWriter.hpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Serializes activity data to a file. + ****************************************************************************** + * + ****************************************************************************** + */ + +#include "ActivityWriter.hpp" + +#include "SDK/Interfaces/IFileSystem.hpp" +#include "SDK/JSON/JsonStreamWriter.hpp" + +extern "C" { +#include "fit_product.h" +#include "fit_crc.h" +} + +#include +#include + +#define LOG_MODULE_PRX "ActivityWriter" +#define LOG_MODULE_LEVEL LOG_LEVEL_DEBUG +#include "SDK/UnaLogger/Logger.h" + +ActivityWriter::ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir) + : mKernel(kernel), mPath(pathToDir) + , mFHFileID(static_cast(MsgNumber::FILE), fit_mesg_defs[FIT_MESG_FILE_ID]) + , mFHDeveloper(static_cast(MsgNumber::DEVELOP), fit_mesg_defs[FIT_MESG_DEVELOPER_DATA_ID]) + , mFHLap(static_cast(MsgNumber::LAP), fit_mesg_defs[FIT_MESG_LAP]) + , mFHSession(static_cast(MsgNumber::SESSION), fit_mesg_defs[FIT_MESG_SESSION]) + , mFHEvent(static_cast(MsgNumber::EVENT), fit_mesg_defs[FIT_MESG_EVENT]) + , mFHActivity(static_cast(MsgNumber::ACTIVITY), fit_mesg_defs[FIT_MESG_ACTIVITY]) + , mFHRecord(static_cast(MsgNumber::RECORD), fit_mesg_defs[FIT_MESG_RECORD]) + , mFHBatteryLevelField(static_cast(MsgNumber::BATTERY_LEVEL), 2, { &mFHRecord }) + , mFHBatteryVoltageField(static_cast(MsgNumber::BATTERY_VOLTAGE), 3, { &mFHRecord }) +{ + assert(pathToDir != nullptr); + + mFHFileID.init(); + + mFHDeveloper.init(); + + mFHLap.init({ FIT_LAP_FIELD_NUM_TIMESTAMP, + FIT_LAP_FIELD_NUM_START_TIME, + FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, + FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, + FIT_LAP_FIELD_NUM_MESSAGE_INDEX, + FIT_LAP_FIELD_NUM_AVG_HEART_RATE, + FIT_LAP_FIELD_NUM_MAX_HEART_RATE, + FIT_LAP_FIELD_NUM_TOTAL_CALORIES }); + + mFHSession.init({ FIT_SESSION_FIELD_NUM_TIMESTAMP, + FIT_SESSION_FIELD_NUM_START_TIME, + FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME, + FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME, + FIT_SESSION_FIELD_NUM_MESSAGE_INDEX, + FIT_SESSION_FIELD_NUM_NUM_LAPS, + FIT_SESSION_FIELD_NUM_SPORT, + FIT_SESSION_FIELD_NUM_SUB_SPORT, + FIT_SESSION_FIELD_NUM_AVG_HEART_RATE, + FIT_SESSION_FIELD_NUM_MAX_HEART_RATE, + FIT_SESSION_FIELD_NUM_TOTAL_CALORIES }); + + mFHEvent.init({ FIT_EVENT_FIELD_NUM_TIMESTAMP, + FIT_EVENT_FIELD_NUM_EVENT, + FIT_EVENT_FIELD_NUM_EVENT_TYPE }); + + mFHActivity.init({ FIT_ACTIVITY_FIELD_NUM_TIMESTAMP, + FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME, + FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP, + FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS }); + + mFHRecord.init({ FIT_RECORD_FIELD_NUM_TIMESTAMP, + FIT_RECORD_FIELD_NUM_HEART_RATE }); + + mFHBatteryLevelField.init({ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, + FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, + FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID }); + + mFHBatteryVoltageField.init({ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, + FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, + FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID }); +} + +void ActivityWriter::start(const AppInfo& info) +{ + // Reset counter + mLapCounter = 0; + mDataCRC = 0; + + createAndOpenFile(info.timestamp); + + if (!mFile) { + return; + } + + SDK::Interface::IFile* fp = mFile.get(); + + // Add empty header + WriteFileHeader(fp); + + // Write file id message. + { + mFHFileID.writeDef(fp); + + FIT_FILE_ID_MESG file_id_mesg{}; + strncpy(file_id_mesg.product_name, "UNA Watch", FIT_FILE_ID_MESG_PRODUCT_NAME_COUNT); + file_id_mesg.serial_number = 0; + file_id_mesg.time_created = unixToFitTimestamp(info.timestamp); + file_id_mesg.manufacturer = FIT_MANUFACTURER_DEVELOPMENT; + file_id_mesg.product = 0; + file_id_mesg.number = 0; + file_id_mesg.type = FIT_FILE_ACTIVITY; + + mFHFileID.writeMessage(&file_id_mesg, fp); + } + + // Developer Data ID Message + { + mFHDeveloper.writeDef(fp); + + FIT_DEVELOPER_DATA_ID_MESG developer{}; + strncpy(reinterpret_cast(developer.developer_id), info.devID.c_str(), FIT_DEVELOPER_DATA_ID_MESG_DEVELOPER_ID_COUNT); + strncpy(reinterpret_cast(developer.application_id), info.appID.c_str(), FIT_DEVELOPER_DATA_ID_MESG_APPLICATION_ID_COUNT); + developer.application_version = info.appVersion; + developer.manufacturer_id = FIT_MANUFACTURER_DEVELOPMENT; + developer.developer_data_index = 0; + + mFHDeveloper.writeMessage(&developer, fp); + } + + // Additional fields + { + // Field 0: "battery level in percents" + mFHBatteryLevelField.writeDef(fp); + FIT_FIELD_DESCRIPTION_MESG battLevel{}; + strncpy(battLevel.field_name, "batteryLevel", FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME_COUNT - 1); + strncpy(battLevel.units, "%", FIT_FIELD_DESCRIPTION_MESG_UNITS_COUNT - 1); + battLevel.developer_data_index = 0; + battLevel.field_definition_number = mFHBatteryLevelField.getFieldID(); + battLevel.fit_base_type_id = FIT_BASE_TYPE_UINT8; + mFHBatteryLevelField.writeMessage(&battLevel, fp); + + // Field 1: "battery voltage in mV" + mFHBatteryVoltageField.writeDef(fp); + FIT_FIELD_DESCRIPTION_MESG battVoltage{}; + strncpy(battVoltage.field_name, "battVoltage", FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME_COUNT - 1); + strncpy(battVoltage.units, "mV", FIT_FIELD_DESCRIPTION_MESG_UNITS_COUNT - 1); + battVoltage.developer_data_index = 0; + battVoltage.field_definition_number = mFHBatteryVoltageField.getFieldID(); + battVoltage.fit_base_type_id = FIT_BASE_TYPE_UINT16; + mFHBatteryVoltageField.writeMessage(&battVoltage, fp); + } + + mFHEvent.writeDef(fp); + mFHActivity.writeDef(fp); + + mFHRecord.writeDef(fp); + + mFHLap.writeDef(fp); + mFHSession.writeDef(fp); + + // Write Event message - START Event + AddMessageEvent(info.timestamp, FIT_EVENT_TYPE_START); +} + +void ActivityWriter::pause(std::time_t timestamp) +{ + if (!mFile) { + return; + } + + // Write Event message - STOP Event + AddMessageEvent(timestamp, FIT_EVENT_TYPE_STOP); +} + +void ActivityWriter::resume(std::time_t timestamp) +{ + if (!mFile) { + return; + } + + // Write Event message - START Event + AddMessageEvent(timestamp, FIT_EVENT_TYPE_START); +} + +FIT_RECORD_MESG ActivityWriter::prepareRecordMsg(const RecordData& record) +{ + FIT_RECORD_MESG msg; + + Fit_InitMesg(fit_mesg_defs[FIT_MESG_RECORD], &msg); + + msg.timestamp = unixToFitTimestamp(record.timestamp); + + if (record.has(RecordData::Field::HEART_RATE)) { + msg.heart_rate = static_cast(record.heartRate); + } + + return msg; +} + +void ActivityWriter::addRecord(const RecordData& record) +{ + if (!mFile) { + return; + } + + const FIT_RECORD_MESG msg = prepareRecordMsg(record); + + mFHRecord.writeMessage(&msg, mFile.get()); + + // The record definition always declares the battery developer fields, + // so every data message must carry them. When no fresh battery sample + // is available this tick, emit FIT invalid sentinels instead of skipping + // them -- otherwise the file goes short and downstream parsers lose sync. + const FIT_UINT8 soc = record.has(RecordData::Field::BATTERY) + ? record.batteryLevel + : FIT_UINT8_INVALID; + const FIT_UINT16 voltage = record.has(RecordData::Field::BATTERY) + ? record.batteryVoltage + : FIT_UINT16_INVALID; + + mFHRecord.writeFieldMessage(0, &soc, mFile.get()); + mFHRecord.writeFieldMessage(1, &voltage, mFile.get()); +} + +void ActivityWriter::addLap(const LapData& lap) +{ + if (!mFile) { + return; + } + SDK::Interface::IFile* fp = mFile.get(); + + FIT_LAP_MESG lap_mesg{}; + Fit_InitMesg(fit_mesg_defs[FIT_MESG_LAP], &lap_mesg); + + lap_mesg.message_index = 0; + + lap_mesg.timestamp = unixToFitTimestamp(lap.timestamp); // 1 * s + 0, Lap end time + lap_mesg.start_time = unixToFitTimestamp(lap.timeStart); + lap_mesg.total_elapsed_time = static_cast((lap.elapsed) * 1000); // 1000 * s + 0, Time (includes pauses) + lap_mesg.total_timer_time = static_cast((lap.duration) * 1000); // 1000 * s + 0, Timer Time (excludes pauses) + + lap_mesg.avg_heart_rate = static_cast(lap.hrAvg);// 1 * bpm + 0, average heart rate (excludes pause time) + lap_mesg.max_heart_rate = static_cast(lap.hrMax); // 1 * bpm + 0, + lap_mesg.total_calories = static_cast(lap.calories + 0.5f); // 1 * kcal + 0 + + mFHLap.writeMessage(&lap_mesg, fp); + + mLapCounter++; +} + +void ActivityWriter::stop(const TrackData& track) +{ + if (!mFile) { + return; + } + + SDK::Interface::IFile* fp = mFile.get(); + + // Write Session message. + { + FIT_SESSION_MESG session_mesg{}; + Fit_InitMesg(fit_mesg_defs[FIT_MESG_SESSION], &session_mesg); + + session_mesg.message_index = 0; + session_mesg.sport = FIT_SPORT_GENERIC; + session_mesg.sub_sport = FIT_SUB_SPORT_GENERIC; // TODO: select correct type + session_mesg.timestamp = unixToFitTimestamp(track.timestamp); // 1 * s + 0, Session end time + session_mesg.start_time = unixToFitTimestamp(track.timeStart); + + session_mesg.total_elapsed_time = static_cast(track.elapsed * 1000); // 1000 * s + 0, Time (includes pauses) + session_mesg.total_timer_time = static_cast(track.duration * 1000); // 1000 * s + 0, Timer Time (excludes pauses) + + session_mesg.avg_heart_rate = static_cast(track.hrAvg); // 1 * bpm + 0, average heart rate (excludes pause time) + session_mesg.max_heart_rate = static_cast(track.hrMax); // 1 * bpm + 0, + session_mesg.total_calories = static_cast(track.calories + 0.5f); // 1 * kcal + 0 + + session_mesg.num_laps = mLapCounter; + + mFHSession.writeMessage(&session_mesg, fp); + } + + // Write Activity message. + { + FIT_ACTIVITY_MESG activity_mesg {}; + + activity_mesg.timestamp = unixToFitTimestamp(track.timestamp); + activity_mesg.local_timestamp = unixToFitTimestamp(epochToLocal(track.timestamp)); // timestamp epoch expressed in local time + activity_mesg.total_timer_time = static_cast(track.duration * 1000); // 1000 * s + 0, Exclude pauses + activity_mesg.num_sessions = 1; + + mFHActivity.writeMessage(&activity_mesg, fp); + } + + fp->seek(0); + + WriteFileHeader(fp); + + WriteCRC(fp); + + saveFile(); + + saveSummary(track); +} + +void ActivityWriter::discard() +{ + deleteFile(); +} + +void ActivityWriter::AddMessageEvent(std::time_t t, FIT_EVENT_TYPE type) +{ + FIT_EVENT_MESG event_mesg{}; + + event_mesg.timestamp = unixToFitTimestamp(t); + event_mesg.event = FIT_EVENT_TIMER; + event_mesg.event_type = type; + + mFHEvent.writeMessage(&event_mesg, mFile.get()); +} + +bool ActivityWriter::createAndOpenFile(std::time_t utc) +{ + char buff[256]{}; + std::tm localTime{}; +#if WIN32 + localtime_s(&localTime, &utc); +#else + localtime_r(&utc, &localTime); +#endif + + // Create directory + int len = snprintf(buff, sizeof(buff), "%s/%04u%02u/", mPath, localTime.tm_year + 1900, localTime.tm_mon + 1); + if (len <= 0 || !mKernel.fs.mkdir(buff)) { + LOG_ERROR("Failed to create dir [%s]\n", buff); + return false; + } + + // Create file + snprintf(&buff[len], sizeof(buff) - len, "activity_%04u%02u%02uT%02u%02u%02u.fit", + localTime.tm_year + 1900, localTime.tm_mon + 1, localTime.tm_mday, + localTime.tm_hour, localTime.tm_min, localTime.tm_sec); + + mFile = mKernel.fs.file(buff); + if (!mFile || !mFile->open(true, true)) { // write mode, override + LOG_ERROR("Failed to create file [%s]\n", buff); + mFile.reset(); + return false; + } + + return true; +} + +void ActivityWriter::saveFile() +{ + if (!mFile) { + return; + } + + mFile->flush(); + mFile->close(); +} + +void ActivityWriter::deleteFile() +{ + if (!mFile) { + return; + } + + if (mFile->isOpen()) { + mFile->close(); + } + + mFile->remove(); + mFile.reset(); +} + +void ActivityWriter::saveSummary(const TrackData& track) +{ + char buff[256]{}; + // Create name + size_t nameLen = strlen(mFile->getPath()); + snprintf(buff, sizeof(buff), "%.*s%s", nameLen - 3, mFile->getPath(), "json"); + + mFile->setPath(buff); + + if (!mFile->open(true, true)) { + mFile.reset(); + return; + } + + SDK::JsonStreamWriter writer(mFile.get()); + + writer.startMap(); + + writer.add("time_start", static_cast(track.timeStart)); + writer.add("duration", static_cast(track.duration)); + writer.add("hr_avg", track.hrAvg); + writer.add("activity_type", "workout"); + + writer.endMap(); + + mFile->flush(); + mFile->close(); +} + + +std::time_t ActivityWriter::tm2epoch(const struct tm* tm) +{ + int y = tm->tm_year + 1900; + int m = tm->tm_mon + 1; // 1..12 + int d = tm->tm_mday; // 1..31 + + if (m <= 2) { + y -= 1; + m += 12; + } + + // Julian day + int64_t era = (y >= 0 ? y : y - 399) / 400; + uint32_t yoe = (uint32_t)(y - era * 400); + uint32_t doy = (153 * (m - 3) + 2) / 5 + d - 1; + uint32_t doe = yoe * 365 + yoe / 4 - yoe / 100 + doy; + int64_t days = era * 146097 + (int64_t)doe - 719468; // 1970-01-01 is 719468 + int64_t secs = days * 86400 + tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec; + + return (time_t)secs; +} + +time_t ActivityWriter::epochToLocal(time_t utc) +{ + std::tm localTime{}; +#if WIN32 + localtime_s(&localTime, &utc); +#else + localtime_r(&utc, &localTime); +#endif + return tm2epoch(&localTime); +} + +FIT_DATE_TIME ActivityWriter::unixToFitTimestamp(std::time_t unixTimestamp) +{ + const std::time_t FIT_EPOCH_OFFSET = 631065600; + return static_cast(unixTimestamp - FIT_EPOCH_OFFSET); +} + +// FIT-C + +void ActivityWriter::WriteFileHeader(SDK::Interface::IFile* fp) +{ + FIT_FILE_HDR file_header{}; + + file_header.header_size = FIT_FILE_HDR_SIZE; + file_header.profile_version = FIT_PROFILE_VERSION; + file_header.protocol_version = FIT_PROTOCOL_VERSION_20; + memcpy((FIT_UINT8*)&file_header.data_type, ".FIT", 4); + + fp->flush(); + size_t fileSize = fp->size(); + + if (fileSize > FIT_FILE_HDR_SIZE) { + file_header.data_size = static_cast(fileSize - FIT_FILE_HDR_SIZE); + } + else { + file_header.data_size = 0; + } + + file_header.crc = FitCRC_Calc16(&file_header, FIT_STRUCT_OFFSET(crc, FIT_FILE_HDR)); + + fp->seek(0); + + size_t bw; + fp->write(reinterpret_cast(&file_header), FIT_FILE_HDR_SIZE, bw); + + fp->flush(); + + // Move pointer to the end of the file + if (fileSize > 0) { + fp->seek(fileSize); + } +} + +void ActivityWriter::WriteCRC(SDK::Interface::IFile* fp) +{ + fp->close(); + + fp->open(false); + + FIT_UINT8 buffer[512]; + size_t size = fp->size(); + size_t pos = 0; + uint16_t crc = 0; + + while (pos < size) { + size_t toRead = size - pos; + if (toRead > sizeof(buffer)) { + toRead = sizeof(buffer); + } + + size_t br; + fp->read(reinterpret_cast(buffer), toRead, br); + + crc = FitCRC_Update16(crc, buffer, static_cast(br)); + + pos += br; + } + + fp->close(); + + fp->open(true, false); + + fp->seek(fp->size()); + + size_t bw; + fp->write(reinterpret_cast(&crc), sizeof(FIT_UINT16), bw); + fp->flush(); +} + diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp new file mode 100644 index 00000000..80addadd --- /dev/null +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -0,0 +1,820 @@ + +#include "Service.hpp" + +#include +#include +#include +#include + +#include "Settings.hpp" +#include "ActivitySummary.hpp" +#include "Track.hpp" +#include "SDK/Tools/FirmwareVersion.hpp" +#include "SDK/Messages/SensorLayerMessages.hpp" +#include "SDK/Messages/MessageGuard.hpp" +#include "SDK/Utils/Utils.hpp" +#include "SDK/Timer/Timer.hpp" + +#include "SDK/SensorLayer/DataParsers/SensorDataParserPressure.hpp" +#include "SDK/SensorLayer/DataParsers/SensorDataParserHeartRate.hpp" +#include "SDK/SensorLayer/DataParsers/SensorDataParserBatteryLevel.hpp" +#include "SDK/SensorLayer/DataParsers/SensorDataParserBatteryMetrics.hpp" +#include "SDK/SensorLayer/DataParsers/SensorDataParserWristMotion.hpp" +#include "SDK/SensorLayer/DataParsers/SensorDataParserFusionRaw.hpp" + +#define LOG_MODULE_PRX "Service" +#define LOG_MODULE_LEVEL LOG_LEVEL_INFO +#include "SDK/UnaLogger/Logger.h" + +namespace { +constexpr std::time_t kOneSecond = 1; + +} // namespace + +Service::Service(SDK::Kernel &kernel) + : mKernel(kernel) + , mGuiStarted(false) + , mGuiSender(kernel) + , mSettings{} + , mSettingsSerializer(mKernel, "settings.json") + , mSummary{} + , mActivitySummarySerializer(mKernel, "Activity/summary.json") + , mActivityWriter(mKernel, "Activity") + , mSensorPressure(SDK::Sensor::Type::PRESSURE, skSamplePeriod, skSampleLatency) + , mSensorHr(SDK::Sensor::Type::HEART_RATE, skSamplePeriod, skSampleLatency) + , mSensorBatteryLevel(SDK::Sensor::Type::BATTERY_LEVEL) + , mSensorBatteryMetrics(SDK::Sensor::Type::BATTERY_METRICS, skSamplePeriod, skSampleLatency) + , mSensorWristMotion(SDK::Sensor::Type::WRIST_MOTION) + , mSensorFusion(SDK::Sensor::Type::FUSION_RAW, 1000.0f / skFusionSampleRateHz, 100) + , mTimeTracker(kernel.sys) + , mAltitudeFilter(0.8f) + , mAltitudeCounter() + , mBatterySoc(kernel.sys) + , mBatteryVoltage(kernel.sys) + , mWristTiltDetector() + +{ + mTimeCounter.init(); + mDistanceCounter.init(); + mSpeedCounter.init(0.5f, 300.0f); + mHrCounter.init(20.0f, 300.0f); + mAltitudeCounter.init(2.0f); + + WristTiltDetector::Config config{}; + config.sampleRateHz = skFusionSampleRateHz; + mWristTiltDetector.setConfig(config); + + mWristTiltDetector.setListener(this); + mHrThresholds.fill(0); +} + +Service::~Service() +{ + disconnect(); // Cleanup resources +} + +void Service::run() +{ + LOG_INFO("Started\n"); + + // Initialize time + mTimeTracker.init(); + + // Get settings + if (!mSettingsSerializer.load(mSettings)) { + LOG_WARNING("Failed to load settings\n"); + } + + // Get summary + if (!mActivitySummarySerializer.load(mSummary)) { + LOG_WARNING("Failed to load activity summary\n"); + } + + SDK::Timer guiInitTimeout(TIMER_SECONDS(5)); + guiInitTimeout.start(); + + std::time_t processedUtc = 0; + + while (true) { + SDK::MessageBase *msg; + if (mKernel.comm.getMessage(msg, 500)) { + // Command handling + switch (msg->getType()) { + + // Kernel messages + case SDK::MessageType::COMMAND_APP_STOP: + LOG_INFO("Force exit from the application\n"); + disconnect(); // Cleanup resources + if (mTrackState != Track::State::INACTIVE) { + stopTrack(false); + } + // We must release message because this is the last event. + mKernel.comm.releaseMessage(msg); + return; + + case SDK::MessageType::COMMAND_APP_NOTIF_GUI_RUN: + LOG_INFO("GUI is now running\n"); + onStartGUI(); + break; + + case SDK::MessageType::COMMAND_APP_NOTIF_GUI_STOP: + LOG_INFO("GUI has stopped\n"); + onStopGUI(); + break; + + // Custom messages + case CustomMessage::SETTINGS_SAVE: { + LOG_DEBUG("SETTINGS_SAVE\n"); + handleEvent(*static_cast(msg)); + } break; + + case CustomMessage::TRACK_START: { + LOG_DEBUG("TRACK_START\n"); + handleEvent(*static_cast(msg)); + } break; + + case CustomMessage::TRACK_STOP: { + LOG_DEBUG("TRACK_STOP\n"); + handleEvent(*static_cast(msg)); + } break; + + case CustomMessage::TRACK_PAUSE: { + LOG_DEBUG("TRACK_PAUSE\n"); + handleEvent(*static_cast(msg)); + } break; + + case CustomMessage::TRACK_RESUME: { + LOG_DEBUG("TRACK_RESUME\n"); + handleEvent(*static_cast(msg)); + } break; + + case CustomMessage::MANUAL_LAP: { + LOG_DEBUG("MANUAL_LAP\n"); + handleEvent(*static_cast(msg)); + } break; + + // Sensors messages + case SDK::MessageType::EVENT_SENSOR_LAYER_DATA: { + auto event = static_cast(msg); + SDK::Sensor::DataBatch batch(event->data, event->count, event->stride); + handleSensorsData(event->handle, batch); + } break; + + default: + break; + } + // Release message after processing + mKernel.comm.releaseMessage(msg); + } + + + // Periodic process + if (mGuiStarted) { + // Update time every second + std::time_t utc = mTimeTracker.getExpectedUTC(); + + if (processedUtc != utc) { + processedUtc = utc; + + // Send to GUI real "local time" to display + std::tm tmNow = mTimeTracker.getLocalTime(std::time(nullptr)); + mGuiSender.time(tmNow); + + mGuiSender.battery(static_cast(mBatterySoc.get())); + + if (mTrackState != Track::State::INACTIVE) { + mTimeCounter.add(utc); + processTrack(); + } + } + } else { + // Just wait some time to see if GUI starts + if (guiInitTimeout.expired()) { + LOG_INFO("No activities, exiting service\n"); + return; // Exit app + } + } + } +} + +void Service::connectSensors() +{ + if (!mIsSensorsConnected) { + LOG_DEBUG("Connect to sensors...\n"); + + mSensorBatteryLevel.connect(); + mSensorBatteryMetrics.connect(); + mSensorPressure.connect(); + mSensorHr.connect(); + mSensorFusion.connect(); + + mIsSensorsConnected = true; + } +} + +void Service::disconnect() +{ + if (mIsSensorsConnected) { + LOG_DEBUG("Disconnect from sensors...\n"); + + mSensorFusion.disconnect(); + mSensorHr.disconnect(); + mSensorPressure.disconnect(); + mSensorBatteryLevel.disconnect(); + mSensorBatteryMetrics.disconnect(); + + mIsSensorsConnected = false; + } +} + + +void Service::handleSensorsData(uint16_t handle, SDK::Sensor::DataBatch& data) +{ + if (mSensorPressure.matchesDriver(handle)) { + SDK::SensorDataParser::Pressure parser(data[0]); + if (parser.isDataValid()) { + if (!mAltitudeCounter.isValid()) { + mSeaLevelPressure = parser.getP0(); + } + float altitude = parser.getAltitude(parser.getPressure(), mSeaLevelPressure); + float filtered = mAltitudeFilter.execute(altitude); + mAltitudeCounter.add(filtered); + + LOG_DEBUG("Altitude %.2f (Filtered %.2f) (P0 %f, Pa %f)\n", altitude, filtered, mSeaLevelPressure, parser.getPressure()); + } + } else if (mSensorHr.matchesDriver(handle)) { + SDK::SensorDataParser::HeartRate parser(data[0]); + if (parser.isDataValid()) { + mHrCounter.add(parser.getBpm()); + mTrackData.hrTrustLevel = parser.getTrustLevel(); + LOG_DEBUG("HR %.1f, TrustLevel %.1f\n", parser.getBpm(), parser.getTrustLevel()); + } + } else if (mSensorBatteryLevel.matchesDriver(handle)) { + SDK::SensorDataParser::BatteryLevel parser(data[0]); + if (parser.isDataValid()) { + mBatterySoc.set(parser.getCharge()); + LOG_DEBUG("Battery %.1f %%\n", mBatterySoc.get()); + } + } else if (mSensorBatteryMetrics.matchesDriver(handle)) { + SDK::SensorDataParser::BatteryMetrics parser(data[0]); + if (parser.isDataValid()) { + mBatteryVoltage.set(parser.getVoltage()); + LOG_DEBUG("Battery voltage %.1f V\n", mBatteryVoltage.get()); + } + } else if (mSensorWristMotion.matchesDriver(handle)) { + SDK::SensorDataParser::WristMotion parser(data[0]); + if (parser.isDataValid()) { + LOG_DEBUG("Wrist Motion detected\n"); + backlightOn(); + } + } else if (mSensorFusion.matchesDriver(handle)) { + static constexpr uint16_t kBatchSize = 10u; + TiltImuSample batch[kBatchSize]; + uint16_t batchLen = 0; + + for (uint16_t i = 0; i < data.size(); i++) { + SDK::SensorDataParser::FusionRaw parser(data[i]); + if (parser.isDataValid()) { + SDK::SensorDataParser::FusionRaw::Data sample{}; + parser.getData(sample); + batch[batchLen].ayLsb = sample.accel.y; + batch[batchLen].gxLsb = sample.gyro.x; + batch[batchLen].timestampMs = parser.getTimestamp(); + //LOG_DEBUG("AY: %d, GX: %d\n", sample.accel.y, sample.gyro.x); + ++batchLen; + + if (batchLen == kBatchSize) { + mWristTiltDetector.addBatch(batch, kBatchSize); + batchLen = 0; + } + } + } + + if (batchLen > 0u) { + mWristTiltDetector.addBatch(batch, batchLen); + } + } +} + + +void Service::onStartGUI() +{ + mGuiStarted = true; + + setCapabilities(); + + mSensorWristMotion.connect(); + + sendInitialInfoToGui(); +} + +void Service::onStopGUI() +{ + mGuiStarted = false; + + mSensorWristMotion.disconnect(); +} + +void Service::handleEvent(const CustomMessage::TrackStart& /*event*/) +{ + // We can synchronize the time because we haven't started the track yet, + // before a new track starts. + mTimeTracker.init(); + + startTrack(mTimeTracker.getExpectedUTC()); +} + +void Service::handleEvent(const CustomMessage::TrackStop& event) +{ + stopTrack(event.discard); +} + +void Service::handleEvent(const CustomMessage::SettingsSave& event) +{ + bool updCaps = mSettings.phoneNotifEn != event.settings.phoneNotifEn; + mSettings = event.settings; + mSettingsSerializer.save(event.settings); + + if (updCaps) { + setCapabilities(); + } +} + +void Service::handleEvent(const CustomMessage::TrackPause& /*event*/) +{ + pauseTrack(true); +} + +void Service::handleEvent(const CustomMessage::TrackResume& /*event*/) +{ + pauseTrack(false); +} + +void Service::handleEvent(const CustomMessage::ManualLap& /*event*/) +{ + saveLap(); + mGuiSender.lapEnd(mTrackData.lapNum); + notifyLapEnd(); +} + +void Service::setCapabilities() +{ + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + msg->enPhoneNotification = mSettings.phoneNotifEn; + msg->enUsbChargingScreen = false; + msg->enMusicControl = true; + mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } +} + + +void Service::notifyLapEnd() +{ + backlightOn(); + playBuzzerPattern(150, 3); + playVibroPattern(SDK::Message::RequestVibroPlay::Effect::ALERT_750MS_100); +} + +void Service::notifyNewActivity() +{ + auto *msg = mKernel.comm.allocateMessage(); + if (msg) { + mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } +} + +void Service::backlightOn(uint32_t timeoutMs) +{ + auto bl = SDK::make_msg(mKernel); + if (bl) { + bl->brightness = 100; + bl->autoOffTimeoutMs = timeoutMs; + bl.send(); + } +} + +void Service::playBuzzerPattern(uint16_t beepMs, uint8_t count, uint16_t silenceMs) +{ + if (count == 0) { + return; + } + + // A series of N beeps needs 2*N-1 notes (beeps + silences between them). + // Cap to what fits in skMaxNotes: max count = (skMaxNotes + 1) / 2 = 5. + const uint8_t maxCount = (SDK::Message::RequestBuzzerPlay::skMaxNotes + 1u) / 2u; + if (count > maxCount) { + count = maxCount; + } + + auto* msg = mKernel.comm.allocateMessage(); + if (msg) { + uint8_t n = 0; + for (uint8_t i = 0; i < count; ++i) { + msg->notes[n].volume = 100; + msg->notes[n].time = beepMs; + ++n; + if (i < count - 1u) { + msg->notes[n].volume = 0; + msg->notes[n].time = silenceMs; + ++n; + } + } + msg->notesCount = n; + mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } +} + +void Service::playVibroPattern(SDK::Message::RequestVibroPlay::Effect effect, uint8_t count, uint16_t silenceMs) +{ + if (count == 0) { + return; + } + + // A series of N effects needs 2*N-1 notes (effects + silences between them). + // Cap to what fits in skMaxNotes: max count = (skMaxNotes + 1) / 2 = 4. + const uint8_t maxCount = (SDK::Message::RequestVibroPlay::skMaxNotes + 1u) / 2u; + if (count > maxCount) { + count = maxCount; + } + + auto* msg = mKernel.comm.allocateMessage(); + if (msg) { + uint8_t n = 0; + for (uint8_t i = 0; i < count; ++i) { + msg->notes[n].effect = static_cast(effect); + msg->notes[n].pause = 0; + ++n; + if (i < count - 1u) { + msg->notes[n].effect = static_cast(SDK::Message::RequestVibroPlay::Effect::NO_EFFECT); + msg->notes[n].pause = silenceMs; + ++n; + } + } + msg->notesCount = n; + mKernel.comm.sendMessage(msg); + mKernel.comm.releaseMessage(msg); + } +} + + +ActivityWriter::RecordData Service::prepareRecordData() +{ + ActivityWriter::RecordData fitRecord{}; + + fitRecord.timestamp = mTimeCounter.getCurrent(); + + bool hasHeartRate = (mHrCounter.getCurrent() > 20 && mTrackData.hrTrustLevel >= 1 && mTrackData.hrTrustLevel <= 3); + fitRecord.set(ActivityWriter::RecordData::Field::HEART_RATE, hasHeartRate); + fitRecord.heartRate = mHrCounter.getCurrent(); + + // Both samples must be checked every call; evaluate separately to avoid short-circuit. + const bool socReady = mBatterySoc.isDue(); + const bool voltReady = mBatteryVoltage.isDue(); + const bool batteryReady = socReady && voltReady; + if (batteryReady) { + mBatterySoc.consume(); + mBatteryVoltage.consume(); + } + fitRecord.set(ActivityWriter::RecordData::Field::BATTERY, batteryReady); + fitRecord.batteryLevel = static_cast(mBatterySoc.get()); + fitRecord.batteryVoltage = static_cast(mBatteryVoltage.get() * 1000); + + return fitRecord; +} + +void Service::sendInitialInfoToGui() +{ + // Settings + uint8_t hrThresholds[CustomMessage::kHrThresholdsCount]; + memcpy(hrThresholds, CustomMessage::kHrThresholdsDefault, sizeof(hrThresholds)); + + if (auto msg = SDK::make_msg(mKernel)) { + if (msg.send(100) && msg.ok()) { + mIsImperial = msg->imperialUnits; + + if (msg->heartRateCount > CustomMessage::kHrThresholdsCount) { + msg->heartRateCount = CustomMessage::kHrThresholdsCount; + } + + if (msg->heartRateCount > 0) { + // Copy received elements + uint8_t i = 0; + for (; i < msg->heartRateCount; ++i) { + hrThresholds[i] = msg->heartRateTh[i]; + } + + // Complete the array elements to the full number + for (; i < CustomMessage::kHrThresholdsCount; ++i) { + if (i > 0) { + hrThresholds[i] = hrThresholds[i - 1] + 20; + } else { + hrThresholds[i] = CustomMessage::kHrThresholdsDefault[0]; + } + } + } + } + } + + mGuiSender.settingsUpd(mSettings, mIsImperial, hrThresholds, CustomMessage::kHrThresholdsCount); + memcpy(mHrThresholds.data(), hrThresholds, sizeof(hrThresholds)); + mHrThresholdCount = CustomMessage::kHrThresholdsCount; + mGuiSender.summary(&mSummary); + mGuiSender.battery(static_cast(mBatterySoc.get())); +} + +void Service::startTrack(std::time_t utc) +{ + // Reset data + mTrackData = {}; + + mTimeCounter.reset(); + mTimeCounter.add(utc); + + mDistanceCounter.reset(); + mSpeedCounter.reset(); + mHrCounter.reset(); + mAltitudeFilter.reset(); + mAltitudeCounter.reset(); + mBatterySoc.reset(skBatteryLogPeriodMs); + mBatteryVoltage.reset(skBatteryLogPeriodMs); + mSessionNotEmpty = false; + mLapNotEmpty = false; + + mSummary = ActivitySummary{}; + mSummary.laps.reserve(10); + + // Determine lap split source + mLapDivSource = getLapDivSource(); + + mWristTiltDetector.reset(); + + connectSensors(); + + ActivityWriter::AppInfo info{}; + info.timestamp = utc; + info.appVersion = SDK::ParseVersion(BUILD_VERSION).u32; + info.devID = DEV_ID; + info.appID = APP_ID; + mActivityWriter.start(info); + + mTrackState = Track::State::ACTIVE; + + mGuiSender.trackState(mTrackState); +} + +void Service::processTrack() +{ + LOG_DEBUG("Time: %u / %u\n", static_cast(mTimeCounter.getValueActive()), static_cast(mTimeCounter.getValueTotal())); + + // Time, s + mTrackData.totalTime = mTimeCounter.getValueActive(); + mTrackData.lapTime = mTimeCounter.getLapValueActive(); + + // HR + mTrackData.hr = mHrCounter.getCurrent(); + mTrackData.avgHR = mHrCounter.getAverage(); + mTrackData.maxHR = mHrCounter.getMaximum(); + mTrackData.avgLapHR = mHrCounter.getLapAverage(); + mTrackData.maxLapHR = mHrCounter.getLapMaximum(); + updateHrDerivedMetrics(); + + // Update GUI + mGuiSender.trackData(mTrackData); + + + if (mTrackState == Track::State::ACTIVE) { + // Save record to the FIT file + ActivityWriter::RecordData fitRecord = prepareRecordData(); + mActivityWriter.addRecord(fitRecord); + + mSessionNotEmpty = true; // Session has at least one record + mLapNotEmpty = true; // Lap has at least one record + + // Next lap + bool switchLap = false; + switch (mLapDivSource) { + case LapDivSource::TIME: + switchLap = static_cast(mTimeCounter.getLapValueActive()) >= Settings::Alerts::Time::toSeconds(mSettings.alertTimeId); + break; + + case LapDivSource::OFF: + default: + break; + } + + if (switchLap) { + saveLap(); + mGuiSender.lapEnd(mTrackData.lapNum); + notifyLapEnd(); + } + + } + +} + +void Service::updateHrDerivedMetrics() +{ + mTrackData.hrZone = getHrZone(mTrackData.hr); + if (mTrackState != Track::State::ACTIVE || mTrackData.hrZone == 0) { + return; + } + + const float met = getZoneMet(mTrackData.hrZone); + const float calories = met * skDefaultWeightKg * (1.0f / 3600.0f); + mTrackData.totalCalories += calories; + mTrackData.lapCalories += calories; + mTrackData.zoneTimeSec[mTrackData.hrZone - 1] += kOneSecond; +} + +void Service::saveLap() +{ + // Accumulate lap into summary + mSummary.laps.push_back({ + mTimeCounter.getLapValueActive(), + mHrCounter.getLapAverage(), + mHrCounter.getLapMaximum(), + }); + + // Save lap to the FIT file + ActivityWriter::LapData fitLap{}; + + fitLap.timestamp = mTimeCounter.getCurrent(); + fitLap.timeStart = mTimeCounter.getCurrent() - mTimeCounter.getLapValueTotal(); + fitLap.duration = mTimeCounter.getLapValueActive(); + fitLap.elapsed = mTimeCounter.getLapValueTotal(); + + fitLap.hrAvg = mHrCounter.getLapAverage(); + fitLap.hrMax = mHrCounter.getLapMaximum(); + fitLap.calories = mTrackData.lapCalories; + + mActivityWriter.addLap(fitLap); + mTrackData.lapNum++; + + LOG_INFO("Lap_%u saved. UTC: %u\n", mTrackData.lapNum, static_cast(mTimeCounter.getCurrent())); + LOG_INFO("Time: %u / %u s\n", static_cast(mTimeCounter.getLapValueActive()), static_cast(mTimeCounter.getLapValueTotal())); + LOG_INFO("Heart rate: %.0f / %.0f bpm\n", mHrCounter.getLapAverage(), mHrCounter.getLapMaximum()); + LOG_INFO("Lap calories: %.1f kcal\n", mTrackData.lapCalories); + + // Reset lap counters + mTimeCounter.resetLap(); + mDistanceCounter.resetLap(); + mSpeedCounter.resetLap(); + mHrCounter.resetLap(); + mAltitudeCounter.resetLap(); + + // Clear track data + mTrackData.lapTime = 0; + mTrackData.avgLapHR = 0.0f; + mTrackData.maxLapHR = 0.0f; + mTrackData.lapCalories = 0.0f; + + mLapNotEmpty = false; +} + +void Service::buildPartialSummary() +{ + mSummary.utc = mTimeCounter.getCurrent(); + mSummary.time = mTimeCounter.getValueActive(); + mSummary.hrMax = mHrCounter.getMaximum(); + mSummary.hrAvg = mHrCounter.getAverage(); + mSummary.calories = mTrackData.totalCalories; +} + +void Service::stopTrack(bool discard) +{ + if (mTrackState == Track::State::INACTIVE) { + return; + } + + if (!discard && mSessionNotEmpty) { + + if (mTrackState != Track::State::PAUSED) { + mActivityWriter.pause(mTimeCounter.getCurrent()); + } + + if (mLapNotEmpty) { + saveLap(); + } + + mBatterySoc.request(); + mBatteryVoltage.request(); + ActivityWriter::RecordData fitRecord = prepareRecordData(); + mActivityWriter.addRecord(fitRecord); + + buildPartialSummary(); + + // Save summary + if (!mActivitySummarySerializer.save(mSummary)) { + LOG_ERROR("Can't save activity summary\n"); + } + mGuiSender.summary(&mSummary); + + // Save FIT file + ActivityWriter::TrackData fitTrack{}; + + fitTrack.timestamp = mTimeCounter.getCurrent(); + fitTrack.timeStart = mTimeCounter.getCurrent() - mTimeCounter.getValueTotal(); + fitTrack.duration = mTimeCounter.getValueActive(); + fitTrack.elapsed = mTimeCounter.getValueTotal(); + + fitTrack.hrAvg = mHrCounter.getAverage(); + fitTrack.hrMax = mHrCounter.getMaximum(); + fitTrack.calories = mTrackData.totalCalories; + + mActivityWriter.stop(fitTrack); + + notifyNewActivity(); + } else { + mActivityWriter.discard(); + } + + mTrackState = Track::State::INACTIVE; + LOG_INFO("Track stopped. UTC: %u\n", static_cast(mTimeCounter.getCurrent())); + LOG_INFO("Time: %u / %u s\n", static_cast(mTimeCounter.getValueActive()), static_cast(mTimeCounter.getValueTotal())); + LOG_INFO("Heart rate: %.0f / %.0f bpm\n", mHrCounter.getAverage(), mHrCounter.getMaximum()); + LOG_INFO("Calories: %.1f kcal\n", mTrackData.totalCalories); + + mGuiSender.trackState(mTrackState); + + disconnect(); +} + +void Service::pauseTrack(bool pause) +{ + if (mTrackState == Track::State::INACTIVE) { + return; + } + + if (pause && mTrackState == Track::State::ACTIVE) { + mTimeCounter.pause(); + mDistanceCounter.pause(); + mSpeedCounter.pause(); + mHrCounter.pause(); + mAltitudeCounter.pause(); + + mActivityWriter.pause(mTimeCounter.getCurrent()); + + mTrackState = Track::State::PAUSED; + LOG_INFO("Track paused. UTC: %u\n", static_cast(mTimeCounter.getCurrent())); + mGuiSender.trackState(mTrackState); + + buildPartialSummary(); + mGuiSender.summary(&mSummary); + } else if (!pause && mTrackState == Track::State::PAUSED) { + mTimeCounter.resume(); + mDistanceCounter.resume(); + mSpeedCounter.resume(); + mHrCounter.resume(); + mAltitudeCounter.resume(); + + mActivityWriter.resume(mTimeCounter.getCurrent()); + + mTrackState = Track::State::ACTIVE; + LOG_INFO("Track resumed. UTC: %u\n", static_cast(mTimeCounter.getCurrent())); + mGuiSender.trackState(mTrackState); + } +} + +Service::LapDivSource Service::getLapDivSource() +{ + if (mSettings.alertTimeId != Settings::Alerts::Time::ID_OFF) { + return LapDivSource::TIME; + } + + return LapDivSource::OFF; +} + +uint8_t Service::getHrZone(float hr) const +{ + if (mHrThresholdCount == 0 || hr <= 0.0f) { + return 0; + } + + uint8_t zone = 1; + const uint8_t thresholdCount = (mHrThresholdCount > mHrThresholds.size()) ? mHrThresholds.size() : mHrThresholdCount; + for (uint8_t i = 0; i < thresholdCount; ++i) { + if (hr > mHrThresholds[i]) { + zone = i + 1; + } + } + return (zone > 5) ? 5 : zone; +} + +float Service::getZoneMet(uint8_t zone) const +{ + static constexpr float kMetByZone[5] = {2.5f, 4.5f, 7.0f, 10.0f, 12.5f}; + if (zone < 1 || zone > 5) { + return 0.0f; + } + return kMetByZone[zone - 1]; +} + +void Service::onWristTilt(uint32_t timestampMs) +{ + LOG_DEBUG("Wrist Tilt detected\n"); + backlightOn(); +} diff --git a/Apps/Workout/Software/Libs/Sources/SettingsSerializer.cpp b/Apps/Workout/Software/Libs/Sources/SettingsSerializer.cpp new file mode 100644 index 00000000..c597ba43 --- /dev/null +++ b/Apps/Workout/Software/Libs/Sources/SettingsSerializer.cpp @@ -0,0 +1,131 @@ +/** + ****************************************************************************** + * @file SettingsSerializer.cpp + * @date 08-04-2025 + * @author Denys Saienko + * @brief Serializes/Deserializes settings to a file. + ****************************************************************************** + * + ****************************************************************************** + */ +#include "SettingsSerializer.hpp" + +#include + +#include "SDK/JSON/JsonStreamWriter.hpp" +#include "SDK/JSON/JsonStreamReader.hpp" + +#define LOG_MODULE_PRX "SettingsSerializer" +#define LOG_MODULE_LEVEL LOG_LEVEL_DEBUG +#include "SDK/UnaLogger/Logger.h" + + +SettingsSerializer::SettingsSerializer(const SDK::Kernel& kernel, + const char *pathToFile) : + mKernel(kernel), mPath(pathToFile) +{ + assert(pathToFile != nullptr); +} + +bool SettingsSerializer::save(const Settings &settings) +{ + const char *slash = strrchr(mPath, '/'); + if (slash) { + char buff[SDK::Interface::IFileSystem::skMaxPathLen] { }; + snprintf(buff, sizeof(buff), "%.*s", static_cast(slash - mPath), mPath); + // Create dir + if (!mKernel.fs.mkdir(buff)) { + return false; + } + } + + std::unique_ptr file = mKernel.fs.file(mPath); + + if (!file) { + return false; + } + + if (!file->open(true, true)) { + file.reset(); + return false; + } + + SDK::JsonStreamWriter writer(file.get()); + + writer.startMap(); + + writer.add("version", settings.version); + writer.add("phone_notif_en", settings.phoneNotifEn); + writer.add("alert_time_id", static_cast(settings.alertTimeId)); + + writer.endMap(); + + file->flush(); + file->close(); + + return true; +} + +bool SettingsSerializer::load(Settings &settings) +{ + std::unique_ptr file = mKernel.fs.file(mPath); + + if (!file) { + return false; + } + + if (!file->exist()) { + file.reset(); + return false; + } + + if (!file->open(false, false)) { + file.reset(); + return false; + } + + size_t fileSize = file->size(); + if (fileSize == 0) { // Check for adequate size + file->close(); + file.reset(); + return false; + } + + char* buffer = new (std::nothrow)char[fileSize]; + if (buffer == nullptr) { + file->close(); + file.reset(); + return false; + } + + size_t read = 0; + bool status = file->read(buffer, fileSize, read) && (read == fileSize); + + file->close(); + file.reset(); + + if (!status) { + delete[] buffer; + return false; + } + + SDK::JsonStreamReader reader(buffer, fileSize); + + if (!reader.validate()) { + LOG_ERROR("JSON is invalid\n"); + delete[] buffer; + return false; + } + + reader.get("version", settings.version); + reader.get("phone_notif_en", settings.phoneNotifEn); + uint8_t timeId = static_cast(Settings::Alerts::Time::ID_OFF); + reader.get("alert_time_id", timeId); + settings.alertTimeId = timeId < Settings::Alerts::Time::ID_COUNT + ? static_cast(timeId) + : Settings::Alerts::Time::ID_OFF; + + delete[] buffer; + + return true; +} diff --git a/Apps/Workout/Software/Libs/Sources/WristTiltDetector.cpp b/Apps/Workout/Software/Libs/Sources/WristTiltDetector.cpp new file mode 100644 index 00000000..9dcf9ac4 --- /dev/null +++ b/Apps/Workout/Software/Libs/Sources/WristTiltDetector.cpp @@ -0,0 +1,219 @@ +/******************************************************************************* + * @file WristTiltDetector.cpp + * @date 22-04-2025 + * @author Denys Saienko + * @brief Wrist-tilt gesture detector implementation. + ******************************************************************************/ + +#include "WristTiltDetector.hpp" + +#include +#include + + /******************************************************************************* + * Construction / lifecycle + ******************************************************************************/ + +WristTiltDetector::WristTiltDetector(const Config& cfg) noexcept + : mCfg(cfg) +{ + const float sr = cfg.sampleRateHz; + + mMotionCapacity = static_cast(cfg.motionWindowS * sr + 0.5f); + if (mMotionCapacity > MAX_MOTION_WIN) { + mMotionCapacity = MAX_MOTION_WIN; + } + if (mMotionCapacity == 0u) { + mMotionCapacity = 1u; + } + + mHoldSamples = static_cast(cfg.holdDurationS * sr + 0.5f); + mCooldownSamples = static_cast(cfg.cooldownDurationS * sr + 0.5f); + + reset(); +} + +void WristTiltDetector::setListener(IListener* listener) noexcept +{ + mListener = listener; +} + +void WristTiltDetector::reset() noexcept +{ + mMotionHead = 0u; + mMotionFilled = 0u; + mDeltaSum = 0.0f; + mPrevAy = 0; + mHasPrevAy = false; + + mTiltState = TiltState::IDLE; + mStateDeadline = 0u; + mSampleCount = 0u; + + mMotionClass = MotionClass::STATIONARY; + mLastAvgSwing = 0.0f; + mTotalEvents = 0u; + + std::memset(mDeltaBuf, 0, sizeof(mDeltaBuf)); +} + +void WristTiltDetector::setConfig(const Config& cfg) noexcept +{ + mCfg = cfg; + + const float sr = cfg.sampleRateHz; + + mMotionCapacity = static_cast(cfg.motionWindowS * sr + 0.5f); + if (mMotionCapacity > MAX_MOTION_WIN) { + mMotionCapacity = MAX_MOTION_WIN; + } + if (mMotionCapacity == 0u) { + mMotionCapacity = 1u; + } + + mHoldSamples = static_cast(cfg.holdDurationS * sr + 0.5f); + mCooldownSamples = static_cast(cfg.cooldownDurationS * sr + 0.5f); + + reset(); +} + +/******************************************************************************* + * Main processing + ******************************************************************************/ + +bool WristTiltDetector::addBatch(const TiltImuSample* samples, + size_t count) noexcept +{ + if (samples == nullptr || count == 0u) { + return false; + } + + bool anyTriggered = false; + + for (size_t i = 0u; i < count; ++i) { + if (processSample(samples[i])) { + anyTriggered = true; + } + } + + return anyTriggered; +} + +/******************************************************************************* + * Private helpers + ******************************************************************************/ + +void WristTiltDetector::pushMotionSample(int16_t ay, int16_t prevAy) noexcept +{ + const float delta = static_cast( + (ay >= prevAy) ? (ay - prevAy) : (prevAy - ay)); + + /* Evict oldest sample from ring if full. */ + if (mMotionFilled >= mMotionCapacity) { + mDeltaSum -= mDeltaBuf[mMotionHead]; + } else { + ++mMotionFilled; + } + + mDeltaBuf[mMotionHead] = delta; + mDeltaSum += delta; + + mMotionHead = static_cast((mMotionHead + 1u) % mMotionCapacity); +} + +float WristTiltDetector::computeAvgSwing() const noexcept +{ + if (mMotionFilled < 2u) { + return 0.0f; + } + /* mMotionFilled - 1 because we store N deltas for N+1 samples. */ + return mDeltaSum / static_cast(mMotionFilled - 1u); +} + +void WristTiltDetector::updateMotionClass(float avgSwing, + uint32_t tsMs) noexcept +{ + MotionClass next = mMotionClass; + + if (avgSwing > mCfg.avgSwingRunning) { + next = MotionClass::RUNNING; + } else if (avgSwing > mCfg.avgSwingWalking) { + next = MotionClass::WALKING; + } else if (avgSwing < mCfg.avgSwingStationary) { + next = MotionClass::STATIONARY; + } + /* Else: stay in current class (hysteresis band). */ + + if (next != mMotionClass) { + mMotionClass = next; + if (mListener != nullptr) { + mListener->onMotionClassChange(mMotionClass, tsMs); + } + } +} + +int32_t WristTiltDetector::dynamicGxThreshold() const noexcept +{ + switch (mMotionClass) { + case MotionClass::RUNNING: return mCfg.gxThreshRunning; + case MotionClass::WALKING: return mCfg.gxThreshWalking; + case MotionClass::STATIONARY: return mCfg.gxThreshStationary; + default: return mCfg.gxThreshStationary; + } +} + +bool WristTiltDetector::processSample(const TiltImuSample& sample) noexcept +{ + const uint32_t now = mSampleCount; + ++mSampleCount; + + /* --- 1. Update motion window ------------------------------------------ */ + if (mHasPrevAy) { + pushMotionSample(sample.ayLsb, mPrevAy); + } else { + mHasPrevAy = true; + } + mPrevAy = sample.ayLsb; + + const float avgSwing = computeAvgSwing(); + mLastAvgSwing = avgSwing; + updateMotionClass(avgSwing, sample.timestampMs); + + /* --- 2. Tilt state machine -------------------------------------------- */ + const int32_t gxMag = (sample.gxLsb >= 0) + ? static_cast(sample.gxLsb) + : -static_cast(sample.gxLsb); + const int32_t gxThresh = dynamicGxThreshold(); + const bool gxAbove = (gxMag > gxThresh); + + bool fired = false; + + switch (mTiltState) { + case TiltState::IDLE: + if (gxAbove) { + mTiltState = TiltState::ACTIVE; + mStateDeadline = now + mHoldSamples; + ++mTotalEvents; + fired = true; + if (mListener != nullptr) { + mListener->onWristTilt(sample.timestampMs); + } + } + break; + + case TiltState::ACTIVE: + if (now >= mStateDeadline) { + mTiltState = TiltState::COOLDOWN; + mStateDeadline = now + mCooldownSamples; + } + break; + + case TiltState::COOLDOWN: + if (now >= mStateDeadline) { + mTiltState = TiltState::IDLE; + } + break; + } + + return fired; +} \ No newline at end of file diff --git a/Apps/Workout/Software/Libs/libs.cmake b/Apps/Workout/Software/Libs/libs.cmake new file mode 100644 index 00000000..25cf8e04 --- /dev/null +++ b/Apps/Workout/Software/Libs/libs.cmake @@ -0,0 +1,10 @@ +file(GLOB_RECURSE LIBS_SOURCES CONFIGURE_DEPENDS + ${CMAKE_CURRENT_LIST_DIR}/Sources/*.c + ${CMAKE_CURRENT_LIST_DIR}/Sources/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/Source/*.c + ${CMAKE_CURRENT_LIST_DIR}/Source/*.cpp +) + +set(LIBS_INCLUDE_DIRS + ${CMAKE_CURRENT_LIST_DIR}/Header +) \ No newline at end of file From 4ad32b1efef6645ba4b0b00ba6f86db1becd26a6 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Fri, 8 May 2026 11:46:13 +0100 Subject: [PATCH 02/11] fix(workout): start HR zone at 0 so sub-zone-1 HR does not accrue calories Initialize zone to 0 in getHrZone so HR at or below the lowest kernel threshold returns no zone, matching the on-screen gauge and preventing calorie/zone-time accrual at idle/resting heart rates. --- Apps/Workout/Software/Libs/Sources/Service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp index 80addadd..bcf5230d 100644 --- a/Apps/Workout/Software/Libs/Sources/Service.cpp +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -794,7 +794,7 @@ uint8_t Service::getHrZone(float hr) const return 0; } - uint8_t zone = 1; + uint8_t zone = 0; const uint8_t thresholdCount = (mHrThresholdCount > mHrThresholds.size()) ? mHrThresholds.size() : mHrThresholdCount; for (uint8_t i = 0; i < thresholdCount; ++i) { if (hr > mHrThresholds[i]) { From bf5bb215e838b7f9894950c884527b4ce94ed9d9 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Fri, 8 May 2026 17:17:57 +0100 Subject: [PATCH 03/11] feat(Workout): use FitSDKRelease_21.202.00 and emit native session metabolic_calories Switch the Workout app over to the newer vendored FIT SDK (FitSDKRelease_21.202.00, profile RELEASE) so it can write session.metabolic_calories as a standard FIT field instead of a developer field. Also adds basal-metabolic-rate (MET 1.0) accumulation for resting/metabolic calories that always accrue during active tracking, written as session.metabolic_calories and a per-lap "resting_calories" developer field. Build wiring: - CubeIDE service .project/.cproject point at the new SDK and define FIT_PRODUCT_RELEASE. - Workout-CMake CMakeLists overrides UNA_FIT_SDK_DIR before including una-sdk.cmake and defines FIT_PRODUCT_RELEASE. - TouchGFX simulator (msvs/gcc) and una/Makefile updated likewise. Source changes: - ActivityWriter.{hpp,cpp}: include fit_product.h, drop the metabolic_calories developer field and add it to the Session message def, populate session_mesg.metabolic_calories natively, write per-lap restingCalories as a developer field. - Track.hpp: add restingCaloriesTotal / restingCaloriesLap. - Service.cpp: accrue BMR (MET 1.0) every active second regardless of HR; fall back to MET 1.0 for HR below zone 1; reset per-lap counter in saveLap. Other apps continue to build against the existing 21.171.00 EXAMPLE SDK; this change is opt-in per app. --- .../Apps/TouchGFX-GUI/simulator/gcc/Makefile | 10 +++--- .../simulator/msvs/Application.vcxproj | 14 ++++---- .../msvs/Application.vcxproj.filters | 8 ++--- .../Software/Apps/TouchGFX-GUI/una/Makefile | 3 ++ .../Apps/Workout-CMake/CMakeLists.txt | 5 +++ .../Apps/WorkoutService-CubeIDE/.cproject | 6 ++-- .../Apps/WorkoutService-CubeIDE/.project | 8 ++--- .../Software/Libs/Header/ActivityWriter.hpp | 34 ++++++++++-------- Apps/Workout/Software/Libs/Header/Track.hpp | 4 +++ .../Software/Libs/Sources/ActivityWriter.cpp | 34 +++++++++++++++--- .../Workout/Software/Libs/Sources/Service.cpp | 35 +++++++++++++------ 11 files changed, 110 insertions(+), 51 deletions(-) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile index b981c97d..995b14aa 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/gcc/Makefile @@ -38,10 +38,10 @@ Libs/Source/Simulator/Kernel/Mock/Vibro.cpp\ Libs/Source/UnaLogger/Logger.cpp\ Libs/Source/Wrappers/StdLibWrappers.c\ ThirdParty/coreJSON/source/core_json.c\ -ThirdParty/FitSDKRelease_21.171.00/c/fit.c\ -ThirdParty/FitSDKRelease_21.171.00/c/fit_convert.c\ -ThirdParty/FitSDKRelease_21.171.00/c/fit_crc.c\ -ThirdParty/FitSDKRelease_21.171.00/c/fit_product.c\ +ThirdParty/FitSDKRelease_21.202.00/c/fit.c\ +ThirdParty/FitSDKRelease_21.202.00/c/fit_convert.c\ +ThirdParty/FitSDKRelease_21.202.00/c/fit_crc.c\ +ThirdParty/FitSDKRelease_21.202.00/c/fit_product.c\ Libs/Source/JSON/JsonStreamReader.cpp\ Libs/Source/JSON/JsonStreamWriter.cpp\ Libs/Source/TrackMap/TrackMapBuilder.cpp\ @@ -88,7 +88,7 @@ ADDITIONAL_SOURCES := ADDITIONAL_INCLUDE_PATHS := $(SDK)/Libs/Header\ ../../Libs/Header\ $(SDK)/ThirdParty/coreJSON/source/include\ -$(SDK)/ThirdParty/FitSDKRelease_21.171.00/c\ +$(SDK)/ThirdParty/FitSDKRelease_21.202.00/c\ ADDITIONAL_LIBRARY_PATHS := ADDITIONAL_LIBRARIES := diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj index 0ceb74c0..de51d928 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj @@ -24,10 +24,10 @@ - - - - + + + + @@ -515,13 +515,13 @@ Level3 Disabled - WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;APP_ID="ABCDEF1234567890";DEV_ID="UNA Simulator";BUILD_VERSION="1.2.3";NOMINMAX;%(PreprocessorDefinitions) + WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;APP_ID="ABCDEF1234567890";DEV_ID="UNA Simulator";BUILD_VERSION="1.2.3";NOMINMAX;FIT_PRODUCT_RELEASE;%(PreprocessorDefinitions) false 4355 true false stdcpp17 - %(AdditionalIncludeDirectories);../../gui/include;../../../../Libs/Header;$(SdkPath)/ThirdParty/FitSDKRelease_21.171.00/c;$(SdkPath)/ThirdParty/FitSDKRelease_21.171.00/cpp;$(SdkPath)/ThirdParty/coreJSON/source/include + %(AdditionalIncludeDirectories);../../gui/include;../../../../Libs/Header;$(SdkPath)/ThirdParty/FitSDKRelease_21.202.00/c;$(SdkPath)/ThirdParty/coreJSON/source/include Windows @@ -539,7 +539,7 @@ MaxSpeed true true - WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING;NDEBUG;_CONSOLE;FIT_PRODUCT_RELEASE;%(PreprocessorDefinitions) true true stdcpp17 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters index 0886c9b9..b4e87988 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters @@ -678,16 +678,16 @@ SDK\ThirdParty\coreJSON - + SDK\ThirdParty\FIT - + SDK\ThirdParty\FIT - + SDK\ThirdParty\FIT - + SDK\ThirdParty\FIT diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile b/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile index 7bd5fad0..2baea759 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/una/Makefile @@ -174,6 +174,9 @@ VPATH_dirs := $(sort $(VPATH_dirs)) $(eval VPATH := $(VPATH):$(VPATH_dirs)) override user_cflags += -Wno-error override user_cflags += -DBUILD_VERSION=\"1.2.3\" -DAPP_ID=\"ABCDEF1234567890\" -DDEV_ID=\"UNA_Simulator\" +# Workout uses FitSDKRelease_21.202.00 with the RELEASE product profile so it +# can emit native session.metabolic_calories. Other apps stay on EXAMPLE. +override user_cflags += -DFIT_PRODUCT_RELEASE #------------------------------------------------------------------------------ textconvert_script_path := $(touchgfx_path)/framework/tools/textconvert diff --git a/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt b/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt index 1288c739..fb845e60 100644 --- a/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt +++ b/Apps/Workout/Software/Apps/Workout-CMake/CMakeLists.txt @@ -16,6 +16,11 @@ set(TOUCHGFX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../TouchGFX-GUI") # Sets toolchain before project include($ENV{UNA_SDK}/cmake/una-app.cmake) +# Workout uses the newer FIT SDK release so it can emit native FIT fields +# (e.g. session.metabolic_calories) that the older bundled SDK doesn't expose. +set(UNA_FIT_SDK_DIR "$ENV{UNA_SDK}/ThirdParty/FitSDKRelease_21.202.00") +add_compile_definitions(FIT_PRODUCT_RELEASE) + # Includes sets: SCRIPTS_PATH, # UNA_SDK_SOURCES_COMMON, UNA_SDK_SOURCES_SERVICE, UNA_SDK_SOURCES_GUI, # UNA_SDK_INCLUDE_DIRS_COMMON, UNA_SDK_INCLUDE_DIRS_SERVICE, UNA_SDK_INCLUDE_DIRS_GUI diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject index f8d07ab7..044f5a5a 100644 --- a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.cproject @@ -50,11 +50,12 @@ + diff --git a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project index 76920f43..0968db34 100644 --- a/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project +++ b/Apps/Workout/Software/Apps/WorkoutService-CubeIDE/.project @@ -251,22 +251,22 @@ SDK/ThirdParty/FitSDK/fit.c 1 - SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit.c + SDK_LOC/ThirdParty/FitSDKRelease_21.202.00/c/fit.c SDK/ThirdParty/FitSDK/fit_convert.c 1 - SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_convert.c + SDK_LOC/ThirdParty/FitSDKRelease_21.202.00/c/fit_convert.c SDK/ThirdParty/FitSDK/fit_crc.c 1 - SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_crc.c + SDK_LOC/ThirdParty/FitSDKRelease_21.202.00/c/fit_crc.c SDK/ThirdParty/FitSDK/fit_product.c 1 - SDK_LOC/ThirdParty/FitSDKRelease_21.171.00/c/fit_product.c + SDK_LOC/ThirdParty/FitSDKRelease_21.202.00/c/fit_product.c SDK/ThirdParty/coreJSON/source diff --git a/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp b/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp index ea1c4c1e..cf85cdb4 100644 --- a/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp +++ b/Apps/Workout/Software/Libs/Header/ActivityWriter.hpp @@ -20,7 +20,7 @@ #include "SDK/FitHelper/FitHelper.hpp" extern "C" { -#include "fit_example.h" +#include "fit_product.h" } /** @@ -63,23 +63,25 @@ class ActivityWriter { }; struct LapData { - std::time_t timestamp = 0; // UTC - std::time_t timeStart = 0; // UTC - std::time_t duration = 0; // seconds - std::time_t elapsed = 0; // seconds - float hrAvg = 0.0f; // bpm - float hrMax = 0.0f; // bpm - float calories = 0.0f; // kcal + std::time_t timestamp = 0; // UTC + std::time_t timeStart = 0; // UTC + std::time_t duration = 0; // seconds + std::time_t elapsed = 0; // seconds + float hrAvg = 0.0f; // bpm + float hrMax = 0.0f; // bpm + float calories = 0.0f; // kcal -- total active calories + float restingCalories = 0.0f; // kcal -- BMR over the lap (MET 1.0) }; struct TrackData { - std::time_t timestamp = 0; // UTC - std::time_t timeStart = 0; // UTC - std::time_t duration = 0; // seconds - std::time_t elapsed = 0; // seconds - float hrAvg = 0.0f; // bpm - float hrMax = 0.0f; // bpm - float calories = 0.0f; // kcal + std::time_t timestamp = 0; // UTC + std::time_t timeStart = 0; // UTC + std::time_t duration = 0; // seconds + std::time_t elapsed = 0; // seconds + float hrAvg = 0.0f; // bpm + float hrMax = 0.0f; // bpm + float calories = 0.0f; // kcal -- total active calories + float metabolicCalories = 0.0f; // kcal -- BMR over the session (MET 1.0) }; ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir); @@ -113,6 +115,7 @@ class ActivityWriter { SDK::Component::FitHelper mFHBatteryLevelField; SDK::Component::FitHelper mFHBatteryVoltageField; + SDK::Component::FitHelper mFHLapRestingCaloriesField; enum class MsgNumber { FILE = 1, @@ -124,6 +127,7 @@ class ActivityWriter { EVENT, BATTERY_LEVEL, BATTERY_VOLTAGE, + LAP_RESTING_CALORIES, }; FIT_RECORD_MESG prepareRecordMsg(const RecordData& record); diff --git a/Apps/Workout/Software/Libs/Header/Track.hpp b/Apps/Workout/Software/Libs/Header/Track.hpp index 0e5ae06e..8c58fa26 100644 --- a/Apps/Workout/Software/Libs/Header/Track.hpp +++ b/Apps/Workout/Software/Libs/Header/Track.hpp @@ -47,6 +47,10 @@ struct Data { uint8_t hrZone = 0; ///< 0 = none, 1..5 = active zone float totalCalories = 0.0f; float lapCalories = 0.0f; + /// Basal (BMR) calories accumulated at MET 1.0 every active second, regardless of HR. + /// Reported in the FIT file as session "metabolic_calories" / lap "resting_calories". + float restingCaloriesTotal = 0.0f; + float restingCaloriesLap = 0.0f; std::time_t zoneTimeSec[5] = {0, 0, 0, 0, 0}; ///< cumulative time in zones 1..5 }; diff --git a/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp b/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp index 033dcc17..fed6ad8b 100644 --- a/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp +++ b/Apps/Workout/Software/Libs/Sources/ActivityWriter.cpp @@ -37,6 +37,7 @@ ActivityWriter::ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir) , mFHRecord(static_cast(MsgNumber::RECORD), fit_mesg_defs[FIT_MESG_RECORD]) , mFHBatteryLevelField(static_cast(MsgNumber::BATTERY_LEVEL), 2, { &mFHRecord }) , mFHBatteryVoltageField(static_cast(MsgNumber::BATTERY_VOLTAGE), 3, { &mFHRecord }) + , mFHLapRestingCaloriesField(static_cast(MsgNumber::LAP_RESTING_CALORIES), 4, { &mFHLap }) { assert(pathToDir != nullptr); @@ -63,7 +64,8 @@ ActivityWriter::ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir) FIT_SESSION_FIELD_NUM_SUB_SPORT, FIT_SESSION_FIELD_NUM_AVG_HEART_RATE, FIT_SESSION_FIELD_NUM_MAX_HEART_RATE, - FIT_SESSION_FIELD_NUM_TOTAL_CALORIES }); + FIT_SESSION_FIELD_NUM_TOTAL_CALORIES, + FIT_SESSION_FIELD_NUM_METABOLIC_CALORIES }); mFHEvent.init({ FIT_EVENT_FIELD_NUM_TIMESTAMP, FIT_EVENT_FIELD_NUM_EVENT, @@ -88,6 +90,12 @@ ActivityWriter::ActivityWriter(const SDK::Kernel& kernel, const char* pathToDir) FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID }); + + mFHLapRestingCaloriesField.init({ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, + FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, + FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID }); } void ActivityWriter::start(const AppInfo& info) @@ -158,6 +166,19 @@ void ActivityWriter::start(const AppInfo& info) battVoltage.field_definition_number = mFHBatteryVoltageField.getFieldID(); battVoltage.fit_base_type_id = FIT_BASE_TYPE_UINT16; mFHBatteryVoltageField.writeMessage(&battVoltage, fp); + + // Field 2: lap-level "resting calories" (BMR over the lap, kcal). + // Kept as a developer field because resting_calories is not part of the + // public FIT Profile (session metabolic_calories below is, and lives on + // the session message as a native field instead). + mFHLapRestingCaloriesField.writeDef(fp); + FIT_FIELD_DESCRIPTION_MESG lapRestingCalories{}; + strncpy(lapRestingCalories.field_name, "resting_calories", FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME_COUNT - 1); + strncpy(lapRestingCalories.units, "kcal", FIT_FIELD_DESCRIPTION_MESG_UNITS_COUNT - 1); + lapRestingCalories.developer_data_index = 0; + lapRestingCalories.field_definition_number = mFHLapRestingCaloriesField.getFieldID(); + lapRestingCalories.fit_base_type_id = FIT_BASE_TYPE_UINT16; + mFHLapRestingCaloriesField.writeMessage(&lapRestingCalories, fp); } mFHEvent.writeDef(fp); @@ -255,6 +276,10 @@ void ActivityWriter::addLap(const LapData& lap) mFHLap.writeMessage(&lap_mesg, fp); + // Developer field: lap resting (BMR) calories, kcal. + const FIT_UINT16 restingCalories = static_cast(lap.restingCalories + 0.5f); + mFHLap.writeFieldMessage(0, &restingCalories, fp); + mLapCounter++; } @@ -280,9 +305,10 @@ void ActivityWriter::stop(const TrackData& track) session_mesg.total_elapsed_time = static_cast(track.elapsed * 1000); // 1000 * s + 0, Time (includes pauses) session_mesg.total_timer_time = static_cast(track.duration * 1000); // 1000 * s + 0, Timer Time (excludes pauses) - session_mesg.avg_heart_rate = static_cast(track.hrAvg); // 1 * bpm + 0, average heart rate (excludes pause time) - session_mesg.max_heart_rate = static_cast(track.hrMax); // 1 * bpm + 0, - session_mesg.total_calories = static_cast(track.calories + 0.5f); // 1 * kcal + 0 + session_mesg.avg_heart_rate = static_cast(track.hrAvg); // 1 * bpm + 0, average heart rate (excludes pause time) + session_mesg.max_heart_rate = static_cast(track.hrMax); // 1 * bpm + 0, + session_mesg.total_calories = static_cast(track.calories + 0.5f); // 1 * kcal + 0 + session_mesg.metabolic_calories = static_cast(track.metabolicCalories + 0.5f); // 1 * kcal + 0, BMR over the session session_mesg.num_laps = mLapCounter; diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp index bcf5230d..8fe815f7 100644 --- a/Apps/Workout/Software/Libs/Sources/Service.cpp +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -619,15 +619,27 @@ void Service::processTrack() void Service::updateHrDerivedMetrics() { mTrackData.hrZone = getHrZone(mTrackData.hr); - if (mTrackState != Track::State::ACTIVE || mTrackData.hrZone == 0) { + if (mTrackState != Track::State::ACTIVE) { return; } - const float met = getZoneMet(mTrackData.hrZone); + // Basal metabolic rate accrues every active second regardless of HR. + // Surfaced as session "metabolic_calories" / lap "resting_calories" in the FIT file. + static constexpr float kRestingMet = 1.0f; + const float restingKcal = kRestingMet * skDefaultWeightKg * (1.0f / 3600.0f); + mTrackData.restingCaloriesTotal += restingKcal; + mTrackData.restingCaloriesLap += restingKcal; + + // Active calories: zone-MET when HR is in a zone; BMR fallback otherwise + // (HR below zone 1 or no valid HR sample yet). + const float met = (mTrackData.hrZone == 0) ? kRestingMet : getZoneMet(mTrackData.hrZone); const float calories = met * skDefaultWeightKg * (1.0f / 3600.0f); mTrackData.totalCalories += calories; - mTrackData.lapCalories += calories; - mTrackData.zoneTimeSec[mTrackData.hrZone - 1] += kOneSecond; + mTrackData.lapCalories += calories; + + if (mTrackData.hrZone >= 1) { + mTrackData.zoneTimeSec[mTrackData.hrZone - 1] += kOneSecond; + } } void Service::saveLap() @@ -647,9 +659,10 @@ void Service::saveLap() fitLap.duration = mTimeCounter.getLapValueActive(); fitLap.elapsed = mTimeCounter.getLapValueTotal(); - fitLap.hrAvg = mHrCounter.getLapAverage(); - fitLap.hrMax = mHrCounter.getLapMaximum(); - fitLap.calories = mTrackData.lapCalories; + fitLap.hrAvg = mHrCounter.getLapAverage(); + fitLap.hrMax = mHrCounter.getLapMaximum(); + fitLap.calories = mTrackData.lapCalories; + fitLap.restingCalories = mTrackData.restingCaloriesLap; mActivityWriter.addLap(fitLap); mTrackData.lapNum++; @@ -671,6 +684,7 @@ void Service::saveLap() mTrackData.avgLapHR = 0.0f; mTrackData.maxLapHR = 0.0f; mTrackData.lapCalories = 0.0f; + mTrackData.restingCaloriesLap = 0.0f; mLapNotEmpty = false; } @@ -721,9 +735,10 @@ void Service::stopTrack(bool discard) fitTrack.duration = mTimeCounter.getValueActive(); fitTrack.elapsed = mTimeCounter.getValueTotal(); - fitTrack.hrAvg = mHrCounter.getAverage(); - fitTrack.hrMax = mHrCounter.getMaximum(); - fitTrack.calories = mTrackData.totalCalories; + fitTrack.hrAvg = mHrCounter.getAverage(); + fitTrack.hrMax = mHrCounter.getMaximum(); + fitTrack.calories = mTrackData.totalCalories; + fitTrack.metabolicCalories = mTrackData.restingCaloriesTotal; mActivityWriter.stop(fitTrack); From 8b80419fb66dde5bc49bfe3d3051bf3f8dc3f42b Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 13:56:12 +0100 Subject: [PATCH 04/11] fix(Workout): Missing text on Discard Confirmation Screen --- .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 1 + .../Apps/TouchGFX-GUI/assets/texts/texts.xml | 3 + .../TrackDiscardConfirmationViewBase.cpp | 2 +- .../include/texts/TextKeysAndLanguages.hpp | 1 + .../generated/texts/src/LanguageGb.cpp | 263 +++++++++--------- .../generated/texts/src/Texts.cpp | 135 ++++----- .../generated/texts/src/TypedTextDatabase.cpp | 1 + 7 files changed, 207 insertions(+), 199 deletions(-) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx index 8dc494c7..1917345a 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -585,6 +585,7 @@ }, "LineSpacing": -5, "Wildcard1": { + "TextId": "__SingleUse_FZIH", "UseBuffer": true, "BufferSize": 40 } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml index ff05bcbd..a57cfadf 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml @@ -336,6 +336,9 @@ + + Do you want to discard the activity? + <> diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp index 5d45903b..3593cb4d 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/trackdiscardconfirmation_screen/TrackDiscardConfirmationViewBase.cpp @@ -21,7 +21,7 @@ TrackDiscardConfirmationViewBase::TrackDiscardConfirmationViewBase() questionText.setPosition(35, 88, 170, 80); questionText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); questionText.setLinespacing(-5); - questionTextBuffer[0] = 0; + Unicode::snprintf(questionTextBuffer, QUESTIONTEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_FZIH).getText()); questionText.setWildcard(questionTextBuffer); questionText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); add(questionText); diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp index a405e449..c31cf2a7 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp @@ -121,6 +121,7 @@ enum TEXTS T_TEXT_SUMMARY, T_TEXT_LAP, T_TEXT_AVG_DOT_HR, + T___SINGLEUSE_FZIH, T___SINGLEUSE_Q39K, T_RESOURCEID8, T___SINGLEUSE_ICBU, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp index bc6130fb..b62f8e9e 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp @@ -10,135 +10,136 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE; // Remap all strings TEXT_LOCATION_FLASH_PRAGMA KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { - 168, // T_RESOURCEID13: "New Text" - 163, // T_RESOURCEID12: "Time" - 266, // T_RESOURCEID11: "Avg HR" - 280, // T_RESOURCEID10: "Max HR" - 168, // T_RESOURCEID9: "New Text" - 141, // T_RESOURCEID7: "CALORIES" - 195, // T_RESOURCEID6: "AVG. HR" - 266, // T_RESOURCEID5: "Avg HR" - 26, // T_RESOURCEID4: "Current Lap" - 159, // T_RESOURCEID3: "Lap Time" - 163, // T_RESOURCEID2: "Time" - 150, // T_RESOURCEID1: "Calories" - 446, // T_TMP_REGULAR_14: "<>" - 446, // T_TMP_REGULAR_14_L: "<>" - 446, // T_TMP_REGULAR_14_R: "<>" - 446, // T_TMP_REGULAR_16: "<>" - 446, // T_TMP_REGULAR_16_L: "<>" - 446, // T_TMP_REGULAR_16_R: "<>" - 446, // T_TMP_REGULAR_18: "<>" - 446, // T_TMP_REGULAR_18_L: "<>" - 446, // T_TMP_REGULAR_18_R: "<>" - 446, // T_TMP_MEDIUM_10: "<>" - 446, // T_TMP_MEDIUM_10_L: "<>" - 446, // T_TMP_MEDIUM_10_R: "<>" - 446, // T_TMP_MEDIUM_18: "<>" - 446, // T_TMP_MEDIUM_18_L: "<>" - 446, // T_TMP_MEDIUM_18_R: "<>" - 446, // T_TMP_MEDIUM_25: "<>" - 446, // T_TMP_MEDIUM_25_L: "<>" - 446, // T_TMP_MEDIUM_25_R: "<>" - 446, // T_TMP_MEDIUM_50: "<>" - 446, // T_TMP_MEDIUM_50_L: "<>" - 446, // T_TMP_MEDIUM_50_R: "<>" - 446, // T_TMP_SEMIBOLD_18: "<>" - 446, // T_TMP_SEMIBOLD_18_L: "<>" - 446, // T_TMP_SEMIBOLD_18_R: "<>" - 446, // T_TMP_SEMIBOLD_20: "<>" - 446, // T_TMP_SEMIBOLD_20_L: "<>" - 446, // T_TMP_SEMIBOLD_20_R: "<>" - 446, // T_TMP_SEMIBOLD_25: "<>" - 446, // T_TMP_SEMIBOLD_25_L: "<>" - 446, // T_TMP_SEMIBOLD_25_R: "<>" - 446, // T_TMP_SEMIBOLD_30: "<>" - 446, // T_TMP_SEMIBOLD_30_L: "<>" - 446, // T_TMP_SEMIBOLD_30_R: "<>" - 446, // T_TMP_SEMIBOLD_35: "<>" - 446, // T_TMP_SEMIBOLD_35_R: "<>" - 446, // T_TMP_SEMIBOLD_35_L: "<>" - 446, // T_TMP_SEMIBOLD_40: "<>" - 446, // T_TMP_SEMIBOLD_40_L: "<>" - 446, // T_TMP_SEMIBOLD_40_R: "<>" - 446, // T_TMP_SEMIBOLD_60: "<>" - 446, // T_TMP_SEMIBOLD_60_L: "<>" - 446, // T_TMP_SEMIBOLD_60_R: "<>" - 446, // T_TMP_ITALIC_18: "<>" - 446, // T_TMP_ITALIC_18_L: "<>" - 446, // T_TMP_ITALIC_18_R: "<>" - 446, // T_TMP_ITALIC_20: "<>" - 446, // T_TMP_ITALIC_20_L: "<>" - 446, // T_TMP_ITALIC_20_R: "<>" - 235, // T_TEXT_APP_NAME_UC: "WORKOUT" - 337, // T_TEXT_TOTAL: "Total" - 219, // T_TEXT_SUMMARY_UC: "SUMMARY" - 430, // T_TEXT_MAP_UC: "MAP" - 374, // T_TEXT_LAPS_UC: "LAPS" - 38, // T_TEXT_HEART_RATE_UC: "HEART RATE" - 243, // T_TEXT_WORKOUT: "Workout" - 92, // T_TEXT_COMPLETED: "Completed" - 112, // T_TEXT_REMAINING: "Remaining" - 122, // T_TEXT_REMAINING_LC: "remaining" - 211, // T_TEXT_ELAPSED: "Elapsed" - 163, // T_TEXT_TIME: "Time" - 331, // T_TEXT_TIMER: "Timer" - 384, // T_TEXT_TIME_UC: "TIME" - 319, // T_TEXT_SAVED: "Saved" - 71, // T_TEXT_SAVE: "Save & End" - 186, // T_TEXT_SETTINGS: "Settings" - 177, // T_TEXT_SETTINGS_UC: "SETTINGS" - 325, // T_TEXT_START: "Start" - 60, // T_TEXT_LAP_ALERTS: "Lap Alerts" - 49, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" - 13, // T_TEXT_PHONE_NOTIF_DOT: "Phone Notif." - 0, // T_TEXT_PHONE_BR_NOTIF_DOT: "Phone\nNotif." - 251, // T_TEXT_MINUTES_LC: "minutes" - 294, // T_TEXT_MINUTE_LC: "minute" - 438, // T_TEXT_MIN: "min" - 442, // T_TEXT_SEC: "sec" - 389, // T_TEXT_MILE: "mile" - 343, // T_TEXT_MILES: "miles" - 454, // T_TEXT_MI: "mi" - 451, // T_TEXT_KM: "km" - 452, // T_TEXT_M: "m" - 379, // T_TEXT_OPEN: "Open" - 448, // T_TEXT_ON_UC: "ON" - 434, // T_TEXT_OFF_UC: "OFF" - 259, // T_TEXT_AVG_HR_UC: "AVG HR" - 141, // T_TEXT_CALORIE_UC: "CALORIES" - 273, // T_TEXT_MAX_HR_UC: "MAX HR" - 259, // T_TEXT_AVG_HR: "AVG HR" - 82, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" - 200, // T_TEXT_HR_UC: "HR" - 159, // T_TEXT_LAP_TIME: "Lap Time" - 428, // T_TEXT_PERCENT: "%" - 102, // T_TEXT_DISCARTED: "Discarded" - 203, // T_TEXT_DISCARD: "Discard" - 287, // T_TEXT_RESUME: "Resume" - 227, // T_TEXT_SUMMARY: "Summary" - 34, // T_TEXT_LAP: "Lap" - 195, // T_TEXT_AVG_DOT_HR: "AVG. HR" - 446, // T___SINGLEUSE_Q39K: "<>" - 168, // T_RESOURCEID8: "New Text" - 426, // T___SINGLEUSE_ICBU: "96%" - 307, // T___SINGLEUSE_YHFT: "17:35" - 354, // T___SINGLEUSE_WXKL: "4:27" - 359, // T___SINGLEUSE_NOCF: "5:02" - 418, // T___SINGLEUSE_U3YM: "24." - 414, // T___SINGLEUSE_ACJE: "208" - 402, // T___SINGLEUSE_BOEQ: "128" - 132, // T___SINGLEUSE_5T2E: "10:05:49" - 410, // T___SINGLEUSE_CMV2: "165" - 398, // T___SINGLEUSE_FMCS: "117" - 422, // T___SINGLEUSE_XTK2: "566" - 406, // T___SINGLEUSE_ZJSJ: "133" - 133, // T___SINGLEUSE_GAMW: "0:05:49" - 349, // T___SINGLEUSE_Z0WD: "2.33" - 301, // T___SINGLEUSE_3KKT: "15:37" - 394, // T___SINGLEUSE_HFND: "115" - 369, // T___SINGLEUSE_OTQI: "8:32" - 364, // T___SINGLEUSE_8WSQ: "6:27" - 313, // T___SINGLEUSE_4SCV: "44.44" - 133 // T___SINGLEUSE_KERT: "0:05:49" + 205, // T_RESOURCEID13: "New Text" + 200, // T_RESOURCEID12: "Time" + 303, // T_RESOURCEID11: "Avg HR" + 317, // T_RESOURCEID10: "Max HR" + 205, // T_RESOURCEID9: "New Text" + 178, // T_RESOURCEID7: "CALORIES" + 232, // T_RESOURCEID6: "AVG. HR" + 303, // T_RESOURCEID5: "Avg HR" + 63, // T_RESOURCEID4: "Current Lap" + 196, // T_RESOURCEID3: "Lap Time" + 200, // T_RESOURCEID2: "Time" + 187, // T_RESOURCEID1: "Calories" + 483, // T_TMP_REGULAR_14: "<>" + 483, // T_TMP_REGULAR_14_L: "<>" + 483, // T_TMP_REGULAR_14_R: "<>" + 483, // T_TMP_REGULAR_16: "<>" + 483, // T_TMP_REGULAR_16_L: "<>" + 483, // T_TMP_REGULAR_16_R: "<>" + 483, // T_TMP_REGULAR_18: "<>" + 483, // T_TMP_REGULAR_18_L: "<>" + 483, // T_TMP_REGULAR_18_R: "<>" + 483, // T_TMP_MEDIUM_10: "<>" + 483, // T_TMP_MEDIUM_10_L: "<>" + 483, // T_TMP_MEDIUM_10_R: "<>" + 483, // T_TMP_MEDIUM_18: "<>" + 483, // T_TMP_MEDIUM_18_L: "<>" + 483, // T_TMP_MEDIUM_18_R: "<>" + 483, // T_TMP_MEDIUM_25: "<>" + 483, // T_TMP_MEDIUM_25_L: "<>" + 483, // T_TMP_MEDIUM_25_R: "<>" + 483, // T_TMP_MEDIUM_50: "<>" + 483, // T_TMP_MEDIUM_50_L: "<>" + 483, // T_TMP_MEDIUM_50_R: "<>" + 483, // T_TMP_SEMIBOLD_18: "<>" + 483, // T_TMP_SEMIBOLD_18_L: "<>" + 483, // T_TMP_SEMIBOLD_18_R: "<>" + 483, // T_TMP_SEMIBOLD_20: "<>" + 483, // T_TMP_SEMIBOLD_20_L: "<>" + 483, // T_TMP_SEMIBOLD_20_R: "<>" + 483, // T_TMP_SEMIBOLD_25: "<>" + 483, // T_TMP_SEMIBOLD_25_L: "<>" + 483, // T_TMP_SEMIBOLD_25_R: "<>" + 483, // T_TMP_SEMIBOLD_30: "<>" + 483, // T_TMP_SEMIBOLD_30_L: "<>" + 483, // T_TMP_SEMIBOLD_30_R: "<>" + 483, // T_TMP_SEMIBOLD_35: "<>" + 483, // T_TMP_SEMIBOLD_35_R: "<>" + 483, // T_TMP_SEMIBOLD_35_L: "<>" + 483, // T_TMP_SEMIBOLD_40: "<>" + 483, // T_TMP_SEMIBOLD_40_L: "<>" + 483, // T_TMP_SEMIBOLD_40_R: "<>" + 483, // T_TMP_SEMIBOLD_60: "<>" + 483, // T_TMP_SEMIBOLD_60_L: "<>" + 483, // T_TMP_SEMIBOLD_60_R: "<>" + 483, // T_TMP_ITALIC_18: "<>" + 483, // T_TMP_ITALIC_18_L: "<>" + 483, // T_TMP_ITALIC_18_R: "<>" + 483, // T_TMP_ITALIC_20: "<>" + 483, // T_TMP_ITALIC_20_L: "<>" + 483, // T_TMP_ITALIC_20_R: "<>" + 272, // T_TEXT_APP_NAME_UC: "WORKOUT" + 374, // T_TEXT_TOTAL: "Total" + 256, // T_TEXT_SUMMARY_UC: "SUMMARY" + 467, // T_TEXT_MAP_UC: "MAP" + 411, // T_TEXT_LAPS_UC: "LAPS" + 75, // T_TEXT_HEART_RATE_UC: "HEART RATE" + 280, // T_TEXT_WORKOUT: "Workout" + 129, // T_TEXT_COMPLETED: "Completed" + 149, // T_TEXT_REMAINING: "Remaining" + 159, // T_TEXT_REMAINING_LC: "remaining" + 248, // T_TEXT_ELAPSED: "Elapsed" + 200, // T_TEXT_TIME: "Time" + 368, // T_TEXT_TIMER: "Timer" + 421, // T_TEXT_TIME_UC: "TIME" + 356, // T_TEXT_SAVED: "Saved" + 108, // T_TEXT_SAVE: "Save & End" + 223, // T_TEXT_SETTINGS: "Settings" + 214, // T_TEXT_SETTINGS_UC: "SETTINGS" + 362, // T_TEXT_START: "Start" + 97, // T_TEXT_LAP_ALERTS: "Lap Alerts" + 86, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" + 50, // T_TEXT_PHONE_NOTIF_DOT: "Phone Notif." + 37, // T_TEXT_PHONE_BR_NOTIF_DOT: "Phone\nNotif." + 288, // T_TEXT_MINUTES_LC: "minutes" + 331, // T_TEXT_MINUTE_LC: "minute" + 475, // T_TEXT_MIN: "min" + 479, // T_TEXT_SEC: "sec" + 426, // T_TEXT_MILE: "mile" + 380, // T_TEXT_MILES: "miles" + 491, // T_TEXT_MI: "mi" + 488, // T_TEXT_KM: "km" + 489, // T_TEXT_M: "m" + 416, // T_TEXT_OPEN: "Open" + 485, // T_TEXT_ON_UC: "ON" + 471, // T_TEXT_OFF_UC: "OFF" + 296, // T_TEXT_AVG_HR_UC: "AVG HR" + 178, // T_TEXT_CALORIE_UC: "CALORIES" + 310, // T_TEXT_MAX_HR_UC: "MAX HR" + 296, // T_TEXT_AVG_HR: "AVG HR" + 119, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" + 237, // T_TEXT_HR_UC: "HR" + 196, // T_TEXT_LAP_TIME: "Lap Time" + 465, // T_TEXT_PERCENT: "%" + 139, // T_TEXT_DISCARTED: "Discarded" + 240, // T_TEXT_DISCARD: "Discard" + 324, // T_TEXT_RESUME: "Resume" + 264, // T_TEXT_SUMMARY: "Summary" + 71, // T_TEXT_LAP: "Lap" + 232, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 0, // T___SINGLEUSE_FZIH: "Do you want\nto discard\nthe activity?" + 483, // T___SINGLEUSE_Q39K: "<>" + 205, // T_RESOURCEID8: "New Text" + 463, // T___SINGLEUSE_ICBU: "96%" + 344, // T___SINGLEUSE_YHFT: "17:35" + 391, // T___SINGLEUSE_WXKL: "4:27" + 396, // T___SINGLEUSE_NOCF: "5:02" + 455, // T___SINGLEUSE_U3YM: "24." + 451, // T___SINGLEUSE_ACJE: "208" + 439, // T___SINGLEUSE_BOEQ: "128" + 169, // T___SINGLEUSE_5T2E: "10:05:49" + 447, // T___SINGLEUSE_CMV2: "165" + 435, // T___SINGLEUSE_FMCS: "117" + 459, // T___SINGLEUSE_XTK2: "566" + 443, // T___SINGLEUSE_ZJSJ: "133" + 170, // T___SINGLEUSE_GAMW: "0:05:49" + 386, // T___SINGLEUSE_Z0WD: "2.33" + 338, // T___SINGLEUSE_3KKT: "15:37" + 431, // T___SINGLEUSE_HFND: "115" + 406, // T___SINGLEUSE_OTQI: "8:32" + 401, // T___SINGLEUSE_8WSQ: "6:27" + 350, // T___SINGLEUSE_4SCV: "44.44" + 170 // T___SINGLEUSE_KERT: "0:05:49" }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp index 3a89c13b..7c340188 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp @@ -60,73 +60,74 @@ extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[]; TEXT_LOCATION_FLASH_PRAGMA KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE = { - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0xa, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @0 "Phone\nNotif." - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @13 "Phone Notif." - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4c, 0x61, 0x70, 0x0, // @26 "Current Lap" - 0x48, 0x45, 0x41, 0x52, 0x54, 0x20, 0x52, 0x41, 0x54, 0x45, 0x0, // @38 "HEART RATE" - 0x4c, 0x41, 0x50, 0x20, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x0, // @49 "LAP ALERTS" - 0x4c, 0x61, 0x70, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x0, // @60 "Lap Alerts" - 0x53, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x45, 0x6e, 0x64, 0x0, // @71 "Save & End" - 0x41, 0x76, 0x67, 0x2e, 0x20, 0x50, 0x61, 0x63, 0x65, 0x0, // @82 "Avg. Pace" - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0, // @92 "Completed" - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x65, 0x64, 0x0, // @102 "Discarded" - 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @112 "Remaining" - 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @122 "remaining" - 0x31, 0x30, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x39, 0x0, // @132 "10:05:49" - 0x43, 0x41, 0x4c, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x0, // @141 "CALORIES" - 0x43, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x0, // @150 "Calories" - 0x4c, 0x61, 0x70, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, // @159 "Lap Time" - 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @168 "New Text" - 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @177 "SETTINGS" - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @186 "Settings" - 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @195 "AVG. HR" - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @203 "Discard" - 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @211 "Elapsed" - 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @219 "SUMMARY" - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @227 "Summary" - 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @235 "WORKOUT" - 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @243 "Workout" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @251 "minutes" - 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @259 "AVG HR" - 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @266 "Avg HR" - 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @273 "MAX HR" - 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @280 "Max HR" - 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @287 "Resume" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @294 "minute" - 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @301 "15:37" - 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @307 "17:35" - 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @313 "44.44" - 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @319 "Saved" - 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @325 "Start" - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @331 "Timer" - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @337 "Total" - 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @343 "miles" - 0x32, 0x2e, 0x33, 0x33, 0x0, // @349 "2.33" - 0x34, 0x3a, 0x32, 0x37, 0x0, // @354 "4:27" - 0x35, 0x3a, 0x30, 0x32, 0x0, // @359 "5:02" - 0x36, 0x3a, 0x32, 0x37, 0x0, // @364 "6:27" - 0x38, 0x3a, 0x33, 0x32, 0x0, // @369 "8:32" - 0x4c, 0x41, 0x50, 0x53, 0x0, // @374 "LAPS" - 0x4f, 0x70, 0x65, 0x6e, 0x0, // @379 "Open" - 0x54, 0x49, 0x4d, 0x45, 0x0, // @384 "TIME" - 0x6d, 0x69, 0x6c, 0x65, 0x0, // @389 "mile" - 0x31, 0x31, 0x35, 0x0, // @394 "115" - 0x31, 0x31, 0x37, 0x0, // @398 "117" - 0x31, 0x32, 0x38, 0x0, // @402 "128" - 0x31, 0x33, 0x33, 0x0, // @406 "133" - 0x31, 0x36, 0x35, 0x0, // @410 "165" - 0x32, 0x30, 0x38, 0x0, // @414 "208" - 0x32, 0x34, 0x2e, 0x0, // @418 "24." - 0x35, 0x36, 0x36, 0x0, // @422 "566" - 0x39, 0x36, 0x25, 0x0, // @426 "96%" - 0x4d, 0x41, 0x50, 0x0, // @430 "MAP" - 0x4f, 0x46, 0x46, 0x0, // @434 "OFF" - 0x6d, 0x69, 0x6e, 0x0, // @438 "min" - 0x73, 0x65, 0x63, 0x0, // @442 "sec" - 0x2, 0x0, // @446 "<>" - 0x4f, 0x4e, 0x0, // @448 "ON" - 0x6b, 0x6d, 0x0, // @451 "km" - 0x6d, 0x69, 0x0 // @454 "mi" + 0x44, 0x6f, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x61, 0x6e, 0x74, 0xa, 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0xa, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x3f, 0x0, // @0 "Do you want\nto discard\nthe activity?" + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0xa, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @37 "Phone\nNotif." + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @50 "Phone Notif." + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4c, 0x61, 0x70, 0x0, // @63 "Current Lap" + 0x48, 0x45, 0x41, 0x52, 0x54, 0x20, 0x52, 0x41, 0x54, 0x45, 0x0, // @75 "HEART RATE" + 0x4c, 0x41, 0x50, 0x20, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x0, // @86 "LAP ALERTS" + 0x4c, 0x61, 0x70, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x0, // @97 "Lap Alerts" + 0x53, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x45, 0x6e, 0x64, 0x0, // @108 "Save & End" + 0x41, 0x76, 0x67, 0x2e, 0x20, 0x50, 0x61, 0x63, 0x65, 0x0, // @119 "Avg. Pace" + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0, // @129 "Completed" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x65, 0x64, 0x0, // @139 "Discarded" + 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @149 "Remaining" + 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @159 "remaining" + 0x31, 0x30, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x39, 0x0, // @169 "10:05:49" + 0x43, 0x41, 0x4c, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x0, // @178 "CALORIES" + 0x43, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x0, // @187 "Calories" + 0x4c, 0x61, 0x70, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, // @196 "Lap Time" + 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @205 "New Text" + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @214 "SETTINGS" + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @223 "Settings" + 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @232 "AVG. HR" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @240 "Discard" + 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @248 "Elapsed" + 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @256 "SUMMARY" + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @264 "Summary" + 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @272 "WORKOUT" + 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @280 "Workout" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @288 "minutes" + 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @296 "AVG HR" + 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @303 "Avg HR" + 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @310 "MAX HR" + 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @317 "Max HR" + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @324 "Resume" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @331 "minute" + 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @338 "15:37" + 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @344 "17:35" + 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @350 "44.44" + 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @356 "Saved" + 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @362 "Start" + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @368 "Timer" + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @374 "Total" + 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @380 "miles" + 0x32, 0x2e, 0x33, 0x33, 0x0, // @386 "2.33" + 0x34, 0x3a, 0x32, 0x37, 0x0, // @391 "4:27" + 0x35, 0x3a, 0x30, 0x32, 0x0, // @396 "5:02" + 0x36, 0x3a, 0x32, 0x37, 0x0, // @401 "6:27" + 0x38, 0x3a, 0x33, 0x32, 0x0, // @406 "8:32" + 0x4c, 0x41, 0x50, 0x53, 0x0, // @411 "LAPS" + 0x4f, 0x70, 0x65, 0x6e, 0x0, // @416 "Open" + 0x54, 0x49, 0x4d, 0x45, 0x0, // @421 "TIME" + 0x6d, 0x69, 0x6c, 0x65, 0x0, // @426 "mile" + 0x31, 0x31, 0x35, 0x0, // @431 "115" + 0x31, 0x31, 0x37, 0x0, // @435 "117" + 0x31, 0x32, 0x38, 0x0, // @439 "128" + 0x31, 0x33, 0x33, 0x0, // @443 "133" + 0x31, 0x36, 0x35, 0x0, // @447 "165" + 0x32, 0x30, 0x38, 0x0, // @451 "208" + 0x32, 0x34, 0x2e, 0x0, // @455 "24." + 0x35, 0x36, 0x36, 0x0, // @459 "566" + 0x39, 0x36, 0x25, 0x0, // @463 "96%" + 0x4d, 0x41, 0x50, 0x0, // @467 "MAP" + 0x4f, 0x46, 0x46, 0x0, // @471 "OFF" + 0x6d, 0x69, 0x6e, 0x0, // @475 "min" + 0x73, 0x65, 0x63, 0x0, // @479 "sec" + 0x2, 0x0, // @483 "<>" + 0x4f, 0x4e, 0x0, // @485 "ON" + 0x6b, 0x6d, 0x0, // @488 "km" + 0x6d, 0x69, 0x0 // @491 "mi" }; TEXT_LOCATION_FLASH_PRAGMA diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp index 736590a4..5b62010e 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp @@ -155,6 +155,7 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, From ea7db539502c7c2ae3c95e208c674c0740277ad7 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 14:01:06 +0100 Subject: [PATCH 05/11] fix(Workout): use landscape orientation without layout rotation --- .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 2 +- .../Apps/TouchGFX-GUI/application.config | 2 +- .../src/common/FrontendApplicationBase.cpp | 2 +- .../images/src/image_CircleCross_50x50.cpp | 200 ++--- .../images/src/image_CircleTick_50x50.cpp | 208 +++--- .../images/src/image_Clock_16x19.cpp | 52 +- .../images/src/image_CrossAmber_17x17.cpp | 40 +- .../images/src/image_CrossWhite_17x17.cpp | 40 +- .../images/src/image_HeartRateZone1.cpp | 194 ++--- .../images/src/image_HeartRateZone2.cpp | 202 ++--- .../images/src/image_HeartRateZone3.cpp | 206 +++--- .../images/src/image_HeartRateZone4.cpp | 206 +++--- .../images/src/image_HeartRateZone5.cpp | 196 ++--- .../images/src/image_HeartRateZoneGroup.cpp | 694 +++++++++--------- .../images/src/image_Heart_30x30.cpp | 124 ++-- .../images/src/image_Heart_46x39.cpp | 206 +++--- .../images/src/image_Pause_14x14.cpp | 28 +- .../images/src/image_TickAmber_22x17.cpp | 60 +- .../images/src/image_WorkoutMan_30x30.cpp | 150 ++-- .../images/src/image_clock_24x29.cpp | 116 +-- 20 files changed, 1464 insertions(+), 1464 deletions(-) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx index 1917345a..c4d31ee1 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -2757,7 +2757,7 @@ "LandscapeSkinY": 0, "PortraitSkinX": 0, "PortraitSkinY": 0, - "DisplayOrientation": "Portrait", + "DisplayOrientation": "Landscape", "Family": "STM32U5", "SubFamily": "STM32U575/585", "Toolchain": "STM32CubeIDE", diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config b/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config index b78b294b..82b81bdd 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/application.config @@ -2,7 +2,7 @@ "image_configuration": { "dither_algorithm": "0", "alpha_dither": "no", - "layout_rotation": "90", + "layout_rotation": "0", "opaque_image_format": "ABGR2222", "nonopaque_image_format": "ABGR2222", "l8_compression": "no", diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp index a9668045..d8bc51d3 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/common/FrontendApplicationBase.cpp @@ -44,7 +44,7 @@ FrontendApplicationBase::FrontendApplicationBase(Model& m, FrontendHeap& heap) frontendHeap(heap), model(m) { - touchgfx::HAL::getInstance()->setDisplayOrientation(touchgfx::ORIENTATION_PORTRAIT); + touchgfx::HAL::getInstance()->setDisplayOrientation(touchgfx::ORIENTATION_LANDSCAPE); touchgfx::Texts::setLanguage(GB); reinterpret_cast(touchgfx::HAL::lcd()).enableTextureMapperABGR2222_NearestNeighbor(); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp index 6120f805..417c7893 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleCross_50x50.cpp @@ -1,4 +1,4 @@ -// 4.26.1 0x81f6eeca D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x81f6eeca D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include @@ -6,194 +6,194 @@ LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_circlecross_50x50[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x50 ABGR2222 pixels. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, 0xca, 0xcb, - 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0x4b, 0x8b, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8b, 0x8b, 0x4b, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x0a, 0x00, 0x00, - 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x4a, 0x8a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4b, 0xcb, 0xcb, - 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x8b, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x8b, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, - 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xc6, 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, - 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, + 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0xcb, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, - 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, + 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, - 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x8a, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, - 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, + 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -206,12 +206,12 @@ KEEP extern const unsigned char image_circlecross_50x50[] LOCATION_ATTRIBUTE("In 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, - 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, + 0xca, 0xcb, 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp index 2a87d1aa..aae791ad 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CircleTick_50x50.cpp @@ -1,4 +1,4 @@ -// 4.26.1 0x3d69eeb5 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x3d69eeb5 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include @@ -6,194 +6,194 @@ LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_circletick_50x50[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x50 ABGR2222 pixels. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, 0xca, 0xcb, - 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0x4b, 0x8b, 0x8b, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8b, 0x8b, 0x4b, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x0a, 0x00, 0x00, - 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x4a, 0x8a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, - 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4b, 0xcb, 0xcb, - 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x4a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, - 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, + 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0xcb, 0xcb, 0xcb, - 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0xcb, + 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xca, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, - 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, - 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, - 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, - 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x8a, 0xcb, 0xcb, + 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -206,12 +206,12 @@ KEEP extern const unsigned char image_circletick_50x50[] LOCATION_ATTRIBUTE("Int 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xca, - 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, + 0xca, 0xcb, 0xcb, 0xcb, 0xc6, 0xca, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp index a44bb161..cc32c074 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Clock_16x19.cpp @@ -1,34 +1,34 @@ -// 4.26.1 0x9e364eb9 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x9e364eb9 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_clock_16x19[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 16x19 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x68, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xd4, 0xa8, 0xa8, 0xa8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, - 0x54, 0x2a, 0x6a, 0x6a, 0x2a, 0x28, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0x68, 0x6a, 0xff, 0xff, 0xff, 0xff, - 0xaa, 0x28, 0xe8, 0xe8, 0xe8, 0x28, 0xaa, 0xea, 0x6a, 0x28, 0xe8, 0xe8, - 0xa8, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x54, 0xe8, 0xe8, - 0x54, 0xff, 0xff, 0xea, 0x68, 0xe8, 0xe8, 0x68, 0xbf, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x28, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xa8, - 0xe8, 0xe8, 0x68, 0x6a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x6a, 0x00, - 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xbf, 0x68, 0xe8, 0xe8, 0x54, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xa8, 0xaa, 0xaa, - 0x2a, 0x28, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0x28, - 0x00, 0x00, 0x00, 0x2a, 0xa9, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, - 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xaa, 0x54, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xd4, 0xa8, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xff, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, + 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xbf, 0xff, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xff, 0x2a, 0x00, 0x28, 0x68, 0xa8, 0x68, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xa9, 0xa8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xa8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x68, 0x68, 0xa8, 0xe8, 0xe8, + 0xe8, 0x68, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x6a, + 0xbf, 0x2a, 0x68, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0xa8, 0xe8, 0xe8, 0xa8, + 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0x6a, 0x54, 0xe8, 0xe8, 0xa8, 0x00, + 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xff, 0x2a, + 0xd4, 0xe8, 0xe8, 0x00, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xaa, + 0xff, 0xff, 0xff, 0x6a, 0xa8, 0xe8, 0xe8, 0x28, 0xe8, 0xe8, 0xe8, 0x00, + 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xff, 0x6a, 0xa8, 0xe8, 0xe8, 0x28, + 0xd4, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xff, 0x2a, + 0xa8, 0xe8, 0xe8, 0x00, 0xa8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0xaa, + 0xff, 0xff, 0xaa, 0x28, 0xe8, 0xe8, 0xe8, 0x00, 0x68, 0xe8, 0xe8, 0xe8, + 0x28, 0x00, 0x00, 0x6a, 0xea, 0x6a, 0x28, 0xe8, 0xe8, 0xe8, 0x68, 0x00, + 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0x54, 0x28, 0x00, 0x28, 0x54, 0xe8, 0xe8, + 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xa8, 0xe8, 0xa8, 0x54, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp index 0235581c..559f5899 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossAmber_17x17.cpp @@ -1,33 +1,33 @@ -// 4.26.1 0x2fbefec1 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x2fbefec1 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_crossamber_17x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 17x17 ABGR2222 pixels. - 0x0a, 0x8a, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x8a, 0xcb, 0x8a, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, - 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, - 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8b, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0xca, 0xcb, 0xca, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xca, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, + 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, + 0x0a, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0xcb, 0xcb, 0xcb, 0xc6, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xc6, 0xcb, 0xcb, 0xcb, 0x8a, 0x0a, 0x8a, 0xcb, 0x8a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8a, 0xcb, 0x8a, 0x0a }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp index d747a4c0..8b4db756 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_CrossWhite_17x17.cpp @@ -1,33 +1,33 @@ -// 4.26.1 0x56c43d46 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x56c43d46 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_crosswhite_17x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 17x17 ABGR2222 pixels. - 0x2a, 0xaa, 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xaa, 0xff, 0xaa, 0x2a, 0xbf, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x2a, 0xbf, 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xbf, 0xff, 0xbf, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, - 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, - 0x2a, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xea, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x2a, 0x00, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x00, 0x00, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, - 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x6a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x2a, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, - 0x2a, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xea, 0xff, 0xea, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xff, 0xea, + 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, + 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x6a, 0xea, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x2a, 0x00, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xff, 0xea, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xff, 0xff, 0xff, 0xaa, 0x2a, 0xaa, 0xff, 0xaa, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xff, 0xaa, 0x2a }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp index a2813424..6c6d700a 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone1.cpp @@ -1,4 +1,4 @@ -// 4.26.1 0xda9d70fc D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0xda9d70fc D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include @@ -7,145 +7,145 @@ LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heartratezone1[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 39x44 ABGR2222 pixels. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xaa, 0xea, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xaa, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, - 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xd5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0x6a, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x3f, 0x00, 0x00, + 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x15, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, + 0x6a, 0x2a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x6a, 0x6a, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xaa, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x55, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xd5, 0x2a, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xaa, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, + 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xaa, 0x00, + 0x00, 0x00, 0x2a, 0xaa, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp index 7940dac0..95e3c897 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone2.cpp @@ -1,4 +1,4 @@ -// 4.26.1 0x48e8b56c D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x48e8b56c D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include @@ -8,146 +8,146 @@ KEEP extern const unsigned char image_heartratezone2[] LOCATION_ATTRIBUTE("IntFl 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4d, 0x8d, 0xcd, - 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x4d, 0x8c, 0xcc, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4c, 0x89, 0xc9, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4c, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4c, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, + 0x0c, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x49, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x0d, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8d, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x89, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, + 0x89, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x8c, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x4d, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcc, 0x89, 0x0c, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x49, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4c, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x49, 0x00, 0x00, 0x00, 0x0c, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, - 0x49, 0x4d, 0x49, 0x49, 0x49, 0x49, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0x89, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x8c, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, + 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x89, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8c, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8d, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x89, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, + 0x00, 0x00, 0x0d, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4d, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0x89, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xc9, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcc, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, + 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x0c, + 0x00, 0x0d, 0xcc, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0xcd, 0x8d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0x8d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp index 22b91f14..24acd656 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone3.cpp @@ -1,125 +1,125 @@ -// 4.26.1 0x2ae91e69 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x2ae91e69 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heartratezone3[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 50x28 ABGR2222 pixels. - 0x00, 0x00, 0x8f, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, - 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, + 0x4f, 0x4f, 0x4f, 0x8f, 0x8f, 0x8f, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x4f, + 0x4f, 0x4f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4f, 0x4f, 0x8f, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8f, 0x8f, 0x4f, 0x4f, + 0x0a, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8f, 0x8f, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x4a, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, + 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0x0a, 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x8a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x4a, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0xca, 0xca, 0xca, 0xca, + 0xca, 0xca, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, + 0x00, 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0xca, 0x8a, + 0x8a, 0x4a, 0x4a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x4a, + 0x4a, 0x8a, 0x8a, 0xca, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x8a, 0xca, 0x8a, 0x8a, 0x4a, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0x8a, + 0xca, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0xca, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xca, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xca, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x4a, 0x4a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xca, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp index e723152c..6251b28a 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone4.cpp @@ -1,153 +1,153 @@ -// 4.26.1 0xf58c9149 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0xf58c9149 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heartratezone4[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 47x37 ABGR2222 pixels. + 0x00, 0x00, 0x0b, 0xcb, 0x8b, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x8a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, - 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4a, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8b, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc7, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x8a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x47, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8b, 0xca, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, + 0x4b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, 0x4a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xc6, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, - 0x00, 0x00, 0x0b, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x46, - 0x8a, 0x8a, 0x8a, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x06, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0x8b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8a, 0xc6, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4a, 0x8a, 0xcb, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp index 09ecbb06..ff42b573 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZone5.cpp @@ -1,151 +1,151 @@ -// 4.26.1 0x5ca49022 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x5ca49022 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heartratezone5[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 39x44 ABGR2222 pixels. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, + 0xc3, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x03, 0x00, + 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc2, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, + 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x83, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, + 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x42, 0x42, 0x82, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x42, 0x43, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, + 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0x83, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, - 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x82, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc2, 0xc3, + 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x82, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, + 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, - 0xc3, 0xc3, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0x03, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x82, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x83, 0xc3, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc2, 0x83, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0x83, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x42, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp index d724c202..64301911 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_HeartRateZoneGroup.cpp @@ -1,4 +1,4 @@ -// 4.26.1 0xeb18db9f D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0xeb18db9f D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include @@ -10,450 +10,495 @@ KEEP extern const unsigned char image_heartratezonegroup[] LOCATION_ATTRIBUTE("I 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x4f, 0x4f, 0x4f, 0x4f, + 0x8f, 0x8f, 0x8f, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0x8f, 0x8f, 0x8f, 0x8f, 0x4f, 0x4f, 0x4f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x83, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x82, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x42, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x4f, 0x4f, 0x8f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8f, 0x8f, 0x4f, 0x4f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x82, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x8f, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8f, 0x8f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, + 0x0c, 0x4c, 0x8c, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x8a, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, + 0x00, 0x4a, 0xcb, 0x8b, 0x4a, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x4c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, + 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x47, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4d, 0xcc, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x4a, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, + 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x8c, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x0c, + 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0xca, 0xca, 0xca, 0x8a, 0x8a, 0x8a, + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0xca, 0xca, 0xca, + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0xca, 0xcf, 0xcf, + 0xcf, 0xcf, 0xcf, 0xca, 0xca, 0x8a, 0x8a, 0x4a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, 0x8a, + 0x8a, 0xca, 0xca, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xc6, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, + 0x00, 0x00, 0x00, 0x8a, 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x4a, + 0x8a, 0xca, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x49, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x82, 0xc3, 0xc3, - 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x0b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x4d, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x4c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xca, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0x8b, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x8c, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4b, 0x8b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4d, 0xcc, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x8c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x8a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xca, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xc7, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x49, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8d, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x8c, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4b, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x09, 0x4d, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, + 0x8b, 0xc6, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x4c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x8c, + 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcc, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x4d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x89, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xc6, - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x8c, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc9, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x4d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4b, 0xcb, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0b, 0x4a, 0x8b, 0xcb, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x8c, + 0xcd, 0xcd, 0xcd, 0xcc, 0x8d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -464,290 +509,279 @@ KEEP extern const unsigned char image_heartratezonegroup[] LOCATION_ATTRIBUTE("I 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0xea, + 0xea, 0x2a, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcc, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4f, 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, + 0x0b, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0a, 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x82, 0xc3, + 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, + 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x82, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xaa, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8f, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xca, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, - 0xca, 0x8a, 0x4a, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -756,7 +790,11 @@ KEEP extern const unsigned char image_heartratezonegroup[] LOCATION_ATTRIBUTE("I 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -764,453 +802,415 @@ KEEP extern const unsigned char image_heartratezonegroup[] LOCATION_ATTRIBUTE("I 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x4c, 0x8c, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4d, 0x8c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xd5, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xcc, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xc9, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xcc, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xc9, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xc9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x09, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x49, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xcc, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0xcd, 0xcd, 0xcd, 0xcd, 0x8c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc2, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x42, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8c, 0xcd, 0xc9, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x09, 0x8d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xaa, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x83, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0xd5, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x43, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, + 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xd5, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xd5, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0x00, 0x00, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xaa, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, + 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x03, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, + 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, + 0x15, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, - 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6a, 0xea, 0xea, 0xea, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x02, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xea, + 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0xc3, 0xc3, 0x83, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6a, 0xea, 0x15, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, + 0x82, 0x02, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp index 57f3d9fa..164d1d7b 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_30x30.cpp @@ -1,83 +1,83 @@ -// 4.26.1 0x20356b0a D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x20356b0a D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heart_30x30[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 30x30 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe9, 0xe9, - 0xe9, 0xea, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0x2a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, - 0xff, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, + 0xaa, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x94, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, + 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, + 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, + 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0x2a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe9, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x2a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x68, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp index bfcd5701..ad5e790a 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Heart_46x39.cpp @@ -1,158 +1,158 @@ -// 4.26.1 0x69bd077e D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x69bd077e D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_heart_46x39[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 46x39 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xbf, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xbf, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x3f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xea, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xa8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xea, + 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xfe, 0xff, 0x3f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xea, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe9, 0xea, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x28, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x3f, 0xea, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, + 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, - 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xea, 0xe8, 0xe8, 0xe8, 0xe8, + 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0x2a, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0xea, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbf, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xea, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, - 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xa9, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xaa, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x6a, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, - 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, - 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe9, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, + 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xea, 0xff, 0xea, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xfe, 0xff, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xff, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, + 0xe8, 0xe8, 0xea, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xd4, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, - 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x68, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0xa9, 0xe8, 0xe8, 0xa9, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp index bcfcc354..4756af8e 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_Pause_14x14.cpp @@ -1,25 +1,25 @@ -// 4.26.1 0xd46823bb D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0xd46823bb D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_pause_14x14[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 14x14 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x00, + 0x00, 0x00, 0x00, 0x2a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xaa, 0x6a, 0x6a, 0xaa, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x2a, 0xbf, 0xff, 0x6a, 0x00, 0x2a, 0xff, 0xaa, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x2a, 0xbf, 0xff, 0x2a, 0x2a, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x2a, 0xff, 0xaa, 0xff, 0xaa, - 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0xaa, 0xea, - 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6a, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, - 0x00, 0x00, 0x6a, 0xff, 0xff, 0xaa, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x2a, 0x00, 0xbf, 0xea, 0x7f, 0xff, 0x2a, 0x2a, 0xea, 0xea, - 0xea, 0xea, 0xea, 0xea, 0x2a, 0x2a, 0xff, 0xaa, 0x2a, 0xff, 0xaa, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x2a, 0x00, 0x7f, - 0xff, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xbf, 0xff, 0x6a, 0x00, + 0x00, 0x2a, 0xaa, 0xff, 0x7f, 0x00, 0x2a, 0xff, 0xaa, 0x00, 0x2a, 0x2a, + 0x00, 0x00, 0x2a, 0x2a, 0x00, 0xaa, 0xff, 0x2a, 0xaa, 0xff, 0x2a, 0x00, + 0xea, 0xff, 0x2a, 0x00, 0xff, 0xff, 0x00, 0x2a, 0xff, 0xaa, 0xff, 0xbf, + 0x00, 0x00, 0xea, 0xff, 0x2a, 0x00, 0xff, 0xff, 0x00, 0x00, 0xaa, 0xff, + 0xff, 0x6a, 0x00, 0x00, 0xea, 0xff, 0x2a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x6a, 0xff, 0xff, 0x6a, 0x00, 0x00, 0xea, 0xff, 0x2a, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x6a, 0xff, 0xea, 0xaa, 0x00, 0x00, 0xea, 0xff, 0x2a, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xaa, 0xff, 0xaa, 0xff, 0x2a, 0x00, 0xea, 0xff, + 0x2a, 0x00, 0xff, 0xff, 0x00, 0x2a, 0xff, 0xbf, 0x2a, 0xff, 0xbf, 0x00, + 0x2a, 0x2a, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0xbf, 0xff, 0x2a, 0x00, 0x6a, + 0xff, 0xbf, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xbf, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xbf, 0x6a, 0x6a, 0xaa, 0xff, 0xff, 0x6a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xff, 0xff, 0xff, 0xea, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xea, 0xff, 0xff, 0xea, 0xaa, 0x2a, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp index 0021698a..54ff5731 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_TickAmber_22x17.cpp @@ -1,40 +1,40 @@ -// 4.26.1 0x9bf58d12 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x9bf58d12 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_tickamber_22x17[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 22x17 ABGR2222 pixels. - 0x0a, 0x8b, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x8b, 0xcb, 0x8b, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x8a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8b, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, - 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, 0x8a, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x0a, 0x8b, + 0xcb, 0x8b, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0xca, 0xcb, 0xcb, 0xcb, + 0xcb, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0x0a, 0x00, 0x0a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8a, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x4b, + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, + 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, + 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, + 0xcb, 0xcb, 0xcb, 0xca, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xca, 0xcb, + 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp index 219c91bd..1f0afa5a 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_WorkoutMan_30x30.cpp @@ -1,83 +1,83 @@ -// 4.26.1 0xbff72c63 D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0xbff72c63 D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_workoutman_30x30[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 30x30 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0x00, 0x14, 0x94, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0x94, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xe8, 0xd4, 0xe8, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x94, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xd4, + 0xe8, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, + 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, + 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x14, + 0xe8, 0xd4, 0xe8, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xd4, + 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0x14, 0x00, + 0x00, 0x54, 0xe8, 0xd4, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, + 0x94, 0x54, 0x14, 0x14, 0x94, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, + 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x94, + 0xe8, 0xd4, 0xd4, 0xd4, 0xe8, 0xe8, 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xea, 0xea, 0xea, 0xff, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0xe8, 0xd4, 0xe8, 0xfe, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0x00, - 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, - 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, - 0xd4, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, - 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x94, 0x94, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x15, - 0x15, 0x15, 0x15, 0x15, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, - 0x94, 0xe8, 0xe8, 0xd4, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe8, 0xd4, - 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, - 0xff, 0xff, 0xff, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, 0xff, 0xff, 0xff, 0xd4, 0xe8, 0xe8, - 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0x54, 0xe8, 0xe8, 0xe8, 0xd4, 0xea, - 0xff, 0xff, 0xff, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, - 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe8, 0xd4, - 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x94, 0x94, 0x14, 0x00, 0xe8, 0xd4, 0xe8, 0xe8, 0x94, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x54, 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, - 0xe8, 0xd4, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xd4, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, - 0xd4, 0xe8, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0xe8, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, 0x00, - 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0x00, 0xa8, 0xe8, 0xd4, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0x14, - 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x94, 0x54, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xd4, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xd4, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, + 0xd4, 0xe8, 0x14, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x14, 0x00, 0x00, 0xe8, 0xd4, + 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xe8, 0xd4, 0xe8, + 0x14, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xd4, 0xe8, 0xd4, 0xe8, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xd4, 0xe8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x14, 0xe8, 0xd4, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, + 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe8, + 0xe8, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp index 5036a8c0..1cc80b30 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/images/src/image_clock_24x29.cpp @@ -1,66 +1,66 @@ -// 4.26.1 0x0250722d D0 AN R1 FABGR2222 U222 N0 SIntFlashSection +// 4.26.1 0x0250722d D0 AN R0 FABGR2222 U222 N0 SIntFlashSection // Generated by imageconverter. Please, do not edit! #include LOCATION_PRAGMA("IntFlashSection") KEEP extern const unsigned char image_clock_24x29[] LOCATION_ATTRIBUTE("IntFlashSection") = { // 24x29 ABGR2222 pixels. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x14, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xa8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x68, 0x14, 0x00, 0x00, 0x14, 0x54, 0xa8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x2a, 0x6a, 0x7f, 0x7f, - 0x7f, 0x2a, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, - 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x54, 0xe8, 0xe8, - 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xe8, - 0xe8, 0xe8, 0xa8, 0x00, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x7f, 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0xff, 0xff, 0xff, - 0x7f, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x2a, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x14, 0xe8, 0xe8, 0xe8, - 0xe8, 0x68, 0xff, 0xff, 0xff, 0xbf, 0x3f, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, - 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xbf, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xbf, - 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, - 0xff, 0xff, 0xff, 0xff, 0xbf, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x2a, - 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x00, - 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x68, 0xe8, - 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xa8, 0xff, 0xff, - 0xff, 0xbf, 0x2a, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, - 0xe8, 0xe8, 0x68, 0xbf, 0xff, 0xff, 0x6a, 0x00, 0x14, 0xe8, 0xe8, 0xe8, - 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, - 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xbf, 0xff, 0xff, + 0xff, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xbf, 0xbf, + 0xbf, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6a, 0xff, 0xff, 0x00, 0x00, 0x00, 0x14, 0x54, 0x68, 0x68, + 0x68, 0x54, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xbf, 0xff, 0xff, 0xff, 0x7f, 0x54, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x14, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0x6a, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xa8, 0x68, 0x14, 0x28, 0x68, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, - 0x69, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6a, 0xff, 0xff, 0xbf, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xbf, 0x2a, 0x00, - 0x14, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, - 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x54, 0xa8, 0xe8, 0xe8, - 0xe8, 0xe8, 0xa8, 0x68, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + 0x00, 0xbf, 0xff, 0xff, 0x6a, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0xbf, 0x69, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0xa8, + 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, + 0x00, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x2a, + 0xbf, 0xbf, 0x2a, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0x6a, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0x54, 0x00, + 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, + 0xa8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, + 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, + 0xe8, 0xe8, 0xe8, 0xe8, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0x28, + 0xa8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, + 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, + 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xff, 0xff, 0x7f, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, + 0x00, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0x94, 0x00, 0x00, 0x00, 0x00, 0x6a, + 0xff, 0xbf, 0x3f, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x00, 0x00, + 0x00, 0x14, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x14, 0x94, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x68, 0x68, + 0x68, 0xa8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x54, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x68, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, + 0xe8, 0xe8, 0xe8, 0xe8, 0xa8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0xa8, 0xa8, + 0xa8, 0xa8, 0x68, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; From 6a4a55929e5aba68656f6e6223ad3887c82c294f Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 14:36:44 +0100 Subject: [PATCH 06/11] fix(Workout): single item in alerts menu The Alerts Menu only contains a single item. In this case we want to disable the scroll indicator. We also want to disable the circular list behaviour, so that we don't get a duplicate entry shown. --- .../Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp index aab5f144..89c89a0d 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/MainMenu.cpp @@ -25,6 +25,10 @@ void MainMenu::setNumberOfItems(int16_t numberOfItems) { wheel.setNumberOfItems(numberOfItems); scrollIndicator.setCount(numberOfItems); + if (numberOfItems == 1) { + wheel.setCircular(false); + scrollIndicator.setVisible(false); + } } int16_t MainMenu::getNumberOfItems() From 261da2f785590dd8caf789c6b1fe2615e0e5450a Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 14:59:42 +0100 Subject: [PATCH 07/11] feature(Workout): trim TrackAction infoCarousel to Avg.HR and Total Calories The TrackAction screen's info carousel cycled through four items (Calories, Avg.HR, total zone time, current zone) but we only want Avg.HR and Total Calories, so the carousel is reduced to those two. - setCount(4) -> setCount(2); cases trimmed accordingly. - Drop now-unused setZoneTimes / setCurrentZone setters and the mZoneTotalSec / mCurrentZone members from TrackActionView. - Drop the matching view.setZoneTimes / view.setCurrentZone calls from TrackActionPresenter::onTrackData. --- .../trackaction_screen/TrackActionView.hpp | 4 --- .../TrackActionPresenter.cpp | 2 -- .../trackaction_screen/TrackActionView.cpp | 36 +++---------------- 3 files changed, 4 insertions(+), 38 deletions(-) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp index ce05eea8..db047bdd 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/trackaction_screen/TrackActionView.hpp @@ -18,8 +18,6 @@ class TrackActionView : public TrackActionViewBase void setUnitsImperial(bool isImperial); void setTimer(std::time_t sec); void setCalories(float calories); - void setZoneTimes(const std::time_t zoneTimes[5]); - void setCurrentZone(uint8_t zone); void setAvgHR(float hr); protected: @@ -28,8 +26,6 @@ class TrackActionView : public TrackActionViewBase bool mIsImperial = false; float mCalories = 0.0f; - std::time_t mZoneTotalSec = 0; - uint8_t mCurrentZone = 0; float mAvgHr = 0.0f; ItemLayout mItemLayout {}; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp index 7e014066..8aa00e34 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionPresenter.cpp @@ -28,8 +28,6 @@ void TrackActionPresenter::onTrackData(const Track::Data& data) { view.setTimer(data.totalTime); view.setCalories(data.totalCalories); - view.setZoneTimes(data.zoneTimeSec); - view.setCurrentZone(data.hrZone); view.setAvgHR(data.avgHR); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp index a82f3f7e..310ef6b7 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/trackaction_screen/TrackActionView.cpp @@ -30,7 +30,7 @@ void TrackActionView::setupScreen() infoCarousel.setPeriod(kTrackTitleInfoSwitchPeriod); infoCarousel.setUpdateCallback(mCarouselCb); - infoCarousel.setCount(4); // fires onCarouselUpdate(0) immediately + infoCarousel.setCount(2); // fires onCarouselUpdate(0) immediately menuLayout.invalidate(); } @@ -69,21 +69,6 @@ void TrackActionView::setCalories(float calories) infoCarousel.refresh(); } -void TrackActionView::setZoneTimes(const std::time_t zoneTimes[5]) -{ - mZoneTotalSec = 0; - for (uint8_t i = 0; i < 5; ++i) { - mZoneTotalSec += zoneTimes[i]; - } - infoCarousel.refresh(); -} - -void TrackActionView::setCurrentZone(uint8_t zone) -{ - mCurrentZone = zone; - infoCarousel.refresh(); -} - void TrackActionView::setAvgHR(float hr) { mAvgHr = hr; @@ -134,11 +119,6 @@ void TrackActionView::onCarouselUpdate(int16_t index) switch (index) { case 0: - infoCarousel.setTitle(T_TEXT_TOTAL); - Unicode::snprintfFloat(buf, kBufSize, "%.0f", mCalories); - break; - - case 1: infoCarousel.setTitle(T_TEXT_AVG_DOT_HR); if (mAvgHr < App::Display::kMinHR) { Unicode::snprintf(buf, kBufSize, "---"); @@ -147,17 +127,9 @@ void TrackActionView::onCarouselUpdate(int16_t index) } break; - case 2: - infoCarousel.setTitle(T_TEXT_TIME_UC); - { - auto hms = SDK::Utils::toHMS(mZoneTotalSec); - Unicode::snprintf(buf, kBufSize, "%u:%02u", hms.h, hms.m); - } - break; - - case 3: - infoCarousel.setTitle(T_TEXT_HR_UC); - Unicode::snprintf(buf, kBufSize, "%u", mCurrentZone); + case 1: + infoCarousel.setTitle(T_TEXT_CALORIE_UC); + Unicode::snprintfFloat(buf, kBufSize, "%.0f", mCalories); break; default: From 0296e65aca2569a544aaa674a9799edb79cc5929 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 15:24:27 +0100 Subject: [PATCH 08/11] feat(Workout): show Max HR instead of Calories on SummaryFaceOverview The summary overview face previously displayed total time, average HR and total calories. For an HR-centric indoor workout, max HR is more informative than calories there (calories are still emitted in the FIT file), and matches the data shown alongside avg HR on the dedicated heart-rate face. Designer changes (already done by the user): - Added a heart icon next to the bottom row. - Renamed the bottom value/text widgets caloriesValue/Text to maxHRValue/Text and pointed the label at T_TEXT_MAX_HR_UC. - Regenerated the gui_generated base, texts and typed-text DB. Code changes: - Replace SummaryFaceOverview::setCalories(float) with setMaxHR(float). Mirrors setAvgHR: shows "---" when hr < App::Display::kMinHR, otherwise the integer bpm value. - TrackSummaryView::setSummary now feeds s.hrMax to the overview face (the dedicated heart-rate face still receives both avg and max). --- .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 35 ++++++++++------- .../Apps/TouchGFX-GUI/assets/texts/texts.xml | 3 ++ .../containers/SummaryFaceOverviewBase.hpp | 15 ++++---- .../containers/SummaryFaceOverviewBase.cpp | 38 ++++++++++--------- .../include/texts/TextKeysAndLanguages.hpp | 1 + .../generated/texts/src/LanguageGb.cpp | 1 + .../generated/texts/src/TypedTextDatabase.cpp | 1 + .../gui/containers/SummaryFaceOverview.hpp | 6 +-- .../src/containers/SummaryFaceOverview.cpp | 10 +++-- .../tracksummary_screen/TrackSummaryView.cpp | 2 +- 10 files changed, 68 insertions(+), 44 deletions(-) diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx index c4d31ee1..919fd4df 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -2189,11 +2189,21 @@ "Width": 240, "Height": 240, "Components": [ + { + "Type": "Image", + "Name": "heartIcon", + "X": 27, + "Y": 128, + "Width": 30, + "Height": 30, + "LockPosition": true, + "RelativeFilename": "Heart_30x30.png" + }, { "Type": "TextArea", - "Name": "caloriesValue", + "Name": "maxHRValue", "X": 135, - "Y": 173, + "Y": 129, "Width": 77, "Height": 32, "TextId": "TMP_SEMIBOLD_25", @@ -2211,9 +2221,9 @@ }, { "Type": "TextArea", - "Name": "caloriesText", - "X": 43, - "Y": 179, + "Name": "maxHRText", + "X": 48, + "Y": 133, "Width": 91, "Height": 21, "TextId": "TMP_MEDIUM_18", @@ -2224,7 +2234,7 @@ "Blue": 192 }, "Wildcard1": { - "TextId": "TEXT_CALORIE_UC", + "TextId": "TEXT_MAX_HR_UC", "UseBuffer": true, "BufferSize": 10 } @@ -2249,10 +2259,9 @@ "Type": "TextArea", "Name": "avgHRValue", "X": 132, - "Y": 127, + "Y": 175, "Width": 78, "Height": 32, - "LockPosition": true, "TextId": "TMP_SEMIBOLD_25", "TextRotation": "0", "Color": { @@ -2269,11 +2278,10 @@ { "Type": "TextArea", "Name": "avgHRText", - "X": 39, - "Y": 133, - "Width": 100, - "Height": 21, - "LockPosition": true, + "X": 48, + "Y": 179, + "Width": 91, + "Height": 23, "TextId": "__SingleUse_Q39K", "TextRotation": "0", "Color": { @@ -2310,6 +2318,7 @@ "Y": 60, "Width": 134, "Height": 35, + "LockPosition": true, "TextId": "TMP_SEMIBOLD_40", "TextRotation": "0", "Color": { diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml index a57cfadf..9b273d88 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml @@ -5,6 +5,9 @@ + + New Text + New Text diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp index 394507cc..9e098436 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceOverviewBase.hpp @@ -6,10 +6,10 @@ #include #include +#include #include #include #include -#include #include class SummaryFaceOverviewBase : public touchgfx::Container @@ -27,8 +27,9 @@ class SummaryFaceOverviewBase : public touchgfx::Container /* * Member Declarations */ - touchgfx::TextAreaWithOneWildcard caloriesValue; - touchgfx::TextAreaWithOneWildcard caloriesText; + touchgfx::Image heartIcon; + touchgfx::TextAreaWithOneWildcard maxHRValue; + touchgfx::TextAreaWithOneWildcard maxHRText; touchgfx::Line line2; touchgfx::PainterABGR2222 line2Painter; touchgfx::TextAreaWithOneWildcard avgHRValue; @@ -42,10 +43,10 @@ class SummaryFaceOverviewBase : public touchgfx::Container /* * Wildcard Buffers */ - static const uint16_t CALORIESVALUE_SIZE = 10; - touchgfx::Unicode::UnicodeChar caloriesValueBuffer[CALORIESVALUE_SIZE]; - static const uint16_t CALORIESTEXT_SIZE = 10; - touchgfx::Unicode::UnicodeChar caloriesTextBuffer[CALORIESTEXT_SIZE]; + static const uint16_t MAXHRVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar maxHRValueBuffer[MAXHRVALUE_SIZE]; + static const uint16_t MAXHRTEXT_SIZE = 10; + touchgfx::Unicode::UnicodeChar maxHRTextBuffer[MAXHRTEXT_SIZE]; static const uint16_t AVGHRVALUE_SIZE = 10; touchgfx::Unicode::UnicodeChar avgHRValueBuffer[AVGHRVALUE_SIZE]; static const uint16_t AVGHRTEXT_SIZE = 10; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp index e448e3b2..2d127bde 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceOverviewBase.cpp @@ -2,29 +2,33 @@ /********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ /*********************************************************************************/ #include +#include #include #include -#include SummaryFaceOverviewBase::SummaryFaceOverviewBase() { setWidth(240); setHeight(240); - caloriesValue.setPosition(135, 173, 77, 32); - caloriesValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - caloriesValue.setLinespacing(0); - Unicode::snprintf(caloriesValueBuffer, CALORIESVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_XTK2).getText()); - caloriesValue.setWildcard(caloriesValueBuffer); - caloriesValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); - add(caloriesValue); + heartIcon.setXY(27, 128); + heartIcon.setBitmap(touchgfx::Bitmap(BITMAP_HEART_30X30_ID)); + add(heartIcon); + + maxHRValue.setPosition(135, 129, 77, 32); + maxHRValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHRValue.setLinespacing(0); + Unicode::snprintf(maxHRValueBuffer, MAXHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_XTK2).getText()); + maxHRValue.setWildcard(maxHRValueBuffer); + maxHRValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(maxHRValue); - caloriesText.setPosition(43, 179, 91, 21); - caloriesText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - caloriesText.setLinespacing(0); - Unicode::snprintf(caloriesTextBuffer, CALORIESTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_CALORIE_UC).getText()); - caloriesText.setWildcard(caloriesTextBuffer); - caloriesText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); - add(caloriesText); + maxHRText.setPosition(48, 133, 91, 21); + maxHRText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + maxHRText.setLinespacing(0); + Unicode::snprintf(maxHRTextBuffer, MAXHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_MAX_HR_UC).getText()); + maxHRText.setWildcard(maxHRTextBuffer); + maxHRText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(maxHRText); line2.setPosition(25, 166, 190, 3); line2Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); @@ -35,7 +39,7 @@ SummaryFaceOverviewBase::SummaryFaceOverviewBase() line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); add(line2); - avgHRValue.setPosition(132, 127, 78, 32); + avgHRValue.setPosition(132, 175, 78, 32); avgHRValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); avgHRValue.setLinespacing(0); Unicode::snprintf(avgHRValueBuffer, AVGHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_ZJSJ).getText()); @@ -43,7 +47,7 @@ SummaryFaceOverviewBase::SummaryFaceOverviewBase() avgHRValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); add(avgHRValue); - avgHRText.setPosition(39, 133, 100, 21); + avgHRText.setPosition(48, 179, 91, 23); avgHRText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); avgHRText.setLinespacing(0); Unicode::snprintf(avgHRTextBuffer, AVGHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_AVG_HR_UC).getText()); diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp index c31cf2a7..fcbaead7 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp @@ -12,6 +12,7 @@ enum LANGUAGES enum TEXTS { + T_RESOURCEID14, T_RESOURCEID13, T_RESOURCEID12, T_RESOURCEID11, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp index b62f8e9e..b1d2773d 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp @@ -10,6 +10,7 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE; // Remap all strings TEXT_LOCATION_FLASH_PRAGMA KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + 205, // T_RESOURCEID14: "New Text" 205, // T_RESOURCEID13: "New Text" 200, // T_RESOURCEID12: "Time" 303, // T_RESOURCEID11: "Avg HR" diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp index 5b62010e..a76ae6d2 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp @@ -46,6 +46,7 @@ extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[]; TEXT_LOCATION_FLASH_PRAGMA const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp index 949cc99b..a48bd094 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceOverview.hpp @@ -5,7 +5,7 @@ #include /** - * @brief Summary face: session time (H:MM:SS), average HR, and total calories. + * @brief Summary face: session time (H:MM:SS), average HR, and max HR. * * One of the swipeable faces on the TrackSummary screen. * Label text widgets are expected to be set in TouchGFX Designer. @@ -24,8 +24,8 @@ class SummaryFaceOverview : public SummaryFaceOverviewBase /** @brief Average heart rate (bpm), or "---" when below @ref App::Display::kMinHR. */ void setAvgHR(float hr); - /** @brief Total calories (kcal), displayed as a whole number. */ - void setCalories(float kcal); + /** @brief Maximum heart rate (bpm), or "---" when below @ref App::Display::kMinHR. */ + void setMaxHR(float hr); protected: }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp index e2d571e6..e54739c0 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceOverview.cpp @@ -31,8 +31,12 @@ void SummaryFaceOverview::setAvgHR(float hr) avgHRValue.invalidate(); } -void SummaryFaceOverview::setCalories(float kcal) +void SummaryFaceOverview::setMaxHR(float hr) { - Unicode::snprintfFloat(caloriesValueBuffer, CALORIESVALUE_SIZE, "%.0f", kcal); - caloriesValue.invalidate(); + if (hr < App::Display::kMinHR) { + Unicode::snprintf(maxHRValueBuffer, MAXHRVALUE_SIZE, "---"); + } else { + Unicode::snprintfFloat(maxHRValueBuffer, MAXHRVALUE_SIZE, "%.0f", hr); + } + maxHRValue.invalidate(); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp index 7efd6617..976e6350 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp @@ -33,7 +33,7 @@ void TrackSummaryView::setSummary(const ActivitySummary& s, bool isPaused) summaryFaceOverview.setTotalTime(s.time); summaryFaceOverview.setAvgHR(s.hrAvg); - summaryFaceOverview.setCalories(s.calories); + summaryFaceOverview.setMaxHR(s.hrMax); summaryFaceHeartRate.setMaxHR(s.hrMax); summaryFaceHeartRate.setAvgHR(s.hrAvg); From 410989ac2b69546041f727bbadf02533744f9eea Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 16:16:24 +0100 Subject: [PATCH 09/11] feat(Workout): add SummaryFaceCal between Overview and HeartRate Insert a dedicated calories face on the TrackSummary screen so the zone-MET split is visible without rummaging through the FIT file. Swipe order is now Overview -> Calories -> HeartRate -> Laps. GUI: - New SummaryFaceCal container (Designer-authored, added by the user) showing total active time plus total / active / resting kcal. The cpp populates totalValue, activeValue, restingValue and the timer via Unicode::snprintfFloat("%.0f", ...) so values stay whole numbers. - TrackSummaryView gains a FACE_CALORIES = 1 enumerator, shifting FACE_HEARTRATE to 2 and FACE_LAPS to 3. scrollIndicator count is now 3 + lap pages. setSummary forwards s.time, s.calories, s.activeCalories and s.restingCalories to the new face. Data model: - ActivitySummary gains restingCalories and activeCalories (kcal). The existing 'calories' field still holds the zone-MET total. - Service::buildPartialSummary populates the new fields from mTrackData.totalCalories / restingCaloriesTotal, clamping active = max(0, total - resting) via std::fmax. - ActivitySummarySerializer writes "resting_calories" / "active_calories" and tolerates older summaries that only stored "calories" (treated as active, resting = 0). --- .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 215 ++++++++++++++ .../Apps/TouchGFX-GUI/assets/texts/texts.xml | 24 ++ .../containers/SummaryFaceCalBase.hpp | 66 +++++ .../TrackSummaryViewBase.hpp | 2 + .../src/containers/SummaryFaceCalBase.cpp | 103 +++++++ .../TrackSummaryViewBase.cpp | 5 + .../include/texts/TextKeysAndLanguages.hpp | 8 + .../generated/texts/src/LanguageGb.cpp | 268 +++++++++--------- .../generated/texts/src/Texts.cpp | 135 ++++----- .../generated/texts/src/TypedTextDatabase.cpp | 8 + .../include/gui/containers/SummaryFaceCal.hpp | 29 ++ .../gui/containers/SummaryFaceHeartRate.hpp | 2 +- .../tracksummary_screen/TrackSummaryView.hpp | 7 +- .../gui/src/containers/SummaryFaceCal.cpp | 39 +++ .../tracksummary_screen/TrackSummaryView.cpp | 12 +- .../simulator/msvs/Application.vcxproj | 4 + .../msvs/Application.vcxproj.filters | 12 + .../Software/Libs/Header/ActivitySummary.hpp | 7 +- .../Libs/Header/ActivitySummarySerializer.hpp | 2 + .../Sources/ActivitySummarySerializer.cpp | 11 + .../Workout/Software/Libs/Sources/Service.cpp | 5 +- 21 files changed, 761 insertions(+), 203 deletions(-) create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceCalBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceCalBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceCal.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceCal.cpp diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx index 919fd4df..fdcd54d1 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -822,6 +822,15 @@ "LockPosition": true, "CustomContainerDefinitionName": "SummaryFaceHeartRate" }, + { + "Type": "CustomContainerInstance", + "Name": "summaryFaceCal", + "Width": 240, + "Height": 240, + "Visible": false, + "LockPosition": true, + "CustomContainerDefinitionName": "SummaryFaceCal" + }, { "Type": "CustomContainerInstance", "Name": "summaryFaceOverview", @@ -2184,6 +2193,212 @@ ], "Interactions": [] }, + { + "Name": "SummaryFaceCal", + "Width": 240, + "Height": 240, + "Components": [ + { + "Type": "TextArea", + "Name": "restingValue", + "X": 146, + "Y": 167, + "Width": 74, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_5LBG", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "restingText", + "X": 32, + "Y": 171, + "Width": 124, + "Height": 23, + "LockPosition": true, + "TextId": "__SingleUse_0SLK", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "ResourceId15", + "UseBuffer": true, + "BufferSize": 14 + } + }, + { + "Type": "Line", + "Name": "line2", + "X": 25, + "Y": 166, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "activeValue", + "X": 146, + "Y": 137, + "Width": 74, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_WFDB", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "activeText", + "X": 32, + "Y": 141, + "Width": 124, + "Height": 21, + "LockPosition": true, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "ResourceId16", + "UseBuffer": true, + "BufferSize": 14 + } + }, + { + "Type": "Line", + "Name": "line1", + "X": 25, + "Y": 136, + "Width": 190, + "Height": 3, + "LockPosition": true, + "Color": { + "Green": 128, + "Blue": 128 + }, + "EndX": 190.0, + "LineWidth": 10.0, + "LineEndingStyle": "Round" + }, + { + "Type": "TextArea", + "Name": "totalValue", + "X": 146, + "Y": 107, + "Width": 74, + "Height": 32, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_25", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_M1HM", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "TextArea", + "Name": "totalText", + "X": 32, + "Y": 111, + "Width": 124, + "Height": 21, + "LockPosition": true, + "TextId": "TMP_MEDIUM_18", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "ResourceId17", + "UseBuffer": true, + "BufferSize": 14 + } + }, + { + "Type": "TextArea", + "Name": "timerValue", + "X": 66, + "Y": 60, + "Width": 134, + "Height": 35, + "LockPosition": true, + "TextId": "TMP_SEMIBOLD_40", + "TextRotation": "0", + "Color": { + "Red": 192, + "Green": 192, + "Blue": 192 + }, + "Wildcard1": { + "TextId": "__SingleUse_IYCO", + "UseBuffer": true, + "BufferSize": 10 + } + }, + { + "Type": "Image", + "Name": "clockIcon", + "X": 45, + "Y": 62, + "Width": 24, + "Height": 29, + "LockPosition": true, + "RelativeFilename": "clock_24x29.png" + }, + { + "Type": "CustomContainerInstance", + "Name": "title", + "X": 50, + "Width": 140, + "Height": 41, + "LockPosition": true, + "CustomContainerDefinitionName": "Title" + } + ], + "Interactions": [] + }, { "Name": "SummaryFaceOverview", "Width": 240, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml index 9b273d88..56fde135 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml @@ -5,6 +5,12 @@ + + TOTAL KCAL + + + ACTIVE KCAL + New Text @@ -339,6 +345,24 @@ + + RESTING KCAL + + + 1301 + + + 10:05:49 + + + <> + + + 133 + + + 1145 + Do you want to discard the activity? diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceCalBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceCalBase.hpp new file mode 100644 index 00000000..94326522 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceCalBase.hpp @@ -0,0 +1,66 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SUMMARYFACECALBASE_HPP +#define SUMMARYFACECALBASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +class SummaryFaceCalBase : public touchgfx::Container +{ +public: + SummaryFaceCalBase(); + virtual ~SummaryFaceCalBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::TextAreaWithOneWildcard restingValue; + touchgfx::TextAreaWithOneWildcard restingText; + touchgfx::Line line2; + touchgfx::PainterABGR2222 line2Painter; + touchgfx::TextAreaWithOneWildcard activeValue; + touchgfx::TextAreaWithOneWildcard activeText; + touchgfx::Line line1; + touchgfx::PainterABGR2222 line1Painter; + touchgfx::TextAreaWithOneWildcard totalValue; + touchgfx::TextAreaWithOneWildcard totalText; + touchgfx::TextAreaWithOneWildcard timerValue; + touchgfx::Image clockIcon; + Title title; + + /* + * Wildcard Buffers + */ + static const uint16_t RESTINGVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar restingValueBuffer[RESTINGVALUE_SIZE]; + static const uint16_t RESTINGTEXT_SIZE = 14; + touchgfx::Unicode::UnicodeChar restingTextBuffer[RESTINGTEXT_SIZE]; + static const uint16_t ACTIVEVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar activeValueBuffer[ACTIVEVALUE_SIZE]; + static const uint16_t ACTIVETEXT_SIZE = 14; + touchgfx::Unicode::UnicodeChar activeTextBuffer[ACTIVETEXT_SIZE]; + static const uint16_t TOTALVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar totalValueBuffer[TOTALVALUE_SIZE]; + static const uint16_t TOTALTEXT_SIZE = 14; + touchgfx::Unicode::UnicodeChar totalTextBuffer[TOTALTEXT_SIZE]; + static const uint16_t TIMERVALUE_SIZE = 10; + touchgfx::Unicode::UnicodeChar timerValueBuffer[TIMERVALUE_SIZE]; + +private: + +}; + +#endif // SUMMARYFACECALBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp index 806f2fee..18a6c9ef 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include class TrackSummaryViewBase : public touchgfx::View @@ -35,6 +36,7 @@ class TrackSummaryViewBase : public touchgfx::View ScrollIndicator scrollIndicator; SummaryFaceLaps summaryFaceLaps; SummaryFaceHeartRate summaryFaceHeartRate; + SummaryFaceCal summaryFaceCal; SummaryFaceOverview summaryFaceOverview; private: diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceCalBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceCalBase.cpp new file mode 100644 index 00000000..d7aca819 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceCalBase.cpp @@ -0,0 +1,103 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include +#include + +SummaryFaceCalBase::SummaryFaceCalBase() +{ + setWidth(240); + setHeight(240); + restingValue.setPosition(146, 167, 74, 32); + restingValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + restingValue.setLinespacing(0); + Unicode::snprintf(restingValueBuffer, RESTINGVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_5LBG).getText()); + restingValue.setWildcard(restingValueBuffer); + restingValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(restingValue); + + restingText.setPosition(32, 171, 124, 23); + restingText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + restingText.setLinespacing(0); + Unicode::snprintf(restingTextBuffer, RESTINGTEXT_SIZE, "%s", touchgfx::TypedText(T_RESOURCEID15).getText()); + restingText.setWildcard(restingTextBuffer); + restingText.setTypedText(touchgfx::TypedText(T___SINGLEUSE_0SLK)); + add(restingText); + + line2.setPosition(25, 166, 190, 3); + line2Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line2.setPainter(line2Painter); + line2.setStart(0, 0); + line2.setEnd(190, 0); + line2.setLineWidth(10); + line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line2); + + activeValue.setPosition(146, 137, 74, 32); + activeValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + activeValue.setLinespacing(0); + Unicode::snprintf(activeValueBuffer, ACTIVEVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_WFDB).getText()); + activeValue.setWildcard(activeValueBuffer); + activeValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(activeValue); + + activeText.setPosition(32, 141, 124, 21); + activeText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + activeText.setLinespacing(0); + Unicode::snprintf(activeTextBuffer, ACTIVETEXT_SIZE, "%s", touchgfx::TypedText(T_RESOURCEID16).getText()); + activeText.setWildcard(activeTextBuffer); + activeText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(activeText); + + line1.setPosition(25, 136, 190, 3); + line1Painter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); + line1.setPainter(line1Painter); + line1.setStart(0, 0); + line1.setEnd(190, 0); + line1.setLineWidth(10); + line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(line1); + + totalValue.setPosition(146, 107, 74, 32); + totalValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + totalValue.setLinespacing(0); + Unicode::snprintf(totalValueBuffer, TOTALVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_M1HM).getText()); + totalValue.setWildcard(totalValueBuffer); + totalValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_25)); + add(totalValue); + + totalText.setPosition(32, 111, 124, 21); + totalText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + totalText.setLinespacing(0); + Unicode::snprintf(totalTextBuffer, TOTALTEXT_SIZE, "%s", touchgfx::TypedText(T_RESOURCEID17).getText()); + totalText.setWildcard(totalTextBuffer); + totalText.setTypedText(touchgfx::TypedText(T_TMP_MEDIUM_18)); + add(totalText); + + timerValue.setPosition(66, 60, 134, 35); + timerValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + timerValue.setLinespacing(0); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_IYCO).getText()); + timerValue.setWildcard(timerValueBuffer); + timerValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); + add(timerValue); + + clockIcon.setXY(45, 62); + clockIcon.setBitmap(touchgfx::Bitmap(BITMAP_CLOCK_24X29_ID)); + add(clockIcon); + + title.setXY(50, 0); + add(title); +} + +SummaryFaceCalBase::~SummaryFaceCalBase() +{ + +} + +void SummaryFaceCalBase::initialize() +{ + title.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp index 04a2ee06..845a6ab5 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp @@ -27,6 +27,10 @@ TrackSummaryViewBase::TrackSummaryViewBase() summaryFaceHeartRate.setVisible(false); add(summaryFaceHeartRate); + summaryFaceCal.setXY(0, 0); + summaryFaceCal.setVisible(false); + add(summaryFaceCal); + summaryFaceOverview.setXY(0, 0); add(summaryFaceOverview); } @@ -42,6 +46,7 @@ void TrackSummaryViewBase::setupScreen() scrollIndicator.initialize(); summaryFaceLaps.initialize(); summaryFaceHeartRate.initialize(); + summaryFaceCal.initialize(); summaryFaceOverview.initialize(); transitionBegins(); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp index fcbaead7..478efc3c 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp @@ -12,6 +12,8 @@ enum LANGUAGES enum TEXTS { + T_RESOURCEID17, + T_RESOURCEID16, T_RESOURCEID14, T_RESOURCEID13, T_RESOURCEID12, @@ -122,6 +124,12 @@ enum TEXTS T_TEXT_SUMMARY, T_TEXT_LAP, T_TEXT_AVG_DOT_HR, + T_RESOURCEID15, + T___SINGLEUSE_M1HM, + T___SINGLEUSE_IYCO, + T___SINGLEUSE_0SLK, + T___SINGLEUSE_5LBG, + T___SINGLEUSE_WFDB, T___SINGLEUSE_FZIH, T___SINGLEUSE_Q39K, T_RESOURCEID8, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp index b1d2773d..1a425d91 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp @@ -10,137 +10,145 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE; // Remap all strings TEXT_LOCATION_FLASH_PRAGMA KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { - 205, // T_RESOURCEID14: "New Text" - 205, // T_RESOURCEID13: "New Text" - 200, // T_RESOURCEID12: "Time" - 303, // T_RESOURCEID11: "Avg HR" - 317, // T_RESOURCEID10: "Max HR" - 205, // T_RESOURCEID9: "New Text" - 178, // T_RESOURCEID7: "CALORIES" - 232, // T_RESOURCEID6: "AVG. HR" - 303, // T_RESOURCEID5: "Avg HR" - 63, // T_RESOURCEID4: "Current Lap" - 196, // T_RESOURCEID3: "Lap Time" - 200, // T_RESOURCEID2: "Time" - 187, // T_RESOURCEID1: "Calories" - 483, // T_TMP_REGULAR_14: "<>" - 483, // T_TMP_REGULAR_14_L: "<>" - 483, // T_TMP_REGULAR_14_R: "<>" - 483, // T_TMP_REGULAR_16: "<>" - 483, // T_TMP_REGULAR_16_L: "<>" - 483, // T_TMP_REGULAR_16_R: "<>" - 483, // T_TMP_REGULAR_18: "<>" - 483, // T_TMP_REGULAR_18_L: "<>" - 483, // T_TMP_REGULAR_18_R: "<>" - 483, // T_TMP_MEDIUM_10: "<>" - 483, // T_TMP_MEDIUM_10_L: "<>" - 483, // T_TMP_MEDIUM_10_R: "<>" - 483, // T_TMP_MEDIUM_18: "<>" - 483, // T_TMP_MEDIUM_18_L: "<>" - 483, // T_TMP_MEDIUM_18_R: "<>" - 483, // T_TMP_MEDIUM_25: "<>" - 483, // T_TMP_MEDIUM_25_L: "<>" - 483, // T_TMP_MEDIUM_25_R: "<>" - 483, // T_TMP_MEDIUM_50: "<>" - 483, // T_TMP_MEDIUM_50_L: "<>" - 483, // T_TMP_MEDIUM_50_R: "<>" - 483, // T_TMP_SEMIBOLD_18: "<>" - 483, // T_TMP_SEMIBOLD_18_L: "<>" - 483, // T_TMP_SEMIBOLD_18_R: "<>" - 483, // T_TMP_SEMIBOLD_20: "<>" - 483, // T_TMP_SEMIBOLD_20_L: "<>" - 483, // T_TMP_SEMIBOLD_20_R: "<>" - 483, // T_TMP_SEMIBOLD_25: "<>" - 483, // T_TMP_SEMIBOLD_25_L: "<>" - 483, // T_TMP_SEMIBOLD_25_R: "<>" - 483, // T_TMP_SEMIBOLD_30: "<>" - 483, // T_TMP_SEMIBOLD_30_L: "<>" - 483, // T_TMP_SEMIBOLD_30_R: "<>" - 483, // T_TMP_SEMIBOLD_35: "<>" - 483, // T_TMP_SEMIBOLD_35_R: "<>" - 483, // T_TMP_SEMIBOLD_35_L: "<>" - 483, // T_TMP_SEMIBOLD_40: "<>" - 483, // T_TMP_SEMIBOLD_40_L: "<>" - 483, // T_TMP_SEMIBOLD_40_R: "<>" - 483, // T_TMP_SEMIBOLD_60: "<>" - 483, // T_TMP_SEMIBOLD_60_L: "<>" - 483, // T_TMP_SEMIBOLD_60_R: "<>" - 483, // T_TMP_ITALIC_18: "<>" - 483, // T_TMP_ITALIC_18_L: "<>" - 483, // T_TMP_ITALIC_18_R: "<>" - 483, // T_TMP_ITALIC_20: "<>" - 483, // T_TMP_ITALIC_20_L: "<>" - 483, // T_TMP_ITALIC_20_R: "<>" - 272, // T_TEXT_APP_NAME_UC: "WORKOUT" - 374, // T_TEXT_TOTAL: "Total" - 256, // T_TEXT_SUMMARY_UC: "SUMMARY" - 467, // T_TEXT_MAP_UC: "MAP" - 411, // T_TEXT_LAPS_UC: "LAPS" - 75, // T_TEXT_HEART_RATE_UC: "HEART RATE" - 280, // T_TEXT_WORKOUT: "Workout" - 129, // T_TEXT_COMPLETED: "Completed" - 149, // T_TEXT_REMAINING: "Remaining" - 159, // T_TEXT_REMAINING_LC: "remaining" - 248, // T_TEXT_ELAPSED: "Elapsed" - 200, // T_TEXT_TIME: "Time" - 368, // T_TEXT_TIMER: "Timer" - 421, // T_TEXT_TIME_UC: "TIME" - 356, // T_TEXT_SAVED: "Saved" - 108, // T_TEXT_SAVE: "Save & End" - 223, // T_TEXT_SETTINGS: "Settings" - 214, // T_TEXT_SETTINGS_UC: "SETTINGS" - 362, // T_TEXT_START: "Start" - 97, // T_TEXT_LAP_ALERTS: "Lap Alerts" - 86, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" + 144, // T_RESOURCEID17: "TOTAL KCAL" + 76, // T_RESOURCEID16: "ACTIVE KCAL" + 241, // T_RESOURCEID14: "New Text" + 241, // T_RESOURCEID13: "New Text" + 236, // T_RESOURCEID12: "Time" + 339, // T_RESOURCEID11: "Avg HR" + 353, // T_RESOURCEID10: "Max HR" + 241, // T_RESOURCEID9: "New Text" + 214, // T_RESOURCEID7: "CALORIES" + 268, // T_RESOURCEID6: "AVG. HR" + 339, // T_RESOURCEID5: "Avg HR" + 88, // T_RESOURCEID4: "Current Lap" + 232, // T_RESOURCEID3: "Lap Time" + 236, // T_RESOURCEID2: "Time" + 223, // T_RESOURCEID1: "Calories" + 529, // T_TMP_REGULAR_14: "<>" + 529, // T_TMP_REGULAR_14_L: "<>" + 529, // T_TMP_REGULAR_14_R: "<>" + 529, // T_TMP_REGULAR_16: "<>" + 529, // T_TMP_REGULAR_16_L: "<>" + 529, // T_TMP_REGULAR_16_R: "<>" + 529, // T_TMP_REGULAR_18: "<>" + 529, // T_TMP_REGULAR_18_L: "<>" + 529, // T_TMP_REGULAR_18_R: "<>" + 529, // T_TMP_MEDIUM_10: "<>" + 529, // T_TMP_MEDIUM_10_L: "<>" + 529, // T_TMP_MEDIUM_10_R: "<>" + 529, // T_TMP_MEDIUM_18: "<>" + 529, // T_TMP_MEDIUM_18_L: "<>" + 529, // T_TMP_MEDIUM_18_R: "<>" + 529, // T_TMP_MEDIUM_25: "<>" + 529, // T_TMP_MEDIUM_25_L: "<>" + 529, // T_TMP_MEDIUM_25_R: "<>" + 529, // T_TMP_MEDIUM_50: "<>" + 529, // T_TMP_MEDIUM_50_L: "<>" + 529, // T_TMP_MEDIUM_50_R: "<>" + 529, // T_TMP_SEMIBOLD_18: "<>" + 529, // T_TMP_SEMIBOLD_18_L: "<>" + 529, // T_TMP_SEMIBOLD_18_R: "<>" + 529, // T_TMP_SEMIBOLD_20: "<>" + 529, // T_TMP_SEMIBOLD_20_L: "<>" + 529, // T_TMP_SEMIBOLD_20_R: "<>" + 529, // T_TMP_SEMIBOLD_25: "<>" + 529, // T_TMP_SEMIBOLD_25_L: "<>" + 529, // T_TMP_SEMIBOLD_25_R: "<>" + 529, // T_TMP_SEMIBOLD_30: "<>" + 529, // T_TMP_SEMIBOLD_30_L: "<>" + 529, // T_TMP_SEMIBOLD_30_R: "<>" + 529, // T_TMP_SEMIBOLD_35: "<>" + 529, // T_TMP_SEMIBOLD_35_R: "<>" + 529, // T_TMP_SEMIBOLD_35_L: "<>" + 529, // T_TMP_SEMIBOLD_40: "<>" + 529, // T_TMP_SEMIBOLD_40_L: "<>" + 529, // T_TMP_SEMIBOLD_40_R: "<>" + 529, // T_TMP_SEMIBOLD_60: "<>" + 529, // T_TMP_SEMIBOLD_60_L: "<>" + 529, // T_TMP_SEMIBOLD_60_R: "<>" + 529, // T_TMP_ITALIC_18: "<>" + 529, // T_TMP_ITALIC_18_L: "<>" + 529, // T_TMP_ITALIC_18_R: "<>" + 529, // T_TMP_ITALIC_20: "<>" + 529, // T_TMP_ITALIC_20_L: "<>" + 529, // T_TMP_ITALIC_20_R: "<>" + 308, // T_TEXT_APP_NAME_UC: "WORKOUT" + 410, // T_TEXT_TOTAL: "Total" + 292, // T_TEXT_SUMMARY_UC: "SUMMARY" + 513, // T_TEXT_MAP_UC: "MAP" + 457, // T_TEXT_LAPS_UC: "LAPS" + 100, // T_TEXT_HEART_RATE_UC: "HEART RATE" + 316, // T_TEXT_WORKOUT: "Workout" + 165, // T_TEXT_COMPLETED: "Completed" + 185, // T_TEXT_REMAINING: "Remaining" + 195, // T_TEXT_REMAINING_LC: "remaining" + 284, // T_TEXT_ELAPSED: "Elapsed" + 236, // T_TEXT_TIME: "Time" + 404, // T_TEXT_TIMER: "Timer" + 467, // T_TEXT_TIME_UC: "TIME" + 392, // T_TEXT_SAVED: "Saved" + 133, // T_TEXT_SAVE: "Save & End" + 259, // T_TEXT_SETTINGS: "Settings" + 250, // T_TEXT_SETTINGS_UC: "SETTINGS" + 398, // T_TEXT_START: "Start" + 122, // T_TEXT_LAP_ALERTS: "Lap Alerts" + 111, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" 50, // T_TEXT_PHONE_NOTIF_DOT: "Phone Notif." 37, // T_TEXT_PHONE_BR_NOTIF_DOT: "Phone\nNotif." - 288, // T_TEXT_MINUTES_LC: "minutes" - 331, // T_TEXT_MINUTE_LC: "minute" - 475, // T_TEXT_MIN: "min" - 479, // T_TEXT_SEC: "sec" - 426, // T_TEXT_MILE: "mile" - 380, // T_TEXT_MILES: "miles" - 491, // T_TEXT_MI: "mi" - 488, // T_TEXT_KM: "km" - 489, // T_TEXT_M: "m" - 416, // T_TEXT_OPEN: "Open" - 485, // T_TEXT_ON_UC: "ON" - 471, // T_TEXT_OFF_UC: "OFF" - 296, // T_TEXT_AVG_HR_UC: "AVG HR" - 178, // T_TEXT_CALORIE_UC: "CALORIES" - 310, // T_TEXT_MAX_HR_UC: "MAX HR" - 296, // T_TEXT_AVG_HR: "AVG HR" - 119, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" - 237, // T_TEXT_HR_UC: "HR" - 196, // T_TEXT_LAP_TIME: "Lap Time" - 465, // T_TEXT_PERCENT: "%" - 139, // T_TEXT_DISCARTED: "Discarded" - 240, // T_TEXT_DISCARD: "Discard" - 324, // T_TEXT_RESUME: "Resume" - 264, // T_TEXT_SUMMARY: "Summary" - 71, // T_TEXT_LAP: "Lap" - 232, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 324, // T_TEXT_MINUTES_LC: "minutes" + 367, // T_TEXT_MINUTE_LC: "minute" + 521, // T_TEXT_MIN: "min" + 525, // T_TEXT_SEC: "sec" + 472, // T_TEXT_MILE: "mile" + 416, // T_TEXT_MILES: "miles" + 537, // T_TEXT_MI: "mi" + 534, // T_TEXT_KM: "km" + 535, // T_TEXT_M: "m" + 462, // T_TEXT_OPEN: "Open" + 531, // T_TEXT_ON_UC: "ON" + 517, // T_TEXT_OFF_UC: "OFF" + 332, // T_TEXT_AVG_HR_UC: "AVG HR" + 214, // T_TEXT_CALORIE_UC: "CALORIES" + 346, // T_TEXT_MAX_HR_UC: "MAX HR" + 332, // T_TEXT_AVG_HR: "AVG HR" + 155, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" + 273, // T_TEXT_HR_UC: "HR" + 232, // T_TEXT_LAP_TIME: "Lap Time" + 511, // T_TEXT_PERCENT: "%" + 175, // T_TEXT_DISCARTED: "Discarded" + 276, // T_TEXT_DISCARD: "Discard" + 360, // T_TEXT_RESUME: "Resume" + 300, // T_TEXT_SUMMARY: "Summary" + 96, // T_TEXT_LAP: "Lap" + 268, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 63, // T_RESOURCEID15: "RESTING KCAL" + 427, // T___SINGLEUSE_M1HM: "1301" + 205, // T___SINGLEUSE_IYCO: "10:05:49" + 529, // T___SINGLEUSE_0SLK: "<>" + 489, // T___SINGLEUSE_5LBG: "133" + 422, // T___SINGLEUSE_WFDB: "1145" 0, // T___SINGLEUSE_FZIH: "Do you want\nto discard\nthe activity?" - 483, // T___SINGLEUSE_Q39K: "<>" - 205, // T_RESOURCEID8: "New Text" - 463, // T___SINGLEUSE_ICBU: "96%" - 344, // T___SINGLEUSE_YHFT: "17:35" - 391, // T___SINGLEUSE_WXKL: "4:27" - 396, // T___SINGLEUSE_NOCF: "5:02" - 455, // T___SINGLEUSE_U3YM: "24." - 451, // T___SINGLEUSE_ACJE: "208" - 439, // T___SINGLEUSE_BOEQ: "128" - 169, // T___SINGLEUSE_5T2E: "10:05:49" - 447, // T___SINGLEUSE_CMV2: "165" - 435, // T___SINGLEUSE_FMCS: "117" - 459, // T___SINGLEUSE_XTK2: "566" - 443, // T___SINGLEUSE_ZJSJ: "133" - 170, // T___SINGLEUSE_GAMW: "0:05:49" - 386, // T___SINGLEUSE_Z0WD: "2.33" - 338, // T___SINGLEUSE_3KKT: "15:37" - 431, // T___SINGLEUSE_HFND: "115" - 406, // T___SINGLEUSE_OTQI: "8:32" - 401, // T___SINGLEUSE_8WSQ: "6:27" - 350, // T___SINGLEUSE_4SCV: "44.44" - 170 // T___SINGLEUSE_KERT: "0:05:49" + 529, // T___SINGLEUSE_Q39K: "<>" + 241, // T_RESOURCEID8: "New Text" + 509, // T___SINGLEUSE_ICBU: "96%" + 380, // T___SINGLEUSE_YHFT: "17:35" + 437, // T___SINGLEUSE_WXKL: "4:27" + 442, // T___SINGLEUSE_NOCF: "5:02" + 501, // T___SINGLEUSE_U3YM: "24." + 497, // T___SINGLEUSE_ACJE: "208" + 485, // T___SINGLEUSE_BOEQ: "128" + 205, // T___SINGLEUSE_5T2E: "10:05:49" + 493, // T___SINGLEUSE_CMV2: "165" + 481, // T___SINGLEUSE_FMCS: "117" + 505, // T___SINGLEUSE_XTK2: "566" + 489, // T___SINGLEUSE_ZJSJ: "133" + 206, // T___SINGLEUSE_GAMW: "0:05:49" + 432, // T___SINGLEUSE_Z0WD: "2.33" + 374, // T___SINGLEUSE_3KKT: "15:37" + 477, // T___SINGLEUSE_HFND: "115" + 452, // T___SINGLEUSE_OTQI: "8:32" + 447, // T___SINGLEUSE_8WSQ: "6:27" + 386, // T___SINGLEUSE_4SCV: "44.44" + 206 // T___SINGLEUSE_KERT: "0:05:49" }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp index 7c340188..4ee53b8f 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp @@ -63,71 +63,76 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA 0x44, 0x6f, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x61, 0x6e, 0x74, 0xa, 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0xa, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x3f, 0x0, // @0 "Do you want\nto discard\nthe activity?" 0x50, 0x68, 0x6f, 0x6e, 0x65, 0xa, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @37 "Phone\nNotif." 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x20, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x2e, 0x0, // @50 "Phone Notif." - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4c, 0x61, 0x70, 0x0, // @63 "Current Lap" - 0x48, 0x45, 0x41, 0x52, 0x54, 0x20, 0x52, 0x41, 0x54, 0x45, 0x0, // @75 "HEART RATE" - 0x4c, 0x41, 0x50, 0x20, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x0, // @86 "LAP ALERTS" - 0x4c, 0x61, 0x70, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x0, // @97 "Lap Alerts" - 0x53, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x45, 0x6e, 0x64, 0x0, // @108 "Save & End" - 0x41, 0x76, 0x67, 0x2e, 0x20, 0x50, 0x61, 0x63, 0x65, 0x0, // @119 "Avg. Pace" - 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0, // @129 "Completed" - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x65, 0x64, 0x0, // @139 "Discarded" - 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @149 "Remaining" - 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @159 "remaining" - 0x31, 0x30, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x39, 0x0, // @169 "10:05:49" - 0x43, 0x41, 0x4c, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x0, // @178 "CALORIES" - 0x43, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x0, // @187 "Calories" - 0x4c, 0x61, 0x70, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, // @196 "Lap Time" - 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @205 "New Text" - 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @214 "SETTINGS" - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @223 "Settings" - 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @232 "AVG. HR" - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @240 "Discard" - 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @248 "Elapsed" - 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @256 "SUMMARY" - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @264 "Summary" - 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @272 "WORKOUT" - 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @280 "Workout" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @288 "minutes" - 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @296 "AVG HR" - 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @303 "Avg HR" - 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @310 "MAX HR" - 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @317 "Max HR" - 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @324 "Resume" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @331 "minute" - 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @338 "15:37" - 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @344 "17:35" - 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @350 "44.44" - 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @356 "Saved" - 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @362 "Start" - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @368 "Timer" - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @374 "Total" - 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @380 "miles" - 0x32, 0x2e, 0x33, 0x33, 0x0, // @386 "2.33" - 0x34, 0x3a, 0x32, 0x37, 0x0, // @391 "4:27" - 0x35, 0x3a, 0x30, 0x32, 0x0, // @396 "5:02" - 0x36, 0x3a, 0x32, 0x37, 0x0, // @401 "6:27" - 0x38, 0x3a, 0x33, 0x32, 0x0, // @406 "8:32" - 0x4c, 0x41, 0x50, 0x53, 0x0, // @411 "LAPS" - 0x4f, 0x70, 0x65, 0x6e, 0x0, // @416 "Open" - 0x54, 0x49, 0x4d, 0x45, 0x0, // @421 "TIME" - 0x6d, 0x69, 0x6c, 0x65, 0x0, // @426 "mile" - 0x31, 0x31, 0x35, 0x0, // @431 "115" - 0x31, 0x31, 0x37, 0x0, // @435 "117" - 0x31, 0x32, 0x38, 0x0, // @439 "128" - 0x31, 0x33, 0x33, 0x0, // @443 "133" - 0x31, 0x36, 0x35, 0x0, // @447 "165" - 0x32, 0x30, 0x38, 0x0, // @451 "208" - 0x32, 0x34, 0x2e, 0x0, // @455 "24." - 0x35, 0x36, 0x36, 0x0, // @459 "566" - 0x39, 0x36, 0x25, 0x0, // @463 "96%" - 0x4d, 0x41, 0x50, 0x0, // @467 "MAP" - 0x4f, 0x46, 0x46, 0x0, // @471 "OFF" - 0x6d, 0x69, 0x6e, 0x0, // @475 "min" - 0x73, 0x65, 0x63, 0x0, // @479 "sec" - 0x2, 0x0, // @483 "<>" - 0x4f, 0x4e, 0x0, // @485 "ON" - 0x6b, 0x6d, 0x0, // @488 "km" - 0x6d, 0x69, 0x0 // @491 "mi" + 0x52, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x20, 0x4b, 0x43, 0x41, 0x4c, 0x0, // @63 "RESTING KCAL" + 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x20, 0x4b, 0x43, 0x41, 0x4c, 0x0, // @76 "ACTIVE KCAL" + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x4c, 0x61, 0x70, 0x0, // @88 "Current Lap" + 0x48, 0x45, 0x41, 0x52, 0x54, 0x20, 0x52, 0x41, 0x54, 0x45, 0x0, // @100 "HEART RATE" + 0x4c, 0x41, 0x50, 0x20, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x0, // @111 "LAP ALERTS" + 0x4c, 0x61, 0x70, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x0, // @122 "Lap Alerts" + 0x53, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x45, 0x6e, 0x64, 0x0, // @133 "Save & End" + 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x20, 0x4b, 0x43, 0x41, 0x4c, 0x0, // @144 "TOTAL KCAL" + 0x41, 0x76, 0x67, 0x2e, 0x20, 0x50, 0x61, 0x63, 0x65, 0x0, // @155 "Avg. Pace" + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0, // @165 "Completed" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x65, 0x64, 0x0, // @175 "Discarded" + 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @185 "Remaining" + 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x0, // @195 "remaining" + 0x31, 0x30, 0x3a, 0x30, 0x35, 0x3a, 0x34, 0x39, 0x0, // @205 "10:05:49" + 0x43, 0x41, 0x4c, 0x4f, 0x52, 0x49, 0x45, 0x53, 0x0, // @214 "CALORIES" + 0x43, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x0, // @223 "Calories" + 0x4c, 0x61, 0x70, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, // @232 "Lap Time" + 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @241 "New Text" + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @250 "SETTINGS" + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @259 "Settings" + 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @268 "AVG. HR" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @276 "Discard" + 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @284 "Elapsed" + 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @292 "SUMMARY" + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @300 "Summary" + 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @308 "WORKOUT" + 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @316 "Workout" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @324 "minutes" + 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @332 "AVG HR" + 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @339 "Avg HR" + 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @346 "MAX HR" + 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @353 "Max HR" + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @360 "Resume" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @367 "minute" + 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @374 "15:37" + 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @380 "17:35" + 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @386 "44.44" + 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @392 "Saved" + 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @398 "Start" + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @404 "Timer" + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @410 "Total" + 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @416 "miles" + 0x31, 0x31, 0x34, 0x35, 0x0, // @422 "1145" + 0x31, 0x33, 0x30, 0x31, 0x0, // @427 "1301" + 0x32, 0x2e, 0x33, 0x33, 0x0, // @432 "2.33" + 0x34, 0x3a, 0x32, 0x37, 0x0, // @437 "4:27" + 0x35, 0x3a, 0x30, 0x32, 0x0, // @442 "5:02" + 0x36, 0x3a, 0x32, 0x37, 0x0, // @447 "6:27" + 0x38, 0x3a, 0x33, 0x32, 0x0, // @452 "8:32" + 0x4c, 0x41, 0x50, 0x53, 0x0, // @457 "LAPS" + 0x4f, 0x70, 0x65, 0x6e, 0x0, // @462 "Open" + 0x54, 0x49, 0x4d, 0x45, 0x0, // @467 "TIME" + 0x6d, 0x69, 0x6c, 0x65, 0x0, // @472 "mile" + 0x31, 0x31, 0x35, 0x0, // @477 "115" + 0x31, 0x31, 0x37, 0x0, // @481 "117" + 0x31, 0x32, 0x38, 0x0, // @485 "128" + 0x31, 0x33, 0x33, 0x0, // @489 "133" + 0x31, 0x36, 0x35, 0x0, // @493 "165" + 0x32, 0x30, 0x38, 0x0, // @497 "208" + 0x32, 0x34, 0x2e, 0x0, // @501 "24." + 0x35, 0x36, 0x36, 0x0, // @505 "566" + 0x39, 0x36, 0x25, 0x0, // @509 "96%" + 0x4d, 0x41, 0x50, 0x0, // @513 "MAP" + 0x4f, 0x46, 0x46, 0x0, // @517 "OFF" + 0x6d, 0x69, 0x6e, 0x0, // @521 "min" + 0x73, 0x65, 0x63, 0x0, // @525 "sec" + 0x2, 0x0, // @529 "<>" + 0x4f, 0x4e, 0x0, // @531 "ON" + 0x6b, 0x6d, 0x0, // @534 "km" + 0x6d, 0x69, 0x0 // @537 "mi" }; TEXT_LOCATION_FLASH_PRAGMA diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp index a76ae6d2..812a8910 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp @@ -46,6 +46,8 @@ extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[]; TEXT_LOCATION_FLASH_PRAGMA const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE = { + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, @@ -157,6 +159,12 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceCal.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceCal.hpp new file mode 100644 index 00000000..446d9685 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceCal.hpp @@ -0,0 +1,29 @@ +#ifndef SUMMARYFACECAL_HPP +#define SUMMARYFACECAL_HPP + +#include +#include + +/** + * @brief Summary face: session time and total / active / resting calories (kcal). + * + * Swipe order on TrackSummary: after overview, before the heart-rate face. + * Label text widgets are set in TouchGFX Designer. + */ +class SummaryFaceCal : public SummaryFaceCalBase +{ +public: + SummaryFaceCal(); + virtual ~SummaryFaceCal() {} + + virtual void initialize(); + + void setTotalTime(std::time_t sec); + void setTotalCalories(float kcal); + void setActiveCalories(float kcal); + void setRestingCalories(float kcal); + +protected: +}; + +#endif // SUMMARYFACECAL_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp index 92dfae8f..3ea0c7f6 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp @@ -6,7 +6,7 @@ /** * @brief Summary face showing heart rate summary: peak and average HR over the session. * - * One of four swipeable faces on the TrackSummary screen. + * One of the swipeable faces on the TrackSummary screen. */ class SummaryFaceHeartRate : public SummaryFaceHeartRateBase { diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp index afeaac54..a2edc867 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp @@ -18,9 +18,10 @@ class TrackSummaryView : public TrackSummaryViewBase protected: enum Face : uint8_t { - FACE_OVERVIEW = 0, - FACE_HEARTRATE = 1, - FACE_LAPS = 2, + FACE_OVERVIEW = 0, + FACE_CALORIES = 1, + FACE_HEARTRATE = 2, + FACE_LAPS = 3, }; uint8_t mCurrentFace = FACE_OVERVIEW; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceCal.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceCal.cpp new file mode 100644 index 00000000..5f57dc7d --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceCal.cpp @@ -0,0 +1,39 @@ +#include +#include +#include + +SummaryFaceCal::SummaryFaceCal() +{ +} + +void SummaryFaceCal::initialize() +{ + SummaryFaceCalBase::initialize(); + title.set(T_TEXT_SUMMARY_UC); +} + +void SummaryFaceCal::setTotalTime(std::time_t sec) +{ + auto hms = SDK::Utils::toHMS(sec); + Unicode::snprintf(timerValueBuffer, TIMERVALUE_SIZE, + "%u:%02u:%02u", hms.h, hms.m, hms.s); + timerValue.invalidate(); +} + +void SummaryFaceCal::setTotalCalories(float kcal) +{ + Unicode::snprintfFloat(totalValueBuffer, TOTALVALUE_SIZE, "%.0f", kcal); + totalValue.invalidate(); +} + +void SummaryFaceCal::setActiveCalories(float kcal) +{ + Unicode::snprintfFloat(activeValueBuffer, ACTIVEVALUE_SIZE, "%.0f", kcal); + activeValue.invalidate(); +} + +void SummaryFaceCal::setRestingCalories(float kcal) +{ + Unicode::snprintfFloat(restingValueBuffer, RESTINGVALUE_SIZE, "%.0f", kcal); + restingValue.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp index 976e6350..7010d7f3 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp @@ -15,7 +15,7 @@ void TrackSummaryView::setupScreen() buttons.setR2(Buttons::NONE); scrollIndicator.setConfig(ScrollIndicator::kSmall); - scrollIndicator.setCount(2); + scrollIndicator.setCount(3); scrollIndicator.setActiveId(FACE_OVERVIEW); mCurrentFace = FACE_OVERVIEW; @@ -34,12 +34,18 @@ void TrackSummaryView::setSummary(const ActivitySummary& s, bool isPaused) summaryFaceOverview.setTotalTime(s.time); summaryFaceOverview.setAvgHR(s.hrAvg); summaryFaceOverview.setMaxHR(s.hrMax); + + summaryFaceCal.setTotalTime(s.time); + summaryFaceCal.setTotalCalories(s.calories); + summaryFaceCal.setActiveCalories(s.activeCalories); + summaryFaceCal.setRestingCalories(s.restingCalories); + summaryFaceHeartRate.setMaxHR(s.hrMax); summaryFaceHeartRate.setAvgHR(s.hrAvg); summaryFaceLaps.setLaps(s.laps); mLapsPageCount = summaryFaceLaps.getPageCount(); - scrollIndicator.setCount(2 + mLapsPageCount); + scrollIndicator.setCount(3 + mLapsPageCount); if (isPaused) { buttons.setR1(Buttons::NONE); @@ -53,10 +59,12 @@ void TrackSummaryView::setSummary(const ActivitySummary& s, bool isPaused) void TrackSummaryView::updateFace() { summaryFaceOverview.setVisible(mCurrentFace == FACE_OVERVIEW); + summaryFaceCal.setVisible(mCurrentFace == FACE_CALORIES); summaryFaceHeartRate.setVisible(mCurrentFace == FACE_HEARTRATE); summaryFaceLaps.setVisible(mCurrentFace == FACE_LAPS); summaryFaceOverview.invalidate(); + summaryFaceCal.invalidate(); summaryFaceHeartRate.invalidate(); summaryFaceLaps.invalidate(); diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj index de51d928..26531b6d 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj @@ -156,6 +156,8 @@ + + @@ -459,6 +461,8 @@ + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters index b4e87988..900a2f87 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters @@ -1221,6 +1221,18 @@ Libs\Source + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp index 076af24b..b3850646 100644 --- a/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp +++ b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp @@ -35,7 +35,12 @@ struct ActivitySummary { time_t time; ///< Total track time in seconds float hrMax; ///< Maximum Heart Rate in bpm float hrAvg; ///< Average Heart Rate in bpm - float calories; ///< Estimated total energy expenditure (kcal) + /// Total energy (kcal): zone-weighted MET model including MET 1.0 when HR is out of zone. + float calories = 0.0f; + /// Basal (BMR) component at MET 1.0 every active second (matches FIT session metabolic_calories). + float restingCalories = 0.0f; + /// Calories above basal from the zone MET model: @c calories - @c restingCalories (clamped >= 0). + float activeCalories = 0.0f; std::vector laps; ///< Per-lap summary data }; diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp index 6c90cefa..c351276f 100644 --- a/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp +++ b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp @@ -15,6 +15,8 @@ * "hr_max":84, * "hr_avg":74, * "calories":42.5, + * "resting_calories":12.0, + * "active_calories":30.5, * "lap_count":2, * "laps":[ * {"dur":62,"hr_avg":120,"hr_max":135}, diff --git a/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp index 938250bb..4cf12957 100644 --- a/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp +++ b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp @@ -61,6 +61,8 @@ bool ActivitySummarySerializer::save(const ActivitySummary& summary) writer.add("hr_max", summary.hrMax); writer.add("hr_avg", summary.hrAvg); writer.add("calories", summary.calories); + writer.add("resting_calories", summary.restingCalories); + writer.add("active_calories", summary.activeCalories); writer.add("lap_count", static_cast(summary.laps.size())); writer.startArray("laps"); @@ -153,6 +155,15 @@ bool ActivitySummarySerializer::load(ActivitySummary& summary) summary.calories = 0.0f; reader.get("calories", summary.calories); + summary.restingCalories = 0.0f; + summary.activeCalories = 0.0f; + const bool hasRestingCal = reader.get("resting_calories", summary.restingCalories); + const bool hasActiveCal = reader.get("active_calories", summary.activeCalories); + // Older summaries only stored total "calories"; treat it as active for the split UI. + if (!hasRestingCal && !hasActiveCal && summary.calories > 0.0f) { + summary.activeCalories = summary.calories; + } + // Laps uint32_t lapCount = 0; reader.get("lap_count", lapCount); diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp index 8fe815f7..a2a3df0d 100644 --- a/Apps/Workout/Software/Libs/Sources/Service.cpp +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -695,7 +695,10 @@ void Service::buildPartialSummary() mSummary.time = mTimeCounter.getValueActive(); mSummary.hrMax = mHrCounter.getMaximum(); mSummary.hrAvg = mHrCounter.getAverage(); - mSummary.calories = mTrackData.totalCalories; + mSummary.calories = mTrackData.totalCalories; + mSummary.restingCalories = mTrackData.restingCaloriesTotal; + mSummary.activeCalories = std::fmax(0.0f, + mTrackData.totalCalories - mTrackData.restingCaloriesTotal); } void Service::stopTrack(bool discard) From 2e143645bf5586ffe205184bd2fb6477a791b178 Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Mon, 11 May 2026 17:44:59 +0100 Subject: [PATCH 10/11] feat(Workout): replace SummaryFaceHeartRate with HR-zones face Swap the heart-rate face on the TrackSummary screen for a new SummaryFaceZones that shows the time spent in each of the five HR zones with a zone number, percentage of total active time, a coloured progress bar, and the time spent in that zone. Zone 5 is at the top of the list, zone 1 at the bottom -- matching the in-activity HR-zone indicator. Data: - ActivitySummary gains zoneTimeSec[5] (cumulative seconds in zones 1..5). buildPartialSummary() copies it from Track::Data. - ActivitySummarySerializer persists/loads the new "zone_times_sec" array; old summaries without the key keep zeros. GUI: - New ZoneInfo row container: setRow(zone, seconds, pct, color) writes the three wildcard text areas (zone digit, time formatted via SDK::Utils::toHMS, percent via T_TEXT_PERCENT typed text), resizes the progress bar to 6..48 px based on pct, retints barPainter, and hides the bar at 0%. - New SummaryFaceZones: title set to "HR ZONES", setZoneSummary() folds any active seconds spent below zone 1 into the displayed zone-1 row so the five percentages add up to 100% of session time. - TrackSummaryView: FACE_HEARTRATE -> FACE_ZONES (value still 2), calls summaryFaceZones.setZoneSummary(s) and toggles its visibility on swipe. Cleanup: - Deleted SummaryFaceHeartRate.{hpp,cpp} and updated the MSVS simulator project + filters to drop the entries. CubeIDE/gcc Makefile pick up sources via globs. --- .../Apps/TouchGFX-GUI/WorkoutGUI.touchgfx | 191 +++++++++------- .../Apps/TouchGFX-GUI/assets/texts/texts.xml | 24 +- .../containers/SummaryFaceHeartRateBase.hpp | 55 ----- .../containers/SummaryFaceZonesBase.hpp | 38 +++ .../gui_generated/containers/ZoneInfoBase.hpp | 50 ++++ .../TrackSummaryViewBase.hpp | 4 +- .../containers/SummaryFaceHeartRateBase.cpp | 70 ------ .../src/containers/SummaryFaceZonesBase.cpp | 42 ++++ .../src/containers/ZoneInfoBase.cpp | 65 ++++++ .../TrackSummaryViewBase.cpp | 8 +- .../include/texts/TextKeysAndLanguages.hpp | 8 +- .../generated/texts/src/LanguageGb.cpp | 216 +++++++++--------- .../generated/texts/src/Texts.cpp | 100 ++++---- .../generated/texts/src/TypedTextDatabase.cpp | 8 +- .../gui/containers/SummaryFaceHeartRate.hpp | 34 --- .../gui/containers/SummaryFaceZones.hpp | 31 +++ .../gui/include/gui/containers/ZoneInfo.hpp | 47 ++++ .../tracksummary_screen/TrackSummaryView.hpp | 2 +- .../src/containers/SummaryFaceHeartRate.cpp | 32 --- .../gui/src/containers/SummaryFaceZones.cpp | 59 +++++ .../gui/src/containers/ZoneInfo.cpp | 56 +++++ .../tracksummary_screen/TrackSummaryView.cpp | 9 +- .../simulator/msvs/Application.vcxproj | 12 +- .../msvs/Application.vcxproj.filters | 36 ++- .../Software/Libs/Header/ActivitySummary.hpp | 5 + .../Libs/Header/ActivitySummarySerializer.hpp | 1 + .../Sources/ActivitySummarySerializer.cpp | 17 ++ .../Workout/Software/Libs/Sources/Service.cpp | 4 + 28 files changed, 762 insertions(+), 462 deletions(-) delete mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceZonesBase.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ZoneInfoBase.hpp delete mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceZonesBase.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ZoneInfoBase.cpp delete mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceZones.hpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ZoneInfo.hpp delete mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceZones.cpp create mode 100644 Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ZoneInfo.cpp diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx index fdcd54d1..37eea914 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/WorkoutGUI.touchgfx @@ -815,12 +815,11 @@ }, { "Type": "CustomContainerInstance", - "Name": "summaryFaceHeartRate", + "Name": "summaryFaceZones", "Width": 240, "Height": 240, "Visible": false, - "LockPosition": true, - "CustomContainerDefinitionName": "SummaryFaceHeartRate" + "CustomContainerDefinitionName": "SummaryFaceZones" }, { "Type": "CustomContainerInstance", @@ -2421,6 +2420,7 @@ "Y": 129, "Width": 77, "Height": 32, + "LockPosition": true, "TextId": "TMP_SEMIBOLD_25", "TextRotation": "0", "Color": { @@ -2441,6 +2441,7 @@ "Y": 133, "Width": 91, "Height": 21, + "LockPosition": true, "TextId": "TMP_MEDIUM_18", "TextRotation": "0", "Color": { @@ -2477,6 +2478,7 @@ "Y": 175, "Width": 78, "Height": 32, + "LockPosition": true, "TextId": "TMP_SEMIBOLD_25", "TextRotation": "0", "Color": { @@ -2497,6 +2499,7 @@ "Y": 179, "Width": 91, "Height": 23, + "LockPosition": true, "TextId": "__SingleUse_Q39K", "TextRotation": "0", "Color": { @@ -2563,134 +2566,168 @@ "X": 50, "Width": 140, "Height": 41, + "LockPosition": true, "CustomContainerDefinitionName": "Title" } ], "Interactions": [] }, { - "Name": "SummaryFaceHeartRate", - "Width": 240, - "Height": 240, + "Name": "ZoneInfo", + "Width": 180, + "Height": 20, "Components": [ { - "Type": "TextArea", - "Name": "maxHrText", - "X": 81, - "Y": 118, - "Width": 78, - "Height": 25, - "LockPosition": true, - "TextId": "TMP_SEMIBOLD_20", - "TextRotation": "0", + "Type": "Line", + "Name": "background", + "X": 66, + "Width": 60, + "Height": 20, "Color": { - "Red": 192, - "Green": 192, - "Blue": 192 + "Red": 64, + "Green": 64, + "Blue": 64 }, - "Wildcard1": { - "TextId": "TEXT_MAX_HR_UC", - "UseBuffer": true, - "BufferSize": 10 - } + "StartX": 6.0, + "StartY": 10.0, + "EndX": 48.0, + "EndY": 10.0, + "LineWidth": 11.0, + "LineEndingStyle": "Round" + }, + { + "Type": "Line", + "Name": "bar", + "X": 66, + "Width": 60, + "Height": 20, + "Color": { + "Red": 192 + }, + "StartX": 6.0, + "StartY": 10.0, + "EndX": 26.0, + "EndY": 10.0, + "LineWidth": 11.0, + "LineEndingStyle": "Round" }, { "Type": "TextArea", - "Name": "maxHrValue", - "X": 70, - "Y": 77, - "Width": 100, - "Height": 51, - "LockPosition": true, - "TextId": "TMP_SEMIBOLD_40", + "Name": "zoneText", + "Width": 9, + "Height": 20, + "TextId": "__SingleUse_RUD6", "TextRotation": "0", "Color": { "Red": 192, "Green": 192, "Blue": 192 }, + "AutoSize": true, "Wildcard1": { - "TextId": "__SingleUse_CMV2", + "TextId": "__SingleUse_AIE6", "UseBuffer": true, - "BufferSize": 10 + "BufferSize": 2 } }, - { - "Type": "Line", - "Name": "line", - "X": 25, - "Y": 147, - "Width": 190, - "Height": 3, - "LockPosition": true, - "Color": { - "Green": 128, - "Blue": 128 - }, - "EndX": 190.0, - "LineWidth": 10.0, - "LineEndingStyle": "Round" - }, { "Type": "TextArea", - "Name": "avgHrText", - "X": 81, - "Y": 191, - "Width": 75, - "Height": 25, - "LockPosition": true, - "TextId": "TMP_SEMIBOLD_20", + "Name": "zoneTime", + "X": 135, + "Width": 41, + "Height": 20, + "TextId": "__SingleUse_F90O", "TextRotation": "0", "Color": { "Red": 192, "Green": 192, "Blue": 192 }, + "AutoSize": true, "Wildcard1": { - "TextId": "TEXT_AVG_HR", + "TextId": "__SingleUse_X62D", "UseBuffer": true, "BufferSize": 10 } }, { "Type": "TextArea", - "Name": "avgHrValue", - "X": 70, - "Y": 150, - "Width": 100, - "Height": 51, - "LockPosition": true, - "TextId": "TMP_SEMIBOLD_40", + "Name": "zonePercent", + "X": 18, + "Width": 37, + "Height": 20, + "TextId": "__SingleUse_CRAK", "TextRotation": "0", "Color": { - "Red": 192, "Green": 192, "Blue": 192 }, "Wildcard1": { - "TextId": "__SingleUse_FMCS", + "TextId": "__SingleUse_LZ0O", "UseBuffer": true, "BufferSize": 10 } - }, - { - "Type": "Image", - "Name": "heartIcon", - "X": 105, - "Y": 48, - "Width": 30, - "Height": 30, - "LockPosition": true, - "RelativeFilename": "Heart_30x30.png" - }, + } + ], + "Interactions": [] + }, + { + "Name": "SummaryFaceZones", + "Width": 240, + "Height": 240, + "Components": [ { "Type": "CustomContainerInstance", "Name": "title", "X": 50, "Width": 140, "Height": 41, - "LockPosition": true, "CustomContainerDefinitionName": "Title" + }, + { + "Type": "CustomContainerInstance", + "Name": "zoneInfo1", + "X": 29, + "Y": 154, + "Width": 180, + "Height": 20, + "CustomContainerDefinitionName": "ZoneInfo" + }, + { + "Type": "CustomContainerInstance", + "Name": "zoneInfo2", + "X": 29, + "Y": 133, + "Width": 180, + "Height": 20, + "CustomContainerDefinitionName": "ZoneInfo" + }, + { + "Type": "CustomContainerInstance", + "Name": "zoneInfo3", + "X": 29, + "Y": 112, + "Width": 180, + "Height": 20, + "CustomContainerDefinitionName": "ZoneInfo" + }, + { + "Type": "CustomContainerInstance", + "Name": "zoneInfo4", + "X": 29, + "Y": 91, + "Width": 180, + "Height": 20, + "CustomContainerDefinitionName": "ZoneInfo" + }, + { + "Type": "CustomContainerInstance", + "Name": "zoneInfo5", + "X": 29, + "Y": 70, + "Width": 180, + "Height": 20, + "CustomContainerDefinitionName": "ZoneInfo" } ], "Interactions": [] diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml index 56fde135..6878d056 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/assets/texts/texts.xml @@ -345,6 +345,24 @@ + + 23:58 + + + 3 + + + 100% + + + <value> + + + <> + + + <> + RESTING KCAL @@ -396,12 +414,6 @@ 10:05:49 - - 165 - - - 117 - 566 diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp deleted file mode 100644 index 52749a98..00000000 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceHeartRateBase.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*********************************************************************************/ -/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ -/*********************************************************************************/ -#ifndef SUMMARYFACEHEARTRATEBASE_HPP -#define SUMMARYFACEHEARTRATEBASE_HPP - -#include -#include -#include -#include -#include -#include -#include - -class SummaryFaceHeartRateBase : public touchgfx::Container -{ -public: - SummaryFaceHeartRateBase(); - virtual ~SummaryFaceHeartRateBase(); - virtual void initialize(); - -protected: - FrontendApplication& application() { - return *static_cast(touchgfx::Application::getInstance()); - } - - /* - * Member Declarations - */ - touchgfx::TextAreaWithOneWildcard maxHrText; - touchgfx::TextAreaWithOneWildcard maxHrValue; - touchgfx::Line line; - touchgfx::PainterABGR2222 linePainter; - touchgfx::TextAreaWithOneWildcard avgHrText; - touchgfx::TextAreaWithOneWildcard avgHrValue; - touchgfx::Image heartIcon; - Title title; - - /* - * Wildcard Buffers - */ - static const uint16_t MAXHRTEXT_SIZE = 10; - touchgfx::Unicode::UnicodeChar maxHrTextBuffer[MAXHRTEXT_SIZE]; - static const uint16_t MAXHRVALUE_SIZE = 10; - touchgfx::Unicode::UnicodeChar maxHrValueBuffer[MAXHRVALUE_SIZE]; - static const uint16_t AVGHRTEXT_SIZE = 10; - touchgfx::Unicode::UnicodeChar avgHrTextBuffer[AVGHRTEXT_SIZE]; - static const uint16_t AVGHRVALUE_SIZE = 10; - touchgfx::Unicode::UnicodeChar avgHrValueBuffer[AVGHRVALUE_SIZE]; - -private: - -}; - -#endif // SUMMARYFACEHEARTRATEBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceZonesBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceZonesBase.hpp new file mode 100644 index 00000000..7056c3f7 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/SummaryFaceZonesBase.hpp @@ -0,0 +1,38 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef SUMMARYFACEZONESBASE_HPP +#define SUMMARYFACEZONESBASE_HPP + +#include +#include +#include +#include + +class SummaryFaceZonesBase : public touchgfx::Container +{ +public: + SummaryFaceZonesBase(); + virtual ~SummaryFaceZonesBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + Title title; + ZoneInfo zoneInfo1; + ZoneInfo zoneInfo2; + ZoneInfo zoneInfo3; + ZoneInfo zoneInfo4; + ZoneInfo zoneInfo5; + +private: + +}; + +#endif // SUMMARYFACEZONESBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ZoneInfoBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ZoneInfoBase.hpp new file mode 100644 index 00000000..1be1517a --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/containers/ZoneInfoBase.hpp @@ -0,0 +1,50 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#ifndef ZONEINFOBASE_HPP +#define ZONEINFOBASE_HPP + +#include +#include +#include +#include +#include + +class ZoneInfoBase : public touchgfx::Container +{ +public: + ZoneInfoBase(); + virtual ~ZoneInfoBase(); + virtual void initialize(); + +protected: + FrontendApplication& application() { + return *static_cast(touchgfx::Application::getInstance()); + } + + /* + * Member Declarations + */ + touchgfx::Line background; + touchgfx::PainterABGR2222 backgroundPainter; + touchgfx::Line bar; + touchgfx::PainterABGR2222 barPainter; + touchgfx::TextAreaWithOneWildcard zoneText; + touchgfx::TextAreaWithOneWildcard zoneTime; + touchgfx::TextAreaWithOneWildcard zonePercent; + + /* + * Wildcard Buffers + */ + static const uint16_t ZONETEXT_SIZE = 2; + touchgfx::Unicode::UnicodeChar zoneTextBuffer[ZONETEXT_SIZE]; + static const uint16_t ZONETIME_SIZE = 10; + touchgfx::Unicode::UnicodeChar zoneTimeBuffer[ZONETIME_SIZE]; + static const uint16_t ZONEPERCENT_SIZE = 10; + touchgfx::Unicode::UnicodeChar zonePercentBuffer[ZONEPERCENT_SIZE]; + +private: + +}; + +#endif // ZONEINFOBASE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp index 18a6c9ef..57b1b7da 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/include/gui_generated/tracksummary_screen/TrackSummaryViewBase.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -35,7 +35,7 @@ class TrackSummaryViewBase : public touchgfx::View Buttons buttons; ScrollIndicator scrollIndicator; SummaryFaceLaps summaryFaceLaps; - SummaryFaceHeartRate summaryFaceHeartRate; + SummaryFaceZones summaryFaceZones; SummaryFaceCal summaryFaceCal; SummaryFaceOverview summaryFaceOverview; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp deleted file mode 100644 index ffdd418f..00000000 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceHeartRateBase.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/*********************************************************************************/ -/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ -/*********************************************************************************/ -#include -#include -#include -#include - -SummaryFaceHeartRateBase::SummaryFaceHeartRateBase() -{ - setWidth(240); - setHeight(240); - maxHrText.setPosition(81, 118, 78, 25); - maxHrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - maxHrText.setLinespacing(0); - Unicode::snprintf(maxHrTextBuffer, MAXHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_MAX_HR_UC).getText()); - maxHrText.setWildcard(maxHrTextBuffer); - maxHrText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); - add(maxHrText); - - maxHrValue.setPosition(70, 77, 100, 51); - maxHrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - maxHrValue.setLinespacing(0); - Unicode::snprintf(maxHrValueBuffer, MAXHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_CMV2).getText()); - maxHrValue.setWildcard(maxHrValueBuffer); - maxHrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); - add(maxHrValue); - - line.setPosition(25, 147, 190, 3); - linePainter.setColor(touchgfx::Color::getColorFromRGB(0, 128, 128)); - line.setPainter(linePainter); - line.setStart(0, 0); - line.setEnd(190, 0); - line.setLineWidth(10); - line.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); - add(line); - - avgHrText.setPosition(81, 191, 75, 25); - avgHrText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - avgHrText.setLinespacing(0); - Unicode::snprintf(avgHrTextBuffer, AVGHRTEXT_SIZE, "%s", touchgfx::TypedText(T_TEXT_AVG_HR).getText()); - avgHrText.setWildcard(avgHrTextBuffer); - avgHrText.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_20)); - add(avgHrText); - - avgHrValue.setPosition(70, 150, 100, 51); - avgHrValue.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); - avgHrValue.setLinespacing(0); - Unicode::snprintf(avgHrValueBuffer, AVGHRVALUE_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_FMCS).getText()); - avgHrValue.setWildcard(avgHrValueBuffer); - avgHrValue.setTypedText(touchgfx::TypedText(T_TMP_SEMIBOLD_40)); - add(avgHrValue); - - heartIcon.setXY(105, 48); - heartIcon.setBitmap(touchgfx::Bitmap(BITMAP_HEART_30X30_ID)); - add(heartIcon); - - title.setXY(50, 0); - add(title); -} - -SummaryFaceHeartRateBase::~SummaryFaceHeartRateBase() -{ - -} - -void SummaryFaceHeartRateBase::initialize() -{ - title.initialize(); -} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceZonesBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceZonesBase.cpp new file mode 100644 index 00000000..54af2871 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/SummaryFaceZonesBase.cpp @@ -0,0 +1,42 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include + +SummaryFaceZonesBase::SummaryFaceZonesBase() +{ + setWidth(240); + setHeight(240); + title.setXY(50, 0); + add(title); + + zoneInfo1.setXY(29, 154); + add(zoneInfo1); + + zoneInfo2.setXY(29, 133); + add(zoneInfo2); + + zoneInfo3.setXY(29, 112); + add(zoneInfo3); + + zoneInfo4.setXY(29, 91); + add(zoneInfo4); + + zoneInfo5.setXY(29, 70); + add(zoneInfo5); +} + +SummaryFaceZonesBase::~SummaryFaceZonesBase() +{ + +} + +void SummaryFaceZonesBase::initialize() +{ + title.initialize(); + zoneInfo1.initialize(); + zoneInfo2.initialize(); + zoneInfo3.initialize(); + zoneInfo4.initialize(); + zoneInfo5.initialize(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ZoneInfoBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ZoneInfoBase.cpp new file mode 100644 index 00000000..0c90f93e --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/containers/ZoneInfoBase.cpp @@ -0,0 +1,65 @@ +/*********************************************************************************/ +/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/ +/*********************************************************************************/ +#include +#include +#include + +ZoneInfoBase::ZoneInfoBase() +{ + setWidth(180); + setHeight(20); + background.setPosition(66, 0, 60, 20); + backgroundPainter.setColor(touchgfx::Color::getColorFromRGB(64, 64, 64)); + background.setPainter(backgroundPainter); + background.setStart(6, 10); + background.setEnd(48, 10); + background.setLineWidth(11); + background.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(background); + + bar.setPosition(66, 0, 60, 20); + barPainter.setColor(touchgfx::Color::getColorFromRGB(192, 0, 0)); + bar.setPainter(barPainter); + bar.setStart(6, 10); + bar.setEnd(26, 10); + bar.setLineWidth(11); + bar.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING); + add(bar); + + zoneText.setXY(0, 0); + zoneText.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + zoneText.setLinespacing(0); + Unicode::snprintf(zoneTextBuffer, ZONETEXT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_AIE6).getText()); + zoneText.setWildcard(zoneTextBuffer); + zoneText.resizeToCurrentText(); + zoneText.setTypedText(touchgfx::TypedText(T___SINGLEUSE_RUD6)); + add(zoneText); + + zoneTime.setXY(135, 0); + zoneTime.setColor(touchgfx::Color::getColorFromRGB(192, 192, 192)); + zoneTime.setLinespacing(0); + Unicode::snprintf(zoneTimeBuffer, ZONETIME_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_X62D).getText()); + zoneTime.setWildcard(zoneTimeBuffer); + zoneTime.resizeToCurrentText(); + zoneTime.setTypedText(touchgfx::TypedText(T___SINGLEUSE_F90O)); + add(zoneTime); + + zonePercent.setPosition(18, 0, 37, 20); + zonePercent.setColor(touchgfx::Color::getColorFromRGB(0, 192, 192)); + zonePercent.setLinespacing(0); + Unicode::snprintf(zonePercentBuffer, ZONEPERCENT_SIZE, "%s", touchgfx::TypedText(T___SINGLEUSE_LZ0O).getText()); + zonePercent.setWildcard(zonePercentBuffer); + zonePercent.setTypedText(touchgfx::TypedText(T___SINGLEUSE_CRAK)); + add(zonePercent); +} + +ZoneInfoBase::~ZoneInfoBase() +{ + +} + +void ZoneInfoBase::initialize() +{ + +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp index 845a6ab5..0bfc54eb 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/gui_generated/src/tracksummary_screen/TrackSummaryViewBase.cpp @@ -23,9 +23,9 @@ TrackSummaryViewBase::TrackSummaryViewBase() summaryFaceLaps.setVisible(false); add(summaryFaceLaps); - summaryFaceHeartRate.setXY(0, 0); - summaryFaceHeartRate.setVisible(false); - add(summaryFaceHeartRate); + summaryFaceZones.setXY(0, 0); + summaryFaceZones.setVisible(false); + add(summaryFaceZones); summaryFaceCal.setXY(0, 0); summaryFaceCal.setVisible(false); @@ -45,7 +45,7 @@ void TrackSummaryViewBase::setupScreen() buttons.initialize(); scrollIndicator.initialize(); summaryFaceLaps.initialize(); - summaryFaceHeartRate.initialize(); + summaryFaceZones.initialize(); summaryFaceCal.initialize(); summaryFaceOverview.initialize(); transitionBegins(); diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp index 478efc3c..2d422f23 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/include/texts/TextKeysAndLanguages.hpp @@ -124,6 +124,12 @@ enum TEXTS T_TEXT_SUMMARY, T_TEXT_LAP, T_TEXT_AVG_DOT_HR, + T___SINGLEUSE_X62D, + T___SINGLEUSE_AIE6, + T___SINGLEUSE_LZ0O, + T___SINGLEUSE_CRAK, + T___SINGLEUSE_F90O, + T___SINGLEUSE_RUD6, T_RESOURCEID15, T___SINGLEUSE_M1HM, T___SINGLEUSE_IYCO, @@ -141,8 +147,6 @@ enum TEXTS T___SINGLEUSE_ACJE, T___SINGLEUSE_BOEQ, T___SINGLEUSE_5T2E, - T___SINGLEUSE_CMV2, - T___SINGLEUSE_FMCS, T___SINGLEUSE_XTK2, T___SINGLEUSE_ZJSJ, T___SINGLEUSE_GAMW, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp index 1a425d91..d417722f 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/LanguageGb.cpp @@ -15,140 +15,144 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = { 241, // T_RESOURCEID14: "New Text" 241, // T_RESOURCEID13: "New Text" 236, // T_RESOURCEID12: "Time" - 339, // T_RESOURCEID11: "Avg HR" - 353, // T_RESOURCEID10: "Max HR" + 341, // T_RESOURCEID11: "Avg HR" + 355, // T_RESOURCEID10: "Max HR" 241, // T_RESOURCEID9: "New Text" 214, // T_RESOURCEID7: "CALORIES" - 268, // T_RESOURCEID6: "AVG. HR" - 339, // T_RESOURCEID5: "Avg HR" + 270, // T_RESOURCEID6: "AVG. HR" + 341, // T_RESOURCEID5: "Avg HR" 88, // T_RESOURCEID4: "Current Lap" 232, // T_RESOURCEID3: "Lap Time" 236, // T_RESOURCEID2: "Time" 223, // T_RESOURCEID1: "Calories" - 529, // T_TMP_REGULAR_14: "<>" - 529, // T_TMP_REGULAR_14_L: "<>" - 529, // T_TMP_REGULAR_14_R: "<>" - 529, // T_TMP_REGULAR_16: "<>" - 529, // T_TMP_REGULAR_16_L: "<>" - 529, // T_TMP_REGULAR_16_R: "<>" - 529, // T_TMP_REGULAR_18: "<>" - 529, // T_TMP_REGULAR_18_L: "<>" - 529, // T_TMP_REGULAR_18_R: "<>" - 529, // T_TMP_MEDIUM_10: "<>" - 529, // T_TMP_MEDIUM_10_L: "<>" - 529, // T_TMP_MEDIUM_10_R: "<>" - 529, // T_TMP_MEDIUM_18: "<>" - 529, // T_TMP_MEDIUM_18_L: "<>" - 529, // T_TMP_MEDIUM_18_R: "<>" - 529, // T_TMP_MEDIUM_25: "<>" - 529, // T_TMP_MEDIUM_25_L: "<>" - 529, // T_TMP_MEDIUM_25_R: "<>" - 529, // T_TMP_MEDIUM_50: "<>" - 529, // T_TMP_MEDIUM_50_L: "<>" - 529, // T_TMP_MEDIUM_50_R: "<>" - 529, // T_TMP_SEMIBOLD_18: "<>" - 529, // T_TMP_SEMIBOLD_18_L: "<>" - 529, // T_TMP_SEMIBOLD_18_R: "<>" - 529, // T_TMP_SEMIBOLD_20: "<>" - 529, // T_TMP_SEMIBOLD_20_L: "<>" - 529, // T_TMP_SEMIBOLD_20_R: "<>" - 529, // T_TMP_SEMIBOLD_25: "<>" - 529, // T_TMP_SEMIBOLD_25_L: "<>" - 529, // T_TMP_SEMIBOLD_25_R: "<>" - 529, // T_TMP_SEMIBOLD_30: "<>" - 529, // T_TMP_SEMIBOLD_30_L: "<>" - 529, // T_TMP_SEMIBOLD_30_R: "<>" - 529, // T_TMP_SEMIBOLD_35: "<>" - 529, // T_TMP_SEMIBOLD_35_R: "<>" - 529, // T_TMP_SEMIBOLD_35_L: "<>" - 529, // T_TMP_SEMIBOLD_40: "<>" - 529, // T_TMP_SEMIBOLD_40_L: "<>" - 529, // T_TMP_SEMIBOLD_40_R: "<>" - 529, // T_TMP_SEMIBOLD_60: "<>" - 529, // T_TMP_SEMIBOLD_60_L: "<>" - 529, // T_TMP_SEMIBOLD_60_R: "<>" - 529, // T_TMP_ITALIC_18: "<>" - 529, // T_TMP_ITALIC_18_L: "<>" - 529, // T_TMP_ITALIC_18_R: "<>" - 529, // T_TMP_ITALIC_20: "<>" - 529, // T_TMP_ITALIC_20_L: "<>" - 529, // T_TMP_ITALIC_20_R: "<>" - 308, // T_TEXT_APP_NAME_UC: "WORKOUT" - 410, // T_TEXT_TOTAL: "Total" - 292, // T_TEXT_SUMMARY_UC: "SUMMARY" - 513, // T_TEXT_MAP_UC: "MAP" - 457, // T_TEXT_LAPS_UC: "LAPS" + 268, // T_TMP_REGULAR_14: "<>" + 268, // T_TMP_REGULAR_14_L: "<>" + 268, // T_TMP_REGULAR_14_R: "<>" + 268, // T_TMP_REGULAR_16: "<>" + 268, // T_TMP_REGULAR_16_L: "<>" + 268, // T_TMP_REGULAR_16_R: "<>" + 268, // T_TMP_REGULAR_18: "<>" + 268, // T_TMP_REGULAR_18_L: "<>" + 268, // T_TMP_REGULAR_18_R: "<>" + 268, // T_TMP_MEDIUM_10: "<>" + 268, // T_TMP_MEDIUM_10_L: "<>" + 268, // T_TMP_MEDIUM_10_R: "<>" + 268, // T_TMP_MEDIUM_18: "<>" + 268, // T_TMP_MEDIUM_18_L: "<>" + 268, // T_TMP_MEDIUM_18_R: "<>" + 268, // T_TMP_MEDIUM_25: "<>" + 268, // T_TMP_MEDIUM_25_L: "<>" + 268, // T_TMP_MEDIUM_25_R: "<>" + 268, // T_TMP_MEDIUM_50: "<>" + 268, // T_TMP_MEDIUM_50_L: "<>" + 268, // T_TMP_MEDIUM_50_R: "<>" + 268, // T_TMP_SEMIBOLD_18: "<>" + 268, // T_TMP_SEMIBOLD_18_L: "<>" + 268, // T_TMP_SEMIBOLD_18_R: "<>" + 268, // T_TMP_SEMIBOLD_20: "<>" + 268, // T_TMP_SEMIBOLD_20_L: "<>" + 268, // T_TMP_SEMIBOLD_20_R: "<>" + 268, // T_TMP_SEMIBOLD_25: "<>" + 268, // T_TMP_SEMIBOLD_25_L: "<>" + 268, // T_TMP_SEMIBOLD_25_R: "<>" + 268, // T_TMP_SEMIBOLD_30: "<>" + 268, // T_TMP_SEMIBOLD_30_L: "<>" + 268, // T_TMP_SEMIBOLD_30_R: "<>" + 268, // T_TMP_SEMIBOLD_35: "<>" + 268, // T_TMP_SEMIBOLD_35_R: "<>" + 268, // T_TMP_SEMIBOLD_35_L: "<>" + 268, // T_TMP_SEMIBOLD_40: "<>" + 268, // T_TMP_SEMIBOLD_40_L: "<>" + 268, // T_TMP_SEMIBOLD_40_R: "<>" + 268, // T_TMP_SEMIBOLD_60: "<>" + 268, // T_TMP_SEMIBOLD_60_L: "<>" + 268, // T_TMP_SEMIBOLD_60_R: "<>" + 268, // T_TMP_ITALIC_18: "<>" + 268, // T_TMP_ITALIC_18_L: "<>" + 268, // T_TMP_ITALIC_18_R: "<>" + 268, // T_TMP_ITALIC_20: "<>" + 268, // T_TMP_ITALIC_20_L: "<>" + 268, // T_TMP_ITALIC_20_R: "<>" + 310, // T_TEXT_APP_NAME_UC: "WORKOUT" + 418, // T_TEXT_TOTAL: "Total" + 294, // T_TEXT_SUMMARY_UC: "SUMMARY" + 518, // T_TEXT_MAP_UC: "MAP" + 470, // T_TEXT_LAPS_UC: "LAPS" 100, // T_TEXT_HEART_RATE_UC: "HEART RATE" - 316, // T_TEXT_WORKOUT: "Workout" + 318, // T_TEXT_WORKOUT: "Workout" 165, // T_TEXT_COMPLETED: "Completed" 185, // T_TEXT_REMAINING: "Remaining" 195, // T_TEXT_REMAINING_LC: "remaining" - 284, // T_TEXT_ELAPSED: "Elapsed" + 286, // T_TEXT_ELAPSED: "Elapsed" 236, // T_TEXT_TIME: "Time" - 404, // T_TEXT_TIMER: "Timer" - 467, // T_TEXT_TIME_UC: "TIME" - 392, // T_TEXT_SAVED: "Saved" + 412, // T_TEXT_TIMER: "Timer" + 480, // T_TEXT_TIME_UC: "TIME" + 400, // T_TEXT_SAVED: "Saved" 133, // T_TEXT_SAVE: "Save & End" 259, // T_TEXT_SETTINGS: "Settings" 250, // T_TEXT_SETTINGS_UC: "SETTINGS" - 398, // T_TEXT_START: "Start" + 406, // T_TEXT_START: "Start" 122, // T_TEXT_LAP_ALERTS: "Lap Alerts" 111, // T_TEXT_LAP_ALERTS_UC: "LAP ALERTS" 50, // T_TEXT_PHONE_NOTIF_DOT: "Phone Notif." 37, // T_TEXT_PHONE_BR_NOTIF_DOT: "Phone\nNotif." - 324, // T_TEXT_MINUTES_LC: "minutes" - 367, // T_TEXT_MINUTE_LC: "minute" - 521, // T_TEXT_MIN: "min" - 525, // T_TEXT_SEC: "sec" - 472, // T_TEXT_MILE: "mile" - 416, // T_TEXT_MILES: "miles" - 537, // T_TEXT_MI: "mi" - 534, // T_TEXT_KM: "km" - 535, // T_TEXT_M: "m" - 462, // T_TEXT_OPEN: "Open" - 531, // T_TEXT_ON_UC: "ON" - 517, // T_TEXT_OFF_UC: "OFF" - 332, // T_TEXT_AVG_HR_UC: "AVG HR" + 326, // T_TEXT_MINUTES_LC: "minutes" + 369, // T_TEXT_MINUTE_LC: "minute" + 526, // T_TEXT_MIN: "min" + 530, // T_TEXT_SEC: "sec" + 485, // T_TEXT_MILE: "mile" + 424, // T_TEXT_MILES: "miles" + 540, // T_TEXT_MI: "mi" + 537, // T_TEXT_KM: "km" + 538, // T_TEXT_M: "m" + 475, // T_TEXT_OPEN: "Open" + 534, // T_TEXT_ON_UC: "ON" + 522, // T_TEXT_OFF_UC: "OFF" + 334, // T_TEXT_AVG_HR_UC: "AVG HR" 214, // T_TEXT_CALORIE_UC: "CALORIES" - 346, // T_TEXT_MAX_HR_UC: "MAX HR" - 332, // T_TEXT_AVG_HR: "AVG HR" + 348, // T_TEXT_MAX_HR_UC: "MAX HR" + 334, // T_TEXT_AVG_HR: "AVG HR" 155, // T_TEXT_AVG_DOT_PACE: "Avg. Pace" - 273, // T_TEXT_HR_UC: "HR" + 275, // T_TEXT_HR_UC: "HR" 232, // T_TEXT_LAP_TIME: "Lap Time" - 511, // T_TEXT_PERCENT: "%" + 433, // T_TEXT_PERCENT: "%" 175, // T_TEXT_DISCARTED: "Discarded" - 276, // T_TEXT_DISCARD: "Discard" - 360, // T_TEXT_RESUME: "Resume" - 300, // T_TEXT_SUMMARY: "Summary" + 278, // T_TEXT_DISCARD: "Discard" + 362, // T_TEXT_RESUME: "Resume" + 302, // T_TEXT_SUMMARY: "Summary" 96, // T_TEXT_LAP: "Lap" - 268, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 270, // T_TEXT_AVG_DOT_HR: "AVG. HR" + 388, // T___SINGLEUSE_X62D: "23:58" + 448, // T___SINGLEUSE_AIE6: "3" + 430, // T___SINGLEUSE_LZ0O: "100%" + 268, // T___SINGLEUSE_CRAK: "<>" + 268, // T___SINGLEUSE_F90O: "<>" + 268, // T___SINGLEUSE_RUD6: "<>" 63, // T_RESOURCEID15: "RESTING KCAL" - 427, // T___SINGLEUSE_M1HM: "1301" + 440, // T___SINGLEUSE_M1HM: "1301" 205, // T___SINGLEUSE_IYCO: "10:05:49" - 529, // T___SINGLEUSE_0SLK: "<>" - 489, // T___SINGLEUSE_5LBG: "133" - 422, // T___SINGLEUSE_WFDB: "1145" + 268, // T___SINGLEUSE_0SLK: "<>" + 498, // T___SINGLEUSE_5LBG: "133" + 435, // T___SINGLEUSE_WFDB: "1145" 0, // T___SINGLEUSE_FZIH: "Do you want\nto discard\nthe activity?" - 529, // T___SINGLEUSE_Q39K: "<>" + 268, // T___SINGLEUSE_Q39K: "<>" 241, // T_RESOURCEID8: "New Text" - 509, // T___SINGLEUSE_ICBU: "96%" - 380, // T___SINGLEUSE_YHFT: "17:35" - 437, // T___SINGLEUSE_WXKL: "4:27" - 442, // T___SINGLEUSE_NOCF: "5:02" - 501, // T___SINGLEUSE_U3YM: "24." - 497, // T___SINGLEUSE_ACJE: "208" - 485, // T___SINGLEUSE_BOEQ: "128" + 514, // T___SINGLEUSE_ICBU: "96%" + 382, // T___SINGLEUSE_YHFT: "17:35" + 450, // T___SINGLEUSE_WXKL: "4:27" + 455, // T___SINGLEUSE_NOCF: "5:02" + 506, // T___SINGLEUSE_U3YM: "24." + 502, // T___SINGLEUSE_ACJE: "208" + 494, // T___SINGLEUSE_BOEQ: "128" 205, // T___SINGLEUSE_5T2E: "10:05:49" - 493, // T___SINGLEUSE_CMV2: "165" - 481, // T___SINGLEUSE_FMCS: "117" - 505, // T___SINGLEUSE_XTK2: "566" - 489, // T___SINGLEUSE_ZJSJ: "133" + 510, // T___SINGLEUSE_XTK2: "566" + 498, // T___SINGLEUSE_ZJSJ: "133" 206, // T___SINGLEUSE_GAMW: "0:05:49" - 432, // T___SINGLEUSE_Z0WD: "2.33" - 374, // T___SINGLEUSE_3KKT: "15:37" - 477, // T___SINGLEUSE_HFND: "115" - 452, // T___SINGLEUSE_OTQI: "8:32" - 447, // T___SINGLEUSE_8WSQ: "6:27" - 386, // T___SINGLEUSE_4SCV: "44.44" + 445, // T___SINGLEUSE_Z0WD: "2.33" + 376, // T___SINGLEUSE_3KKT: "15:37" + 490, // T___SINGLEUSE_HFND: "115" + 465, // T___SINGLEUSE_OTQI: "8:32" + 460, // T___SINGLEUSE_8WSQ: "6:27" + 394, // T___SINGLEUSE_4SCV: "44.44" 206 // T___SINGLEUSE_KERT: "0:05:49" }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp index 4ee53b8f..d09ea34b 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/Texts.cpp @@ -83,56 +83,56 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA 0x4e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x0, // @241 "New Text" 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x0, // @250 "SETTINGS" 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x0, // @259 "Settings" - 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @268 "AVG. HR" - 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @276 "Discard" - 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @284 "Elapsed" - 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @292 "SUMMARY" - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @300 "Summary" - 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @308 "WORKOUT" - 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @316 "Workout" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @324 "minutes" - 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @332 "AVG HR" - 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @339 "Avg HR" - 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @346 "MAX HR" - 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @353 "Max HR" - 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @360 "Resume" - 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @367 "minute" - 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @374 "15:37" - 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @380 "17:35" - 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @386 "44.44" - 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @392 "Saved" - 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @398 "Start" - 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @404 "Timer" - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @410 "Total" - 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @416 "miles" - 0x31, 0x31, 0x34, 0x35, 0x0, // @422 "1145" - 0x31, 0x33, 0x30, 0x31, 0x0, // @427 "1301" - 0x32, 0x2e, 0x33, 0x33, 0x0, // @432 "2.33" - 0x34, 0x3a, 0x32, 0x37, 0x0, // @437 "4:27" - 0x35, 0x3a, 0x30, 0x32, 0x0, // @442 "5:02" - 0x36, 0x3a, 0x32, 0x37, 0x0, // @447 "6:27" - 0x38, 0x3a, 0x33, 0x32, 0x0, // @452 "8:32" - 0x4c, 0x41, 0x50, 0x53, 0x0, // @457 "LAPS" - 0x4f, 0x70, 0x65, 0x6e, 0x0, // @462 "Open" - 0x54, 0x49, 0x4d, 0x45, 0x0, // @467 "TIME" - 0x6d, 0x69, 0x6c, 0x65, 0x0, // @472 "mile" - 0x31, 0x31, 0x35, 0x0, // @477 "115" - 0x31, 0x31, 0x37, 0x0, // @481 "117" - 0x31, 0x32, 0x38, 0x0, // @485 "128" - 0x31, 0x33, 0x33, 0x0, // @489 "133" - 0x31, 0x36, 0x35, 0x0, // @493 "165" - 0x32, 0x30, 0x38, 0x0, // @497 "208" - 0x32, 0x34, 0x2e, 0x0, // @501 "24." - 0x35, 0x36, 0x36, 0x0, // @505 "566" - 0x39, 0x36, 0x25, 0x0, // @509 "96%" - 0x4d, 0x41, 0x50, 0x0, // @513 "MAP" - 0x4f, 0x46, 0x46, 0x0, // @517 "OFF" - 0x6d, 0x69, 0x6e, 0x0, // @521 "min" - 0x73, 0x65, 0x63, 0x0, // @525 "sec" - 0x2, 0x0, // @529 "<>" - 0x4f, 0x4e, 0x0, // @531 "ON" - 0x6b, 0x6d, 0x0, // @534 "km" - 0x6d, 0x69, 0x0 // @537 "mi" + 0x2, 0x0, // @268 "<>" + 0x41, 0x56, 0x47, 0x2e, 0x20, 0x48, 0x52, 0x0, // @270 "AVG. HR" + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0, // @278 "Discard" + 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x0, // @286 "Elapsed" + 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x0, // @294 "SUMMARY" + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x0, // @302 "Summary" + 0x57, 0x4f, 0x52, 0x4b, 0x4f, 0x55, 0x54, 0x0, // @310 "WORKOUT" + 0x57, 0x6f, 0x72, 0x6b, 0x6f, 0x75, 0x74, 0x0, // @318 "Workout" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x0, // @326 "minutes" + 0x41, 0x56, 0x47, 0x20, 0x48, 0x52, 0x0, // @334 "AVG HR" + 0x41, 0x76, 0x67, 0x20, 0x48, 0x52, 0x0, // @341 "Avg HR" + 0x4d, 0x41, 0x58, 0x20, 0x48, 0x52, 0x0, // @348 "MAX HR" + 0x4d, 0x61, 0x78, 0x20, 0x48, 0x52, 0x0, // @355 "Max HR" + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x0, // @362 "Resume" + 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x0, // @369 "minute" + 0x31, 0x35, 0x3a, 0x33, 0x37, 0x0, // @376 "15:37" + 0x31, 0x37, 0x3a, 0x33, 0x35, 0x0, // @382 "17:35" + 0x32, 0x33, 0x3a, 0x35, 0x38, 0x0, // @388 "23:58" + 0x34, 0x34, 0x2e, 0x34, 0x34, 0x0, // @394 "44.44" + 0x53, 0x61, 0x76, 0x65, 0x64, 0x0, // @400 "Saved" + 0x53, 0x74, 0x61, 0x72, 0x74, 0x0, // @406 "Start" + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x0, // @412 "Timer" + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x0, // @418 "Total" + 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x0, // @424 "miles" + 0x31, 0x30, 0x30, 0x25, 0x0, // @430 "100%" + 0x31, 0x31, 0x34, 0x35, 0x0, // @435 "1145" + 0x31, 0x33, 0x30, 0x31, 0x0, // @440 "1301" + 0x32, 0x2e, 0x33, 0x33, 0x0, // @445 "2.33" + 0x34, 0x3a, 0x32, 0x37, 0x0, // @450 "4:27" + 0x35, 0x3a, 0x30, 0x32, 0x0, // @455 "5:02" + 0x36, 0x3a, 0x32, 0x37, 0x0, // @460 "6:27" + 0x38, 0x3a, 0x33, 0x32, 0x0, // @465 "8:32" + 0x4c, 0x41, 0x50, 0x53, 0x0, // @470 "LAPS" + 0x4f, 0x70, 0x65, 0x6e, 0x0, // @475 "Open" + 0x54, 0x49, 0x4d, 0x45, 0x0, // @480 "TIME" + 0x6d, 0x69, 0x6c, 0x65, 0x0, // @485 "mile" + 0x31, 0x31, 0x35, 0x0, // @490 "115" + 0x31, 0x32, 0x38, 0x0, // @494 "128" + 0x31, 0x33, 0x33, 0x0, // @498 "133" + 0x32, 0x30, 0x38, 0x0, // @502 "208" + 0x32, 0x34, 0x2e, 0x0, // @506 "24." + 0x35, 0x36, 0x36, 0x0, // @510 "566" + 0x39, 0x36, 0x25, 0x0, // @514 "96%" + 0x4d, 0x41, 0x50, 0x0, // @518 "MAP" + 0x4f, 0x46, 0x46, 0x0, // @522 "OFF" + 0x6d, 0x69, 0x6e, 0x0, // @526 "min" + 0x73, 0x65, 0x63, 0x0, // @530 "sec" + 0x4f, 0x4e, 0x0, // @534 "ON" + 0x6b, 0x6d, 0x0, // @537 "km" + 0x6d, 0x69, 0x0 // @540 "mi" }; TEXT_LOCATION_FLASH_PRAGMA diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp index 812a8910..517fc96b 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/generated/texts/src/TypedTextDatabase.cpp @@ -158,6 +158,12 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, + { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, @@ -175,8 +181,6 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, - { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, - { 10, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }, diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp deleted file mode 100644 index 3ea0c7f6..00000000 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceHeartRate.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef SUMMARYFACEHEARTRATE_HPP -#define SUMMARYFACEHEARTRATE_HPP - -#include - -/** - * @brief Summary face showing heart rate summary: peak and average HR over the session. - * - * One of the swipeable faces on the TrackSummary screen. - */ -class SummaryFaceHeartRate : public SummaryFaceHeartRateBase -{ -public: - SummaryFaceHeartRate(); - virtual ~SummaryFaceHeartRate() {} - - virtual void initialize(); - - /** - * @brief Display peak heart rate. - * @param hr Maximum HR recorded during the session, in bpm. - */ - void setMaxHR(float hr); - - /** - * @brief Display average heart rate. - * @param hr Average HR over the session, in bpm. - */ - void setAvgHR(float hr); - -protected: -}; - -#endif // SUMMARYFACEHEARTRATE_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceZones.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceZones.hpp new file mode 100644 index 00000000..78b3387f --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/SummaryFaceZones.hpp @@ -0,0 +1,31 @@ +#ifndef SUMMARYFACEZONES_HPP +#define SUMMARYFACEZONES_HPP + +#include + +#include "ActivitySummary.hpp" + +/** + * @brief Summary face showing time spent in each heart-rate zone. + * + * Five rows are laid out by TouchGFX Designer with zone 5 at the top and zone 1 + * at the bottom (see @ref SummaryFaceZonesBase). Per-zone seconds come from + * @ref ActivitySummary::zoneTimeSec; any active seconds the session spent below + * zone 1 are absorbed into the zone-1 row for display only. Percentages are + * computed against @ref ActivitySummary::time so all five rows sum to 100%. + */ +class SummaryFaceZones : public SummaryFaceZonesBase +{ +public: + SummaryFaceZones(); + virtual ~SummaryFaceZones() {} + + virtual void initialize(); + + /** @brief Populate all five rows from the activity summary. */ + void setZoneSummary(const ActivitySummary& s); + +protected: +}; + +#endif // SUMMARYFACEZONES_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ZoneInfo.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ZoneInfo.hpp new file mode 100644 index 00000000..ab7561e3 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/containers/ZoneInfo.hpp @@ -0,0 +1,47 @@ +#ifndef ZONEINFO_HPP +#define ZONEINFO_HPP + +#include + +#include + +/** + * @brief One row of the HR-zones summary face: zone digit, percent text, time text, + * and a coloured progress bar. + * + * Layout and styling are authored in TouchGFX Designer (@ref ZoneInfoBase). At + * runtime each row is populated by @ref setRow with the zone number, the time + * spent in that zone, the percent of the active session that represents, and + * the colour to paint the progress bar. + */ +class ZoneInfo : public ZoneInfoBase +{ +public: + ZoneInfo(); + virtual ~ZoneInfo() {} + + virtual void initialize(); + + /** + * @brief Populate this row. + * @param zoneNumber1to5 Zone digit shown on the left (1..5). + * @param seconds Seconds spent in this zone (formatted M:SS / MM:SS / H:MM:SS). + * @param percent0to100 Share of total active session time, used for the bar + * length and the percent text. Clamped to [0,100]. + * @param barColor Colour applied to the bar via its PainterABGR2222. + */ + void setRow(uint8_t zoneNumber1to5, + std::time_t seconds, + float percent0to100, + touchgfx::colortype barColor); + +protected: + /// Bar start x in the bar widget's local coordinate space (from generated base). + static constexpr int16_t kBarStartX = 6; + /// Bar end x at 100% (from generated base background line). + static constexpr int16_t kBarFullEndX = 48; + /// Bar y coordinate (from generated base). + static constexpr int16_t kBarY = 10; +}; + +#endif // ZONEINFO_HPP diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp index a2edc867..5160b859 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/include/gui/tracksummary_screen/TrackSummaryView.hpp @@ -20,7 +20,7 @@ class TrackSummaryView : public TrackSummaryViewBase enum Face : uint8_t { FACE_OVERVIEW = 0, FACE_CALORIES = 1, - FACE_HEARTRATE = 2, + FACE_ZONES = 2, FACE_LAPS = 3, }; diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp deleted file mode 100644 index 46e8c570..00000000 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceHeartRate.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include - -SummaryFaceHeartRate::SummaryFaceHeartRate() -{ -} - -void SummaryFaceHeartRate::initialize() -{ - SummaryFaceHeartRateBase::initialize(); - title.set(T_TEXT_HEART_RATE_UC); -} - -void SummaryFaceHeartRate::setMaxHR(float hr) -{ - if (hr < App::Display::kMinHR) { - Unicode::snprintf(maxHrValueBuffer, MAXHRVALUE_SIZE, "---"); - } else { - Unicode::snprintfFloat(maxHrValueBuffer, MAXHRVALUE_SIZE, "%.0f", hr); - } - maxHrValue.invalidate(); -} - -void SummaryFaceHeartRate::setAvgHR(float hr) -{ - if (hr < App::Display::kMinHR) { - Unicode::snprintf(avgHrValueBuffer, AVGHRVALUE_SIZE, "---"); - } else { - Unicode::snprintfFloat(avgHrValueBuffer, AVGHRVALUE_SIZE, "%.0f", hr); - } - avgHrValue.invalidate(); -} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceZones.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceZones.cpp new file mode 100644 index 00000000..ed361166 --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/SummaryFaceZones.cpp @@ -0,0 +1,59 @@ +#include + +#include + +namespace { + +/// Bar colours indexed by 0..4 (zone 1..5). Matches the in-activity HR-zone +/// indicator palette: cyan -> green -> yellow -> orange -> red. +const touchgfx::colortype kZoneColors[5] = { + touchgfx::Color::getColorFromRGB( 0, 192, 192), // Zone 1 - cyan + touchgfx::Color::getColorFromRGB( 64, 192, 0), // Zone 2 - green + touchgfx::Color::getColorFromRGB(192, 192, 0), // Zone 3 - yellow + touchgfx::Color::getColorFromRGB(192, 128, 0), // Zone 4 - orange + touchgfx::Color::getColorFromRGB(192, 0, 0), // Zone 5 - red +}; + +} // namespace + +SummaryFaceZones::SummaryFaceZones() +{ +} + +void SummaryFaceZones::initialize() +{ + SummaryFaceZonesBase::initialize(); + title.set("HR ZONES"); +} + +void SummaryFaceZones::setZoneSummary(const ActivitySummary& s) +{ + std::time_t inZones = 0; + for (std::time_t z : s.zoneTimeSec) { + inZones += z; + } + + // Active seconds with HR below the zone-1 threshold get folded into the + // zone-1 row purely for display; the underlying telemetry is untouched. + const std::time_t belowZone1 = (s.time > inZones) ? (s.time - inZones) : 0; + const std::time_t displaySec[5] = { + s.zoneTimeSec[0] + belowZone1, + s.zoneTimeSec[1], + s.zoneTimeSec[2], + s.zoneTimeSec[3], + s.zoneTimeSec[4], + }; + + const float totalSec = (s.time > 0) ? static_cast(s.time) : 0.0f; + + ZoneInfo* const rows[5] = { + &zoneInfo1, &zoneInfo2, &zoneInfo3, &zoneInfo4, &zoneInfo5, + }; + + for (size_t i = 0; i < 5; ++i) { + const float pct = (totalSec > 0.0f) + ? (100.0f * static_cast(displaySec[i]) / totalSec) + : 0.0f; + rows[i]->setRow(static_cast(i + 1), displaySec[i], pct, kZoneColors[i]); + } +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ZoneInfo.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ZoneInfo.cpp new file mode 100644 index 00000000..9c6f66ee --- /dev/null +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/containers/ZoneInfo.cpp @@ -0,0 +1,56 @@ +#include + +#include +#include + +#include +#include + +ZoneInfo::ZoneInfo() +{ +} + +void ZoneInfo::initialize() +{ + ZoneInfoBase::initialize(); +} + +void ZoneInfo::setRow(uint8_t zoneNumber1to5, + std::time_t seconds, + float percent0to100, + touchgfx::colortype barColor) +{ + Unicode::snprintf(zoneTextBuffer, ZONETEXT_SIZE, "%u", + static_cast(zoneNumber1to5)); + zoneText.invalidate(); + + const auto hms = SDK::Utils::toHMS(seconds); + if (hms.h > 0) { + Unicode::snprintf(zoneTimeBuffer, ZONETIME_SIZE, "%u:%02u:%02u", + static_cast(hms.h), + static_cast(hms.m), + static_cast(hms.s)); + } else { + Unicode::snprintf(zoneTimeBuffer, ZONETIME_SIZE, "%u:%02u", + static_cast(hms.m), + static_cast(hms.s)); + } + zoneTime.invalidate(); + + const float clampedPct = std::clamp(percent0to100, 0.0f, 100.0f); + Unicode::snprintf(zonePercentBuffer, ZONEPERCENT_SIZE, "%u%s", + static_cast(clampedPct + 0.5f), + touchgfx::TypedText(T_TEXT_PERCENT).getText()); + zonePercent.invalidate(); + + const bool barVisible = clampedPct > 0.0f; + bar.setVisible(barVisible); + if (barVisible) { + const int16_t span = kBarFullEndX - kBarStartX; + const int16_t endX = static_cast( + kBarStartX + std::lround(span * clampedPct / 100.0f)); + bar.updateEnd(endX, kBarY); + } + barPainter.setColor(barColor); + bar.invalidate(); +} diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp index 7010d7f3..c09b710e 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/gui/src/tracksummary_screen/TrackSummaryView.cpp @@ -40,8 +40,7 @@ void TrackSummaryView::setSummary(const ActivitySummary& s, bool isPaused) summaryFaceCal.setActiveCalories(s.activeCalories); summaryFaceCal.setRestingCalories(s.restingCalories); - summaryFaceHeartRate.setMaxHR(s.hrMax); - summaryFaceHeartRate.setAvgHR(s.hrAvg); + summaryFaceZones.setZoneSummary(s); summaryFaceLaps.setLaps(s.laps); mLapsPageCount = summaryFaceLaps.getPageCount(); @@ -60,12 +59,12 @@ void TrackSummaryView::updateFace() { summaryFaceOverview.setVisible(mCurrentFace == FACE_OVERVIEW); summaryFaceCal.setVisible(mCurrentFace == FACE_CALORIES); - summaryFaceHeartRate.setVisible(mCurrentFace == FACE_HEARTRATE); + summaryFaceZones.setVisible(mCurrentFace == FACE_ZONES); summaryFaceLaps.setVisible(mCurrentFace == FACE_LAPS); summaryFaceOverview.invalidate(); summaryFaceCal.invalidate(); - summaryFaceHeartRate.invalidate(); + summaryFaceZones.invalidate(); summaryFaceLaps.invalidate(); updateScrollIndicator(); @@ -87,7 +86,7 @@ void TrackSummaryView::handleKeyEvent(uint8_t key) summaryFaceLaps.scrollDown(); updateScrollIndicator(); } - } else if (mCurrentFace < FACE_HEARTRATE || mLapsPageCount > 0) { + } else if (mCurrentFace < FACE_ZONES || mLapsPageCount > 0) { mCurrentFace++; updateFace(); } diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj index 26531b6d..3cbea3cb 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj @@ -146,8 +146,6 @@ - - @@ -158,6 +156,10 @@ + + + + @@ -451,8 +453,6 @@ - - @@ -463,6 +463,10 @@ + + + + diff --git a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters index 900a2f87..a611d202 100644 --- a/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters +++ b/Apps/Workout/Software/Apps/TouchGFX-GUI/simulator/msvs/Application.vcxproj.filters @@ -1158,12 +1158,6 @@ Header Files\generated\gui_generated\containers - - Source Files\gui\containers - - - Source Files\generated\gui_generated\containers - Source Files\gui\containers @@ -1176,12 +1170,6 @@ Source Files\generated\gui_generated\containers - - Header Files\gui\containers - - - Header Files\generated\gui_generated\containers - Header Files\gui\containers @@ -1233,6 +1221,30 @@ Header Files\generated\gui_generated\containers + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Source Files\gui\containers + + + Source Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + + + Header Files\gui\containers + + + Header Files\generated\gui_generated\containers + diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp index b3850646..0192f0b7 100644 --- a/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp +++ b/Apps/Workout/Software/Libs/Header/ActivitySummary.hpp @@ -42,6 +42,11 @@ struct ActivitySummary { /// Calories above basal from the zone MET model: @c calories - @c restingCalories (clamped >= 0). float activeCalories = 0.0f; + /// Cumulative seconds spent in HR zones 1..5 (0-indexed). + /// Active seconds with HR below the zone-1 threshold are NOT included here; the + /// HR-zones summary screen lumps them into the zone-1 row for display only. + std::time_t zoneTimeSec[5] = {0, 0, 0, 0, 0}; + std::vector laps; ///< Per-lap summary data }; diff --git a/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp index c351276f..c41e0c94 100644 --- a/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp +++ b/Apps/Workout/Software/Libs/Header/ActivitySummarySerializer.hpp @@ -17,6 +17,7 @@ * "calories":42.5, * "resting_calories":12.0, * "active_calories":30.5, + * "zone_times_sec":[12,34,56,78,9], * "lap_count":2, * "laps":[ * {"dur":62,"hr_avg":120,"hr_max":135}, diff --git a/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp index 4cf12957..7b371549 100644 --- a/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp +++ b/Apps/Workout/Software/Libs/Sources/ActivitySummarySerializer.cpp @@ -64,6 +64,12 @@ bool ActivitySummarySerializer::save(const ActivitySummary& summary) writer.add("resting_calories", summary.restingCalories); writer.add("active_calories", summary.activeCalories); + writer.startArray("zone_times_sec"); + for (const std::time_t sec : summary.zoneTimeSec) { + writer.add(static_cast(sec)); + } + writer.endArray(); + writer.add("lap_count", static_cast(summary.laps.size())); writer.startArray("laps"); for (const LapSummary& lap : summary.laps) { @@ -164,6 +170,17 @@ bool ActivitySummarySerializer::load(ActivitySummary& summary) summary.activeCalories = summary.calories; } + // Zone times. Missing in pre-zones summaries -> leave zeros. + for (size_t i = 0; i < std::size(summary.zoneTimeSec); ++i) { + summary.zoneTimeSec[i] = 0; + char query[32]; + snprintf(query, sizeof(query), "zone_times_sec[%zu]", i); + uint32_t sec = 0; + if (reader.get(query, sec)) { + summary.zoneTimeSec[i] = static_cast(sec); + } + } + // Laps uint32_t lapCount = 0; reader.get("lap_count", lapCount); diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp index a2a3df0d..683ef1dc 100644 --- a/Apps/Workout/Software/Libs/Sources/Service.cpp +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -699,6 +699,10 @@ void Service::buildPartialSummary() mSummary.restingCalories = mTrackData.restingCaloriesTotal; mSummary.activeCalories = std::fmax(0.0f, mTrackData.totalCalories - mTrackData.restingCaloriesTotal); + + for (size_t i = 0; i < std::size(mSummary.zoneTimeSec); ++i) { + mSummary.zoneTimeSec[i] = mTrackData.zoneTimeSec[i]; + } } void Service::stopTrack(bool discard) From 64ad53a2e973d08c51b8ec74014080b3b5228bdc Mon Sep 17 00:00:00 2001 From: Ross Ryles Date: Tue, 12 May 2026 11:01:36 +0100 Subject: [PATCH 11/11] feat(Workout): Use weight from settings when available Calorie calculations need the user weight. This was previously hard coded at 75kg. Now it will use the weight from the settings.json if it is above zero. --- Apps/Workout/Software/Libs/Header/Service.hpp | 3 ++- Apps/Workout/Software/Libs/Sources/Service.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Apps/Workout/Software/Libs/Header/Service.hpp b/Apps/Workout/Software/Libs/Header/Service.hpp index de66de1c..4baff40e 100644 --- a/Apps/Workout/Software/Libs/Header/Service.hpp +++ b/Apps/Workout/Software/Libs/Header/Service.hpp @@ -36,7 +36,7 @@ class Service : public WristTiltDetector::IListener static constexpr uint32_t skBatteryLogPeriodMs = 5 * 60 * 1000; static constexpr float skFusionSampleRateHz = 100.0f; - static constexpr float skDefaultWeightKg = 75.0f; ///< Fixed indoor-workout estimate until user profile weight is wired in. + static constexpr float skDefaultWeightKg = 75.0f; ///< Fallback when the system profile weight is absent or zero. // -- Infrastructure ------------------------------------------------------- @@ -79,6 +79,7 @@ class Service : public WristTiltDetector::IListener SDK::Metric::ThrottledSample mBatteryVoltage; ///< Voltage, volts float mSeaLevelPressure = 0.0f; // Pa + float mWeightKg = skDefaultWeightKg; ///< From system profile; falls back to skDefaultWeightKg. std::array mHrThresholds = {}; uint8_t mHrThresholdCount = 0; diff --git a/Apps/Workout/Software/Libs/Sources/Service.cpp b/Apps/Workout/Software/Libs/Sources/Service.cpp index 683ef1dc..d9bc6b88 100644 --- a/Apps/Workout/Software/Libs/Sources/Service.cpp +++ b/Apps/Workout/Software/Libs/Sources/Service.cpp @@ -496,6 +496,10 @@ void Service::sendInitialInfoToGui() if (msg.send(100) && msg.ok()) { mIsImperial = msg->imperialUnits; + if (msg->weightKg > 0.0f) { + mWeightKg = msg->weightKg; + } + if (msg->heartRateCount > CustomMessage::kHrThresholdsCount) { msg->heartRateCount = CustomMessage::kHrThresholdsCount; } @@ -626,14 +630,14 @@ void Service::updateHrDerivedMetrics() // Basal metabolic rate accrues every active second regardless of HR. // Surfaced as session "metabolic_calories" / lap "resting_calories" in the FIT file. static constexpr float kRestingMet = 1.0f; - const float restingKcal = kRestingMet * skDefaultWeightKg * (1.0f / 3600.0f); + const float restingKcal = kRestingMet * mWeightKg * (1.0f / 3600.0f); mTrackData.restingCaloriesTotal += restingKcal; mTrackData.restingCaloriesLap += restingKcal; // Active calories: zone-MET when HR is in a zone; BMR fallback otherwise // (HR below zone 1 or no valid HR sample yet). const float met = (mTrackData.hrZone == 0) ? kRestingMet : getZoneMet(mTrackData.hrZone); - const float calories = met * skDefaultWeightKg * (1.0f / 3600.0f); + const float calories = met * mWeightKg * (1.0f / 3600.0f); mTrackData.totalCalories += calories; mTrackData.lapCalories += calories;