gitextract_3fcvki05/ ├── .github/ │ ├── actions/ │ │ └── get-avd-info/ │ │ └── action.yml │ └── workflows/ │ ├── android.yml │ └── android_old.yml ├── .gitignore ├── LICENCE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── AndroidManifest.xml │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ ├── NewQuizApp.kt │ │ ├── core/ │ │ │ ├── navigation/ │ │ │ │ ├── AppNavGraphs.kt │ │ │ │ ├── CommonNavGraphNavigator.kt │ │ │ │ └── NavigationItem.kt │ │ │ └── workers/ │ │ │ └── AppStartLoggingAnalyticsWorker.kt │ │ ├── initializer/ │ │ │ ├── EnqueueStartWorksInitializer.kt │ │ │ └── WorkManagerInitializer.kt │ │ └── ui/ │ │ ├── components/ │ │ │ ├── DataCollectionConsentDialog.kt │ │ │ └── DiamondsCounter.kt │ │ ├── main/ │ │ │ ├── MainActivity.kt │ │ │ ├── MainScreenUiEvent.kt │ │ │ ├── MainScreenUiState.kt │ │ │ └── MainViewModel.kt │ │ └── navigation/ │ │ ├── CompactNavigationContainer.kt │ │ ├── ExpandedNavigationContainer.kt │ │ ├── MediumNavigationContainer.kt │ │ ├── NavDrawerContent.kt │ │ └── NavigationContainer.kt │ └── res/ │ ├── drawable/ │ │ ├── round_password_24.xml │ │ ├── round_play_circle_24.xml │ │ └── round_quiz_24.xml │ ├── resources.properties │ ├── values/ │ │ ├── colors.xml │ │ ├── leak_canary.xml │ │ ├── splash_screen.xml │ │ └── strings.xml │ ├── values-night/ │ │ └── splash_screen.xml │ └── xml-v25/ │ └── shortcuts.xml ├── build-logic/ │ ├── .gitignore │ ├── README.md │ ├── convention/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ ├── AndroidApplicationComposeConventionPlugin.kt │ │ ├── AndroidApplicationConventionPlugin.kt │ │ ├── AndroidApplicationFirebaseConventionPlugin.kt │ │ ├── AndroidComposeDestinationsConventionPlugin.kt │ │ ├── AndroidFeatureConventionPlugin.kt │ │ ├── AndroidHiltConventionPlugin.kt │ │ ├── AndroidLibraryComposeConventionPlugin.kt │ │ ├── AndroidLibraryConventionPlugin.kt │ │ ├── AndroidRoomConventionPlugin.kt │ │ ├── DetektConventionPlugin.kt │ │ ├── JvmLibraryConventionPlugin.kt │ │ ├── KotlinSerializationConventionPlugin.kt │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ ├── AndroidCompose.kt │ │ ├── AndroidInstrumentedTests.kt │ │ ├── Flavors.kt │ │ ├── KotlinAndroid.kt │ │ ├── ProjectConfig.kt │ │ ├── ProjectExtensions.kt │ │ └── Utils.kt │ ├── gradle.properties │ └── settings.gradle.kts ├── build.gradle.kts ├── comparison-quiz/ │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── comparison_quiz/ │ │ ├── data/ │ │ │ └── comparison_quiz/ │ │ │ └── FakeComparisonQuizRepositoryImpl.kt │ │ ├── list/ │ │ │ └── components/ │ │ │ ├── ComparisonModeComponentTest.kt │ │ │ └── ComparisonModeComponentsTest.kt │ │ └── ui/ │ │ ├── ComparisonQuizScreenTest.kt │ │ └── components/ │ │ └── ComparisonItemTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── comparison_quiz/ │ │ ├── core/ │ │ │ ├── ComparisonQuizCoreImpl.kt │ │ │ └── workers/ │ │ │ └── ComparisonQuizEndGameWorker.kt │ │ ├── di/ │ │ │ └── ComparisonQuizModule.kt │ │ ├── list/ │ │ │ ├── ComparisonQuizListScreen.kt │ │ │ ├── ComparisonQuizListScreenUiEvent.kt │ │ │ ├── ComparisonQuizListScreenUiState.kt │ │ │ ├── ComparisonQuizListScreenViewModel.kt │ │ │ └── components/ │ │ │ ├── ComparisonModeComponent.kt │ │ │ └── ComparisonModeComponents.kt │ │ └── ui/ │ │ ├── AnimationState.kt │ │ ├── ComparisonQuizScreen.kt │ │ ├── ComparisonQuizUiEvent.kt │ │ ├── ComparisonQuizUiState.kt │ │ ├── ComparisonQuizViewModel.kt │ │ └── components/ │ │ ├── ComparisonItem.kt │ │ ├── ComparisonMidContent.kt │ │ ├── GameOverContent.kt │ │ └── MiddleCircle.kt │ └── test/ │ └── java/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── comparison_quiz/ │ └── core/ │ └── ComparisonQuizCoreImplTest.kt ├── compose_compiler_config.conf ├── core/ │ ├── .gitignore │ ├── analytics/ │ │ ├── .gitignore │ │ ├── LOGGING_ANALYTICS.md │ │ ├── README.md │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── foss/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── analytics/ │ │ │ └── FossAnalyticsModule.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── analytics/ │ │ │ ├── AnalyticsEvent.kt │ │ │ ├── AnalyticsHelper.kt │ │ │ ├── LocalDebugAnalyticsHelper.kt │ │ │ ├── NoOpAnalyticsHelper.kt │ │ │ ├── UiHelpers.kt │ │ │ └── UserProperty.kt │ │ └── normal/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── analytics/ │ │ ├── FirebaseAnalyticsHelper.kt │ │ └── NormalAnalyticsModule.kt │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── database/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ ├── schemas/ │ │ │ └── com.infinitepower.newquiz.core.database.AppDatabase/ │ │ │ ├── 1.json │ │ │ ├── 2.json │ │ │ ├── 3.json │ │ │ ├── 4.json │ │ │ ├── 5.json │ │ │ ├── 6.json │ │ │ └── 7.json │ │ └── src/ │ │ ├── androidTest/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── database/ │ │ │ └── dao/ │ │ │ └── DailyChallengeDaoTest.kt │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── database/ │ │ ├── AppDatabase.kt │ │ ├── dao/ │ │ │ ├── DailyChallengeDao.kt │ │ │ ├── GameResultDao.kt │ │ │ ├── MazeQuizDao.kt │ │ │ └── SavedMultiChoiceQuestionsDao.kt │ │ ├── di/ │ │ │ ├── DaoModule.kt │ │ │ └── DatabaseModule.kt │ │ ├── model/ │ │ │ ├── DailyChallengeTaskEntity.kt │ │ │ ├── MazeQuizItemEntity.kt │ │ │ ├── MultiChoiceQuestionEntity.kt │ │ │ └── user/ │ │ │ ├── BaseGameResultEntity.kt │ │ │ ├── ComparisonQuizGameResultEntity.kt │ │ │ ├── MultiChoiceGameResultEntity.kt │ │ │ └── WordleGameResultEntity.kt │ │ └── util/ │ │ ├── converters/ │ │ │ ├── ListConverter.kt │ │ │ ├── LocalDateConverter.kt │ │ │ ├── MathFormulaConverter.kt │ │ │ └── QuestionDifficultyConverter.kt │ │ └── mappers/ │ │ └── MultiChoiceQuestionMapper.kt │ ├── datastore/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── datastore/ │ │ │ ├── PreferenceRequest.kt │ │ │ ├── common/ │ │ │ │ ├── LocalUserCommon.kt │ │ │ │ ├── RecentCategoryDataStoreCommon.kt │ │ │ │ └── SettingsCommon.kt │ │ │ ├── di/ │ │ │ │ ├── LocalUserDatastoreModule.kt │ │ │ │ ├── RecentCategoriesDatastoreModule.kt │ │ │ │ └── SettingsDataStoreModule.kt │ │ │ └── manager/ │ │ │ ├── DataStoreManager.kt │ │ │ └── PreferencesDatastoreManager.kt │ │ ├── normal/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── datastore/ │ │ │ ├── common/ │ │ │ │ ├── DataAnalyticsCommon.kt │ │ │ │ └── TranslationCommon.kt │ │ │ └── di/ │ │ │ └── DataAnalyticsDatastoreModule.kt │ │ └── test/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── datastore/ │ │ └── manager/ │ │ └── PreferencesDatastoreManagerTest.kt │ ├── proguard-rules.pro │ ├── remote-config/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── foss/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── remote_config/ │ │ │ └── initializer/ │ │ │ └── RemoteConfigInitializer.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── infinitepower/ │ │ │ │ └── newquiz/ │ │ │ │ └── core/ │ │ │ │ └── remote_config/ │ │ │ │ ├── LocalDefaultsRemoteConfig.kt │ │ │ │ ├── RemoteConfig.kt │ │ │ │ ├── RemoteConfigValue.kt │ │ │ │ └── RemoteConfigXmlParser.kt │ │ │ └── res/ │ │ │ └── xml/ │ │ │ └── remote_config_defaults.xml │ │ ├── normal/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── remote_config/ │ │ │ ├── FirebaseRemoteConfigImpl.kt │ │ │ └── initializer/ │ │ │ └── RemoteConfigInitializer.kt │ │ └── test/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── remote_config/ │ │ ├── LocalRemoteConfig.kt │ │ └── RemoteConfigTest.kt │ ├── src/ │ │ ├── androidTest/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── ui/ │ │ │ └── components/ │ │ │ ├── RemainingTimeComponentTest.kt │ │ │ ├── category/ │ │ │ │ ├── CategoryComponentTest.kt │ │ │ │ └── CategoryConnectionInfoBadgeTest.kt │ │ │ ├── icon/ │ │ │ │ └── button/ │ │ │ │ └── BackIconButtonTest.kt │ │ │ └── skip_question/ │ │ │ └── SkipQuestionDialogTest.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── infinitepower/ │ │ │ │ └── newquiz/ │ │ │ │ └── core/ │ │ │ │ ├── NumberFormatter.kt │ │ │ │ ├── common/ │ │ │ │ │ ├── BaseApiUrls.kt │ │ │ │ │ ├── Common.kt │ │ │ │ │ ├── compose/ │ │ │ │ │ │ └── preview/ │ │ │ │ │ │ └── BooleanPreviewParameterProvider.kt │ │ │ │ │ └── database/ │ │ │ │ │ └── DatabaseCommon.kt │ │ │ │ ├── compose/ │ │ │ │ │ └── preferences/ │ │ │ │ │ └── LocalPreferenceEnabledStatus.kt │ │ │ │ ├── di/ │ │ │ │ │ ├── KtorModule.kt │ │ │ │ │ └── NetworkStatusModule.kt │ │ │ │ ├── game/ │ │ │ │ │ ├── ComparisonQuizCore.kt │ │ │ │ │ ├── GameCore.kt │ │ │ │ │ └── SkipGame.kt │ │ │ │ ├── math/ │ │ │ │ │ └── evaluator/ │ │ │ │ │ ├── Expressions.kt │ │ │ │ │ └── internal/ │ │ │ │ │ ├── Evaluator.kt │ │ │ │ │ ├── Expr.kt │ │ │ │ │ ├── Function.kt │ │ │ │ │ ├── Parser.kt │ │ │ │ │ ├── Scanner.kt │ │ │ │ │ ├── Token.kt │ │ │ │ │ └── TokenType.kt │ │ │ │ ├── navigation/ │ │ │ │ │ └── MazeNavigator.kt │ │ │ │ ├── network/ │ │ │ │ │ ├── NetworkStatusTracker.kt │ │ │ │ │ └── NetworkStatusTrackerImpl.kt │ │ │ │ ├── theme/ │ │ │ │ │ ├── ExtendedColor.kt │ │ │ │ │ ├── LocalAnimationsEnabled.kt │ │ │ │ │ ├── Spacing.kt │ │ │ │ │ ├── Theme.kt │ │ │ │ │ └── Type.kt │ │ │ │ ├── ui/ │ │ │ │ │ ├── DisabledEmphasisWrappers.kt │ │ │ │ │ ├── ObserveAsEvents.kt │ │ │ │ │ ├── SnackbarController.kt │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppNameWithLogo.kt │ │ │ │ │ │ ├── RemainingTimeComponent.kt │ │ │ │ │ │ ├── RoundedPolygonShape.kt │ │ │ │ │ │ ├── category/ │ │ │ │ │ │ │ ├── CategoryBadge.kt │ │ │ │ │ │ │ └── CategoryComponent.kt │ │ │ │ │ │ ├── icon/ │ │ │ │ │ │ │ └── button/ │ │ │ │ │ │ │ └── BackIconButton.kt │ │ │ │ │ │ └── skip_question/ │ │ │ │ │ │ ├── SkipButton.kt │ │ │ │ │ │ └── SkipQuestionDialog.kt │ │ │ │ │ ├── home/ │ │ │ │ │ │ ├── ExpandCategoriesButton.kt │ │ │ │ │ │ ├── HomeCategoriesItems.kt │ │ │ │ │ │ └── HomeLazyColumn.kt │ │ │ │ │ ├── home_card/ │ │ │ │ │ │ ├── HomeListContent.kt │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── HomeCardIcon.kt │ │ │ │ │ │ │ ├── HomeCardItemContent.kt │ │ │ │ │ │ │ ├── HomeGroupTitle.kt │ │ │ │ │ │ │ ├── HomeHorizontalItems.kt │ │ │ │ │ │ │ ├── HomeLargeCard.kt │ │ │ │ │ │ │ ├── HomeMediumCard.kt │ │ │ │ │ │ │ └── PlayRandomQuizCard.kt │ │ │ │ │ │ └── model/ │ │ │ │ │ │ └── HomeCardItem.kt │ │ │ │ │ ├── icons/ │ │ │ │ │ │ └── TrophyIcon.kt │ │ │ │ │ └── text/ │ │ │ │ │ └── CompactDecimalText.kt │ │ │ │ └── util/ │ │ │ │ ├── ComposeUtils.kt │ │ │ │ ├── PackageUtils.kt │ │ │ │ ├── UiTextUtils.kt │ │ │ │ ├── UriUtils.kt │ │ │ │ ├── android/ │ │ │ │ │ ├── DrawableUtils.kt │ │ │ │ │ └── resources/ │ │ │ │ │ └── ResourcesUtil.kt │ │ │ │ ├── collections/ │ │ │ │ │ └── Collections.kt │ │ │ │ ├── kotlin/ │ │ │ │ │ ├── BooleanUtils.kt │ │ │ │ │ ├── CollectionsUtils.kt │ │ │ │ │ ├── Math.kt │ │ │ │ │ ├── NumberUtils.kt │ │ │ │ │ └── SetUtils.kt │ │ │ │ └── model/ │ │ │ │ └── QuestionDifficultyUtil.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── github_logo.xml │ │ │ │ ├── logo_monochromatic.xml │ │ │ │ ├── round_android_24.xml │ │ │ │ └── round_flag_circle_24.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── raw/ │ │ │ │ ├── trophy2.json │ │ │ │ ├── trophy_winner.json │ │ │ │ ├── wordle_list.txt │ │ │ │ ├── wordle_list_es.txt │ │ │ │ ├── wordle_list_fr.txt │ │ │ │ └── wordle_list_pt.txt │ │ │ ├── values/ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ ├── values-de/ │ │ │ │ └── strings.xml │ │ │ ├── values-es/ │ │ │ │ └── strings.xml │ │ │ ├── values-et/ │ │ │ │ └── strings.xml │ │ │ ├── values-fr/ │ │ │ │ └── strings.xml │ │ │ ├── values-nb-rNO/ │ │ │ │ └── strings.xml │ │ │ ├── values-night/ │ │ │ │ └── themes.xml │ │ │ ├── values-pt/ │ │ │ │ └── strings.xml │ │ │ ├── values-ta/ │ │ │ │ └── strings.xml │ │ │ └── values-v29/ │ │ │ └── themes.xml │ │ ├── normal/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── initializer/ │ │ │ └── CoreFirebaseInitializer.kt │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ ├── NumberFormatterTest.kt │ │ ├── game/ │ │ │ └── ComparisonQuizDataTest.kt │ │ └── util/ │ │ ├── UiTextTests.kt │ │ ├── collections/ │ │ │ └── CollectionsTest.kt │ │ └── kotlin/ │ │ ├── BooleanUtilsTest.kt │ │ ├── CollectionsUtilsTest.kt │ │ ├── MathTest.kt │ │ ├── NumberUtilsTest.kt │ │ └── SetUtilsTest.kt │ ├── testing/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── foss/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── testing/ │ │ │ └── di/ │ │ │ └── TestRemoteConfigModule.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── testing/ │ │ │ ├── NewQuizTestRunner.kt │ │ │ ├── ScreenshotComparator.kt │ │ │ ├── data/ │ │ │ │ ├── fake/ │ │ │ │ │ ├── FakeComparisonQuizData.kt │ │ │ │ │ └── FakeData.kt │ │ │ │ └── repository/ │ │ │ │ ├── comparison_quiz/ │ │ │ │ │ └── FakeComparisonQuizRepositoryImpl.kt │ │ │ │ ├── multi_choice_quiz/ │ │ │ │ │ └── TestMultiChoiceQuestionRepositoryImpl.kt │ │ │ │ └── numbers/ │ │ │ │ └── FakeNumberTriviaQuestionApiImpl.kt │ │ │ ├── di/ │ │ │ │ ├── TestDatabaseModule.kt │ │ │ │ ├── TestKtorModule.kt │ │ │ │ ├── TestRepositoryModule.kt │ │ │ │ └── WorkManagerModule.kt │ │ │ ├── domain/ │ │ │ │ ├── FakeDailyChallengeDao.kt │ │ │ │ └── FakeGameResultDao.kt │ │ │ ├── ui/ │ │ │ │ └── theme/ │ │ │ │ └── TestTheme.kt │ │ │ └── utils/ │ │ │ ├── ComposeRule.kt │ │ │ ├── LocaleUtils.kt │ │ │ └── LogUtils.kt │ │ └── normal/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── testing/ │ │ └── di/ │ │ ├── RemoteConfigModule.kt │ │ └── TestAnalyticsModule.kt │ ├── translation/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTestNormal/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── translation/ │ │ │ └── GoogleTranslatorUtilTest.kt │ │ ├── foss/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── translation/ │ │ │ ├── NoTranslatorUtil.kt │ │ │ └── di/ │ │ │ └── TranslatorModule.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── translation/ │ │ │ ├── TranslatorLanguageSettings.kt │ │ │ ├── TranslatorModelState.kt │ │ │ └── TranslatorUtil.kt │ │ ├── normal/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── translation/ │ │ │ ├── GoogleTranslatorUtil.kt │ │ │ └── di/ │ │ │ └── GoogleTranslatorModule.kt │ │ ├── testFoss/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── core/ │ │ │ └── translation/ │ │ │ └── NoTranslatorUtilTest.kt │ │ └── testNormal/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── translation/ │ │ └── GoogleTranslatorUtilTest.kt │ └── user-services/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ ├── androidTest/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── user_services/ │ │ └── LocalUserServiceImplTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── core/ │ │ └── user_services/ │ │ ├── DateTimeRangeFormatter.kt │ │ ├── GameResultTracker.kt │ │ ├── InsufficientDiamondsException.kt │ │ ├── LocalUserService.kt │ │ ├── LocalUserServiceImpl.kt │ │ ├── UserService.kt │ │ ├── XpManager.kt │ │ ├── data/ │ │ │ └── xp/ │ │ │ ├── ComparisonQuizXpGeneratorImpl.kt │ │ │ ├── MultiChoiceQuizXpGeneratorImpl.kt │ │ │ └── WordleXpGeneratorImpl.kt │ │ ├── di/ │ │ │ ├── UserModule.kt │ │ │ └── XpGeneratorsModule.kt │ │ ├── domain/ │ │ │ └── xp/ │ │ │ ├── ComparisonQuizXpGenerator.kt │ │ │ ├── MultiChoiceQuizXpGenerator.kt │ │ │ ├── WordleXpGenerator.kt │ │ │ └── XpGenerator.kt │ │ ├── model/ │ │ │ └── User.kt │ │ └── workers/ │ │ └── MultiChoiceQuizEndGameWorker.kt │ └── test/ │ └── kotlin/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── core/ │ └── user_services/ │ ├── DateTimeRangeFormatterTest.kt │ ├── LocalUserServiceImplUnitTest.kt │ ├── data/ │ │ └── xp/ │ │ ├── ComparisonQuizXpGeneratorImplTest.kt │ │ ├── MultiChoiceQuizXpGeneratorImplTest.kt │ │ └── WordleXpGeneratorImplTest.kt │ └── model/ │ └── UserTest.kt ├── data/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── data/ │ │ ├── daily_challenge/ │ │ │ └── DailyChallengeRepositoryImplTest.kt │ │ ├── repository/ │ │ │ ├── comparison_quiz/ │ │ │ │ └── ComparisonQuizRepositoryImplTest.kt │ │ │ └── country/ │ │ │ └── CountryRepositoryImplTest.kt │ │ └── worker/ │ │ ├── daily_challenge/ │ │ │ └── VerifyDailyChallengeWorkerTest.kt │ │ └── maze/ │ │ ├── CleanMazeQuizWorkerTest.kt │ │ └── GenerateMazeQuizWorkerTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── data/ │ │ │ ├── di/ │ │ │ │ ├── MathModule.kt │ │ │ │ └── RepositoryModule.kt │ │ │ ├── local/ │ │ │ │ ├── multi_choice_quiz/ │ │ │ │ │ └── category/ │ │ │ │ │ └── MultiChoiceQuestionCategories.kt │ │ │ │ └── wordle/ │ │ │ │ └── WordleCategories.kt │ │ │ ├── repository/ │ │ │ │ ├── UserConfigRepositoryImpl.kt │ │ │ │ ├── comparison_quiz/ │ │ │ │ │ ├── ComparisonQuizApi.kt │ │ │ │ │ ├── ComparisonQuizApiImpl.kt │ │ │ │ │ └── ComparisonQuizRepositoryImpl.kt │ │ │ │ ├── country/ │ │ │ │ │ ├── CountryEntity.kt │ │ │ │ │ └── CountryRepositoryImpl.kt │ │ │ │ ├── daily_challenge/ │ │ │ │ │ ├── DailyChallengeRepositoryImpl.kt │ │ │ │ │ └── util/ │ │ │ │ │ └── DailyChallengeTypeTitleUtil.kt │ │ │ │ ├── home/ │ │ │ │ │ └── RecentCategoriesRepositoryImpl.kt │ │ │ │ ├── math_quiz/ │ │ │ │ │ └── MathQuizCoreRepositoryImpl.kt │ │ │ │ ├── maze_quiz/ │ │ │ │ │ └── MazeQuizRepositoryImpl.kt │ │ │ │ ├── multi_choice_quiz/ │ │ │ │ │ ├── CountryCapitalFlagsQuizRepositoryImpl.kt │ │ │ │ │ ├── FlagQuizRepositoryImpl.kt │ │ │ │ │ ├── GuessMathSolutionRepositoryImpl.kt │ │ │ │ │ ├── LogoQuizRepositoryImpl.kt │ │ │ │ │ ├── MultiChoiceQuestionRepositoryImpl.kt │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── OpenTDBQuestionResponse.kt │ │ │ │ │ └── saved_questions/ │ │ │ │ │ └── SavedMultiChoiceQuestionsRepositoryImpl.kt │ │ │ │ ├── numbers/ │ │ │ │ │ ├── NumberTriviaQuestionApiImpl.kt │ │ │ │ │ └── NumberTriviaQuestionRepositoryImpl.kt │ │ │ │ └── wordle/ │ │ │ │ ├── InvalidWordError.kt │ │ │ │ └── WordleRepositoryImpl.kt │ │ │ ├── util/ │ │ │ │ ├── mappers/ │ │ │ │ │ ├── comparisonquiz/ │ │ │ │ │ │ └── ComparisonQuizMapper.kt │ │ │ │ │ ├── daily_challenge/ │ │ │ │ │ │ └── DailyChallengeTaskMapper.kt │ │ │ │ │ └── maze/ │ │ │ │ │ └── MazeQuizMappers.kt │ │ │ │ └── translation/ │ │ │ │ └── WordleTitleUtil.kt │ │ │ └── worker/ │ │ │ ├── UpdateGlobalEventDataWorker.kt │ │ │ ├── daily_challenge/ │ │ │ │ └── VerifyDailyChallengeWorker.kt │ │ │ ├── maze/ │ │ │ │ ├── CleanMazeQuizWorker.kt │ │ │ │ └── GenerateMazeQuizWorker.kt │ │ │ └── multichoicequiz/ │ │ │ └── DownloadMultiChoiceQuestionsWorker.kt │ │ └── res/ │ │ └── raw/ │ │ └── all_countries.json │ └── test/ │ └── java/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── data/ │ ├── local/ │ │ ├── math_quiz/ │ │ │ └── MathQuizCoreRepositoryImplTest.kt │ │ └── wordle/ │ │ └── WordleCategoriesTest.kt │ └── repository/ │ ├── comparison_quiz/ │ │ ├── ComparisonQuizApiImplTest.kt │ │ └── ComparisonQuizRepositoryImplTest.kt │ ├── country/ │ │ ├── CountryRepositoryImplTest.kt │ │ └── TestCountryRepositoryImpl.kt │ ├── daily_challenge/ │ │ └── DailyChallengeRepositoryImplTest.kt │ ├── home/ │ │ └── RecentCategoriesRepositoryImplTest.kt │ ├── maze_quiz/ │ │ └── MazeQuizRepositoryImplTest.kt │ ├── multi_choice_quiz/ │ │ ├── CountryCapitalFlagsQuizRepositoryImplTest.kt │ │ └── FlagQuizRepositoryImplTest.kt │ └── wordle/ │ └── WordleRepositoryImplTest.kt ├── detekt-compose.yml ├── detekt.yml ├── domain/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── domain/ │ │ ├── repository/ │ │ │ ├── CountryRepository.kt │ │ │ ├── UserConfigRepository.kt │ │ │ ├── comparison_quiz/ │ │ │ │ └── ComparisonQuizRepository.kt │ │ │ ├── daily_challenge/ │ │ │ │ └── DailyChallengeRepository.kt │ │ │ ├── home/ │ │ │ │ └── RecentCategoriesRepository.kt │ │ │ ├── math_quiz/ │ │ │ │ └── MathQuizCoreRepository.kt │ │ │ ├── maze/ │ │ │ │ └── MazeQuizRepository.kt │ │ │ ├── multi_choice_quiz/ │ │ │ │ ├── CountryCapitalFlagsQuizRepository.kt │ │ │ │ ├── FlagQuizRepository.kt │ │ │ │ ├── GuessMathSolutionRepository.kt │ │ │ │ ├── LogoQuizRepository.kt │ │ │ │ ├── MultiChoiceQuestionBaseRepository.kt │ │ │ │ ├── MultiChoiceQuestionRepository.kt │ │ │ │ └── saved_questions/ │ │ │ │ └── SavedMultiChoiceQuestionsRepository.kt │ │ │ ├── numbers/ │ │ │ │ ├── NumberTriviaQuestionApi.kt │ │ │ │ └── NumberTriviaQuestionRepository.kt │ │ │ └── wordle/ │ │ │ └── WordleRepository.kt │ │ └── use_case/ │ │ └── question/ │ │ ├── GetRandomMultiChoiceQuestionUseCase.kt │ │ └── IsQuestionSavedUseCase.kt │ └── test/ │ └── kotlin/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── domain/ │ └── use_case/ │ └── question/ │ └── IsQuestionSavedUseCaseTest.kt ├── feature/ │ ├── daily-challenge/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── feature/ │ │ └── daily_challenge/ │ │ ├── DailyChallengeScreen.kt │ │ ├── DailyChallengeScreenNavigator.kt │ │ ├── DailyChallengeScreenUiEvent.kt │ │ ├── DailyChallengeScreenUiState.kt │ │ ├── DailyChallengeScreenViewModel.kt │ │ └── components/ │ │ └── DailyChallengeCard.kt │ ├── maze/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── infinitepower/ │ │ │ └── newquiz/ │ │ │ └── feature/ │ │ │ └── maze/ │ │ │ ├── MazeScreen.kt │ │ │ ├── MazeScreenUiEvent.kt │ │ │ ├── MazeScreenUiState.kt │ │ │ ├── MazeScreenViewModel.kt │ │ │ ├── categories_info/ │ │ │ │ ├── MazeCategoriesInfoScreen.kt │ │ │ │ ├── MazeCategoriesInfoUiState.kt │ │ │ │ └── MazeCategoriesInfoViewModel.kt │ │ │ ├── common/ │ │ │ │ └── MazeCategories.kt │ │ │ ├── components/ │ │ │ │ ├── CategoriesInfoBottomSheet.kt │ │ │ │ ├── InvalidCategoriesCard.kt │ │ │ │ ├── MazeCompletedCard.kt │ │ │ │ ├── MazeItemButton.kt │ │ │ │ ├── MazePath.kt │ │ │ │ └── ScrollToCurrentQuestionButton.kt │ │ │ ├── generate/ │ │ │ │ ├── GenerateMazeScreen.kt │ │ │ │ ├── GenerateMazeScreenUiEvent.kt │ │ │ │ ├── GenerateMazeScreenUiState.kt │ │ │ │ └── GenerateMazeScreenViewModel.kt │ │ │ └── level_results/ │ │ │ ├── LevelResultsScreen.kt │ │ │ ├── LevelResultsScreenUiState.kt │ │ │ ├── LevelResultsScreenViewModel.kt │ │ │ └── components/ │ │ │ ├── LevelCompletedContent.kt │ │ │ └── LevelFailedContent.kt │ │ └── test/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── feature/ │ │ └── maze/ │ │ └── MazeScreenUiStateTest.kt │ ├── profile/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── feature/ │ │ └── profile/ │ │ ├── ProfileScreen.kt │ │ ├── ProfileScreenUiEvent.kt │ │ ├── ProfileScreenUiState.kt │ │ ├── ProfileViewModel.kt │ │ └── components/ │ │ ├── GoodDayText.kt │ │ ├── MainUserCard.kt │ │ ├── UserXpAndLevelCard.kt │ │ ├── XpEarnedByDayCard.kt │ │ └── chart/ │ │ └── Marker.kt │ └── settings/ │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src/ │ ├── foss/ │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── feature/ │ │ └── settings/ │ │ ├── common/ │ │ │ └── BuildVariant.kt │ │ └── screens/ │ │ └── PreferencesScreen.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── feature/ │ │ └── settings/ │ │ ├── SettingsScreen.kt │ │ ├── components/ │ │ │ ├── AboutAndHelpButtons.kt │ │ │ └── preferences/ │ │ │ ├── PreferenceGroupHeader.kt │ │ │ ├── PreferenceItem.kt │ │ │ └── widgets/ │ │ │ ├── CustomPreferenceWidget.kt │ │ │ ├── DropDownPreferenceWidget.kt │ │ │ ├── ListPreferenceWidget.kt │ │ │ ├── MultiSelectListPreferenceWidget.kt │ │ │ ├── NavigationButtonWidget.kt │ │ │ ├── SeekBarPreferenceWidget.kt │ │ │ ├── SwitchPreferenceWidget.kt │ │ │ └── TextPreferenceWidget.kt │ │ ├── model/ │ │ │ ├── Preference.kt │ │ │ └── ScreenKey.kt │ │ ├── screens/ │ │ │ ├── PreferenceScreen.kt │ │ │ ├── about_and_help/ │ │ │ │ └── AboutAndHelpScreen.kt │ │ │ ├── animations/ │ │ │ │ └── AnimationsScreen.kt │ │ │ ├── general/ │ │ │ │ ├── GeneralScreen.kt │ │ │ │ ├── GeneralScreenUiEvent.kt │ │ │ │ ├── GeneralScreenUiState.kt │ │ │ │ └── GeneralScreenViewModel.kt │ │ │ ├── main/ │ │ │ │ └── MainScreen.kt │ │ │ ├── multi_choice_quiz/ │ │ │ │ └── MultiChoiceQuizScreen.kt │ │ │ └── wordle/ │ │ │ └── WordleScreen.kt │ │ └── util/ │ │ ├── ShowCategoryConnectionInfoUtils.kt │ │ └── datastore/ │ │ └── DatastoreUtils.kt │ └── normal/ │ └── kotlin/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── feature/ │ └── settings/ │ ├── common/ │ │ └── BuildVariant.kt │ └── screens/ │ ├── PreferencesScreen.kt │ ├── analytics/ │ │ └── AnimationsScreen.kt │ └── translation/ │ ├── TranslationScreen.kt │ ├── TranslationScreenUiEvent.kt │ ├── TranslationScreenUiState.kt │ └── TranslationScreenViewModel.kt ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── lint.xml ├── model/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── model/ │ │ ├── BaseCategory.kt │ │ ├── DataAnalyticsConsentState.kt │ │ ├── GameMode.kt │ │ ├── GameModeCategory.kt │ │ ├── Language.kt │ │ ├── NumberFormatType.kt │ │ ├── RemainingTime.kt │ │ ├── Resource.kt │ │ ├── TimestampWithValue.kt │ │ ├── UiText.kt │ │ ├── XP.kt │ │ ├── category/ │ │ │ └── ShowCategoryConnectionInfo.kt │ │ ├── comparison_quiz/ │ │ │ ├── ComparisonMode.kt │ │ │ ├── ComparisonQuizCategory.kt │ │ │ ├── ComparisonQuizCategoryEntity.kt │ │ │ ├── ComparisonQuizHelperValueState.kt │ │ │ ├── ComparisonQuizItem.kt │ │ │ ├── ComparisonQuizItemEntity.kt │ │ │ └── ComparisonQuizQuestion.kt │ │ ├── country/ │ │ │ ├── Continent.kt │ │ │ └── Country.kt │ │ ├── daily_challenge/ │ │ │ └── DailyChallengeTask.kt │ │ ├── global_event/ │ │ │ └── GameEvent.kt │ │ ├── math_quiz/ │ │ │ └── MathFormula.kt │ │ ├── maze/ │ │ │ ├── MazePoint.kt │ │ │ └── MazeQuiz.kt │ │ ├── multi_choice_quiz/ │ │ │ ├── MultiChoiceBaseCategory.kt │ │ │ ├── MultiChoiceCategory.kt │ │ │ ├── MultiChoiceQuestion.kt │ │ │ ├── MultiChoiceQuestionStep.kt │ │ │ ├── MultiChoiceQuestionType.kt │ │ │ ├── QuestionLanguage.kt │ │ │ ├── SelectedAnswer.kt │ │ │ ├── logo_quiz/ │ │ │ │ └── LogoQuizBaseItem.kt │ │ │ └── saved/ │ │ │ └── SortSavedQuestionsBy.kt │ │ ├── number/ │ │ │ ├── NumberTriviaQuestion.kt │ │ │ └── NumberTriviaQuestionsEntity.kt │ │ ├── question/ │ │ │ └── QuestionDifficulty.kt │ │ ├── regional_preferences/ │ │ │ ├── DistanceUnitType.kt │ │ │ ├── RegionalPreferences.kt │ │ │ └── TemperatureUnit.kt │ │ ├── util/ │ │ │ ├── base64/ │ │ │ │ ├── Base64.kt │ │ │ │ ├── Base64Encoding.kt │ │ │ │ └── Base64Url.kt │ │ │ └── serializers/ │ │ │ └── URISerializer.kt │ │ └── wordle/ │ │ ├── WordleCategory.kt │ │ ├── WordleItem.kt │ │ ├── WordleQuizType.kt │ │ ├── WordleRowItem.kt │ │ └── WordleWord.kt │ └── test/ │ └── java/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── model/ │ ├── RemainingTimeTest.kt │ ├── category/ │ │ └── ShowCategoryConnectionInfoTest.kt │ ├── comparison_quiz/ │ │ ├── ComparisonQuizCategoryTest.kt │ │ └── ComparisonQuizQuestionTest.kt │ ├── daily_challenge/ │ │ ├── DailyChallengeTaskTest.kt │ │ └── DailyChallengeTaskTypeTest.kt │ ├── math_quiz/ │ │ └── maze/ │ │ ├── MazePointTest.kt │ │ └── MazeQuizTest.kt │ ├── multi_choice_quiz/ │ │ └── MultiChoiceQuestionTest.kt │ ├── util/ │ │ └── base64/ │ │ ├── Base64Test.kt │ │ └── Base64UrlTest.kt │ └── wordle/ │ ├── WordleItemTest.kt │ └── WordleRowItemTest.kt ├── multi-choice-quiz/ │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── multi_choice_quiz/ │ │ ├── MultiChoiceQuizScreenTest.kt │ │ └── components/ │ │ ├── CardQuestionOptionTest.kt │ │ ├── QuizStepViewRowTest.kt │ │ └── QuizStepViewTest.kt │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── infinitepower/ │ │ └── newquiz/ │ │ └── multi_choice_quiz/ │ │ ├── MultiChoiceQuizScreen.kt │ │ ├── MultiChoiceQuizScreenUiEvent.kt │ │ ├── MultiChoiceQuizScreenUiState.kt │ │ ├── MultiChoiceQuizScreenViewModel.kt │ │ ├── components/ │ │ │ ├── CardQuestionAnswer.kt │ │ │ ├── MultiChoiceQuizContainer.kt │ │ │ ├── QuizStepView.kt │ │ │ ├── QuizTopBar.kt │ │ │ └── difficulty/ │ │ │ ├── BaseCardDifficultyContent.kt │ │ │ ├── FilledCardDifficulty.kt │ │ │ ├── OutlinedCardDifficulty.kt │ │ │ └── SelectableDifficultyRow.kt │ │ ├── list/ │ │ │ ├── MultiChoiceQuizListScreen.kt │ │ │ ├── MultiChoiceQuizListScreenUiState.kt │ │ │ └── MultiChoiceQuizListScreenViewModel.kt │ │ ├── results/ │ │ │ └── MultiChoiceQuizResultsScreen.kt │ │ └── saved_questions/ │ │ ├── SavedMultiChoiceQuestionsScreen.kt │ │ ├── SavedMultiChoiceQuestionsScreenNavigator.kt │ │ ├── SavedMultiChoiceQuestionsUiEvent.kt │ │ ├── SavedMultiChoiceQuestionsUiState.kt │ │ ├── SavedMultiChoiceQuestionsViewModel.kt │ │ └── components/ │ │ └── SavedQuestionItem.kt │ └── res/ │ └── values/ │ └── strings.xml ├── settings.gradle.kts └── wordle/ ├── .gitignore ├── README.md ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src/ ├── androidTest/ │ └── java/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── wordle/ │ ├── WordleScreenTest.kt │ └── components/ │ ├── WordleKeyBoardTest.kt │ └── WordleRowComponentTest.kt ├── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── infinitepower/ │ └── newquiz/ │ └── wordle/ │ ├── WordleScreen.kt │ ├── WordleScreenUiEvent.kt │ ├── WordleScreenUiState.kt │ ├── WordleScreenViewModel.kt │ ├── components/ │ │ ├── InfoDialog.kt │ │ ├── WordleKeyBoard.kt │ │ └── WordleRowComponent.kt │ ├── list/ │ │ ├── WordleListScreen.kt │ │ ├── WordleListScreenViewModel.kt │ │ └── WordleListUiState.kt │ └── util/ │ ├── InvalidWordErrorUiText.kt │ ├── word/ │ │ └── WordUtil.kt │ └── worker/ │ └── WordleEndGameWorker.kt └── test/ └── java/ └── com/ └── infinitepower/ └── newquiz/ └── wordle/ └── util/ └── word/ └── WordUtilTest.kt