├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md ├── actions │ ├── setup-android │ │ └── action.yml │ └── setup-ios │ │ └── action.yml ├── dependabot.yml ├── filters.yaml ├── labeler.yml └── workflows │ ├── android_beta_deployment.yml │ ├── android_deploy_to_firebase.yml │ ├── android_deploy_to_firebase_manually.yml │ ├── android_release_deployment.yml │ ├── auto_author_assign.yml │ ├── automerge_into_release.yml │ ├── build_caches.yml │ ├── ci.yml │ ├── claude.yml │ ├── cleanup_pr_caches.yml │ ├── codeql.yml │ ├── detect_changed_files_reusable_workflow.yml │ ├── gh_pages_analytics.yml │ ├── greetings.yml │ ├── ios_beta_deployment.yml │ ├── ios_release_deployment.yml │ ├── ios_unit_testing.yml │ ├── label.yml │ ├── merge_main_into_develop.yml │ └── stale.yml ├── .gitignore ├── .java-version ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── README.md ├── SECURITY.md ├── androidHyperskillApp ├── .ruby-version ├── Gemfile ├── Gemfile.lock ├── build.gradle.kts ├── fastlane │ ├── Appfile │ ├── Fastfile │ ├── Pluginfile │ ├── README.md │ ├── metadata │ │ └── android │ │ │ └── en-US │ │ │ ├── changelogs │ │ │ └── default.txt │ │ │ ├── full_description.txt │ │ │ ├── short_description.txt │ │ │ ├── title.txt │ │ │ └── video.txt │ └── release-notes.txt ├── google-services.json ├── keys │ ├── debug.properties │ ├── debug_keystore.properties │ └── release.properties ├── libs │ └── flexbox-release.aar ├── proguard-rules.pro └── src │ ├── debug │ └── java │ │ └── org │ │ └── hyperskill │ │ └── app │ │ └── android │ │ └── debug │ │ └── DebugScreen.kt │ ├── internalRelease │ └── java │ │ └── org │ │ └── hyperskill │ │ └── app │ │ └── android │ │ └── debug │ │ └── DebugScreen.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── css │ │ │ ├── alt.css │ │ │ ├── altcontent.css │ │ │ ├── bootstrap.css │ │ │ ├── fonts.css │ │ │ ├── highlight.css │ │ │ ├── hljs.css │ │ │ ├── icons.css │ │ │ ├── step.css │ │ │ ├── variables.css │ │ │ └── wysiwyg.css │ │ ├── katex │ │ │ ├── auto-render.min.js │ │ │ ├── fonts │ │ │ │ ├── KaTeX_AMS-Regular.ttf │ │ │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ │ │ ├── KaTeX_Main-Bold.ttf │ │ │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ │ │ ├── KaTeX_Main-Italic.ttf │ │ │ │ ├── KaTeX_Main-Regular.ttf │ │ │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ │ │ ├── KaTeX_Math-Italic.ttf │ │ │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ │ │ ├── KaTeX_Script-Regular.ttf │ │ │ │ ├── KaTeX_Size1-Regular.ttf │ │ │ │ ├── KaTeX_Size2-Regular.ttf │ │ │ │ ├── KaTeX_Size3-Regular.ttf │ │ │ │ ├── KaTeX_Size4-Regular.ttf │ │ │ │ └── KaTeX_Typewriter-Regular.ttf │ │ │ ├── katex.min.css │ │ │ └── katex.min.js │ │ └── scripts │ │ │ ├── highlight.pack.js │ │ │ ├── lines_wrapper.js │ │ │ ├── remove_data_mobile_hidden_elements.js │ │ │ └── remove_iframes.js │ ├── ic_app_icon-playstore.png │ ├── java │ │ └── org │ │ │ └── hyperskill │ │ │ └── app │ │ │ └── android │ │ │ ├── HyperskillApp.kt │ │ │ ├── auth │ │ │ └── view │ │ │ │ └── ui │ │ │ │ ├── adapter │ │ │ │ └── delegates │ │ │ │ │ └── AuthSocialAdapterDelegate.kt │ │ │ │ ├── fragment │ │ │ │ ├── AuthCredentialsFragment.kt │ │ │ │ ├── AuthFragment.kt │ │ │ │ ├── AuthSocialFragment.kt │ │ │ │ └── AuthSocialWebViewFragment.kt │ │ │ │ ├── model │ │ │ │ └── AuthSocialCardInfo.kt │ │ │ │ ├── navigation │ │ │ │ ├── AuthEmailScreen.kt │ │ │ │ ├── AuthFlow.kt │ │ │ │ ├── AuthScreen.kt │ │ │ │ └── AuthSocialScreen.kt │ │ │ │ └── widget │ │ │ │ └── AuthSocialWebViewClient.kt │ │ │ ├── badges │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ └── ProfileBadgesDelegate.kt │ │ │ │ └── ui │ │ │ │ ├── BadgeCard.kt │ │ │ │ ├── BadgeCardStatePreview.kt │ │ │ │ ├── BadgeDefaults.kt │ │ │ │ ├── BadgeGrid.kt │ │ │ │ ├── BadgeImage.kt │ │ │ │ ├── BadgeKindExtensions.kt │ │ │ │ ├── BadgeLevelWithProgress.kt │ │ │ │ └── ProfileBadges.kt │ │ │ ├── challenge │ │ │ ├── delegate │ │ │ │ └── ChallengeCardDelegate.kt │ │ │ └── ui │ │ │ │ ├── AnnouncementChallengeCard.kt │ │ │ │ ├── ChallengeCard.kt │ │ │ │ ├── ChallengeCardDefaults.kt │ │ │ │ ├── ChallengeCardPreviewValues.kt │ │ │ │ ├── ChallengeDateLabel.kt │ │ │ │ ├── ChallengeDescription.kt │ │ │ │ ├── ChallengeHeader.kt │ │ │ │ ├── ChallengeProgress.kt │ │ │ │ ├── ChallengeScaffold.kt │ │ │ │ ├── ChallengeStatus.kt │ │ │ │ ├── ChallengeTimeText.kt │ │ │ │ ├── CompletedChallengeCard.kt │ │ │ │ ├── HappeningNowChallengeCard.kt │ │ │ │ ├── NotCompletedChallengeCard.kt │ │ │ │ └── PartiallyCompletedChallengeCard.kt │ │ │ ├── clarity │ │ │ └── ClarityDelegate.kt │ │ │ ├── code │ │ │ ├── injection │ │ │ │ ├── PlatformCodeEditorComponent.kt │ │ │ │ └── PlatformCodeEditorComponentImpl.kt │ │ │ ├── presentation │ │ │ │ ├── autocomplete │ │ │ │ │ ├── AutocompleteContainer.kt │ │ │ │ │ ├── AutocompleteDictionary.kt │ │ │ │ │ └── AutocompleteState.kt │ │ │ │ ├── highlight │ │ │ │ │ ├── prettify │ │ │ │ │ │ ├── PrettifyParser.java │ │ │ │ │ │ ├── lang │ │ │ │ │ │ │ ├── Lang.java │ │ │ │ │ │ │ ├── LangAppollo.java │ │ │ │ │ │ │ ├── LangBasic.java │ │ │ │ │ │ │ ├── LangClj.java │ │ │ │ │ │ │ ├── LangDart.java │ │ │ │ │ │ │ ├── LangErlang.java │ │ │ │ │ │ │ ├── LangGo.java │ │ │ │ │ │ │ ├── LangHs.java │ │ │ │ │ │ │ ├── LangKotlin.java │ │ │ │ │ │ │ ├── LangLisp.java │ │ │ │ │ │ │ ├── LangLlvm.java │ │ │ │ │ │ │ ├── LangLua.java │ │ │ │ │ │ │ ├── LangMatlab.java │ │ │ │ │ │ │ ├── LangMl.java │ │ │ │ │ │ │ ├── LangMumps.java │ │ │ │ │ │ │ ├── LangN.java │ │ │ │ │ │ │ ├── LangPascal.java │ │ │ │ │ │ │ ├── LangProto.java │ │ │ │ │ │ │ ├── LangR.java │ │ │ │ │ │ │ ├── LangRd.java │ │ │ │ │ │ │ ├── LangScala.java │ │ │ │ │ │ │ ├── LangSql.java │ │ │ │ │ │ │ ├── LangTcl.java │ │ │ │ │ │ │ ├── LangTex.java │ │ │ │ │ │ │ ├── LangVb.java │ │ │ │ │ │ │ ├── LangVhdl.java │ │ │ │ │ │ │ ├── LangXq.java │ │ │ │ │ │ │ └── LangYaml.java │ │ │ │ │ │ └── parser │ │ │ │ │ │ │ ├── CombinePrefixPattern.java │ │ │ │ │ │ │ ├── Job.java │ │ │ │ │ │ │ ├── Prettify.java │ │ │ │ │ │ │ └── Util.java │ │ │ │ │ └── syntaxhighlight │ │ │ │ │ │ ├── Parser.java │ │ │ │ │ │ └── PrettifyParseResult.java │ │ │ │ └── model │ │ │ │ │ └── ProgrammingLanguageExtension.kt │ │ │ ├── util │ │ │ │ └── CodeEditorKeyboardExtensionUtil.kt │ │ │ └── view │ │ │ │ ├── CodeSyntaxSpan.kt │ │ │ │ ├── ParseResultExtensions.kt │ │ │ │ ├── adapter │ │ │ │ └── CodeToolbarAdapter.kt │ │ │ │ ├── model │ │ │ │ └── themes │ │ │ │ │ ├── CodeSyntax.kt │ │ │ │ │ ├── CodeTheme.kt │ │ │ │ │ └── CodeThemes.kt │ │ │ │ └── widget │ │ │ │ ├── CodeAnalyzer.kt │ │ │ │ ├── CodeEditor.kt │ │ │ │ └── CodeEditorLayout.kt │ │ │ ├── comments │ │ │ ├── fragment │ │ │ │ └── CommentsDialogFragment.kt │ │ │ └── ui │ │ │ │ ├── Comment.kt │ │ │ │ ├── CommentDefaults.kt │ │ │ │ ├── CommentHeader.kt │ │ │ │ ├── CommentList.kt │ │ │ │ ├── CommentListContentType.kt │ │ │ │ ├── CommentPreviewDataProvider.kt │ │ │ │ ├── CommentReactions.kt │ │ │ │ ├── CommentReactionsPopup.kt │ │ │ │ ├── CommentSkeleton.kt │ │ │ │ └── Comments.kt │ │ │ ├── core │ │ │ ├── extensions │ │ │ │ ├── ColorUtil.kt │ │ │ │ ├── ConfigurationExtensions.kt │ │ │ │ ├── ContextExtensions.kt │ │ │ │ ├── CustomTabsExtention.kt │ │ │ │ ├── DateTimeHelper.kt │ │ │ │ ├── DefaultTapUpListener.kt │ │ │ │ ├── DrawableExtensions.kt │ │ │ │ ├── EditTextExtensions.kt │ │ │ │ ├── FragmentSerializableArgumentDelegate.kt │ │ │ │ ├── HapticFeedbackExtentions.kt │ │ │ │ ├── LayerListDrawableDelegate.kt │ │ │ │ ├── LoggerUtils.kt │ │ │ │ ├── NestedScollViewExtention.kt │ │ │ │ ├── NotificationChannelInitializer.kt │ │ │ │ ├── NotificationExtensions.kt │ │ │ │ ├── RxUtil.kt │ │ │ │ ├── Screenshoot.kt │ │ │ │ ├── ShareUtils.kt │ │ │ │ ├── StringExtensions.kt │ │ │ │ ├── ThemeExtension.kt │ │ │ │ ├── WindowInsetsUtils.kt │ │ │ │ ├── compose │ │ │ │ │ └── PaddingValuesExtensions.kt │ │ │ │ └── rx │ │ │ │ │ └── ObservableReduceMap.kt │ │ │ ├── injection │ │ │ │ ├── AndroidAppComponent.kt │ │ │ │ └── AndroidAppComponentImpl.kt │ │ │ └── view │ │ │ │ └── ui │ │ │ │ ├── SwipeRefreshExtenions.kt │ │ │ │ ├── adapter │ │ │ │ ├── DataLoadingErrorAdapterDelegate.kt │ │ │ │ └── decoration │ │ │ │ │ ├── CustomDividerItemDecoration.kt │ │ │ │ │ ├── HorizontalMarginItemDecoration.kt │ │ │ │ │ └── VerticalMarginItemDecoration.kt │ │ │ │ ├── dialog │ │ │ │ ├── CreateMagicLinkLoadingProgressDialogFragment.kt │ │ │ │ ├── DialogFragmentExtension.kt │ │ │ │ └── LoadingProgressDialogFragment.kt │ │ │ │ ├── fragment │ │ │ │ ├── FragmentExtensions.kt │ │ │ │ └── ReduxViewLifecycleObserver.kt │ │ │ │ ├── navigation │ │ │ │ ├── AppNavigationContainer.kt │ │ │ │ └── NavigationExtensions.kt │ │ │ │ └── widget │ │ │ │ ├── CompoundLatexItemView.kt │ │ │ │ ├── ExpandableTextView.kt │ │ │ │ ├── ExternalLinkWebViewClient.kt │ │ │ │ ├── ProgressableWebViewClient.kt │ │ │ │ ├── SelectableTextView.kt │ │ │ │ └── compose │ │ │ │ ├── AlignmentExtension.kt │ │ │ │ ├── DataLoadingError.kt │ │ │ │ ├── HtmlText.kt │ │ │ │ ├── HyperskillButton.kt │ │ │ │ ├── HyperskillCard.kt │ │ │ │ ├── HyperskillPopup.kt │ │ │ │ ├── HyperskillProgressIndicator.kt │ │ │ │ ├── HyperskillPullRefreshIndicator.kt │ │ │ │ ├── HyperskillTheme.kt │ │ │ │ ├── HyperskillTopAppBar.kt │ │ │ │ ├── LegacyShimmerLoading.kt │ │ │ │ ├── LinearGradient.kt │ │ │ │ ├── LinearProgressIndicator.kt │ │ │ │ ├── OnComposableShownFirstTime.kt │ │ │ │ ├── ScreenDataLoadingError.kt │ │ │ │ ├── ShimmerModifier.kt │ │ │ │ ├── TextButtonTypography.kt │ │ │ │ └── TypewriterTextEffect.kt │ │ │ ├── debug │ │ │ ├── fragment │ │ │ │ └── DebugFragment.kt │ │ │ └── ui │ │ │ │ ├── DebugScreenUI.kt │ │ │ │ ├── FindStage.kt │ │ │ │ ├── FindStep.kt │ │ │ │ └── ServerSwitcher.kt │ │ │ ├── first_problem_onboarding │ │ │ ├── fragment │ │ │ │ └── FirstProblemOnboardingFragment.kt │ │ │ ├── navigation │ │ │ │ └── FirstProblemOnboardingScreen.kt │ │ │ └── ui │ │ │ │ ├── FirstProblemOnboardingContent.kt │ │ │ │ ├── FirstProblemOnboardingDefaults.kt │ │ │ │ ├── FirstProblemOnboardingSkeleton.kt │ │ │ │ └── FirstProblemOnboardingUI.kt │ │ │ ├── gamification_toolbar │ │ │ └── view │ │ │ │ ├── ui │ │ │ │ └── delegate │ │ │ │ │ └── GamificationToolbarDelegate.kt │ │ │ │ └── widget │ │ │ │ └── ToolbarTrackProgressView.kt │ │ │ ├── home │ │ │ └── view │ │ │ │ └── ui │ │ │ │ ├── fragment │ │ │ │ └── HomeFragment.kt │ │ │ │ └── screen │ │ │ │ └── TrainingScreen.kt │ │ │ ├── image_loading │ │ │ └── injection │ │ │ │ ├── ImageLoadingComponent.kt │ │ │ │ └── ImageLoadingComponentImpl.kt │ │ │ ├── latex │ │ │ ├── injection │ │ │ │ ├── PlatformLatexComponent.kt │ │ │ │ └── PlatformLatexComponentImpl.kt │ │ │ └── view │ │ │ │ ├── mapper │ │ │ │ ├── LatexTextMapper.kt │ │ │ │ └── LatexWebViewMapper.kt │ │ │ │ ├── model │ │ │ │ ├── LatexData.kt │ │ │ │ ├── Settings.kt │ │ │ │ ├── TextAttributes.kt │ │ │ │ ├── block │ │ │ │ │ ├── BaseStyleBlock.kt │ │ │ │ │ ├── ContentBlock.kt │ │ │ │ │ ├── DataMobileHiddenBlock.kt │ │ │ │ │ ├── HighlightScriptBlock.kt │ │ │ │ │ ├── HorizontalScrollBlock.kt │ │ │ │ │ ├── KotlinRunnableSamplesScriptBlock.kt │ │ │ │ │ ├── LatexScriptBlock.kt │ │ │ │ │ ├── MetaBlock.kt │ │ │ │ │ ├── RemoveIFrameElementsInjection.kt │ │ │ │ │ ├── SelectionColorStyleBlock.kt │ │ │ │ │ └── WebScriptBlock.kt │ │ │ │ └── rule │ │ │ │ │ ├── ContentRule.kt │ │ │ │ │ └── RelativePathContentRule.kt │ │ │ │ ├── resolvers │ │ │ │ └── OlLiTagHandler.java │ │ │ │ └── widget │ │ │ │ ├── LatexView.kt │ │ │ │ └── LatexWebView.kt │ │ │ ├── leaderboard │ │ │ ├── fragment │ │ │ │ └── LeaderboardFragment.kt │ │ │ ├── navigation │ │ │ │ └── LeaderboardScreen.kt │ │ │ └── ui │ │ │ │ ├── LeaderboardItem.kt │ │ │ │ ├── LeaderboardList.kt │ │ │ │ ├── LeaderboardListDivider.kt │ │ │ │ ├── LeaderboardPlaceInfo.kt │ │ │ │ ├── LeaderboardPreviewData.kt │ │ │ │ ├── LeaderboardScreen.kt │ │ │ │ ├── LeaderboardSkeletonItem.kt │ │ │ │ ├── LeaderboardStub.kt │ │ │ │ └── LeaderboardTabs.kt │ │ │ ├── main │ │ │ ├── injection │ │ │ │ ├── NavigationComponent.kt │ │ │ │ └── NavigationComponentImpl.kt │ │ │ └── view │ │ │ │ └── ui │ │ │ │ ├── activity │ │ │ │ ├── BackToForegroundObserver.kt │ │ │ │ └── MainActivity.kt │ │ │ │ ├── fragment │ │ │ │ └── MainFragment.kt │ │ │ │ └── navigation │ │ │ │ ├── MainScreen.kt │ │ │ │ ├── MainScreenRouter.kt │ │ │ │ └── Tabs.kt │ │ │ ├── manage_subscription │ │ │ ├── fragment │ │ │ │ └── ManageSubscriptionFragment.kt │ │ │ ├── navigation │ │ │ │ └── ManageSubscriptionScreen.kt │ │ │ └── ui │ │ │ │ ├── ManageSubscriptionContent.kt │ │ │ │ ├── ManageSubscriptionDefaults.kt │ │ │ │ ├── ManageSubscriptionPreviewDefaults.kt │ │ │ │ └── ManageSubscriptionScreen.kt │ │ │ ├── notification │ │ │ ├── NotificationBuilder.kt │ │ │ ├── NotificationIntentBuilder.kt │ │ │ ├── PendingIntentCompat.kt │ │ │ ├── click_handling │ │ │ │ └── delegate │ │ │ │ │ └── NotificationClickHandlingDelegate.kt │ │ │ ├── local │ │ │ │ ├── HyperskillNotificationManager.kt │ │ │ │ ├── HyperskillNotificationManagerImpl.kt │ │ │ │ ├── LocalNotificationDelegate.kt │ │ │ │ ├── LocalNotificationPublisher.kt │ │ │ │ ├── LocalNotificationPublisherImpl.kt │ │ │ │ ├── injection │ │ │ │ │ ├── PlatformLocalNotificationComponent.kt │ │ │ │ │ └── PlatformLocalNotificationComponentImpl.kt │ │ │ │ ├── receiver │ │ │ │ │ ├── AlarmReceiver.kt │ │ │ │ │ └── RescheduleNotificationsReceiver.kt │ │ │ │ └── service │ │ │ │ │ └── RescheduleLocalNotificationsService.kt │ │ │ ├── model │ │ │ │ ├── ClickedNotificationData.kt │ │ │ │ ├── HyperskillNotificationChannel.kt │ │ │ │ └── NotificationId.kt │ │ │ ├── permission │ │ │ │ └── NotificationPermissionDelegate.kt │ │ │ └── remote │ │ │ │ ├── FcmNotificationParser.kt │ │ │ │ ├── PushNotificationHandler.kt │ │ │ │ ├── PushNotificationHandlerImpl.kt │ │ │ │ ├── injection │ │ │ │ ├── AndroidPlatformPushNotificationComponent.kt │ │ │ │ └── AndroidPlatformPushNotificationsComponentImpl.kt │ │ │ │ ├── model │ │ │ │ ├── PushNotification.kt │ │ │ │ └── PushNotificationDataExtensions.kt │ │ │ │ └── service │ │ │ │ └── HyperskillFcmService.kt │ │ │ ├── notification_onboarding │ │ │ ├── fragment │ │ │ │ └── NotificationsOnboardingFragment.kt │ │ │ ├── navigation │ │ │ │ └── NotificationsOnboardingScreen.kt │ │ │ └── ui │ │ │ │ ├── NotificationsOnboarding.kt │ │ │ │ ├── NotificationsOnboardingDefaults.kt │ │ │ │ ├── NotificationsOnboardingSetLaterButton.kt │ │ │ │ ├── NotificationsOnboardingSetTimeButton.kt │ │ │ │ └── NotificationsOnboardingTurnOnButton.kt │ │ │ ├── paywall │ │ │ ├── fragment │ │ │ │ └── PaywallFragment.kt │ │ │ ├── navigation │ │ │ │ └── PaywallScreen.kt │ │ │ └── ui │ │ │ │ ├── PaywallContent.kt │ │ │ │ ├── PaywallDefaults.kt │ │ │ │ ├── PaywallPreviewDefaults.kt │ │ │ │ ├── PaywallScreen.kt │ │ │ │ ├── SubscriptionDetails.kt │ │ │ │ ├── SubscriptionProduct.kt │ │ │ │ └── SubscriptionSyncLoading.kt │ │ │ ├── problem_of_day │ │ │ └── view │ │ │ │ └── delegate │ │ │ │ └── ProblemOfDayCardFormDelegate.kt │ │ │ ├── problems_limit │ │ │ └── dialog │ │ │ │ └── ProblemsLimitInfoBottomSheet.kt │ │ │ ├── profile │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ ├── AboutMeDelegate.kt │ │ │ │ ├── ProfileLoadingDelegate.kt │ │ │ │ ├── ProfileViewActionDelegate.kt │ │ │ │ └── StreakCardFormDelegate.kt │ │ │ │ ├── dialog │ │ │ │ ├── BadgeDetailsDialogFragment.kt │ │ │ │ ├── BadgeDialogFormatter.kt │ │ │ │ ├── BadgeEarnedDialogFragment.kt │ │ │ │ └── StreakFreezeDialogFragment.kt │ │ │ │ ├── fragment │ │ │ │ ├── ProfileFragment.kt │ │ │ │ └── TimeIntervalPickerDialogFragment.kt │ │ │ │ └── navigation │ │ │ │ └── ProfileScreen.kt │ │ │ ├── profile_settings │ │ │ └── view │ │ │ │ ├── dialog │ │ │ │ └── ProfileSettingsDialogFragment.kt │ │ │ │ └── mapper │ │ │ │ └── ThemeMapper.kt │ │ │ ├── progress │ │ │ ├── fragment │ │ │ │ └── ProgressFragment.kt │ │ │ ├── navigation │ │ │ │ └── ProgressScreen.kt │ │ │ └── ui │ │ │ │ ├── BlockHeader.kt │ │ │ │ ├── GeneralStatistics.kt │ │ │ │ ├── PercentProgressIndicator.kt │ │ │ │ ├── PercentStatistics.kt │ │ │ │ ├── ProgressDefaults.kt │ │ │ │ ├── ProgressPreview.kt │ │ │ │ ├── ProgressScreen.kt │ │ │ │ ├── project │ │ │ │ ├── ProjectProgress.kt │ │ │ │ ├── ProjectProgressContent.kt │ │ │ │ └── ProjectProgressSkeleton.kt │ │ │ │ └── track │ │ │ │ ├── TrackProgress.kt │ │ │ │ ├── TrackProgressContent.kt │ │ │ │ ├── TrackProgressSkeleton.kt │ │ │ │ └── TrackTopicsStatistics.kt │ │ │ ├── projects_selection │ │ │ ├── details │ │ │ │ ├── delegate │ │ │ │ │ └── ProjectSelectionDetailsDelegate.kt │ │ │ │ ├── fragment │ │ │ │ │ └── ProjectSelectionDetailsFragment.kt │ │ │ │ └── navigation │ │ │ │ │ └── ProjectSelectionDetailsScreen.kt │ │ │ └── list │ │ │ │ ├── adapter │ │ │ │ └── ProjectAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── ProjectSelectionListDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── ProjectSelectionListFragment.kt │ │ │ │ ├── model │ │ │ │ └── ProjectSelectionRecyclerItem.kt │ │ │ │ └── navigation │ │ │ │ └── ProjectSelectionListScreen.kt │ │ │ ├── request_review │ │ │ ├── dialog │ │ │ │ └── RequestReviewDialogFragment.kt │ │ │ └── ui │ │ │ │ ├── RequestReviewDialog.kt │ │ │ │ └── RequestReviewPreviewDefaults.kt │ │ │ ├── sentry │ │ │ ├── domain │ │ │ │ └── model │ │ │ │ │ ├── manager │ │ │ │ │ └── SentryManagerImpl.kt │ │ │ │ │ └── transaction │ │ │ │ │ └── PlatformHyperskillSentryTransaction.kt │ │ │ └── extensions │ │ │ │ ├── BreadcrumbExtensions.kt │ │ │ │ └── HyperskillSentryLevelExtensions.kt │ │ │ ├── share_streak │ │ │ └── fragment │ │ │ │ └── ShareStreakDialogFragment.kt │ │ │ ├── stage_implementation │ │ │ ├── delegate │ │ │ │ └── StageStepMenuDelegate.kt │ │ │ ├── dialog │ │ │ │ ├── ProjectCompletedBottomSheet.kt │ │ │ │ ├── StageCompletedBottomSheet.kt │ │ │ │ └── UnsupportedStageBottomSheet.kt │ │ │ ├── fragment │ │ │ │ ├── StageImplementationFragment.kt │ │ │ │ └── StageStepWrapperFragment.kt │ │ │ └── navigation │ │ │ │ └── StageImplementationScreen.kt │ │ │ ├── step │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ ├── CollapsibleStepBlockDelegate.kt │ │ │ │ ├── StepDelegate.kt │ │ │ │ ├── StepMenuDelegate.kt │ │ │ │ └── StepRouterDelegate.kt │ │ │ │ ├── fragment │ │ │ │ ├── StepFragment.kt │ │ │ │ └── StepWrapperFragment.kt │ │ │ │ ├── model │ │ │ │ ├── LimitsWidgetCallback.kt │ │ │ │ ├── StepCompletionHost.kt │ │ │ │ ├── StepCompletionView.kt │ │ │ │ ├── StepHost.kt │ │ │ │ ├── StepMenuPrimaryAction.kt │ │ │ │ ├── StepMenuPrimaryActionParams.kt │ │ │ │ ├── StepPracticeCallback.kt │ │ │ │ ├── StepToolbarCallback.kt │ │ │ │ ├── StepToolbarContentViewState.kt │ │ │ │ └── StepToolbarHost.kt │ │ │ │ └── navigation │ │ │ │ ├── StepNavigationContainer.kt │ │ │ │ ├── StepScreen.kt │ │ │ │ └── StepWrapperScreen.kt │ │ │ ├── step_content_text │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ └── TextStepContentDelegate.kt │ │ │ │ └── fragment │ │ │ │ └── TextStepContentFragment.kt │ │ │ ├── step_feedback │ │ │ └── dialog │ │ │ │ └── StepFeedbackDialogFragment.kt │ │ │ ├── step_practice │ │ │ ├── model │ │ │ │ └── StepPracticeHost.kt │ │ │ └── view │ │ │ │ └── fragment │ │ │ │ ├── StepPracticeDetailsFragment.kt │ │ │ │ └── StepPracticeFragment.kt │ │ │ ├── step_quiz │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ ├── StepQuizFeedbackBlocksDelegate.kt │ │ │ │ └── StepQuizFormDelegate.kt │ │ │ │ ├── dialog │ │ │ │ ├── CompletedStepOfTheDayDialogFragment.kt │ │ │ │ ├── ProblemOnboardingBottomSheetCallback.kt │ │ │ │ ├── ProblemOnboardingBottomSheetDialogFragment.kt │ │ │ │ └── ProblemsOnboardingBottomSheetFactory.kt │ │ │ │ ├── factory │ │ │ │ ├── StepQuizFragmentFactory.kt │ │ │ │ └── StepQuizViewStateDelegateFactory.kt │ │ │ │ ├── fragment │ │ │ │ └── DefaultStepQuizFragment.kt │ │ │ │ └── model │ │ │ │ └── StepQuizButtonsState.kt │ │ │ ├── step_quiz_choice │ │ │ └── view │ │ │ │ ├── adapter │ │ │ │ ├── ChoiceMultipleSelectionAdapterDelegate.kt │ │ │ │ └── ChoiceSingleSelectionAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── ChoiceStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── ChoiceStepQuizFragment.kt │ │ │ │ ├── mapper │ │ │ │ └── ChoiceStepQuizOptionsMapper.kt │ │ │ │ └── model │ │ │ │ └── Choice.kt │ │ │ ├── step_quiz_code │ │ │ └── view │ │ │ │ ├── adapter │ │ │ │ └── CodeDetailSampleAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ ├── CodeLayoutDelegate.kt │ │ │ │ ├── CodeQuizInstructionDelegate.kt │ │ │ │ └── CodeStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── CodeStepQuizFragment.kt │ │ │ │ └── model │ │ │ │ ├── CodeDetail.kt │ │ │ │ ├── CodeStepQuizConfigFactory.kt │ │ │ │ ├── CodeStepQuizFormState.kt │ │ │ │ └── config │ │ │ │ ├── CodeStepQuizConfig.kt │ │ │ │ ├── CommonCodeQuizConfig.kt │ │ │ │ ├── PycharmCodeQuizConfig.kt │ │ │ │ └── SqlCodeStepConfig.kt │ │ │ ├── step_quiz_fill_blanks │ │ │ ├── adapter │ │ │ │ ├── FillBlanksInputItemAdapterDelegate.kt │ │ │ │ ├── FillBlanksSelectItemAdapterDelegate.kt │ │ │ │ ├── FillBlanksSelectOptionAdapterDelegate.kt │ │ │ │ └── FillBlanksTextItemAdapterDelegate.kt │ │ │ ├── delegate │ │ │ │ └── FillBlanksStepQuizFormDelegate.kt │ │ │ ├── dialog │ │ │ │ └── FillBlanksInputDialogFragment.kt │ │ │ ├── fragment │ │ │ │ └── FillBlanksStepQuizFragment.kt │ │ │ └── model │ │ │ │ ├── FillBlanksProcessedOption.kt │ │ │ │ ├── FillBlanksSelectOptionUIItem.kt │ │ │ │ ├── FillBlanksUiItem.kt │ │ │ │ ├── HighlightResult.kt │ │ │ │ ├── ResolveState.kt │ │ │ │ └── SelectState.kt │ │ │ ├── step_quiz_fullscreen_code │ │ │ ├── adapter │ │ │ │ └── CodeStepQuizFullScreenPagerAdapter.kt │ │ │ └── dialog │ │ │ │ └── CodeStepQuizFullScreenDialogFragment.kt │ │ │ ├── step_quiz_hints │ │ │ └── delegate │ │ │ │ └── StepQuizHintsDelegate.kt │ │ │ ├── step_quiz_matching │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ └── MatchingStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── MatchingStepQuizFragment.kt │ │ │ │ ├── mapper │ │ │ │ └── MatchingItemMapper.kt │ │ │ │ └── model │ │ │ │ └── MatchingItem.kt │ │ │ ├── step_quiz_parsons │ │ │ └── view │ │ │ │ ├── adapter │ │ │ │ └── ParsonsLinesAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── ParsonsStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── ParsonsStepQuizFragment.kt │ │ │ │ ├── mapper │ │ │ │ └── ParsonsLinesMapper.kt │ │ │ │ └── model │ │ │ │ ├── ParsonsLineControlMessage.kt │ │ │ │ └── UiParsonsLine.kt │ │ │ ├── step_quiz_sorting │ │ │ └── view │ │ │ │ ├── adapter │ │ │ │ └── SortingOptionAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── SortingStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── SortingStepQuizFragment.kt │ │ │ │ ├── mapper │ │ │ │ └── SortingOptionMapper.kt │ │ │ │ └── model │ │ │ │ └── SortingOption.kt │ │ │ ├── step_quiz_table │ │ │ └── view │ │ │ │ ├── adapter │ │ │ │ ├── TableColumnMultipleSelectionItemAdapterDelegate.kt │ │ │ │ ├── TableColumnSingleSelectionItemAdapterDelegate.kt │ │ │ │ └── TableSelectionItemAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── TableStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ ├── TableColumnSelectionBottomSheetDialogFragment.kt │ │ │ │ └── TableStepQuizFragment.kt │ │ │ │ ├── mapper │ │ │ │ └── TableSelectionItemMapper.kt │ │ │ │ └── model │ │ │ │ ├── TableChoiceItem.kt │ │ │ │ └── TableSelectionItem.kt │ │ │ ├── step_quiz_text │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ └── TextStepQuizFormDelegate.kt │ │ │ │ ├── fragment │ │ │ │ ├── MarkAsCorrectBottomSheetDialogFragment.kt │ │ │ │ └── TextStepQuizFragment.kt │ │ │ │ └── model │ │ │ │ ├── AIPromptStepQuizConfig.kt │ │ │ │ ├── MathStepQuizConfig.kt │ │ │ │ ├── NumberStepQuizConfig.kt │ │ │ │ ├── PlainTextStepQuizConfig.kt │ │ │ │ ├── TextStepQuizConfig.kt │ │ │ │ └── TextStepQuizConfigFactory.kt │ │ │ ├── step_quiz_unsupported │ │ │ └── view │ │ │ │ └── fragment │ │ │ │ └── UnsupportedStepQuizFragment.kt │ │ │ ├── step_theory │ │ │ └── view │ │ │ │ └── fragment │ │ │ │ └── StepTheoryFragment.kt │ │ │ ├── streak_recovery │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ └── StreakRecoveryViewActionDelegate.kt │ │ │ │ └── fragment │ │ │ │ └── StreakRecoveryDialogFragment.kt │ │ │ ├── study_plan │ │ │ ├── adapter │ │ │ │ ├── ActivityLoadingAdapterDelegate.kt │ │ │ │ ├── StudyPlanActivityAdapterDelegate.kt │ │ │ │ ├── StudyPlanItemAnimator.kt │ │ │ │ └── StudyPlanSectionAdapterDelegate.kt │ │ │ ├── delegate │ │ │ │ ├── LearningActivityTargetViewActionHandler.kt │ │ │ │ └── StudyPlanWidgetDelegate.kt │ │ │ ├── fragment │ │ │ │ └── StudyPlanFragment.kt │ │ │ ├── mapper │ │ │ │ └── StudyPlanWidgetUIStateMapper.kt │ │ │ ├── model │ │ │ │ └── StudyPlanRecyclerItem.kt │ │ │ └── screen │ │ │ │ └── StudyPlanScreen.kt │ │ │ ├── topic_completion │ │ │ ├── delegate │ │ │ │ └── TopicCompletedMediaPlayerDelegate.kt │ │ │ ├── fragment │ │ │ │ └── TopicCompletedDialogFragment.kt │ │ │ └── ui │ │ │ │ ├── TopicCompleted.kt │ │ │ │ ├── TopicCompletedCloseButton.kt │ │ │ │ ├── TopicCompletedDefaults.kt │ │ │ │ ├── TopicCompletedDescription.kt │ │ │ │ ├── TopicCompletedEarnedGemsCount.kt │ │ │ │ ├── TopicCompletedEnterTransition.kt │ │ │ │ ├── TopicCompletedSpaceBotAvatar.kt │ │ │ │ └── TopicCompletedTitle.kt │ │ │ ├── topic_search │ │ │ ├── fragment │ │ │ │ └── TopicSearchFragment.kt │ │ │ ├── navigation │ │ │ │ └── TopicSearchScreen.kt │ │ │ └── ui │ │ │ │ ├── TopicSearchEmptyResult.kt │ │ │ │ ├── TopicSearchResult.kt │ │ │ │ ├── TopicSearchResultContent.kt │ │ │ │ ├── TopicSearchResultDefaults.kt │ │ │ │ └── TopicSearchSkeleton.kt │ │ │ ├── topics_repetitions │ │ │ └── view │ │ │ │ ├── delegate │ │ │ │ ├── TopicsRepetitionCardFormDelegate.kt │ │ │ │ ├── TopicsRepetitionChartCardDelegate.kt │ │ │ │ ├── TopicsRepetitionHeaderDelegate.kt │ │ │ │ └── TopicsRepetitionListDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── TopicsRepetitionFragment.kt │ │ │ │ ├── model │ │ │ │ ├── TopicsRepetitionChartState.kt │ │ │ │ ├── TopicsRepetitionListItem.kt │ │ │ │ └── TopicsRepetitionListState.kt │ │ │ │ ├── screen │ │ │ │ └── TopicsRepetitionScreen.kt │ │ │ │ └── widget │ │ │ │ └── VerticalDashLineView.kt │ │ │ ├── track_selection │ │ │ ├── details │ │ │ │ ├── delegate │ │ │ │ │ └── TrackSelectionDetailsDelegate.kt │ │ │ │ ├── fragment │ │ │ │ │ └── TrackSelectionDetailsFragment.kt │ │ │ │ └── navigation │ │ │ │ │ └── TrackSelectionDetailsScreen.kt │ │ │ └── list │ │ │ │ ├── adapter │ │ │ │ └── TrackAdapterDelegate.kt │ │ │ │ ├── delegate │ │ │ │ └── TrackSelectionListDelegate.kt │ │ │ │ ├── fragment │ │ │ │ └── TrackSelectionListFragment.kt │ │ │ │ ├── model │ │ │ │ └── TrackSelectionRecyclerItem.kt │ │ │ │ └── navigation │ │ │ │ └── TrackSelectionListScreen.kt │ │ │ ├── ui │ │ │ └── custom │ │ │ │ ├── ArrowImageView.kt │ │ │ │ └── LoadingView.kt │ │ │ ├── users_interview_widget │ │ │ ├── delegate │ │ │ │ └── UsersInterviewCardDelegate.kt │ │ │ └── ui │ │ │ │ └── UsersInterviewWidget.kt │ │ │ ├── view │ │ │ └── base │ │ │ │ └── ui │ │ │ │ └── extension │ │ │ │ ├── AppBarExtensions.kt │ │ │ │ ├── CollectWithLifecycle.kt │ │ │ │ ├── ColorExtensions.kt │ │ │ │ ├── SocialNetworksRedirectExtensions.kt │ │ │ │ ├── ThemeExtensions.kt │ │ │ │ ├── TimeIntervalUtil.kt │ │ │ │ └── ViewExtensions.kt │ │ │ ├── welcome │ │ │ ├── fragment │ │ │ │ └── WelcomeFragment.kt │ │ │ └── navigation │ │ │ │ └── WelcomeScreen.kt │ │ │ └── welcome_onbaording │ │ │ ├── entry_point │ │ │ ├── fragment │ │ │ │ └── WelcomeOnboardingEntryPointFragment.kt │ │ │ ├── navigation │ │ │ │ └── WelcomeOnboardingEntryPointScreen.kt │ │ │ └── ui │ │ │ │ └── WelcomeOnboardingEntryPoint.kt │ │ │ ├── finish │ │ │ ├── fragment │ │ │ │ └── WelcomeOnboardingFinishFragment.kt │ │ │ ├── navigation │ │ │ │ └── WelcomeOnboardingFinishScreen.kt │ │ │ └── ui │ │ │ │ └── WelcomeOnboardingFinish.kt │ │ │ ├── language │ │ │ ├── fragment │ │ │ │ └── WelcomeOnboardingChooseProgrammingLanguageFragment.kt │ │ │ ├── navigation │ │ │ │ └── WelcomeOnboardingChooseProgrammingLanguageScreen.kt │ │ │ └── ui │ │ │ │ ├── WelcomeOnboardingChooseProgrammingLanguage.kt │ │ │ │ └── WelcomeOnboardingProgrammingLanguageResources.kt │ │ │ ├── questionnaire │ │ │ ├── fragment │ │ │ │ └── WelcomeQuestionnaireFragment.kt │ │ │ ├── navigation │ │ │ │ └── WelcomeQuestionnaireScreen.kt │ │ │ └── ui │ │ │ │ ├── WelcomeQuestionnaire.kt │ │ │ │ ├── WelcomeQuestionnaireItem.kt │ │ │ │ └── WelcomeQuestionnaireItemIcon.kt │ │ │ ├── root │ │ │ ├── fragment │ │ │ │ ├── WelcomeOnboardingFragment.kt │ │ │ │ └── WelcomeOnboardingTransactionInterceptor.kt │ │ │ ├── model │ │ │ │ ├── WelcomeOnboardingCompleteResult.kt │ │ │ │ └── WelcomeOnboardingHost.kt │ │ │ ├── navigation │ │ │ │ └── WelcomeOnboardingScreen.kt │ │ │ └── ui │ │ │ │ └── WelcomeOnboardingDefault.kt │ │ │ └── track │ │ │ ├── fragment │ │ │ └── WelcomeOnboardingTrackDetailsFragment.kt │ │ │ ├── navigation │ │ │ └── WelcomeOnboardingTrackDetailsScreen.kt │ │ │ └── ui │ │ │ ├── WelcomeOnboardingTrackCard.kt │ │ │ ├── WelcomeOnboardingTrackDetails.kt │ │ │ ├── WelcomeOnboardingTrackDetailsDefaults.kt │ │ │ ├── WelcomeOnboardingTrackDetailsPreviewData.kt │ │ │ └── WelcomeOnboardingTrackImage.kt │ └── res │ │ ├── anim │ │ ├── fade_out.xml │ │ ├── navigation_fade_out.xml │ │ ├── navigation_slide_in.xml │ │ ├── slide_in.xml │ │ ├── slide_in_from_bottom.xml │ │ └── slide_out_to_bottom.xml │ │ ├── animator │ │ ├── arrow_bottom_to_top.xml │ │ └── arrow_top_to_bottom.xml │ │ ├── color │ │ ├── color_step_quiz_parsons_control_content.xml │ │ ├── color_step_quiz_parsons_control_stroke.xml │ │ └── color_step_quiz_sorting_stroke.xml │ │ ├── drawable-hdpi │ │ ├── badge_locked_benefactor.webp │ │ ├── badge_locked_bounty_hunter.webp │ │ ├── badge_locked_brilliant_mind.webp │ │ ├── badge_locked_comitted_learning.webp │ │ ├── badge_locked_helping_hand.webp │ │ ├── badge_locked_project_mastery.webp │ │ ├── badge_locked_sweet_heart.webp │ │ ├── badge_locked_topic_mastery.webp │ │ ├── badge_placeholder.webp │ │ ├── bg_hexogens_static.webp │ │ ├── bg_hexogens_static_solved.webp │ │ ├── ic_branded_logo_splash.webp │ │ ├── ic_buy_streak_freeze_enough.webp │ │ ├── ic_buy_streak_freeze_not_enough.webp │ │ ├── ic_complete_daily_step.webp │ │ ├── ic_notifiaction_small.xml │ │ ├── ic_stage_ide_required.webp │ │ ├── ic_subtitle.webp │ │ ├── img_badge_details_benefactor.webp │ │ ├── img_badge_details_bounty_hunter.webp │ │ ├── img_badge_details_brilliant_mind.webp │ │ ├── img_badge_details_committed_learner.webp │ │ ├── img_badge_details_helping_hand.webp │ │ ├── img_badge_details_project_master.webp │ │ ├── img_badge_details_sweetheart.webp │ │ ├── img_badge_details_topic_master.webp │ │ ├── img_challenge_announcment.webp │ │ ├── img_challenge_completed.webp │ │ ├── img_challenge_not_completed.webp │ │ ├── img_challenge_partly_completed.webp │ │ ├── img_challenge_progress.webp │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ ├── img_first_problem_onboarding_new_user.webp │ │ ├── img_leaderboard_stub.webp │ │ ├── img_notifications_onboarding.webp │ │ ├── img_onboarding_choose_track_java.webp │ │ ├── img_onboarding_choose_track_js.webp │ │ ├── img_onboarding_choose_track_kotlin.webp │ │ ├── img_onboarding_choose_track_python.webp │ │ ├── img_onboarding_choose_track_sql.webp │ │ ├── img_paywall.webp │ │ ├── img_project_completed.webp │ │ ├── img_reload.webp │ │ ├── img_stage_completed.webp │ │ ├── img_streak_recovery.webp │ │ ├── img_study_plan_paywall.webp │ │ ├── img_user_interview_inv.webp │ │ ├── img_welcome_onboarding_entry_point.webp │ │ ├── img_welcome_onboarding_finish.webp │ │ ├── img_welcome_screen.webp │ │ └── problems_limit_reached.webp │ │ ├── drawable-mdpi │ │ ├── badge_locked_benefactor.webp │ │ ├── badge_locked_bounty_hunter.webp │ │ ├── badge_locked_brilliant_mind.webp │ │ ├── badge_locked_comitted_learning.webp │ │ ├── badge_locked_helping_hand.webp │ │ ├── badge_locked_project_mastery.webp │ │ ├── badge_locked_sweet_heart.webp │ │ ├── badge_locked_topic_mastery.webp │ │ ├── badge_placeholder.webp │ │ ├── bg_hexogens_static.webp │ │ ├── bg_hexogens_static_solved.webp │ │ ├── ic_branded_logo_splash.webp │ │ ├── ic_buy_streak_freeze_enough.webp │ │ ├── ic_buy_streak_freeze_not_enough.webp │ │ ├── ic_complete_daily_step.webp │ │ ├── ic_notifiaction_small.xml │ │ ├── ic_stage_ide_required.webp │ │ ├── ic_subtitle.webp │ │ ├── img_badge_details_benefactor.webp │ │ ├── img_badge_details_bounty_hunter.webp │ │ ├── img_badge_details_brilliant_mind.webp │ │ ├── img_badge_details_committed_learner.webp │ │ ├── img_badge_details_helping_hand.webp │ │ ├── img_badge_details_project_master.webp │ │ ├── img_badge_details_sweetheart.webp │ │ ├── img_badge_details_topic_master.webp │ │ ├── img_challenge_announcment.webp │ │ ├── img_challenge_completed.webp │ │ ├── img_challenge_not_completed.webp │ │ ├── img_challenge_partly_completed.webp │ │ ├── img_challenge_progress.webp │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ ├── img_first_problem_onboarding_new_user.webp │ │ ├── img_leaderboard_stub.webp │ │ ├── img_notifications_onboarding.webp │ │ ├── img_onboarding_choose_track_java.webp │ │ ├── img_onboarding_choose_track_js.webp │ │ ├── img_onboarding_choose_track_kotlin.webp │ │ ├── img_onboarding_choose_track_python.webp │ │ ├── img_onboarding_choose_track_sql.webp │ │ ├── img_paywall.webp │ │ ├── img_project_completed.webp │ │ ├── img_reload.webp │ │ ├── img_stage_completed.webp │ │ ├── img_streak_recovery.webp │ │ ├── img_study_plan_paywall.webp │ │ ├── img_user_interview_inv.webp │ │ ├── img_welcome_onboarding_entry_point.webp │ │ ├── img_welcome_onboarding_finish.webp │ │ ├── img_welcome_screen.webp │ │ └── problems_limit_reached.webp │ │ ├── drawable-night-hdpi │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ └── img_first_problem_onboarding_new_user.webp │ │ ├── drawable-night-mdpi │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ └── img_first_problem_onboarding_new_user.webp │ │ ├── drawable-night-xhdpi │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ └── img_first_problem_onboarding_new_user.webp │ │ ├── drawable-night-xxhdpi │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ └── img_first_problem_onboarding_new_user.webp │ │ ├── drawable-night-xxxhdpi │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ └── img_first_problem_onboarding_new_user.webp │ │ ├── drawable-night │ │ ├── branded_logo_splash.xml │ │ ├── ic_disabled_streak.xml │ │ ├── ic_frozen_streak.webp │ │ ├── ic_menu_empty_streak.xml │ │ ├── ic_profile_projects.xml │ │ ├── ic_profile_tracks.xml │ │ ├── ic_section_time_to_complete.xml │ │ ├── ic_section_topics_count.xml │ │ ├── ic_settings.xml │ │ ├── ic_topics_repetition_explanation.xml │ │ ├── ic_welcome_questionnaire_tiktok.xml │ │ └── onboarding_problem_of_the_day_pic.xml │ │ ├── drawable-w380dp-night │ │ └── onboarding_problem_of_the_day_pic.xml │ │ ├── drawable-w380dp │ │ └── onboarding_problem_of_the_day_pic.xml │ │ ├── drawable-xhdpi │ │ ├── badge_locked_benefactor.webp │ │ ├── badge_locked_bounty_hunter.webp │ │ ├── badge_locked_brilliant_mind.webp │ │ ├── badge_locked_comitted_learning.webp │ │ ├── badge_locked_helping_hand.webp │ │ ├── badge_locked_project_mastery.webp │ │ ├── badge_locked_sweet_heart.webp │ │ ├── badge_locked_topic_mastery.webp │ │ ├── badge_placeholder.webp │ │ ├── bg_hexogens_static.webp │ │ ├── bg_hexogens_static_solved.webp │ │ ├── ic_branded_logo_splash.webp │ │ ├── ic_buy_streak_freeze_enough.webp │ │ ├── ic_buy_streak_freeze_not_enough.webp │ │ ├── ic_complete_daily_step.webp │ │ ├── ic_notifiaction_small.xml │ │ ├── ic_stage_ide_required.webp │ │ ├── ic_subtitle.webp │ │ ├── img_badge_details_benefactor.webp │ │ ├── img_badge_details_bounty_hunter.webp │ │ ├── img_badge_details_brilliant_mind.webp │ │ ├── img_badge_details_committed_learner.webp │ │ ├── img_badge_details_helping_hand.webp │ │ ├── img_badge_details_project_master.webp │ │ ├── img_badge_details_sweetheart.webp │ │ ├── img_badge_details_topic_master.webp │ │ ├── img_challenge_announcment.webp │ │ ├── img_challenge_completed.webp │ │ ├── img_challenge_not_completed.webp │ │ ├── img_challenge_partly_completed.webp │ │ ├── img_challenge_progress.webp │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ ├── img_first_problem_onboarding_new_user.webp │ │ ├── img_leaderboard_stub.webp │ │ ├── img_notifications_onboarding.webp │ │ ├── img_onboarding_choose_track_java.webp │ │ ├── img_onboarding_choose_track_js.webp │ │ ├── img_onboarding_choose_track_kotlin.webp │ │ ├── img_onboarding_choose_track_python.webp │ │ ├── img_onboarding_choose_track_sql.webp │ │ ├── img_paywall.webp │ │ ├── img_project_completed.webp │ │ ├── img_reload.webp │ │ ├── img_stage_completed.webp │ │ ├── img_streak_recovery.webp │ │ ├── img_study_plan_paywall.webp │ │ ├── img_user_interview_inv.webp │ │ ├── img_welcome_onboarding_entry_point.webp │ │ ├── img_welcome_onboarding_finish.webp │ │ ├── img_welcome_screen.webp │ │ └── problems_limit_reached.webp │ │ ├── drawable-xxhdpi │ │ ├── badge_locked_benefactor.webp │ │ ├── badge_locked_bounty_hunter.webp │ │ ├── badge_locked_brilliant_mind.webp │ │ ├── badge_locked_comitted_learning.webp │ │ ├── badge_locked_helping_hand.webp │ │ ├── badge_locked_project_mastery.webp │ │ ├── badge_locked_sweet_heart.webp │ │ ├── badge_locked_topic_mastery.webp │ │ ├── badge_placeholder.webp │ │ ├── bg_hexogens_static.webp │ │ ├── bg_hexogens_static_solved.webp │ │ ├── ic_branded_logo_splash.webp │ │ ├── ic_buy_streak_freeze_enough.webp │ │ ├── ic_buy_streak_freeze_not_enough.webp │ │ ├── ic_complete_daily_step.webp │ │ ├── ic_notifiaction_small.xml │ │ ├── ic_stage_ide_required.webp │ │ ├── ic_subtitle.webp │ │ ├── img_badge_details_benefactor.webp │ │ ├── img_badge_details_bounty_hunter.webp │ │ ├── img_badge_details_brilliant_mind.webp │ │ ├── img_badge_details_committed_learner.webp │ │ ├── img_badge_details_helping_hand.webp │ │ ├── img_badge_details_project_master.webp │ │ ├── img_badge_details_sweetheart.webp │ │ ├── img_badge_details_topic_master.webp │ │ ├── img_challenge_announcment.webp │ │ ├── img_challenge_completed.webp │ │ ├── img_challenge_not_completed.webp │ │ ├── img_challenge_partly_completed.webp │ │ ├── img_challenge_progress.webp │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ ├── img_first_problem_onboarding_new_user.webp │ │ ├── img_leaderboard_stub.webp │ │ ├── img_notifications_onboarding.webp │ │ ├── img_onboarding_choose_track_java.webp │ │ ├── img_onboarding_choose_track_js.webp │ │ ├── img_onboarding_choose_track_kotlin.webp │ │ ├── img_onboarding_choose_track_python.webp │ │ ├── img_onboarding_choose_track_sql.webp │ │ ├── img_paywall.webp │ │ ├── img_project_completed.webp │ │ ├── img_reload.webp │ │ ├── img_stage_completed.webp │ │ ├── img_streak_recovery.webp │ │ ├── img_study_plan_paywall.webp │ │ ├── img_user_interview_inv.webp │ │ ├── img_welcome_onboarding_entry_point.webp │ │ ├── img_welcome_onboarding_finish.webp │ │ ├── img_welcome_screen.webp │ │ └── problems_limit_reached.webp │ │ ├── drawable-xxxhdpi │ │ ├── badge_locked_benefactor.webp │ │ ├── badge_locked_bounty_hunter.webp │ │ ├── badge_locked_brilliant_mind.webp │ │ ├── badge_locked_comitted_learning.webp │ │ ├── badge_locked_helping_hand.webp │ │ ├── badge_locked_project_mastery.webp │ │ ├── badge_locked_sweet_heart.webp │ │ ├── badge_locked_topic_mastery.webp │ │ ├── badge_placeholder.webp │ │ ├── bg_hexogens_static.webp │ │ ├── bg_hexogens_static_solved.webp │ │ ├── ic_branded_logo_splash.webp │ │ ├── ic_buy_streak_freeze_enough.webp │ │ ├── ic_buy_streak_freeze_not_enough.webp │ │ ├── ic_complete_daily_step.webp │ │ ├── ic_notifiaction_small.xml │ │ ├── ic_stage_ide_required.webp │ │ ├── ic_subtitle.webp │ │ ├── img_badge_details_benefactor.webp │ │ ├── img_badge_details_bounty_hunter.webp │ │ ├── img_badge_details_brilliant_mind.webp │ │ ├── img_badge_details_committed_learner.webp │ │ ├── img_badge_details_helping_hand.webp │ │ ├── img_badge_details_project_master.webp │ │ ├── img_badge_details_sweetheart.webp │ │ ├── img_badge_details_topic_master.webp │ │ ├── img_challenge_announcment.webp │ │ ├── img_challenge_completed.webp │ │ ├── img_challenge_not_completed.webp │ │ ├── img_challenge_partly_completed.webp │ │ ├── img_challenge_progress.webp │ │ ├── img_first_problem_onboarding_experienced_user.webp │ │ ├── img_first_problem_onboarding_new_user.webp │ │ ├── img_leaderboard_stub.webp │ │ ├── img_notifications_onboarding.webp │ │ ├── img_onboarding_choose_track_java.webp │ │ ├── img_onboarding_choose_track_js.webp │ │ ├── img_onboarding_choose_track_kotlin.webp │ │ ├── img_onboarding_choose_track_python.webp │ │ ├── img_onboarding_choose_track_sql.webp │ │ ├── img_paywall.webp │ │ ├── img_project_completed.webp │ │ ├── img_reload.webp │ │ ├── img_stage_completed.webp │ │ ├── img_streak_recovery.webp │ │ ├── img_study_plan_paywall.webp │ │ ├── img_user_interview_inv.webp │ │ ├── img_welcome_onboarding_entry_point.webp │ │ ├── img_welcome_onboarding_finish.webp │ │ ├── img_welcome_screen.webp │ │ └── problems_limit_reached.webp │ │ ├── drawable │ │ ├── avatar_place_holder.webp │ │ ├── avd_arrow_bottom_to_top.xml │ │ ├── avd_arrow_top_to_bottom.xml │ │ ├── bg_bottom_sheet_dialog.xml │ │ ├── bg_completed_lable.xml │ │ ├── bg_divider_vertical.xml │ │ ├── bg_gradient_blue.xml │ │ ├── bg_gradient_splash.xml │ │ ├── bg_gradient_yellow_green.xml │ │ ├── bg_next_topic.xml │ │ ├── bg_shape_logo_rectangle.xml │ │ ├── bg_shape_rounded.xml │ │ ├── bg_shape_rounded_bottom.xml │ │ ├── bg_shape_rounded_top.xml │ │ ├── bg_step_quiz_feedback_wrong.xml │ │ ├── bg_step_quiz_fill_blanks_input_item.xml │ │ ├── bg_step_quiz_fill_blanks_input_text_field.xml │ │ ├── bg_step_quiz_fill_blanks_item_vertical_divider.xml │ │ ├── bg_step_quiz_fill_blanks_options_horizontal_divider.xml │ │ ├── bg_step_quiz_fill_blanks_options_vertical_divider.xml │ │ ├── bg_step_quiz_fill_blanks_select_item.xml │ │ ├── bg_study_plan_current_badge.xml │ │ ├── bg_tag_blue.xml │ │ ├── bg_tag_green.xml │ │ ├── bg_tag_orange.xml │ │ ├── bg_tag_violet.xml │ │ ├── bg_topics_repetition_chart.xml │ │ ├── bg_topics_to_repeat.xml │ │ ├── bg_track_progress.xml │ │ ├── branded_logo.xml │ │ ├── branded_logo_splash.xml │ │ ├── ic_activity_locked.xml │ │ ├── ic_app_icon_background.xml │ │ ├── ic_app_icon_foreground.xml │ │ ├── ic_arrow_bottom.xml │ │ ├── ic_arrow_right.xml │ │ ├── ic_arrow_top.xml │ │ ├── ic_badge_details_locked.xml │ │ ├── ic_badge_locked.xml │ │ ├── ic_bottom_sheet_swipe_indicator.xml │ │ ├── ic_buy_streak_freeze.xml │ │ ├── ic_change_track.xml │ │ ├── ic_checkmark.xml │ │ ├── ic_chevron_forward.xml │ │ ├── ic_close.xml │ │ ├── ic_close_thin.xml │ │ ├── ic_close_topic_completed.xml │ │ ├── ic_crown.xml │ │ ├── ic_debug.xml │ │ ├── ic_disabled_streak.xml │ │ ├── ic_discussion.xml │ │ ├── ic_edit.xml │ │ ├── ic_enabled_streak.xml │ │ ├── ic_expand_code_editor.xml │ │ ├── ic_frozen_streak.webp │ │ ├── ic_gembox.xml │ │ ├── ic_gems_count.xml │ │ ├── ic_gems_not_enough.xml │ │ ├── ic_github_logo.xml │ │ ├── ic_google_logo.xml │ │ ├── ic_graduate_project.xml │ │ ├── ic_grip.xml │ │ ├── ic_hammer.xml │ │ ├── ic_hints_helpful.xml │ │ ├── ic_hints_useless.xml │ │ ├── ic_home_screen_arrow_button.xml │ │ ├── ic_home_screen_right_arrow_dark.xml │ │ ├── ic_home_screen_right_arrow_light.xml │ │ ├── ic_home_screen_success_arrow_button.xml │ │ ├── ic_hyperskill_logo.xml │ │ ├── ic_info_outline_24px.xml │ │ ├── ic_jetbrains_logo.xml │ │ ├── ic_leaderboard_first_place.xml │ │ ├── ic_leaderboard_second_place.xml │ │ ├── ic_leaderboard_third_place.xml │ │ ├── ic_level_challenging.xml │ │ ├── ic_level_easy.xml │ │ ├── ic_level_hard.xml │ │ ├── ic_level_medium.xml │ │ ├── ic_lightning.xml │ │ ├── ic_limits.xml │ │ ├── ic_menu_empty_streak.xml │ │ ├── ic_menu_enabled_streak.xml │ │ ├── ic_menu_gems_count.xml │ │ ├── ic_menu_problems_limit.xml │ │ ├── ic_menu_recovered_streak.xml │ │ ├── ic_menu_search.xml │ │ ├── ic_missed_challenge_day.xml │ │ ├── ic_navigation_close.xml │ │ ├── ic_navigation_home.xml │ │ ├── ic_navigation_leaderboard.xml │ │ ├── ic_navigation_profile.xml │ │ ├── ic_navigation_study_plan.xml │ │ ├── ic_navigation_track.xml │ │ ├── ic_navigation_training.xml │ │ ├── ic_no_wifi.xml │ │ ├── ic_notification_onboarding_arrow.xml │ │ ├── ic_parsons_add_tab.xml │ │ ├── ic_parsons_drop_down_line.xml │ │ ├── ic_parsons_put_up_line.xml │ │ ├── ic_parsons_raise_up_line.xml │ │ ├── ic_parsons_remove_tab.xml │ │ ├── ic_paywall_option.xml │ │ ├── ic_profile_facebook.xml │ │ ├── ic_profile_github.xml │ │ ├── ic_profile_linkedin.xml │ │ ├── ic_profile_projects.xml │ │ ├── ic_profile_reddit.xml │ │ ├── ic_profile_tracks.xml │ │ ├── ic_profile_twitter.xml │ │ ├── ic_project_details_challenging.xml │ │ ├── ic_project_details_graduate.xml │ │ ├── ic_project_details_hard.xml │ │ ├── ic_project_details_level_easy.xml │ │ ├── ic_project_details_medium.xml │ │ ├── ic_project_graduate.xml │ │ ├── ic_question_mark.xml │ │ ├── ic_reaction_clapping.xml │ │ ├── ic_reaction_confused.xml │ │ ├── ic_reaction_downvote.xml │ │ ├── ic_reaction_fire.xml │ │ ├── ic_reaction_show_more.xml │ │ ├── ic_reaction_smile.xml │ │ ├── ic_reaction_thinking.xml │ │ ├── ic_reaction_upvote.xml │ │ ├── ic_recovered_streak.xml │ │ ├── ic_retry.xml │ │ ├── ic_run.xml │ │ ├── ic_section_arrow_bottom.xml │ │ ├── ic_section_arrow_top.xml │ │ ├── ic_section_time_to_complete.xml │ │ ├── ic_section_topics_count.xml │ │ ├── ic_settings.xml │ │ ├── ic_sorting_down.xml │ │ ├── ic_sorting_up.xml │ │ ├── ic_splash_icon.xml │ │ ├── ic_splash_icon_blue.xml │ │ ├── ic_splash_icon_inset.xml │ │ ├── ic_splash_subtitle.xml │ │ ├── ic_star.xml │ │ ├── ic_step_menu_comments.xml │ │ ├── ic_step_quiz_evaluation_frame_1.xml │ │ ├── ic_step_quiz_evaluation_frame_2.xml │ │ ├── ic_step_quiz_evaluation_frame_3.xml │ │ ├── ic_step_quiz_feedback_wrong.xml │ │ ├── ic_step_theory_feedback.xml │ │ ├── ic_streak.xml │ │ ├── ic_study_plan_expand_all.xml │ │ ├── ic_table_arrow.xml │ │ ├── ic_task_day.xml │ │ ├── ic_theory.xml │ │ ├── ic_time.xml │ │ ├── ic_toolbar_back.xml │ │ ├── ic_topic.xml │ │ ├── ic_topic_completed.xml │ │ ├── ic_topic_completed_gems.xml │ │ ├── ic_topic_skipped.xml │ │ ├── ic_topics_repetition_explanation.xml │ │ ├── ic_track_about_book.xml │ │ ├── ic_track_about_project.xml │ │ ├── ic_track_about_time.xml │ │ ├── ic_track_overview_certificate_availability.xml │ │ ├── ic_track_overview_projects_count.xml │ │ ├── ic_track_overview_rating.xml │ │ ├── ic_track_overview_time_to_complete.xml │ │ ├── ic_track_overview_topics_count.xml │ │ ├── ic_track_progress_core_topics.xml │ │ ├── ic_track_progress_graduate_projects.xml │ │ ├── ic_track_progress_time.xml │ │ ├── ic_track_progress_topics.xml │ │ ├── ic_track_selection_list_header.xml │ │ ├── ic_track_time.xml │ │ ├── ic_user_interview_close.xml │ │ ├── ic_welcome_onboarding_lang_java.xml │ │ ├── ic_welcome_onboarding_lang_js.xml │ │ ├── ic_welcome_onboarding_lang_kotlin.xml │ │ ├── ic_welcome_onboarding_lang_python.xml │ │ ├── ic_welcome_onboarding_lang_sql.xml │ │ ├── ic_welcome_questionnaire_basic_experience.xml │ │ ├── ic_welcome_questionnaire_change_stack.xml │ │ ├── ic_welcome_questionnaire_current_job.xml │ │ ├── ic_welcome_questionnaire_facebook.xml │ │ ├── ic_welcome_questionnaire_friends.xml │ │ ├── ic_welcome_questionnaire_fun.xml │ │ ├── ic_welcome_questionnaire_google.xml │ │ ├── ic_welcome_questionnaire_medium_experience.xml │ │ ├── ic_welcome_questionnaire_news.xml │ │ ├── ic_welcome_questionnaire_no_experience.xml │ │ ├── ic_welcome_questionnaire_other.xml │ │ ├── ic_welcome_questionnaire_other_learning_goal.xml │ │ ├── ic_welcome_questionnaire_play_store.xml │ │ ├── ic_welcome_questionnaire_pro.xml │ │ ├── ic_welcome_questionnaire_start_career.xml │ │ ├── ic_welcome_questionnaire_studies.xml │ │ ├── ic_welcome_questionnaire_tiktok.xml │ │ ├── ic_welcome_questionnaire_youtube.xml │ │ ├── img_share_streak_day_10.png │ │ ├── img_share_streak_day_100.png │ │ ├── img_share_streak_day_25.png │ │ ├── img_share_streak_day_5.png │ │ ├── img_share_streak_day_50.png │ │ ├── leaderboard_participant_avatar_place_holder.xml │ │ ├── onboarding_problem_of_the_day_pic.xml │ │ ├── selectable_item_rounded_background.xml │ │ ├── step_quiz_parsons_line_background.xml │ │ ├── step_quiz_parsons_line_selected_background.xml │ │ ├── topic_completion_spacebot_1.webp │ │ ├── topic_completion_spacebot_10.webp │ │ ├── topic_completion_spacebot_11.webp │ │ ├── topic_completion_spacebot_12.webp │ │ ├── topic_completion_spacebot_13.webp │ │ ├── topic_completion_spacebot_14.webp │ │ ├── topic_completion_spacebot_15.webp │ │ ├── topic_completion_spacebot_16.webp │ │ ├── topic_completion_spacebot_17.webp │ │ ├── topic_completion_spacebot_18.webp │ │ ├── topic_completion_spacebot_19.webp │ │ ├── topic_completion_spacebot_2.webp │ │ ├── topic_completion_spacebot_20.webp │ │ ├── topic_completion_spacebot_3.webp │ │ ├── topic_completion_spacebot_4.webp │ │ ├── topic_completion_spacebot_5.webp │ │ ├── topic_completion_spacebot_6.webp │ │ ├── topic_completion_spacebot_7.webp │ │ ├── topic_completion_spacebot_8.webp │ │ └── topic_completion_spacebot_9.webp │ │ ├── font │ │ ├── menlo.xml │ │ ├── menlo_regular.ttf │ │ ├── pt_mono.ttf │ │ ├── roboto.xml │ │ ├── roboto_bold.ttf │ │ ├── roboto_bolditalic.ttf │ │ ├── roboto_italic.ttf │ │ ├── roboto_light.ttf │ │ ├── roboto_medium.ttf │ │ └── roboto_regular.ttf │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── bottom_sheet_dialog_table_columns_selection.xml │ │ ├── dialog_in_app_web_view.xml │ │ ├── dialog_magic_link_progress.xml │ │ ├── dialog_progress.xml │ │ ├── dialog_step_quiz_code_fullscreen.xml │ │ ├── error_no_connection_with_button.xml │ │ ├── fragment_auth_email.xml │ │ ├── fragment_auth_social.xml │ │ ├── fragment_auth_social_web_view.xml │ │ ├── fragment_badge_details.xml │ │ ├── fragment_badge_earned.xml │ │ ├── fragment_completed_daily_step.xml │ │ ├── fragment_debug.xml │ │ ├── fragment_fill_blanks_input.xml │ │ ├── fragment_home.xml │ │ ├── fragment_leaderboard.xml │ │ ├── fragment_main.xml │ │ ├── fragment_mark_text_step_as_correct.xml │ │ ├── fragment_problems_limit_info.xml │ │ ├── fragment_profile.xml │ │ ├── fragment_profile_settings.xml │ │ ├── fragment_project_completed.xml │ │ ├── fragment_project_selection_details.xml │ │ ├── fragment_project_selection_list.xml │ │ ├── fragment_search_topic.xml │ │ ├── fragment_share_streak.xml │ │ ├── fragment_stage_completed.xml │ │ ├── fragment_stage_implementation.xml │ │ ├── fragment_stage_step_wrapper.xml │ │ ├── fragment_step.xml │ │ ├── fragment_step_practice.xml │ │ ├── fragment_step_practice_description.xml │ │ ├── fragment_step_quiz.xml │ │ ├── fragment_step_quiz_problem_onboarding.xml │ │ ├── fragment_step_quiz_unsupported.xml │ │ ├── fragment_step_theory.xml │ │ ├── fragment_step_wrapper.xml │ │ ├── fragment_streak_freeze.xml │ │ ├── fragment_streak_recovery.xml │ │ ├── fragment_study_plan.xml │ │ ├── fragment_topic_completed.xml │ │ ├── fragment_topics_repetition.xml │ │ ├── fragment_track_selection_details.xml │ │ ├── fragment_track_selection_list.xml │ │ ├── fragment_unsupported_stage.xml │ │ ├── fragment_welcome.xml │ │ ├── item_auth_material_card_view.xml │ │ ├── item_button_skeleton.xml │ │ ├── item_choice_skeleton.xml │ │ ├── item_compound_selection_checkbox.xml │ │ ├── item_compound_selection_radiobutton.xml │ │ ├── item_project.xml │ │ ├── item_project_block_header.xml │ │ ├── item_project_selection_header.xml │ │ ├── item_step_quiz_code_detail_sample.xml │ │ ├── item_step_quiz_fill_blanks_input.xml │ │ ├── item_step_quiz_fill_blanks_select.xml │ │ ├── item_step_quiz_fill_blanks_select_option.xml │ │ ├── item_step_quiz_fill_blanks_text.xml │ │ ├── item_step_quiz_multiple_choice.xml │ │ ├── item_step_quiz_parsons_line.xml │ │ ├── item_step_quiz_single_choice.xml │ │ ├── item_step_quiz_sorting.xml │ │ ├── item_step_theory_rating.xml │ │ ├── item_streak.xml │ │ ├── item_study_plan_activities_loading.xml │ │ ├── item_study_plan_activity.xml │ │ ├── item_study_plan_expand_completed_button.xml │ │ ├── item_study_plan_load_more_button.xml │ │ ├── item_study_plan_paywall.xml │ │ ├── item_study_plan_section.xml │ │ ├── item_study_plan_section_loading.xml │ │ ├── item_table_selection.xml │ │ ├── item_topic_to_repeat.xml │ │ ├── item_topics_list_placeholder.xml │ │ ├── item_topics_to_repeat_header.xml │ │ ├── item_topics_to_repeat_skeleton.xml │ │ ├── item_track.xml │ │ ├── item_track_selection_list_header.xml │ │ ├── item_track_skeleton.xml │ │ ├── item_user.xml │ │ ├── layout_code_editor_test.xml │ │ ├── layout_embedded_code_editor.xml │ │ ├── layout_fill_blanks_skeleton.xml │ │ ├── layout_gamification_toolbar.xml │ │ ├── layout_home_skeleton.xml │ │ ├── layout_latex_textview.xml │ │ ├── layout_latex_webview.xml │ │ ├── layout_learn_next_topic_badge.xml │ │ ├── layout_problem_of_the_day_card.xml │ │ ├── layout_profile_daily_reminder.xml │ │ ├── layout_profile_header.xml │ │ ├── layout_profile_personal_info.xml │ │ ├── layout_profile_skeleton.xml │ │ ├── layout_profile_statistics.xml │ │ ├── layout_profile_streak_card.xml │ │ ├── layout_project_details_provider_card.xml │ │ ├── layout_project_selection_details_description.xml │ │ ├── layout_project_selection_details_project_overview.xml │ │ ├── layout_quiz_buttons.xml │ │ ├── layout_step_hint_action_button.xml │ │ ├── layout_step_quiz_choice.xml │ │ ├── layout_step_quiz_choice_skeleton.xml │ │ ├── layout_step_quiz_code.xml │ │ ├── layout_step_quiz_code_details.xml │ │ ├── layout_step_quiz_code_fullscreen_instruction.xml │ │ ├── layout_step_quiz_code_fullscreen_playground.xml │ │ ├── layout_step_quiz_code_keyboard_extension.xml │ │ ├── layout_step_quiz_code_skeleton.xml │ │ ├── layout_step_quiz_description.xml │ │ ├── layout_step_quiz_feedback_block.xml │ │ ├── layout_step_quiz_fill_blanks.xml │ │ ├── layout_step_quiz_hint_card.xml │ │ ├── layout_step_quiz_hints.xml │ │ ├── layout_step_quiz_matching.xml │ │ ├── layout_step_quiz_parsons.xml │ │ ├── layout_step_quiz_parsons_content.xml │ │ ├── layout_step_quiz_parsons_skeleton.xml │ │ ├── layout_step_quiz_sorting.xml │ │ ├── layout_step_quiz_sorting_skeleton.xml │ │ ├── layout_step_quiz_sql.xml │ │ ├── layout_step_quiz_table.xml │ │ ├── layout_step_quiz_table_skeleton.xml │ │ ├── layout_step_quiz_table_skeleton_item.xml │ │ ├── layout_step_quiz_text.xml │ │ ├── layout_step_quiz_text_skeleton.xml │ │ ├── layout_topics_repetition_card.xml │ │ ├── layout_topics_repetition_chart.xml │ │ ├── layout_topics_repetition_footer.xml │ │ ├── layout_topics_repetition_header.xml │ │ ├── layout_topics_repetition_skeleton.xml │ │ ├── layout_topics_repetition_topics_list.xml │ │ ├── layout_track_selection_details_description.xml │ │ ├── layout_track_selection_details_providers_card.xml │ │ ├── layout_track_selection_details_skeleton.xml │ │ ├── layout_track_selection_details_track_overview.xml │ │ ├── progress_bar_on_empty_screen.xml │ │ ├── step_text_header.xml │ │ ├── view_badge_best_rating.xml │ │ ├── view_badge_beta.xml │ │ ├── view_badge_completed.xml │ │ ├── view_badge_fastest_to_complete.xml │ │ ├── view_badge_ide_required.xml │ │ ├── view_badge_selected.xml │ │ ├── view_centered_appbar.xml │ │ ├── view_centered_toolbar.xml │ │ ├── view_code_editor.xml │ │ ├── view_code_toolbar_item.xml │ │ ├── view_code_toolbar_separator.xml │ │ ├── view_divider_vertical.xml │ │ ├── view_main_splash.xml │ │ ├── view_profile_settings_content.xml │ │ ├── view_project_selection_skeleton.xml │ │ ├── view_stage_implementation_appbar.xml │ │ ├── view_step_appbar.xml │ │ ├── view_step_quiz_theory_button.xml │ │ ├── view_step_quiz_toolbar.xml │ │ ├── view_step_theory_action.xml │ │ ├── view_step_theory_feedback.xml │ │ ├── view_step_toolbar.xml │ │ └── widget_data_loading_error.xml │ │ ├── menu │ │ ├── code_playground_menu.xml │ │ ├── main_bottom_navigation.xml │ │ ├── stage_menu.xml │ │ ├── step_menu.xml │ │ └── step_quiz_appbar_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_app_icon.xml │ │ └── ic_app_icon_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_app_icon.png │ │ └── ic_app_icon_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_app_icon.png │ │ └── ic_app_icon_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_app_icon.png │ │ └── ic_app_icon_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_app_icon.png │ │ └── ic_app_icon_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_app_icon.png │ │ └── ic_app_icon_round.png │ │ ├── raw-mdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw-night-mdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw-night-xhdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw-night-xxxhdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw-night │ │ ├── parsons_problem_onboarding_animation.zip │ │ ├── problems_limit_full_limits_animation.zip │ │ ├── problems_limit_no_limits_left_animation.zip │ │ └── problems_limit_partially_spent_limits_animation.zip │ │ ├── raw-xhdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw-xxxhdpi │ │ ├── topic_completion_bg_1.mp4 │ │ └── topic_completion_bg_2.mp4 │ │ ├── raw │ │ ├── parsons_problem_onboarding_animation.zip │ │ ├── problems_limit_full_limits_animation.zip │ │ ├── problems_limit_no_limits_left_animation.zip │ │ └── problems_limit_partially_spent_limits_animation.zip │ │ ├── values-night-v31 │ │ ├── bool.xml │ │ └── themes.xml │ │ ├── values-sw600dp │ │ └── bools.xml │ │ ├── values-v31 │ │ └── themes.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── autocomplete_words.xml │ │ ├── bools.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── frequent_symbols.xml │ │ ├── github_code_theme.xml │ │ ├── ids.xml │ │ ├── integers.xml │ │ ├── light_code_theme.xml │ │ ├── loading_view_dimens.xml │ │ ├── shape.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ ├── themes.xml │ │ ├── tomorrow_night_code_theme.xml │ │ ├── tranquil_heart_code_theme.xml │ │ └── type.xml │ │ └── xml │ │ ├── network_security_config.xml │ │ └── provider_paths.xml │ ├── release │ └── java │ │ └── org │ │ └── hyperskill │ │ └── app │ │ └── android │ │ └── debug │ │ └── DebugScreen.kt │ └── test │ └── java │ └── org │ └── hyperskill │ └── app │ └── android │ └── util │ ├── AppFeatureStateSerializationTest.kt │ └── DateTimeHelperTest.kt ├── config └── detekt │ ├── baseline.xml │ └── detekt.yml ├── gh_delete_all_caches.sh ├── gradle.properties ├── gradle ├── app.versions.toml ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── increment_build_number.sh ├── iosHyperskillApp ├── .ruby-version ├── .swiftlint.yml ├── Gemfile ├── Gemfile.lock ├── NotificationServiceExtension │ ├── Info.plist │ ├── NotificationService.swift │ └── NotificationServiceExtension.entitlements ├── Podfile ├── Podfile.lock ├── Rambafile ├── Templates │ └── hyperskill-module │ │ ├── Code │ │ ├── Assembly.swift.liquid │ │ ├── View.swift.liquid │ │ └── ViewModel.swift.liquid │ │ └── hyperskill-module.rambaspec ├── TestPlans │ ├── AllTests.xctestplan │ ├── UITests.xctestplan │ └── UnitTests.xctestplan ├── autocorrect.sh ├── fastlane │ ├── Appfile │ ├── Devicefile │ ├── Fastfile │ ├── Matchfile │ ├── Pluginfile │ ├── README.md │ ├── Scanfile │ ├── certs │ │ └── AppleWWDRCAG6.cer │ ├── metadata │ │ ├── copyright.txt │ │ ├── en-US │ │ │ ├── apple_tv_privacy_policy.txt │ │ │ ├── description.txt │ │ │ ├── keywords.txt │ │ │ ├── marketing_url.txt │ │ │ ├── name.txt │ │ │ ├── privacy_url.txt │ │ │ ├── promotional_text.txt │ │ │ ├── release_notes.txt │ │ │ ├── subtitle.txt │ │ │ └── support_url.txt │ │ ├── primary_category.txt │ │ ├── primary_first_sub_category.txt │ │ ├── primary_second_sub_category.txt │ │ ├── review_information │ │ │ ├── demo_password.txt │ │ │ ├── demo_user.txt │ │ │ ├── email_address.txt │ │ │ ├── first_name.txt │ │ │ ├── last_name.txt │ │ │ ├── notes.txt │ │ │ └── phone_number.txt │ │ ├── secondary_category.txt │ │ ├── secondary_first_sub_category.txt │ │ └── secondary_second_sub_category.txt │ ├── release-notes.txt │ └── screenshots │ │ └── README.txt ├── iosHyperskillApp.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── ruslandavletshin.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── xcshareddata │ │ ├── xcbaselines │ │ │ └── 2C919DEC27EEF5BC0022A2F2.xcbaseline │ │ │ │ ├── ADDDB70F-EE79-4C0E-9923-72C0A4A25AEF.plist │ │ │ │ └── Info.plist │ │ └── xcschemes │ │ │ └── iosHyperskillApp.xcscheme │ └── xcuserdata │ │ └── ruslandavletshin.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── iosHyperskillApp.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── iosHyperskillApp │ ├── AppsFlyer-Info.plist │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── 1024.png │ │ │ └── Contents.json │ │ ├── AuthSocial │ │ │ ├── Contents.json │ │ │ ├── auth-social-apple-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── apple_icon.pdf │ │ │ ├── auth-social-github-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── github_icon.pdf │ │ │ ├── auth-social-google-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── google_icon.pdf │ │ │ └── auth-social-jetbrains-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── jb_logo.pdf │ │ ├── Comments │ │ │ ├── Contents.json │ │ │ └── comments-reactions.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── comments-reactions.pdf │ │ ├── Common │ │ │ ├── Contents.json │ │ │ ├── hammer.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track-hammer.pdf │ │ │ ├── hyperskill-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── auth-social-hyperskill-logo.pdf │ │ │ ├── project.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track-about-stat-item-project.pdf │ │ │ ├── skip.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track-topics-to-discover-next-skipped-topic-light.pdf │ │ │ ├── topic.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track-about-stat-item-topic.pdf │ │ │ └── trophy.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── trophy.pdf │ │ ├── Contents.json │ │ ├── FirstProblemOnboarding │ │ │ ├── Contents.json │ │ │ ├── first-problem-onboarding-existing-user-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── first-problem-onboarding-existing-user-illustration.png │ │ │ │ ├── first-problem-onboarding-existing-user-illustration@2x.png │ │ │ │ └── first-problem-onboarding-existing-user-illustration@3x.png │ │ │ └── first-problem-onboarding-new-user-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── first-problem-onboarding-new-user-illustration.png │ │ │ │ ├── first-problem-onboarding-new-user-illustration@2x.png │ │ │ │ └── first-problem-onboarding-new-user-illustration@3x.png │ │ ├── Home │ │ │ ├── ChallengeWidget │ │ │ │ ├── Contents.json │ │ │ │ ├── challenge-widget-status-announcement.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── challenge-widget-status-announcement.png │ │ │ │ │ ├── challenge-widget-status-announcement@2x.png │ │ │ │ │ └── challenge-widget-status-announcement@3x.png │ │ │ │ ├── challenge-widget-status-completed.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── challenge-widget-status-completed.png │ │ │ │ │ ├── challenge-widget-status-completed@2x.png │ │ │ │ │ └── challenge-widget-status-completed@3x.png │ │ │ │ ├── challenge-widget-status-ended.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── challenge-widget-status-ended.png │ │ │ │ │ ├── challenge-widget-status-ended@2x.png │ │ │ │ │ └── challenge-widget-status-ended@3x.png │ │ │ │ ├── challenge-widget-status-happening-now.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── challenge-widget-status-happening-now.png │ │ │ │ │ ├── challenge-widget-status-happening-now@2x.png │ │ │ │ │ └── challenge-widget-status-happening-now@3x.png │ │ │ │ └── challenge-widget-status-partially-completed.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── challenge-widget-status-partially-completed.png │ │ │ │ │ ├── challenge-widget-status-partially-completed@2x.png │ │ │ │ │ └── challenge-widget-status-partially-completed@3x.png │ │ │ ├── Contents.json │ │ │ └── ProblemOfDay │ │ │ │ ├── Contents.json │ │ │ │ ├── problem-of-day-arrow-completed.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── problem-of-day-arrow-completed.pdf │ │ │ │ ├── problem-of-day-arrow-uncompleted.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── problem-of-day-arrow-uncompleted-dark.pdf │ │ │ │ └── problem-of-day-arrow-uncompleted.pdf │ │ │ │ ├── problem-of-day-calendar.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── problem-of-day-calendar.pdf │ │ │ │ ├── problem-of-day-done.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── problem-of-day-done.pdf │ │ │ │ ├── problem-of-day-gembox.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── problem-of-day-gembox-dark.pdf │ │ │ │ └── problem-of-day-gembox.pdf │ │ │ │ ├── problem-of-day-hexogens-completed.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── problem-of-day-hexogens-completed.pdf │ │ │ │ └── problem-of-day-hexogens-uncompleted.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── problem-of-day-hexogens-uncompleted.pdf │ │ ├── LaunchScreen │ │ │ ├── Contents.json │ │ │ ├── launch-screen-background.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── launch-screen-background-dark.pdf │ │ │ │ └── launch-screen-background-light.pdf │ │ │ └── launch-screen-logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── launch-screen-logo.pdf │ │ ├── Leaderboard │ │ │ ├── Contents.json │ │ │ └── leaderboard-placeholder-empty.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── leaderboard-placeholder-empty.png │ │ │ │ ├── leaderboard-placeholder-empty@2x.png │ │ │ │ └── leaderboard-placeholder-empty@3x.png │ │ ├── NavigationBar │ │ │ ├── Contents.json │ │ │ ├── navigation-bar-problems-limit.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navigation-bar-problems-limit-dark.pdf │ │ │ │ └── navigation-bar-problems-limit.pdf │ │ │ ├── navigation-bar-streak-completed.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navigation-bar-streak-dark.pdf │ │ │ │ └── navigation-bar-streak-light.pdf │ │ │ └── navigation-bar-streak-uncompleted.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navigation-bar-streak-uncompleted-dark.pdf │ │ │ │ └── navigation-bar-streak-uncompleted-light.pdf │ │ ├── NotificationsOnboarding │ │ │ ├── Contents.json │ │ │ └── notifications-onboarding-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── notifications-onboarding-illustration.png │ │ │ │ ├── notifications-onboarding-illustration@2x.png │ │ │ │ └── notifications-onboarding-illustration@3x.png │ │ ├── Onboarding │ │ │ ├── Contents.json │ │ │ └── onboarding-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── onboarding-illustration.pdf │ │ ├── Paywall │ │ │ ├── Contents.json │ │ │ └── paywall-premium-mobile.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── paywall-premium-mobile.png │ │ │ │ ├── paywall-premium-mobile@2x.png │ │ │ │ └── paywall-premium-mobile@3x.png │ │ ├── Placeholder │ │ │ ├── Contents.json │ │ │ ├── placeholder-network-error.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── placeholder-network-error-dark.pdf │ │ │ │ └── placeholder-network-error.pdf │ │ │ └── placeholder-reload.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── placeholder-reload.pdf │ │ ├── ProblemOfDaySolvedModal │ │ │ ├── Contents.json │ │ │ ├── problem-of-day-solved-modal-book.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── problem-of-day-solved-modal-book.png │ │ │ │ ├── problem-of-day-solved-modal-book@2x.png │ │ │ │ └── problem-of-day-solved-modal-book@3x.png │ │ │ └── problem-of-day-solved-modal-gems-badge.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── problem-of-day-solved-modal-gems-badge-dark.pdf │ │ │ │ └── problem-of-day-solved-modal-gems-badge-light.pdf │ │ ├── Profile │ │ │ ├── AboutSocial │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-about-social-facebook.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── icons8-facebook (2).pdf │ │ │ │ ├── profile-about-social-github.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-about-social-github.pdf │ │ │ │ ├── profile-about-social-linkedin.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-about-social-linkedin.pdf │ │ │ │ ├── profile-about-social-reddit.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-about-social-reddit.pdf │ │ │ │ └── profile-about-social-twitter.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── profile-about-social-twitter.png │ │ │ │ │ ├── profile-about-social-twitter@2x.png │ │ │ │ │ └── profile-about-social-twitter@3x.png │ │ │ ├── Badges │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-badges-benefactor.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-benefactor.pdf │ │ │ │ ├── profile-badges-bounty-hunter.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-bounty-hunter.pdf │ │ │ │ ├── profile-badges-brilliant-mind.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-brilliant-mind.pdf │ │ │ │ ├── profile-badges-commited-learning.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-commited-learning.pdf │ │ │ │ ├── profile-badges-helping-hand.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-helping-hand.pdf │ │ │ │ ├── profile-badges-project-mastery.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-project-mastery.pdf │ │ │ │ ├── profile-badges-sweetheart.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-sweetheart.pdf │ │ │ │ └── profile-badges-topic-mastery.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── profile-badges-topic-mastery.pdf │ │ │ ├── Contents.json │ │ │ └── Streak │ │ │ │ ├── Contents.json │ │ │ │ ├── FreezeModal │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-streak-freeze-modal-diamond.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── profile-streak-freeze-modal-diamond.png │ │ │ │ │ ├── profile-streak-freeze-modal-diamond@2x.png │ │ │ │ │ └── profile-streak-freeze-modal-diamond@3x.png │ │ │ │ ├── profile-streak-freeze-modal-gems-badge-locked.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── profile-streak-freeze-modal-gems-badge-locked-dark.pdf │ │ │ │ │ └── profile-streak-freeze-modal-gems-badge-locked-light.pdf │ │ │ │ ├── profile-streak-freeze-modal-snowflake-badge.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-badge-dark.pdf │ │ │ │ │ └── profile-streak-freeze-modal-snowflake-badge-light.pdf │ │ │ │ └── profile-streak-freeze-modal-snowflake.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-dark.png │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-dark@2x.png │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-dark@3x.png │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-light.png │ │ │ │ │ ├── profile-streak-freeze-modal-snowflake-light@2x.png │ │ │ │ │ └── profile-streak-freeze-modal-snowflake-light@3x.png │ │ │ │ ├── RecoverModal │ │ │ │ ├── Contents.json │ │ │ │ └── streak-recover-modal-fire.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── streak-recover-modal-fire.png │ │ │ │ │ ├── streak-recover-modal-fire@2x.png │ │ │ │ │ └── streak-recover-modal-fire@3x.png │ │ │ │ ├── profile-streak-active.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-streak-active-dark.pdf │ │ │ │ └── profile-streak-active-light.pdf │ │ │ │ ├── profile-streak-crown.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── home-streak-crown.pdf │ │ │ │ ├── profile-streak-frozen.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-streak-frozen-dark.png │ │ │ │ ├── profile-streak-frozen-dark@2x.png │ │ │ │ ├── profile-streak-frozen-dark@3x.png │ │ │ │ ├── profile-streak-frozen-light.png │ │ │ │ ├── profile-streak-frozen-light@2x.png │ │ │ │ └── profile-streak-frozen-light@3x.png │ │ │ │ ├── profile-streak-passive.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── profile-streak-passive-dark.pdf │ │ │ │ └── profile-streak-passive-light.pdf │ │ │ │ └── profile-streak-recovered.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── profile-streak-recovered.pdf │ │ ├── ProjectSelectionList │ │ │ ├── Contents.json │ │ │ ├── ProjectLevel │ │ │ │ ├── Contents.json │ │ │ │ ├── project-selection-list-project-level-easy.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── project-selection-list-project-level-easy.pdf │ │ │ │ ├── project-selection-list-project-level-hard.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── project-selection-list-project-level-hard.pdf │ │ │ │ ├── project-selection-list-project-level-medium.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── project-selection-list-project-level-medium.pdf │ │ │ │ └── project-selection-list-project-level-nightmare.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── project-selection-list-project-level-nightmare.pdf │ │ │ └── project-selection-list-project-graduate.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── project-selection-list-project-graduate.pdf │ │ ├── ShareStreak │ │ │ ├── Contents.json │ │ │ ├── share-streak-day-10.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── share-streak-day-10.png │ │ │ ├── share-streak-day-100.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── share-streak-day-100.png │ │ │ ├── share-streak-day-25.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── share-streak-day-25.png │ │ │ ├── share-streak-day-5.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── share-streak-day-5.png │ │ │ └── share-streak-day-50.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── share-streak-day-50.png │ │ ├── SpaceBotAvatars │ │ │ ├── Contents.json │ │ │ ├── Spacebot_and_ASCII_Mirror_noise_35mm_minimalist_co.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── Spacebot_and_ASCII_Mirror_noise_35mm_minimalist_co.png │ │ │ ├── Spacebot_and_Number_Base_Converter_35mm_minimalist_19879.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── Spacebot_and_Number_Base_Converter_35mm_minimalist_19879.png │ │ │ ├── Spacebot_listens_to_music_with_big_headphones.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── Spacebot_listens_to_music_with_big_headphones.png │ │ │ ├── Spacebot_listens_to_music_with_big_headphones2.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── Spacebot_listens_to_music_with_big_headphones2.png │ │ │ ├── Spacebot_with_Traffic_Light_noise_35mm_minimalist__34428280.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── Spacebot_with_Traffic_Light_noise_35mm_minimalist__34428280.png │ │ │ ├── fancy_space_robot_in_an_evolving_red_cape_3d_style.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fancy_space_robot_in_an_evolving_red_cape_3d_style.png │ │ │ ├── fancy_space_robot_wearing_a_graduation_cap_3d_style.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fancy_space_robot_wearing_a_graduation_cap_3d_style.png │ │ │ ├── fancy_space_robot_with_gears_and_tools_carbon_meta.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fancy_space_robot_with_gears_and_tools_carbon_meta.png │ │ │ ├── fancy_space_robot_with_glowing_lights.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── fancy_space_robot_with_glowing_lights.png │ │ │ ├── space_robot_gold_metal_3d.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_gold_metal_3d.png │ │ │ ├── space_robot_holding_huge_gem_2.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_holding_huge_gem_2.png │ │ │ ├── space_robot_holding_huge_gem_3.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_holding_huge_gem_3.png │ │ │ ├── space_robot_in_an_evolving_red.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_in_an_evolving_red.png │ │ │ ├── space_robot_in_an_evolving_red_cape_2.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_in_an_evolving_red_cape_2.png │ │ │ ├── space_robot_with_gears_and_tools_carbon.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_gears_and_tools_carbon.png │ │ │ ├── space_robot_with_gears_and_tools_carbon_2.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_gears_and_tools_carbon_2.png │ │ │ ├── space_robot_with_glowing_lights_3.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_glowing_lights_3.png │ │ │ ├── space_robot_with_glowing_lights_4.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_glowing_lights_4.png │ │ │ ├── space_robot_with_glowing_lights_5.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_glowing_lights_5.png │ │ │ └── space_robot_with_huge_gem.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── space_robot_with_huge_gem.png │ │ ├── StageImplement │ │ │ ├── Contents.json │ │ │ ├── stage-implement-project-completed-modal-icon.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── stage-implement-project-completed-modal-icon.png │ │ │ │ ├── stage-implement-project-completed-modal-icon@2x.png │ │ │ │ └── stage-implement-project-completed-modal-icon@3x.png │ │ │ ├── stage-implement-stage-completed-modal-icon.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── stage-implement-stage-completed-modal-icon.png │ │ │ │ ├── stage-implement-stage-completed-modal-icon@2x.png │ │ │ │ └── stage-implement-stage-completed-modal-icon@3x.png │ │ │ └── stage-implement-unsupported-modal-icon.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── stage-implement-unsupported-modal-icon.png │ │ │ │ ├── stage-implement-unsupported-modal-icon@2x.png │ │ │ │ └── stage-implement-unsupported-modal-icon@3x.png │ │ ├── Step │ │ │ ├── Contents.json │ │ │ └── step-time-to-complete.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-time-to-complete.pdf │ │ ├── StepQuiz │ │ │ ├── Contents.json │ │ │ ├── ProblemsLimitReachedModal │ │ │ │ ├── Contents.json │ │ │ │ └── problems-limit-reached-modal-icon.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── problems-limit-reached-modal-cube-dark.png │ │ │ │ │ ├── problems-limit-reached-modal-cube-dark@2x.png │ │ │ │ │ ├── problems-limit-reached-modal-cube-dark@3x.png │ │ │ │ │ ├── problems-limit-reached-modal-cube-light.png │ │ │ │ │ ├── problems-limit-reached-modal-cube-light@2x.png │ │ │ │ │ └── problems-limit-reached-modal-cube-light@3x.png │ │ │ ├── step-quiz-checkmark.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-choice-checkmark.pdf │ │ │ ├── step-quiz-code-editor-expand.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-code-editor-expand.pdf │ │ │ ├── step-quiz-info.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-info.pdf │ │ │ ├── step-quiz-lightning.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-lightning.pdf │ │ │ ├── step-quiz-toolbar-limits.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-toolbar-limits.pdf │ │ │ └── step-quiz-unsupported-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step-quiz-unsupported-illustration.pdf │ │ ├── StepQuizHints │ │ │ ├── Contents.json │ │ │ ├── step_quiz_hints_helpful_reaction.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step_quiz_hints_helpful_reaction.pdf │ │ │ └── step_quiz_hints_unhelpful_reaction.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── step_quiz_hints_unhelpful_reaction.pdf │ │ ├── StudyPlan │ │ │ ├── Contents.json │ │ │ └── study-plan-section-expand-completed.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── study-plan-section-expand-completed.pdf │ │ ├── TabBar │ │ │ ├── Contents.json │ │ │ ├── tab-bar-study-plan-filled.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── tab-bar-study-plan-filled.png │ │ │ │ ├── tab-bar-study-plan-filled@2x.png │ │ │ │ └── tab-bar-study-plan-filled@3x.png │ │ │ └── tab-bar-study-plan.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── tab-bar-study-plan.png │ │ │ │ ├── tab-bar-study-plan@2x.png │ │ │ │ └── tab-bar-study-plan@3x.png │ │ ├── TopicsRepetitions │ │ │ ├── Contents.json │ │ │ └── topics-repetitions-book-image.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── topics-repetitions-book-image-dark.pdf │ │ │ │ └── topics-repetitions-book-image.pdf │ │ ├── Track │ │ │ ├── Contents.json │ │ │ ├── track-filled.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track-filled.pdf │ │ │ └── track.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── track.pdf │ │ ├── UsersInterviewWidget │ │ │ ├── Contents.json │ │ │ ├── users-interview-widget-gradient.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── users-interview-widget-gradient.pdf │ │ │ └── users-interview-widget-illustration.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── users-interview-widget-illustration.png │ │ │ │ ├── users-interview-widget-illustration@2x.png │ │ │ │ └── users-interview-widget-illustration@3x.png │ │ └── WelcomeOnboarding │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-app-store.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-app-store-dark.pdf │ │ │ └── welcome-onboarding-app-store-light.pdf │ │ │ ├── welcome-onboarding-basic-understanding.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-basic-understanding.pdf │ │ │ ├── welcome-onboarding-change-stack.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-change-stack.pdf │ │ │ ├── welcome-onboarding-current-job.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-current-job.pdf │ │ │ ├── welcome-onboarding-facebook.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-facebook.pdf │ │ │ ├── welcome-onboarding-friends.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-friends.pdf │ │ │ ├── welcome-onboarding-fun.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-fun.pdf │ │ │ ├── welcome-onboarding-lang-java.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-lang-java.pdf │ │ │ ├── welcome-onboarding-lang-js.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-lang-js-dark.pdf │ │ │ └── welcome-onboarding-lang-js.pdf │ │ │ ├── welcome-onboarding-lang-kt.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-lang-kt.pdf │ │ │ ├── welcome-onboarding-lang-py.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-lang-py.pdf │ │ │ ├── welcome-onboarding-lang-sql.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-lang-sql.pdf │ │ │ ├── welcome-onboarding-news.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-news.pdf │ │ │ ├── welcome-onboarding-no-coding-experience.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-no-coding-experience.pdf │ │ │ ├── welcome-onboarding-other-learning-goal.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-other-learning-goal.pdf │ │ │ ├── welcome-onboarding-other.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-other.pdf │ │ │ ├── welcome-onboarding-start-career.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-start-career.pdf │ │ │ ├── welcome-onboarding-studies.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-studies.pdf │ │ │ ├── welcome-onboarding-tiktok.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-tiktok-dark.pdf │ │ │ └── welcome-onboarding-tiktok.pdf │ │ │ ├── welcome-onboarding-track-details-java.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-track-details-java.png │ │ │ ├── welcome-onboarding-track-details-java@2x.png │ │ │ └── welcome-onboarding-track-details-java@3x.png │ │ │ ├── welcome-onboarding-track-details-js.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-track-details-js.png │ │ │ ├── welcome-onboarding-track-details-js@2x.png │ │ │ └── welcome-onboarding-track-details-js@3x.png │ │ │ ├── welcome-onboarding-track-details-kotlin.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-track-details-kotlin.png │ │ │ ├── welcome-onboarding-track-details-kotlin@2x.png │ │ │ └── welcome-onboarding-track-details-kotlin@3x.png │ │ │ ├── welcome-onboarding-track-details-python.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-track-details-python.png │ │ │ ├── welcome-onboarding-track-details-python@2x.png │ │ │ └── welcome-onboarding-track-details-python@3x.png │ │ │ ├── welcome-onboarding-track-details-sql.imageset │ │ │ ├── Contents.json │ │ │ ├── welcome-onboarding-track-details-sql.png │ │ │ ├── welcome-onboarding-track-details-sql@2x.png │ │ │ └── welcome-onboarding-track-details-sql@3x.png │ │ │ ├── welcome-onboarding-working-professionally.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-working-professionally.pdf │ │ │ ├── welcome-onboarding-written-some-projects.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-written-some-projects.pdf │ │ │ └── welcome-onboarding-youtube.imageset │ │ │ ├── Contents.json │ │ │ └── welcome-onboarding-youtube.pdf │ ├── GoogleService-Info.plist │ ├── Info.plist │ ├── LaunchScreen.storyboard │ ├── LottieAnimations │ │ ├── LottieAnimations.swift │ │ ├── ProblemsLimitInfo │ │ │ ├── problems-limit-info-modal-full-limits-dark.lottie │ │ │ ├── problems-limit-info-modal-full-limits-light.lottie │ │ │ ├── problems-limit-info-modal-no-limits-dark.lottie │ │ │ ├── problems-limit-info-modal-no-limits-light.lottie │ │ │ ├── problems-limit-info-modal-partially-filled-dark.lottie │ │ │ └── problems-limit-info-modal-partially-filled-light.lottie │ │ ├── ProblemsOnboarding │ │ │ ├── parsons-problem-onboarding-animation-dark.lottie │ │ │ └── parsons-problem-onboarding-animation-light.lottie │ │ └── SpacebotProgressBar │ │ │ ├── spacebot-progress-bar-rocket-dark.lottie │ │ │ ├── spacebot-progress-bar-rocket-light.lottie │ │ │ └── spacebot-progress-bar-wow.lottie │ ├── MathJax.js │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── PrivacyInfo.xcprivacy │ ├── RevenueCat-Info.plist │ ├── Sentry-Info.plist │ ├── Sources │ │ ├── AppDelegate.swift │ │ ├── Extensions │ │ │ ├── Combine │ │ │ │ └── Publishers+KeyboardIsVisible.swift │ │ │ ├── Foundation │ │ │ │ ├── Collection+SafeSubscript.swift │ │ │ │ ├── NSAttributedString+TrimmingCharacters.swift │ │ │ │ ├── RandomAccessCollection+IsLastItem.swift │ │ │ │ ├── Thread+DispatchOnMainThread.swift │ │ │ │ ├── TimeIntervalExtensions.swift │ │ │ │ └── URLExtensions.swift │ │ │ ├── Shared │ │ │ │ ├── Analytic │ │ │ │ │ └── AnalyticExtensions.swift │ │ │ │ ├── KotlinThrowable+AsError.swift │ │ │ │ ├── Model │ │ │ │ │ ├── BlockExtensions.swift │ │ │ │ │ ├── BlockOptionsExtensions.swift │ │ │ │ │ ├── BuildVariant+Current.swift │ │ │ │ │ ├── DatasetExtensions.swift │ │ │ │ │ ├── StepExtensions.swift │ │ │ │ │ └── TopicProgressExtensions.swift │ │ │ │ └── Sentry │ │ │ │ │ ├── HyperskillSentryBreadcrumb+SentryBreadcrumb.swift │ │ │ │ │ └── HyperskillSentryLevel+SentryLevel.swift │ │ │ ├── SwiftStdlib │ │ │ │ └── StringExtensions.swift │ │ │ ├── SwiftUI │ │ │ │ ├── NavigationLink │ │ │ │ │ └── NavigationLink+Empty.swift │ │ │ │ └── View │ │ │ │ │ ├── View+Border.swift │ │ │ │ │ ├── View+ConditionalOpacity.swift │ │ │ │ │ ├── View+ConditionalViewModifier.swift │ │ │ │ │ ├── View+EndEditing.swift │ │ │ │ │ ├── View+Frame.swift │ │ │ │ │ ├── View+ListRowSeparator.swift │ │ │ │ │ ├── View+MeasureSize.swift │ │ │ │ │ ├── View+OnTapWhenDisabled.swift │ │ │ │ │ ├── View+SafeAreaInset.swift │ │ │ │ │ ├── View+ScrollBounceBehavior.swift │ │ │ │ │ ├── View+Task.swift │ │ │ │ │ └── View+TextSelection.swift │ │ │ ├── ThirdParty │ │ │ │ ├── Kotlinx_datetime │ │ │ │ │ └── KotlinxDatetimeExtensions.swift │ │ │ │ ├── MokoResources │ │ │ │ │ ├── ColorResource+UIColor.swift │ │ │ │ │ ├── GraphicsColor+UIColor.swift │ │ │ │ │ └── StringResource+Localized.swift │ │ │ │ └── Nuke │ │ │ │ │ └── ImageDecoders+SVG.swift │ │ │ └── UIKit │ │ │ │ ├── UICollectionView+RegisterReusable.swift │ │ │ │ ├── UIColor+DynamicColor.swift │ │ │ │ ├── UIColor+Hex.swift │ │ │ │ ├── UIFont+PreferredFont.swift │ │ │ │ ├── UIFont+SizeOfString.swift │ │ │ │ ├── UINavigationControllerExtensions.swift │ │ │ │ ├── UIStackView+RemoveAllArrangedSubviews.swift │ │ │ │ ├── UITableView+RegisterReusable.swift │ │ │ │ ├── UIView │ │ │ │ ├── UIView+Animations.swift │ │ │ │ ├── UIView+FindViewController.swift │ │ │ │ ├── UIView+FindViewOfSpecifiedType.swift │ │ │ │ └── UIView+TraitCollection.swift │ │ │ │ ├── UIViewControllerExtensions.swift │ │ │ │ └── UIWindowExtensions.swift │ │ ├── Frameworks │ │ │ ├── CodeEditor │ │ │ │ ├── Model │ │ │ │ │ ├── Analyze │ │ │ │ │ │ └── CodePlaygroundManager.swift │ │ │ │ │ ├── CodeCompletion │ │ │ │ │ │ ├── CodeCompletionKeywords.swift │ │ │ │ │ │ └── code-completion-keywords.plist │ │ │ │ │ ├── CodeEditorTheme │ │ │ │ │ │ ├── CodeEditorTheme.swift │ │ │ │ │ │ └── CodeEditorThemeService.swift │ │ │ │ │ ├── CodeElementSize.swift │ │ │ │ │ ├── CodeInputAccessory │ │ │ │ │ │ └── CodeInputAccessorySymbols.swift │ │ │ │ │ ├── CodeLanguage.swift │ │ │ │ │ └── CodeLanguageSamples │ │ │ │ │ │ ├── CodeLanguageSamples.swift │ │ │ │ │ │ └── code-language-samples.plist │ │ │ │ └── View │ │ │ │ │ ├── SwiftUI │ │ │ │ │ ├── CodeEditor.swift │ │ │ │ │ └── CodeEditorSuggestionsPresentationContextProviding.swift │ │ │ │ │ └── UIKit │ │ │ │ │ ├── CodeCompletion │ │ │ │ │ ├── CodeCompletionTableViewCell │ │ │ │ │ │ ├── CodeCompletionCellView.swift │ │ │ │ │ │ └── CodeCompletionTableViewCell.swift │ │ │ │ │ └── CodeCompletionTableViewController.swift │ │ │ │ │ ├── CodeEditorView │ │ │ │ │ ├── CodeEditorView.swift │ │ │ │ │ └── CodeEditorViewDelegate.swift │ │ │ │ │ ├── CodeInputAccessory │ │ │ │ │ ├── CodeInputAccessoryBuilder.swift │ │ │ │ │ └── Toolbar │ │ │ │ │ │ ├── CodeInputAccessoryButtonData.swift │ │ │ │ │ │ ├── CodeInputAccessoryCollectionViewCell.swift │ │ │ │ │ │ ├── CodeInputAccessoryView.swift │ │ │ │ │ │ └── PasteControl │ │ │ │ │ │ ├── CodeInputPasteControl.swift │ │ │ │ │ │ └── OpaqueUIPasteControl.swift │ │ │ │ │ └── CodeTextView │ │ │ │ │ ├── CodeTextView.swift │ │ │ │ │ └── CodeTextViewLayoutManager.swift │ │ │ ├── Collections │ │ │ │ ├── LinkedList.swift │ │ │ │ └── Queue.swift │ │ │ ├── ContentProcessor │ │ │ │ ├── Processing │ │ │ │ │ ├── ContentProcessingInjection.swift │ │ │ │ │ ├── ContentProcessingRule.swift │ │ │ │ │ ├── ContentProcessor.swift │ │ │ │ │ ├── HTMLExtractor.swift │ │ │ │ │ ├── HTMLString.swift │ │ │ │ │ └── ProcessedContent.swift │ │ │ │ └── View │ │ │ │ │ ├── SwiftUI │ │ │ │ │ └── LatexView.swift │ │ │ │ │ └── UIKit │ │ │ │ │ ├── ProcessedContentTextView.swift │ │ │ │ │ ├── ProcessedContentView.swift │ │ │ │ │ └── ProcessedContentWebView.swift │ │ │ ├── Core │ │ │ │ ├── Assembly.swift │ │ │ │ ├── FeatureViewModel.swift │ │ │ │ └── Injection │ │ │ │ │ ├── AppGraph+DefaultInstances.swift │ │ │ │ │ ├── AppGraph.swift │ │ │ │ │ └── IosFCMTokenProviderImpl.swift │ │ │ ├── Notifications │ │ │ │ ├── Local │ │ │ │ │ ├── ConcreteNotifications │ │ │ │ │ │ ├── DailyStudyReminderLocalNotification.swift │ │ │ │ │ │ └── RestartApplicationLocalNotification.swift │ │ │ │ │ ├── LocalNotificationProtocol.swift │ │ │ │ │ ├── LocalNotificationsService.swift │ │ │ │ │ ├── NotificationDescriptionPlainObject.swift │ │ │ │ │ └── UNNotificationTrigger+nextTriggerDate.swift │ │ │ │ ├── NotificationsService.swift │ │ │ │ ├── PermissionStatus │ │ │ │ │ ├── NotificationPermissionStatus.swift │ │ │ │ │ └── NotificationPermissionStatusSettingsObserver.swift │ │ │ │ ├── Registration │ │ │ │ │ └── NotificationsRegistrationService.swift │ │ │ │ └── UserNotificationsCenterDelegate.swift │ │ │ ├── PanModal │ │ │ │ ├── PanModalPresentableViewController.swift │ │ │ │ ├── PanModalPresenter.swift │ │ │ │ ├── PanModalSwiftUIViewController.swift │ │ │ │ ├── PanModalViewModifier.swift │ │ │ │ └── UIViewController+PresentPanModal.swift │ │ │ ├── Routers │ │ │ │ ├── DeepLinkRouterProtocol.swift │ │ │ │ ├── ModalRouter.swift │ │ │ │ ├── SourcelessRouter.swift │ │ │ │ ├── StackRouter.swift │ │ │ │ └── TabBarRouter.swift │ │ │ ├── WebController │ │ │ │ ├── WKWebViewPanelManager │ │ │ │ │ ├── WKWebViewPanelManager.h │ │ │ │ │ └── WKWebViewPanelManager.m │ │ │ │ ├── WebCacheCleaner.swift │ │ │ │ ├── WebControllerManager.swift │ │ │ │ ├── WebViewController.swift │ │ │ │ └── WebViewNavigationController.swift │ │ │ └── sharedSwift │ │ │ │ └── Extensions │ │ │ │ ├── AppFeatureStateKsExtensions.swift │ │ │ │ ├── AuthSocialFeatureStateKsExtensions.swift │ │ │ │ ├── ChallengeWidgetViewStateContentCollectRewardButtonStateKsExtensions.swift │ │ │ │ ├── ChallengeWidgetViewStateKsExtensions.swift │ │ │ │ ├── DebugFeatureViewStateKsExtensions.swift │ │ │ │ ├── FirstProblemOnboardingFeatureViewStateKsExtensions.swift │ │ │ │ ├── ManageSubscriptionFeatureViewStateKsExtensions.swift │ │ │ │ ├── ProfileFeatureStateKsExtensions.swift │ │ │ │ ├── ProfileSettingsFeatureViewStateKsExtensions.swift │ │ │ │ ├── ProjectSelectionDetailsFeatureViewStateKsExtensions.swift │ │ │ │ ├── ProjectSelectionListFeatureViewStateKsExtensions.swift │ │ │ │ ├── StageImplementFeatureViewStateKsExtensions.swift │ │ │ │ ├── StepFeatureStateKsExtensions.swift │ │ │ │ ├── StepQuizCodeBlanksViewStateKsExtensions.swift │ │ │ │ ├── StepQuizFeatureStateKsExtensions.swift │ │ │ │ ├── StepQuizFeedbackStateHintKsExtensions.swift │ │ │ │ ├── StepQuizFeedbackStateKsExtensions.swift │ │ │ │ ├── StepQuizHintsFeatureStateKsExtensions.swift │ │ │ │ ├── TopicsRepetitionsFeatureStateKsExtensions.swift │ │ │ │ ├── TrackSelectionDetailsFeatureViewStateKsExtensions.swift │ │ │ │ ├── TrackSelectionListFeatureViewStateKsExtensions.swift │ │ │ │ └── WelcomeFeatureStateKsExtensions.swift │ │ ├── Helpers │ │ │ ├── BundlePropertyListDeserializer.swift │ │ │ ├── Debouncer.swift │ │ │ ├── DeviceInfo.swift │ │ │ ├── Formatter.swift │ │ │ ├── HTMLToAttributedStringConverter.swift │ │ │ ├── LayoutInsets.swift │ │ │ ├── MainBundleInfo.swift │ │ │ ├── Require.swift │ │ │ ├── StyledHostingController.swift │ │ │ ├── StyledNavigationController.swift │ │ │ ├── UIKitViewControllerPreview.swift │ │ │ ├── UnitConverters.swift │ │ │ └── UserAgentBuilder.swift │ │ ├── Models │ │ │ ├── Constants │ │ │ │ ├── ApplicationInfo.swift │ │ │ │ ├── AppsFlyerInfo.swift │ │ │ │ ├── GoogleServiceInfo.swift │ │ │ │ ├── Images │ │ │ │ │ ├── Images+SystemNames.swift │ │ │ │ │ └── Images.swift │ │ │ │ ├── RevenueCatInfo.swift │ │ │ │ ├── SentryInfo.swift │ │ │ │ └── Strings.swift │ │ │ └── FontWeightNameMapping.swift │ │ ├── Modules │ │ │ ├── App │ │ │ │ ├── AppAssembly.swift │ │ │ │ ├── AppView.swift │ │ │ │ ├── AppViewModel.swift │ │ │ │ └── ViewControllers │ │ │ │ │ ├── AppRouter.swift │ │ │ │ │ ├── AppViewController.swift │ │ │ │ │ └── TabBar │ │ │ │ │ ├── AppTabBarController.swift │ │ │ │ │ ├── AppTabItem.swift │ │ │ │ │ └── AppTabItemsAvailabilityService.swift │ │ │ ├── AuthCredentials │ │ │ │ ├── AuthCredentialsAssembly.swift │ │ │ │ ├── AuthCredentialsViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── AuthCredentialsErrorView.swift │ │ │ │ │ ├── AuthCredentialsFormView.swift │ │ │ │ │ ├── AuthCredentialsView.swift │ │ │ │ │ ├── AuthPreviews.swift │ │ │ │ │ └── AuthTextField.swift │ │ │ ├── AuthSocial │ │ │ │ ├── AuthOutputProtocol.swift │ │ │ │ ├── AuthSocialAssembly.swift │ │ │ │ ├── AuthSocialViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── AuthAdaptiveContentView.swift │ │ │ │ │ ├── AuthLogoView.swift │ │ │ │ │ ├── AuthSocialButton.swift │ │ │ │ │ ├── AuthSocialControlsView.swift │ │ │ │ │ └── AuthSocialView.swift │ │ │ ├── Comments │ │ │ │ ├── CommentsAssembly.swift │ │ │ │ ├── CommentsHostingController.swift │ │ │ │ ├── CommentsViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── CommentsSkeletonView.swift │ │ │ │ │ ├── CommentsView.swift │ │ │ │ │ └── Content │ │ │ │ │ ├── CommentsCommentView.swift │ │ │ │ │ ├── CommentsContentView.swift │ │ │ │ │ └── CommentsReactionsView.swift │ │ │ ├── Debug │ │ │ │ ├── DebugAssembly.swift │ │ │ │ ├── DebugViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── DebugStageImplementNavigationView.swift │ │ │ │ │ ├── DebugStepNavigationView.swift │ │ │ │ │ └── DebugView.swift │ │ │ ├── FirstProblemOnboarding │ │ │ │ ├── FirstProblemOnboardingAssembly.swift │ │ │ │ ├── FirstProblemOnboardingOutputProtocol.swift │ │ │ │ ├── FirstProblemOnboardingViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── FirstProblemOnboardingContentView.swift │ │ │ │ │ └── FirstProblemOnboardingView.swift │ │ │ ├── GamificationToolbar │ │ │ │ ├── GamificationToolbarViewActionHandler.swift │ │ │ │ └── Views │ │ │ │ │ ├── GamificationToolbarContent.swift │ │ │ │ │ ├── ProblemsLimitBarButtonItem.swift │ │ │ │ │ ├── ProgressBarButtonItem.swift │ │ │ │ │ └── StreakBarButtonItem.swift │ │ │ ├── Home │ │ │ │ ├── HomeAssembly.swift │ │ │ │ ├── HomeViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── HomeSkeletonView.swift │ │ │ │ │ ├── HomeSubheadlineView.swift │ │ │ │ │ ├── HomeView.swift │ │ │ │ │ └── HomeWidgetCountView.swift │ │ │ ├── HomeSubmodules │ │ │ │ ├── ChallengeWidget │ │ │ │ │ ├── ChallengeWidgetAssembly.swift │ │ │ │ │ ├── ChallengeWidgetOutputProtocol.swift │ │ │ │ │ ├── ChallengeWidgetViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── ChallengeWidgetErrorView.swift │ │ │ │ │ │ ├── ChallengeWidgetView.swift │ │ │ │ │ │ └── Content │ │ │ │ │ │ ├── ChallengeWidgetContentStateCollectRewardButton.swift │ │ │ │ │ │ ├── ChallengeWidgetContentStateDeadlineView.swift │ │ │ │ │ │ ├── ChallengeWidgetContentStateDescriptionView.swift │ │ │ │ │ │ ├── ChallengeWidgetContentStateHeaderView.swift │ │ │ │ │ │ ├── ChallengeWidgetContentStateView.swift │ │ │ │ │ │ └── ProgressGrid │ │ │ │ │ │ ├── ChallengeWidgetContentStateProgressGridItemView.swift │ │ │ │ │ │ └── ChallengeWidgetContentStateProgressGridView.swift │ │ │ │ ├── ProblemOfDay │ │ │ │ │ ├── ProblemOfDayAssembly.swift │ │ │ │ │ ├── ProblemOfDayOutputProtocol.swift │ │ │ │ │ ├── ProblemOfDayViewModel.swift │ │ │ │ │ ├── ViewData │ │ │ │ │ │ ├── ProblemOfDayViewData.swift │ │ │ │ │ │ └── ProblemOfDayViewDataMapper.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── ProblemOfDayCardView.swift │ │ │ │ │ │ ├── ProblemOfDaySkeletonView.swift │ │ │ │ │ │ └── ProblemOfDayTitle.swift │ │ │ │ └── TopicsRepetitions │ │ │ │ │ ├── TopicsRepetitionsCardSkeletonView.swift │ │ │ │ │ ├── TopicsRepetitionsCardView.swift │ │ │ │ │ └── TopicsRepetitionsCountView.swift │ │ │ ├── Leaderboard │ │ │ │ ├── LeaderboardAssembly.swift │ │ │ │ ├── LeaderboardViewModel.swift │ │ │ │ ├── Models │ │ │ │ │ ├── LeaderboardListItem.swift │ │ │ │ │ └── LeaderboardTab.swift │ │ │ │ └── Views │ │ │ │ │ ├── LeaderboardPlaceholderEmptyView.swift │ │ │ │ │ ├── LeaderboardSkeletonView.swift │ │ │ │ │ ├── LeaderboardView.swift │ │ │ │ │ └── List │ │ │ │ │ ├── LeaderboardListRowView.swift │ │ │ │ │ └── LeaderboardListView.swift │ │ │ ├── ManageSubscription │ │ │ │ ├── ManageSubscriptionAssembly.swift │ │ │ │ ├── ManageSubscriptionViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── ManageSubscriptionContentView.swift │ │ │ │ │ └── ManageSubscriptionView.swift │ │ │ ├── NotificationDailyStudyReminderWidget │ │ │ │ └── NotificationDailyStudyReminderWidgetView.swift │ │ │ ├── NotificationsOnboarding │ │ │ │ ├── NotificationsOnboardingAssembly.swift │ │ │ │ ├── NotificationsOnboardingOutputProtocol.swift │ │ │ │ ├── NotificationsOnboardingViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── NotificationsOnboardingContentView.swift │ │ │ │ │ └── NotificationsOnboardingView.swift │ │ │ ├── Paywall │ │ │ │ ├── PaywallAssembly.swift │ │ │ │ ├── PaywallHostingController.swift │ │ │ │ ├── PaywallViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── Content │ │ │ │ │ ├── PaywallContentView.swift │ │ │ │ │ ├── PaywallFeaturesView.swift │ │ │ │ │ ├── PaywallFooterView.swift │ │ │ │ │ └── PaywallSubscriptionProductsView.swift │ │ │ │ │ └── PaywallView.swift │ │ │ ├── ProblemsLimitInfo │ │ │ │ ├── ProblemsLimitInfoModalAssembly.swift │ │ │ │ ├── ProblemsLimitInfoModalView.swift │ │ │ │ ├── ProblemsLimitInfoModalViewController.swift │ │ │ │ └── ProblemsLimitInfoModalViewModel.swift │ │ │ ├── Profile │ │ │ │ ├── Assembly │ │ │ │ │ ├── ProfileAssembly.swift │ │ │ │ │ └── ProfilePresentationDescription.swift │ │ │ │ ├── ProfileViewModel.swift │ │ │ │ ├── ViewData │ │ │ │ │ ├── ProfileSocialAccount.swift │ │ │ │ │ ├── ProfileViewData.swift │ │ │ │ │ └── ProfileViewDataMapper.swift │ │ │ │ └── Views │ │ │ │ │ ├── About │ │ │ │ │ ├── ProfileAboutSocialAccountsView.swift │ │ │ │ │ └── ProfileAboutView.swift │ │ │ │ │ ├── Badges │ │ │ │ │ ├── BadgeImage │ │ │ │ │ │ ├── BadgeImageView.swift │ │ │ │ │ │ ├── BadgeLockedImageView.swift │ │ │ │ │ │ └── BadgeRemoteImageView.swift │ │ │ │ │ ├── BadgeLevelView.swift │ │ │ │ │ ├── BadgeRankView.swift │ │ │ │ │ ├── DetailsModal │ │ │ │ │ │ ├── BadgeDetailsModalView.swift │ │ │ │ │ │ └── BadgeDetailsModalViewController.swift │ │ │ │ │ ├── EarnedModal │ │ │ │ │ │ ├── BadgeEarnedModalView.swift │ │ │ │ │ │ └── BadgeEarnedModalViewController.swift │ │ │ │ │ └── Grid │ │ │ │ │ │ ├── ProfileBadgesGridItemView.swift │ │ │ │ │ │ └── ProfileBadgesGridView.swift │ │ │ │ │ ├── DailyStudyReminders │ │ │ │ │ ├── ProfileDailyStudyRemindersHourIntervalPickerView.swift │ │ │ │ │ ├── ProfileDailyStudyRemindersPickerViewController.swift │ │ │ │ │ └── ProfileDailyStudyRemindersView.swift │ │ │ │ │ ├── ProfileHeaderView.swift │ │ │ │ │ ├── ProfileSkeletonView.swift │ │ │ │ │ ├── ProfileView.swift │ │ │ │ │ └── Statistics │ │ │ │ │ ├── ProfileStatisticsItemView.swift │ │ │ │ │ └── ProfileStatisticsView.swift │ │ │ ├── ProfileSettings │ │ │ │ ├── Controllers │ │ │ │ │ └── SendEmailFeedbackController.swift │ │ │ │ ├── ProfileSettingsAssembly.swift │ │ │ │ ├── ProfileSettingsViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── ProfileSettingsSubscriptionSectionView.swift │ │ │ │ │ └── ProfileSettingsView.swift │ │ │ ├── ProgressScreen │ │ │ │ ├── ProgressScreenAssembly.swift │ │ │ │ ├── ProgressScreenViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── ProgressScreenCardView.swift │ │ │ │ │ ├── ProgressScreenSectionTitleView.swift │ │ │ │ │ ├── ProgressScreenView.swift │ │ │ │ │ ├── Project │ │ │ │ │ ├── ProgressScreenProjectProgressContentView.swift │ │ │ │ │ └── ProgressScreenProjectProgressView.swift │ │ │ │ │ ├── Skeleton │ │ │ │ │ ├── ProgressScreenCardSkeletonView.swift │ │ │ │ │ ├── ProgressScreenProjectProgressSkeletonView.swift │ │ │ │ │ ├── ProgressScreenSectionTitleSkeletonView.swift │ │ │ │ │ └── ProgressScreenTrackProgressSkeletonView.swift │ │ │ │ │ └── Track │ │ │ │ │ ├── ProgressScreenTrackProgressContentView.swift │ │ │ │ │ └── ProgressScreenTrackProgressView.swift │ │ │ ├── ProjectSelection │ │ │ │ ├── Details │ │ │ │ │ ├── ProjectSelectionDetailsAssembly.swift │ │ │ │ │ ├── ProjectSelectionDetailsViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── Content │ │ │ │ │ │ ├── ProjectSelectionDetailsContentView.swift │ │ │ │ │ │ ├── ProjectSelectionDetailsLearningOutcomesView.swift │ │ │ │ │ │ ├── ProjectSelectionDetailsProjectOverviewView.swift │ │ │ │ │ │ └── ProjectSelectionDetailsProviderView.swift │ │ │ │ │ │ ├── ProjectSelectionDetailsView.swift │ │ │ │ │ │ └── Skeleton │ │ │ │ │ │ └── ProjectSelectionDetailsSkeletonView.swift │ │ │ │ └── List │ │ │ │ │ ├── Model │ │ │ │ │ ├── ProjectSelectionListFeatureViewStateContent+Placeholder.swift │ │ │ │ │ └── SharedProjectLevelWrapper.swift │ │ │ │ │ ├── ProjectSelectionListAssembly.swift │ │ │ │ │ ├── ProjectSelectionListViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ ├── Grid │ │ │ │ │ ├── Cell │ │ │ │ │ │ ├── Header │ │ │ │ │ │ │ ├── ProjectSelectionListGridCellHeaderView.swift │ │ │ │ │ │ │ ├── ProjectSelectionListGridCellProjectGraduateView.swift │ │ │ │ │ │ │ └── ProjectSelectionListGridCellProjectLevelView.swift │ │ │ │ │ │ ├── ProjectSelectionListGridCellBadgesView.swift │ │ │ │ │ │ └── ProjectSelectionListGridCellView.swift │ │ │ │ │ ├── ProjectSelectionListGridSectionView.swift │ │ │ │ │ └── ProjectSelectionListGridView.swift │ │ │ │ │ ├── ProjectSelectionListHeaderView.swift │ │ │ │ │ ├── ProjectSelectionListView.swift │ │ │ │ │ └── Skeleton │ │ │ │ │ ├── ProjectSelectionListGridSectionSkeletonView.swift │ │ │ │ │ ├── ProjectSelectionListHeaderSkeletonView.swift │ │ │ │ │ └── ProjectSelectionListSkeletonView.swift │ │ │ ├── RequestReview │ │ │ │ ├── RequestReviewModalAssembly.swift │ │ │ │ ├── RequestReviewModalView.swift │ │ │ │ ├── RequestReviewModalViewController.swift │ │ │ │ └── RequestReviewModalViewModel.swift │ │ │ ├── Search │ │ │ │ ├── SearchAssembly.swift │ │ │ │ ├── SearchViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── SearchPlaceholderEmptyView.swift │ │ │ │ │ ├── SearchPlaceholderLoadingView.swift │ │ │ │ │ ├── SearchPlaceholderSuggestionsView.swift │ │ │ │ │ └── SearchView.swift │ │ │ ├── StageImplement │ │ │ │ ├── Modals │ │ │ │ │ ├── ProjectCompleted │ │ │ │ │ │ ├── StageImplementProjectCompletedModalView.swift │ │ │ │ │ │ └── StageImplementProjectCompletedModalViewController.swift │ │ │ │ │ ├── StageCompleted │ │ │ │ │ │ ├── StageImplementStageCompletedModalView.swift │ │ │ │ │ │ └── StageImplementStageCompletedModalViewController.swift │ │ │ │ │ └── Unsupported │ │ │ │ │ │ ├── StageImplementUnsupportedModalView.swift │ │ │ │ │ │ └── StageImplementUnsupportedModalViewController.swift │ │ │ │ ├── StageImplementAssembly.swift │ │ │ │ ├── StageImplementView.swift │ │ │ │ └── StageImplementViewModel.swift │ │ │ ├── Step │ │ │ │ ├── Models │ │ │ │ │ └── StepTypeWrapper.swift │ │ │ │ ├── StepAssembly.swift │ │ │ │ ├── StepViewModel.swift │ │ │ │ ├── ViewData │ │ │ │ │ ├── StepViewData.swift │ │ │ │ │ └── StepViewDataMapper.swift │ │ │ │ └── Views │ │ │ │ │ ├── StepExpandableStepTextView.swift │ │ │ │ │ ├── StepView.swift │ │ │ │ │ ├── Theory │ │ │ │ │ ├── StepTheoryActionButton.swift │ │ │ │ │ ├── StepTheoryContentView.swift │ │ │ │ │ └── StepTheoryHeaderView.swift │ │ │ │ │ └── Toolbar │ │ │ │ │ ├── StepToolbarContent.swift │ │ │ │ │ └── ToolbarProgress │ │ │ │ │ ├── SpacebotRocketAnimationView.swift │ │ │ │ │ ├── SpacebotWowAnimationView.swift │ │ │ │ │ └── StepToolbarProgressView.swift │ │ │ ├── StepFeedback │ │ │ │ ├── StepFeedbackAssembly.swift │ │ │ │ └── StepFeedbackViewModel.swift │ │ │ ├── StepQuiz │ │ │ │ ├── ChildProtocols │ │ │ │ │ ├── StepQuizChildQuizAssembly.swift │ │ │ │ │ ├── StepQuizChildQuizInputProtocol.swift │ │ │ │ │ ├── StepQuizChildQuizOutputProtocol.swift │ │ │ │ │ └── StepQuizChildQuizType.swift │ │ │ │ ├── InputOutput │ │ │ │ │ ├── StepQuizInputProtocol.swift │ │ │ │ │ └── StepQuizOutputProtocol.swift │ │ │ │ ├── StepQuizAssembly.swift │ │ │ │ ├── StepQuizViewModel.swift │ │ │ │ ├── ViewData │ │ │ │ │ ├── StepQuizViewData.swift │ │ │ │ │ └── StepQuizViewDataMapper.swift │ │ │ │ └── Views │ │ │ │ │ ├── Feedback │ │ │ │ │ ├── StepQuizFeedbackHintView.swift │ │ │ │ │ ├── StepQuizFeedbackStatusView.swift │ │ │ │ │ ├── StepQuizFeedbackView.swift │ │ │ │ │ ├── StepQuizFeedbackWrongStateView.swift │ │ │ │ │ ├── StepQuizRunCodeFeedbackHintView.swift │ │ │ │ │ └── StepQuizSubmissionFeedbackHintView.swift │ │ │ │ │ ├── Header │ │ │ │ │ ├── StepQuizNameView.swift │ │ │ │ │ └── StepQuizStatsView.swift │ │ │ │ │ ├── Modals │ │ │ │ │ ├── ProblemOfDaySolvedModalViewController.swift │ │ │ │ │ ├── ProblemOnboarding │ │ │ │ │ │ ├── StepQuizProblemOnboardingModalView.swift │ │ │ │ │ │ └── StepQuizProblemOnboardingModalViewController.swift │ │ │ │ │ └── ShareStreak │ │ │ │ │ │ ├── ShareStreakAction.swift │ │ │ │ │ │ ├── ShareStreakModalView.swift │ │ │ │ │ │ └── ShareStreakModalViewController.swift │ │ │ │ │ ├── StepQuizActionButtons │ │ │ │ │ ├── StepQuizActionButton.swift │ │ │ │ │ ├── StepQuizActionButtonState+SubmissionStatus.swift │ │ │ │ │ ├── StepQuizActionButtons.swift │ │ │ │ │ └── StepQuizRetryButton.swift │ │ │ │ │ ├── StepQuizSkeletonViewFactory.swift │ │ │ │ │ ├── StepQuizToolbarContent.swift │ │ │ │ │ ├── StepQuizUnsupportedView.swift │ │ │ │ │ └── StepQuizView.swift │ │ │ ├── StepQuizSubmodules │ │ │ │ ├── StepQuizChoice │ │ │ │ │ ├── StepQuizChoiceAssembly.swift │ │ │ │ │ ├── StepQuizChoiceViewData.swift │ │ │ │ │ ├── StepQuizChoiceViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizChoiceElementView.swift │ │ │ │ │ │ ├── StepQuizChoiceSkeletonView.swift │ │ │ │ │ │ └── StepQuizChoiceView.swift │ │ │ │ ├── StepQuizCode │ │ │ │ │ ├── StepQuizCodeAssembly.swift │ │ │ │ │ ├── StepQuizCodeNavigationState.swift │ │ │ │ │ ├── StepQuizCodeViewModel.swift │ │ │ │ │ ├── ViewData │ │ │ │ │ │ ├── StepQuizCodeViewData.swift │ │ │ │ │ │ └── StepQuizCodeViewDataMapper.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── Details │ │ │ │ │ │ ├── Samples │ │ │ │ │ │ │ ├── StepQuizCodeSampleItemView.swift │ │ │ │ │ │ │ └── StepQuizCodeSamplesView.swift │ │ │ │ │ │ └── StepQuizCodeDetailsView.swift │ │ │ │ │ │ ├── StepQuizCodeEditorView.swift │ │ │ │ │ │ ├── StepQuizCodeSkeletonView.swift │ │ │ │ │ │ └── StepQuizCodeView.swift │ │ │ │ ├── StepQuizCodeBlanks │ │ │ │ │ ├── StepQuizCodeBlanksAssembly.swift │ │ │ │ │ ├── StepQuizCodeBlanksOutputProtocol.swift │ │ │ │ │ ├── StepQuizCodeBlanksViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── CodeBlocks │ │ │ │ │ │ ├── ActionButtons │ │ │ │ │ │ │ ├── StepQuizCodeBlanksActionButton.swift │ │ │ │ │ │ │ └── StepQuizCodeBlanksActionButtonsView.swift │ │ │ │ │ │ ├── Children │ │ │ │ │ │ │ ├── StepQuizCodeBlanksCodeBlockChildBlankView.swift │ │ │ │ │ │ │ ├── StepQuizCodeBlanksCodeBlockChildTextView.swift │ │ │ │ │ │ │ └── StepQuizCodeBlanksCodeBlockChildView.swift │ │ │ │ │ │ ├── Conditions │ │ │ │ │ │ │ ├── StepQuizCodeBlanksElifStatementView.swift │ │ │ │ │ │ │ ├── StepQuizCodeBlanksElseStatementView.swift │ │ │ │ │ │ │ └── StepQuizCodeBlanksIfStatementView.swift │ │ │ │ │ │ ├── Print │ │ │ │ │ │ │ └── StepQuizCodeBlanksPrintInstructionView.swift │ │ │ │ │ │ ├── StepQuizCodeBlanksCodeBlocksView.swift │ │ │ │ │ │ └── Variable │ │ │ │ │ │ │ └── StepQuizCodeBlanksVariableInstructionView.swift │ │ │ │ │ │ ├── StepQuizCodeBlanksView.swift │ │ │ │ │ │ └── Suggestions │ │ │ │ │ │ └── StepQuizCodeBlanksSuggestionsView.swift │ │ │ │ ├── StepQuizCodeFullScreen │ │ │ │ │ ├── InputOutput │ │ │ │ │ │ ├── StepQuizCodeFullScreenInputProtocol.swift │ │ │ │ │ │ └── StepQuizCodeFullScreenOutputProtocol.swift │ │ │ │ │ ├── StepQuizCodeFullScreenAssembly.swift │ │ │ │ │ ├── StepQuizCodeFullScreenTab.swift │ │ │ │ │ ├── StepQuizCodeFullScreenViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizActionButtonCodeQuizDelegate.swift │ │ │ │ │ │ ├── StepQuizCodeFullScreenCodeView.swift │ │ │ │ │ │ ├── StepQuizCodeFullScreenDetailsView.swift │ │ │ │ │ │ └── StepQuizCodeFullScreenView.swift │ │ │ │ ├── StepQuizFillBlanks │ │ │ │ │ ├── StepQuizFillBlanksAssembly.swift │ │ │ │ │ ├── StepQuizFillBlanksViewModel.swift │ │ │ │ │ ├── ViewData │ │ │ │ │ │ ├── FillBlanksModeWrapper.swift │ │ │ │ │ │ ├── StepQuizFillBlanksViewData.swift │ │ │ │ │ │ ├── StepQuizFillBlanksViewDataMapper.swift │ │ │ │ │ │ └── StepQuizFillBlanksViewDataMapperCache.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── FillBlanksQuizViewWrapper.swift │ │ │ │ │ │ ├── StepQuizFillBlanksSkeletonView.swift │ │ │ │ │ │ ├── StepQuizFillBlanksView.swift │ │ │ │ │ │ └── UIKit │ │ │ │ │ │ ├── Cells │ │ │ │ │ │ ├── FillBlanksTextCollectionViewCell.swift │ │ │ │ │ │ ├── Input │ │ │ │ │ │ │ ├── FillBlanksInputCollectionViewCell.swift │ │ │ │ │ │ │ └── FillBlanksInputContainerView.swift │ │ │ │ │ │ └── Select │ │ │ │ │ │ │ ├── FillBlanksSelectCollectionViewCell.swift │ │ │ │ │ │ │ └── FillBlanksSelectContainerView.swift │ │ │ │ │ │ ├── FillBlanksQuizCollectionViewAdapter.swift │ │ │ │ │ │ ├── FillBlanksQuizTitleView.swift │ │ │ │ │ │ └── FillBlanksQuizView.swift │ │ │ │ ├── StepQuizFillBlanksSelectOptions │ │ │ │ │ ├── InputOutput │ │ │ │ │ │ ├── StepQuizFillBlanksSelectOptionsInputProtocol.swift │ │ │ │ │ │ └── StepQuizFillBlanksSelectOptionsOutputProtocol.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizFillBlanksSelectOptionsViewWrapper.swift │ │ │ │ │ │ └── UIKit │ │ │ │ │ │ ├── Cell │ │ │ │ │ │ ├── StepQuizFillBlanksSelectOptionsCollectionViewCell.swift │ │ │ │ │ │ └── StepQuizFillBlanksSelectOptionsCollectionViewCellContainerView.swift │ │ │ │ │ │ ├── StepQuizFillBlanksSelectOptionsCollectionViewAdapter.swift │ │ │ │ │ │ └── StepQuizFillBlanksSelectOptionsView.swift │ │ │ │ ├── StepQuizHints │ │ │ │ │ ├── StepQuizHintCardView.swift │ │ │ │ │ ├── StepQuizHintReactionButtonView.swift │ │ │ │ │ ├── StepQuizHintsView.swift │ │ │ │ │ ├── StepQuizHintsViewActionHandler.swift │ │ │ │ │ └── StepQuizShowHintButton.swift │ │ │ │ ├── StepQuizMatching │ │ │ │ │ ├── StepQuizMatchingAssembly.swift │ │ │ │ │ ├── StepQuizMatchingView.swift │ │ │ │ │ ├── StepQuizMatchingViewData.swift │ │ │ │ │ └── StepQuizMatchingViewModel.swift │ │ │ │ ├── StepQuizParsons │ │ │ │ │ ├── StepQuizParsonsAssembly.swift │ │ │ │ │ ├── StepQuizParsonsViewModel.swift │ │ │ │ │ ├── ViewData │ │ │ │ │ │ ├── StepQuizParsonsViewData.swift │ │ │ │ │ │ ├── StepQuizParsonsViewDataMapper.swift │ │ │ │ │ │ └── StepQuizParsonsViewDataMapperCodeContentCache.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizParsonsControlsView.swift │ │ │ │ │ │ ├── StepQuizParsonsItemView.swift │ │ │ │ │ │ ├── StepQuizParsonsSkeletonView.swift │ │ │ │ │ │ └── StepQuizParsonsView.swift │ │ │ │ ├── StepQuizPyCharm │ │ │ │ │ ├── StepQuizPyCharmAssembly.swift │ │ │ │ │ ├── StepQuizPyCharmView.swift │ │ │ │ │ ├── StepQuizPyCharmViewDataMapper.swift │ │ │ │ │ └── StepQuizPyCharmViewModel.swift │ │ │ │ ├── StepQuizSQL │ │ │ │ │ ├── StepQuizSQLAssembly.swift │ │ │ │ │ ├── StepQuizSQLViewDataMapper.swift │ │ │ │ │ ├── StepQuizSQLViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizSQLSkeletonView.swift │ │ │ │ │ │ └── StepQuizSQLView.swift │ │ │ │ ├── StepQuizSorting │ │ │ │ │ ├── StepQuizSortingAssembly.swift │ │ │ │ │ ├── StepQuizSortingViewData.swift │ │ │ │ │ ├── StepQuizSortingViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizSortingIcon.swift │ │ │ │ │ │ ├── StepQuizSortingItemView.swift │ │ │ │ │ │ ├── StepQuizSortingSkeletonView.swift │ │ │ │ │ │ └── StepQuizSortingView.swift │ │ │ │ ├── StepQuizString │ │ │ │ │ ├── StepQuizStringAssembly.swift │ │ │ │ │ ├── StepQuizStringDataType.swift │ │ │ │ │ ├── StepQuizStringViewModel.swift │ │ │ │ │ ├── ViewData │ │ │ │ │ │ ├── StepQuizStringViewData.swift │ │ │ │ │ │ └── StepQuizStringViewDataMapper.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizStringForcePromptScoreView.swift │ │ │ │ │ │ ├── StepQuizStringSkeletonView.swift │ │ │ │ │ │ └── StepQuizStringView.swift │ │ │ │ ├── StepQuizTable │ │ │ │ │ ├── StepQuizTableAssembly.swift │ │ │ │ │ ├── StepQuizTableViewData.swift │ │ │ │ │ ├── StepQuizTableViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── StepQuizTableRowView.swift │ │ │ │ │ │ ├── StepQuizTableSkeletonView.swift │ │ │ │ │ │ └── StepQuizTableView.swift │ │ │ │ └── StepQuizTableSelectColumns │ │ │ │ │ ├── StepQuizTableSelectColumnsColumnView.swift │ │ │ │ │ ├── StepQuizTableSelectColumnsHeaderView.swift │ │ │ │ │ ├── StepQuizTableSelectColumnsView.swift │ │ │ │ │ └── StepQuizTableSelectColumnsViewController.swift │ │ │ ├── Streak │ │ │ │ ├── StreakDayState.swift │ │ │ │ ├── StreakViewBuilder.swift │ │ │ │ └── Views │ │ │ │ │ ├── Modals │ │ │ │ │ ├── StreakFreezeModalViewController.swift │ │ │ │ │ ├── StreakRecoveryModalView.swift │ │ │ │ │ └── StreakRecoveryModalViewController.swift │ │ │ │ │ ├── StreakCardView.swift │ │ │ │ │ ├── StreakIcon.swift │ │ │ │ │ └── StreakView.swift │ │ │ ├── StudyPlan │ │ │ │ ├── Model │ │ │ │ │ ├── StudyPlanWidgetViewStateSectionContentPageLoadingStateWrapper.swift │ │ │ │ │ └── StudyPlanWidgetViewStateSectionItemStateWrapper.swift │ │ │ │ ├── StudyPlanAssembly.swift │ │ │ │ ├── StudyPlanViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── Section │ │ │ │ │ ├── Header │ │ │ │ │ │ ├── StudyPlanSectionHeaderStatisticsView.swift │ │ │ │ │ │ └── StudyPlanSectionHeaderView.swift │ │ │ │ │ ├── List │ │ │ │ │ │ ├── Item │ │ │ │ │ │ │ ├── StudyPlanSectionItemBadgesView.swift │ │ │ │ │ │ │ ├── StudyPlanSectionItemIconView.swift │ │ │ │ │ │ │ └── StudyPlanSectionItemView.swift │ │ │ │ │ │ └── StudyPlanSectionActivitiesList.swift │ │ │ │ │ ├── SectionContentPageLoadingState │ │ │ │ │ │ ├── StudyPlanSectionCompletedPageLoadingStateView.swift │ │ │ │ │ │ └── StudyPlanSectionNextPageLoadingStateView.swift │ │ │ │ │ ├── StudyPlanSectionErrorView.swift │ │ │ │ │ └── StudyPlanSectionView.swift │ │ │ │ │ ├── Skeleton │ │ │ │ │ └── StudyPlanSkeletonView.swift │ │ │ │ │ ├── StudyPlanPaywallBanner.swift │ │ │ │ │ └── StudyPlanView.swift │ │ │ ├── TopicCompletedModal │ │ │ │ ├── TopicCompletedModalAssembly.swift │ │ │ │ ├── TopicCompletedModalHostingController.swift │ │ │ │ ├── TopicCompletedModalOutputProtocol.swift │ │ │ │ ├── TopicCompletedModalViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── TopicCompletedModalBackgroundView.swift │ │ │ │ │ ├── TopicCompletedModalContentView.swift │ │ │ │ │ ├── TopicCompletedModalSpacebotAvatarView.swift │ │ │ │ │ └── TopicCompletedModalView.swift │ │ │ ├── TopicsRepetitions │ │ │ │ ├── RepeatButtonInfo.swift │ │ │ │ ├── TopicsRepetitionsAssembly.swift │ │ │ │ ├── TopicsRepetitionsViewModel.swift │ │ │ │ └── Views │ │ │ │ │ ├── Chart │ │ │ │ │ ├── TopicsRepetitionsChartAxis.swift │ │ │ │ │ ├── TopicsRepetitionsChartBar.swift │ │ │ │ │ └── TopicsRepetitionsChartBlock.swift │ │ │ │ │ ├── TopicsRepetitionsInfoBlock.swift │ │ │ │ │ ├── TopicsRepetitionsRepeatBlock.swift │ │ │ │ │ ├── TopicsRepetitionsStatusBlock.swift │ │ │ │ │ └── TopicsRepetitionsView.swift │ │ │ ├── TrackSelection │ │ │ │ ├── Details │ │ │ │ │ ├── TrackSelectionDetailsAssembly.swift │ │ │ │ │ ├── TrackSelectionDetailsViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ │ ├── Content │ │ │ │ │ │ ├── TrackSelectionDetailsContentView.swift │ │ │ │ │ │ ├── TrackSelectionDetailsDescriptionView.swift │ │ │ │ │ │ ├── TrackSelectionDetailsProvidersView.swift │ │ │ │ │ │ └── TrackSelectionDetailsTrackOverviewView.swift │ │ │ │ │ │ ├── Skeleton │ │ │ │ │ │ └── TrackSelectionDetailsSkeletonView.swift │ │ │ │ │ │ └── TrackSelectionDetailsView.swift │ │ │ │ └── List │ │ │ │ │ ├── Model │ │ │ │ │ └── TrackSelectionListFeatureViewStateContent+Placeholder.swift │ │ │ │ │ ├── TrackSelectionListAssembly.swift │ │ │ │ │ ├── TrackSelectionListViewModel.swift │ │ │ │ │ └── Views │ │ │ │ │ ├── Grid │ │ │ │ │ ├── Cell │ │ │ │ │ │ ├── TrackSelectionListGridCellBadgesView.swift │ │ │ │ │ │ └── TrackSelectionListGridCellView.swift │ │ │ │ │ └── TrackSelectionListGridView.swift │ │ │ │ │ ├── Skeleton │ │ │ │ │ ├── TrackSelectionListHeaderSkeletonView.swift │ │ │ │ │ └── TrackSelectionListSkeletonView.swift │ │ │ │ │ ├── TrackSelectionListHeaderView.swift │ │ │ │ │ └── TrackSelectionListView.swift │ │ │ ├── UsersInterviewWidget │ │ │ │ ├── UsersInterviewWidgetAssembly.swift │ │ │ │ ├── UsersInterviewWidgetOutputProtocol.swift │ │ │ │ ├── UsersInterviewWidgetView.swift │ │ │ │ └── UsersInterviewWidgetViewModel.swift │ │ │ ├── Welcome │ │ │ │ ├── WelcomeAssembly.swift │ │ │ │ ├── WelcomeOutputProtocol.swift │ │ │ │ ├── WelcomeView.swift │ │ │ │ └── WelcomeViewModel.swift │ │ │ └── WelcomeOnboarding │ │ │ │ ├── ChooseProgrammingLanguage │ │ │ │ └── WelcomeOnboardingChooseProgrammingLanguageView.swift │ │ │ │ ├── Finish │ │ │ │ ├── WelcomeOnboardingFinishAssembly.swift │ │ │ │ └── WelcomeOnboardingFinishView.swift │ │ │ │ ├── Questionnaire │ │ │ │ ├── WelcomeOnboardingQuestionnaireAssembly.swift │ │ │ │ ├── WelcomeOnboardingQuestionnaireView.swift │ │ │ │ └── WelcomeQuestionnaireItemType+ImageResource.swift │ │ │ │ ├── Root │ │ │ │ ├── WelcomeOnboardingAssembly.swift │ │ │ │ ├── WelcomeOnboardingOutputProtocol.swift │ │ │ │ ├── WelcomeOnboardingViewController.swift │ │ │ │ └── WelcomeOnboardingViewModel.swift │ │ │ │ ├── Start │ │ │ │ └── WelcomeOnboardingStartView.swift │ │ │ │ └── TrackDetails │ │ │ │ ├── Views │ │ │ │ ├── WelcomeOnboardingTrackDetailsContentView.swift │ │ │ │ └── WelcomeOnboardingTrackDetailsView.swift │ │ │ │ ├── WelcomeOnboardingTrackDetailsAssembly.swift │ │ │ │ ├── WelcomeOnboardingTrackDetailsOutputProtocol.swift │ │ │ │ └── WelcomeOnboardingTrackDetailsViewModel.swift │ │ ├── Protocols │ │ │ ├── ProgrammaticallyInitializableViewProtocol.swift │ │ │ └── Reusable.swift │ │ ├── Services │ │ │ ├── ApplicationShortcuts │ │ │ │ ├── ApplicationShortcutIdentifier.swift │ │ │ │ └── ApplicationShortcutsService.swift │ │ │ ├── ApplicationTheme │ │ │ │ ├── ApplicationTheme+SharedTheme.swift │ │ │ │ ├── ApplicationTheme.swift │ │ │ │ └── ApplicationThemeService.swift │ │ │ └── Auth │ │ │ │ └── Social │ │ │ │ ├── SDKs │ │ │ │ ├── AppleIDSocialAuthSDKProvider.swift │ │ │ │ ├── GoogleSocialAuthSDKProvider.swift │ │ │ │ └── SocialAuthSDKProvider.swift │ │ │ │ ├── SocialAuthService.swift │ │ │ │ └── Web │ │ │ │ ├── WebOAuthService.swift │ │ │ │ └── WebOAuthURLParser.swift │ │ ├── Systems │ │ │ ├── AmplitudeManager.swift │ │ │ ├── AppAppearance.swift │ │ │ ├── AppPowerModeObserver.swift │ │ │ ├── AppsFlyerManager.swift │ │ │ ├── FeedbackGenerator │ │ │ │ ├── FeedbackGenerator.swift │ │ │ │ └── FeedbackGeneratorPreviewView.swift │ │ │ ├── KeyboardManager.swift │ │ │ ├── NukeManager.swift │ │ │ ├── ProgressHUD.swift │ │ │ ├── PurchaseManager.swift │ │ │ └── Sentry │ │ │ │ ├── PlatformHyperskillSentryTransaction.swift │ │ │ │ └── SentryManager.swift │ │ └── Views │ │ │ ├── SwiftUI │ │ │ ├── Avatars │ │ │ │ ├── LazyAvatarView.swift │ │ │ │ └── ProjectLevelAvatarView.swift │ │ │ ├── BackgroundView.swift │ │ │ ├── BadgeView │ │ │ │ ├── BadgeView+ConcreateTypes.swift │ │ │ │ └── BadgeView.swift │ │ │ ├── CardView.swift │ │ │ ├── CheckboxButton.swift │ │ │ ├── Effects │ │ │ │ ├── BounceEffect.swift │ │ │ │ ├── JiggleEffect.swift │ │ │ │ ├── PulseEffect.swift │ │ │ │ └── ShineEffect.swift │ │ │ ├── Gradients │ │ │ │ └── BrandLinearGradient.swift │ │ │ ├── HSTabBar.swift │ │ │ ├── Hypercoins │ │ │ │ ├── HypercoinLabel.swift │ │ │ │ └── HypercoinsAwardView.swift │ │ │ ├── HyperskillLogoView.swift │ │ │ ├── Introspect │ │ │ │ ├── IntrospectScrollView.swift │ │ │ │ ├── IntrospectViewController.swift │ │ │ │ └── PullToRefresh.swift │ │ │ ├── Layouts │ │ │ │ └── FlowLayout.swift │ │ │ ├── NavigationToolbarInfoItem.swift │ │ │ ├── OffsetObservingScrollView.swift │ │ │ ├── OpenURLInsideAppButton.swift │ │ │ ├── PlaceholderView │ │ │ │ ├── PlaceholderView+Configurations.swift │ │ │ │ └── PlaceholderView.swift │ │ │ ├── ProgressView │ │ │ │ ├── BackgroundProgressView.swift │ │ │ │ ├── LinearGradientProgressView.swift │ │ │ │ └── LinearIndeterminateProgressView.swift │ │ │ ├── RadioButton.swift │ │ │ ├── ShowMoreButton.swift │ │ │ ├── Skeletons │ │ │ │ ├── SkeletonCircleView.swift │ │ │ │ ├── SkeletonRoundedButton.swift │ │ │ │ └── SkeletonRoundedView.swift │ │ │ ├── StarRatingView.swift │ │ │ ├── Styles │ │ │ │ └── Buttons │ │ │ │ │ ├── BounceButtonStyle.swift │ │ │ │ │ ├── GhostButtonStyle.swift │ │ │ │ │ ├── OutlineButtonStyle.swift │ │ │ │ │ └── RoundedRectangleButtonStyle.swift │ │ │ ├── TabNavigationLazyView.swift │ │ │ ├── TextEffects │ │ │ │ ├── HackerTextView.swift │ │ │ │ └── TypewrittenTextView.swift │ │ │ ├── VerticalCenteredScrollView.swift │ │ │ └── Wrappers │ │ │ │ ├── AttributedTextLabelWrapper.swift │ │ │ │ ├── BackgroundVideoView.swift │ │ │ │ ├── LottieAnimationViewWrapper.swift │ │ │ │ ├── TextFieldWrapper.swift │ │ │ │ ├── TransparentBlurView.swift │ │ │ │ └── UIViewControllerEvents │ │ │ │ ├── UIViewControllerEventsWrapper.swift │ │ │ │ └── ViewRelatedEventsViewController.swift │ │ │ └── UIKit │ │ │ ├── CollectionViewLayouts │ │ │ └── LeftAlignedCollectionViewFlowLayout.swift │ │ │ ├── UIKitBounceButton.swift │ │ │ ├── UIKitIntrospectionView.swift │ │ │ ├── UIKitRoundedRectangleButton.swift │ │ │ ├── UIKitScrollableStackView.swift │ │ │ ├── UIKitSeparatorView.swift │ │ │ └── UIKitTapProxyView.swift │ ├── Theme │ │ ├── Color+DesignSystem.swift │ │ ├── ColorPalette.swift │ │ └── UIColor+DesignSystem.swift │ ├── TopicCompletedModalBackgroundVideos │ │ ├── topic-completed-modal-background-video-414-dark-1.mp4 │ │ ├── topic-completed-modal-background-video-414-dark-2.mp4 │ │ ├── topic-completed-modal-background-video-414-light-1.mp4 │ │ ├── topic-completed-modal-background-video-414-light-2.mp4 │ │ ├── topic-completed-modal-background-video-430-dark-1.mp4 │ │ ├── topic-completed-modal-background-video-430-dark-2.mp4 │ │ ├── topic-completed-modal-background-video-430-light-1.mp4 │ │ ├── topic-completed-modal-background-video-430-light-2.mp4 │ │ ├── topic-completed-modal-background-video-834-dark-1.mp4 │ │ ├── topic-completed-modal-background-video-834-dark-2.mp4 │ │ ├── topic-completed-modal-background-video-834-light-1.mp4 │ │ └── topic-completed-modal-background-video-834-light-2.mp4 │ ├── alt.css │ ├── altcontent.css │ ├── bootstrap.css │ ├── en.lproj │ │ └── Localizable.strings │ ├── fonts.css │ ├── highlight.css │ ├── highlight.js │ ├── icons.css │ ├── iosHyperskillApp-Bridging-Header.h │ ├── iosHyperskillApp.entitlements │ ├── jquery-3.4.1.min.js │ ├── kotlin-playground-1.21.1.min.js │ ├── lines_wrapper.js │ ├── step.css │ ├── variables.css │ └── wysiwyg.css ├── iosHyperskillAppTests │ ├── CollectionsTests │ │ ├── LinkedListTests.swift │ │ └── QueueTests.swift │ ├── ExtensionsTests │ │ ├── UIStackViewExtensionTests.swift │ │ └── URLExtensionsTests.swift │ ├── FrameworksTests │ │ ├── CodeEditor │ │ │ └── CodePlaygroundManager │ │ │ │ ├── CodePlaygroundGetChangesSubstringPerformanceTests.swift │ │ │ │ ├── CodePlaygroundGetChangesSubstringTests.swift │ │ │ │ ├── CodePlaygroundGetCurrentTokenPerformanceTests.swift │ │ │ │ ├── CodePlaygroundGetCurrentTokenTests.swift │ │ │ │ ├── CodePlaygroundManagerCountTabSizePerformanceTests.swift │ │ │ │ ├── CodePlaygroundManagerCountTabSizeTests.swift │ │ │ │ ├── CodePlaygroundShouldMakeTabLineAfterPerformanceTests.swift │ │ │ │ └── CodePlaygroundShouldMakeTabLineAfterTests.swift │ │ └── ContentProcessor │ │ │ ├── HTMLExtractorTests.swift │ │ │ └── HTMLStringTests.swift │ ├── Info.plist │ └── IntrospectTests │ │ ├── IntrospectScrollViewTests.swift │ │ ├── IntrospectTestUtils.swift │ │ └── IntrospectViewControllerTests.swift ├── iosHyperskillAppUITests │ ├── Info.plist │ ├── LaunchPerformanceTests.swift │ └── LaunchTests.swift └── lint.sh ├── resources ├── badges │ ├── appstore.png │ └── google-play.png └── screenshots │ ├── 01.webp │ ├── 02.webp │ └── 03.webp ├── sentry.properties ├── settings.gradle.kts ├── setup_new_release_branch.sh └── shared ├── build.gradle.kts ├── keys ├── main.properties └── production.properties ├── shared.podspec └── src ├── androidMain ├── AndroidManifest.xml ├── keys │ └── revenuecat.properties ├── kotlin │ └── org │ │ └── hyperskill │ │ └── app │ │ ├── analytic │ │ ├── domain │ │ │ ├── amplitude │ │ │ │ └── AndroidAmplitudeAnalyticEngine.kt │ │ │ └── apps_flyer │ │ │ │ └── AndroidAppsFlyerAnalyticEngine.kt │ │ └── injection │ │ │ ├── PlatformAnalyticComponent.kt │ │ │ └── PlatformAnalyticComponentImpl.kt │ │ ├── auth │ │ ├── injection │ │ │ ├── PlatformAuthCredentialsComponent.kt │ │ │ ├── PlatformAuthCredentialsComponentImpl.kt │ │ │ ├── PlatformAuthSocialComponent.kt │ │ │ ├── PlatformAuthSocialComponentImpl.kt │ │ │ ├── PlatformAuthSocialWebViewComponent.kt │ │ │ └── PlatformAuthSocialWebViewComponentImpl.kt │ │ └── presentation │ │ │ ├── AuthCredentialsViewModel.kt │ │ │ ├── AuthSocialViewModel.kt │ │ │ └── AuthSocialWebViewViewModel.kt │ │ ├── comments │ │ ├── injection │ │ │ ├── PlatformCommentsComponent.kt │ │ │ └── PlatformCommentsComponentImpl.kt │ │ └── presentation │ │ │ └── CommentsViewModel.kt │ │ ├── core │ │ ├── domain │ │ │ └── platform │ │ │ │ └── Platform.kt │ │ ├── flowredux │ │ │ ├── presentation │ │ │ │ ├── FlowView.kt │ │ │ │ ├── ReduxFlowView.kt │ │ │ │ ├── ReduxFlowViewModel.kt │ │ │ │ └── WrapWithFlowView.kt │ │ │ └── view │ │ │ │ └── HandleActions.kt │ │ ├── injection │ │ │ ├── CommonAndroidAppGraph.kt │ │ │ ├── CommonAndroidAppGraphImpl.kt │ │ │ ├── CommonComponentImpl.kt │ │ │ ├── ReduxViewModelFactory.kt │ │ │ └── SavedStateReduxViewModelFactory.kt │ │ ├── utils │ │ │ └── RegexUtils.android.kt │ │ └── view │ │ │ └── mapper │ │ │ └── ResourceProviderImpl.kt │ │ ├── debug │ │ ├── injection │ │ │ ├── PlatformDebugComponent.kt │ │ │ └── PlatformDebugComponentImpl.kt │ │ └── presentation │ │ │ └── DebugViewModel.kt │ │ ├── first_problem_onboarding │ │ ├── injection │ │ │ ├── PlatformFirstProblemOnboardingComponent.kt │ │ │ └── PlatformFirstProblemOnboardingComponentImpl.kt │ │ └── presentation │ │ │ └── FirstProblemOnboardingViewModel.kt │ │ ├── home │ │ ├── injection │ │ │ ├── PlatformHomeComponent.kt │ │ │ └── PlatformHomeComponentImpl.kt │ │ └── presentation │ │ │ └── HomeViewModel.kt │ │ ├── leaderboard │ │ ├── injection │ │ │ ├── PlatformLeaderboardComponent.kt │ │ │ └── PlatformLeaderboardComponentImpl.kt │ │ └── presentation │ │ │ └── LeaderboardViewModel.kt │ │ ├── main │ │ ├── injection │ │ │ ├── PlatformMainComponent.kt │ │ │ └── PlatformMainComponentImpl.kt │ │ └── presentation │ │ │ └── MainViewModel.kt │ │ ├── manage_subscription │ │ ├── injection │ │ │ ├── PlatformManageSubscriptionComponent.kt │ │ │ └── PlatformManageSubscriptionComponentImpl.kt │ │ └── presentation │ │ │ └── ManageSubscriptionViewModel.kt │ │ ├── network │ │ └── PreconfiguredHttpClient.kt │ │ ├── notification │ │ └── remote │ │ │ ├── data │ │ │ └── AndroidFCMTokenRepository.kt │ │ │ └── injection │ │ │ └── AndroidPlatformPushNotificationsPlatformDataComponent.kt │ │ ├── notifications_onboarding │ │ ├── injection │ │ │ ├── PlatformNotificationsOnboardingComponent.kt │ │ │ └── PlatformNotificationsOnboardingComponentImpl.kt │ │ └── presentation │ │ │ └── NotificationsOnboardingViewModel.kt │ │ ├── paywall │ │ ├── injection │ │ │ ├── PlatformPaywallComponent.kt │ │ │ └── PlatformPaywallComponentImpl.kt │ │ └── presentation │ │ │ └── PaywallViewModel.kt │ │ ├── play_services │ │ ├── data │ │ │ └── PlayServicesCheckerImpl.kt │ │ ├── domain │ │ │ └── PlayServicesChecker.kt │ │ └── injection │ │ │ ├── PlayServicesCheckerComponent.kt │ │ │ └── PlayServicesCheckerComponentImpl.kt │ │ ├── problems_limit_info │ │ ├── injection │ │ │ ├── PlatformProblemsLimitInfoModalComponent.kt │ │ │ └── PlatformProblemsLimitInfoModalComponentImpl.kt │ │ └── presentation │ │ │ └── ProblemsLimitInfoModalViewModel.kt │ │ ├── profile │ │ ├── injection │ │ │ ├── PlatformProfileComponent.kt │ │ │ └── PlatformProfileComponentImpl.kt │ │ └── presentation │ │ │ ├── ProfileSettingsViewModel.kt │ │ │ └── ProfileViewModel.kt │ │ ├── profile_settings │ │ └── injection │ │ │ ├── PlatformProfileSettingsComponent.kt │ │ │ └── PlatformProfileSettingsComponentImpl.kt │ │ ├── progress │ │ ├── injection │ │ │ ├── PlatformProgressScreenComponent.kt │ │ │ └── PlatformProgressScreenComponentImpl.kt │ │ └── presentation │ │ │ └── ProgressScreenViewModel.kt │ │ ├── project_selection │ │ ├── details │ │ │ ├── injection │ │ │ │ ├── PlatformProjectSelectionDetailsComponent.kt │ │ │ │ └── PlatformProjectSelectionDetailsComponentImpl.kt │ │ │ └── presentation │ │ │ │ └── ProjectSelectionDetailsViewModel.kt │ │ └── list │ │ │ ├── injection │ │ │ ├── PlatformProjectSelectionListComponent.kt │ │ │ └── PlatformProjectSelectionListComponentImpl.kt │ │ │ └── presentation │ │ │ └── ProjectSelectionListViewModel.kt │ │ ├── purchases │ │ └── domain │ │ │ ├── AndroidPurchaseManager.kt │ │ │ └── model │ │ │ ├── HyperskillStoreProduct.kt │ │ │ ├── PlatformProductIdentifiers.kt │ │ │ └── PlatformPurchaseParams.kt │ │ ├── request_review │ │ ├── injection │ │ │ ├── PlatformRequestReviewComponent.kt │ │ │ └── PlatformRequestReviewComponentImpl.kt │ │ └── presentation │ │ │ └── RequestReviewModalViewModel.kt │ │ ├── search │ │ ├── injection │ │ │ ├── PlatformSearchComponent.kt │ │ │ └── PlatformSearchComponentImpl.kt │ │ └── presentation │ │ │ └── SearchViewModel.kt │ │ ├── stage_implementation │ │ ├── injection │ │ │ ├── PlatformStageImplementationComponent.kt │ │ │ └── PlatformStageImplementationComponentImpl.kt │ │ └── presentation │ │ │ └── StageImplementationViewModel.kt │ │ ├── step │ │ ├── domain │ │ │ └── model │ │ │ │ └── BlockName.kt │ │ ├── injection │ │ │ ├── PlatformStepComponent.kt │ │ │ └── PlatformStepComponentImpl.kt │ │ └── presentation │ │ │ └── StepViewModel.kt │ │ ├── step_feedback │ │ ├── injection │ │ │ ├── PlatformStepFeedbackComponent.kt │ │ │ └── PlatformStepFeedbackComponentImpl.kt │ │ └── presentation │ │ │ └── StepFeedbackViewModel.kt │ │ ├── step_quiz │ │ ├── injection │ │ │ ├── PlatformStepQuizComponent.kt │ │ │ └── PlatformStepQuizComponentImpl.kt │ │ └── presentation │ │ │ └── StepQuizViewModel.kt │ │ ├── study_plan │ │ ├── injection │ │ │ ├── PlatformStudyPlanScreenComponent.kt │ │ │ └── PlatformStudyPlanScreenComponentImpl.kt │ │ └── presentation │ │ │ └── StudyPlanScreenViewModel.kt │ │ ├── topic_completed_modal │ │ ├── injection │ │ │ ├── PlatformTopicCompletedModalComponent.kt │ │ │ └── PlatformTopicCompletedModalComponentImpl.kt │ │ └── presentation │ │ │ └── TopicCompletedModalViewModel.kt │ │ ├── topics_repetitions │ │ ├── injection │ │ │ ├── PlatformTopicsRepetitionComponent.kt │ │ │ └── PlatformTopicsRepetitionComponentImpl.kt │ │ └── presentation │ │ │ └── TopicsRepetitionViewModel.kt │ │ ├── track_selection │ │ ├── details │ │ │ ├── injection │ │ │ │ ├── PlatformTrackSelectionDetailsComponent.kt │ │ │ │ └── PlatformTrackSelectionDetailsComponentImpl.kt │ │ │ └── presentation │ │ │ │ └── TrackSelectionDetailsViewModel.kt │ │ └── list │ │ │ ├── injection │ │ │ ├── PlatformTrackSelectionListComponent.kt │ │ │ └── PlatformTrackSelectionListComponentImpl.kt │ │ │ └── presentation │ │ │ └── TrackSelectionListViewModel.kt │ │ ├── welcome │ │ ├── injection │ │ │ ├── PlatformWelcomeComponent.kt │ │ │ └── PlatformWelcomeComponentImpl.kt │ │ └── presentation │ │ │ └── WelcomeViewModel.kt │ │ └── welcome_onboarding │ │ ├── root │ │ ├── injection │ │ │ ├── PlatformWelcomeOnboardingComponent.kt │ │ │ └── PlatformWelcomeOnboardingComponentImpl.kt │ │ └── presentation │ │ │ └── WelcomeOnboardingViewModel.kt │ │ └── track_details │ │ ├── injection │ │ ├── PlatformWelcomeOnboardingTrackDetailsComponent.kt │ │ └── PlatformWelcomeOnboardingTrackDetailsComponentImpl.kt │ │ └── presentation │ │ └── WelcomeOnboardingTrackDetailsViewModel.kt └── proguard-rules.pro ├── androidUnitTest └── kotlin │ └── org │ └── hyperskill │ └── step_quiz │ └── AndroidStepQuizTest.kt ├── commonMain ├── kotlin │ └── org │ │ └── hyperskill │ │ └── app │ │ ├── analytic │ │ ├── cache │ │ │ └── AnalyticHyperskillCacheDataSourceImpl.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── AnalyticHyperskillRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── AnalyticHyperskillCacheDataSource.kt │ │ │ │ └── AnalyticHyperskillRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── AnalyticInteractor.kt │ │ │ ├── model │ │ │ │ ├── Analytic.kt │ │ │ │ ├── AnalyticEngine.kt │ │ │ │ ├── AnalyticEvent.kt │ │ │ │ ├── AnalyticEventUserProperties.kt │ │ │ │ ├── AnalyticKeys.kt │ │ │ │ ├── AnalyticSource.kt │ │ │ │ ├── amplitude │ │ │ │ │ ├── AmplitudeAnalyticEngine.kt │ │ │ │ │ └── AmplitudeAnalyticEvent.kt │ │ │ │ ├── apps_flyer │ │ │ │ │ ├── AppsFlyerAnalyticEngine.kt │ │ │ │ │ └── AppsFlyerAnalyticEvent.kt │ │ │ │ ├── hyperskill │ │ │ │ │ ├── HyperskillAnalyticAction.kt │ │ │ │ │ ├── HyperskillAnalyticEngine.kt │ │ │ │ │ ├── HyperskillAnalyticEngineImpl.kt │ │ │ │ │ ├── HyperskillAnalyticEvent.kt │ │ │ │ │ ├── HyperskillAnalyticPart.kt │ │ │ │ │ ├── HyperskillAnalyticRoute.kt │ │ │ │ │ ├── HyperskillAnalyticTarget.kt │ │ │ │ │ └── HyperskillProcessedAnalyticEvent.kt │ │ │ │ └── monitor │ │ │ │ │ ├── AnalyticEventMonitor.kt │ │ │ │ │ ├── BatchAnalyticEventMonitor.kt │ │ │ │ │ └── LoggableAnalyticEventMonitor.kt │ │ │ ├── processor │ │ │ │ ├── AmplitudeAnalyticEventMapper.kt │ │ │ │ └── AnalyticHyperskillEventProcessor.kt │ │ │ └── repository │ │ │ │ └── AnalyticHyperskillRepository.kt │ │ ├── injection │ │ │ ├── AnalyticComponent.kt │ │ │ ├── AnalyticComponentImpl.kt │ │ │ ├── HyperskillAnalyticEngineComponent.kt │ │ │ └── HyperskillAnalyticEngineComponentImpl.kt │ │ ├── presentation │ │ │ └── WrapWithAnalyticLogger.kt │ │ └── remote │ │ │ ├── AnalyticHyperskillRemoteDataSourceImpl.kt │ │ │ ├── exception │ │ │ └── AnalyticHyperskillResponseException.kt │ │ │ └── model │ │ │ └── AnalyticHyperskillRequest.kt │ │ ├── auth │ │ ├── cache │ │ │ ├── AuthCacheDataSourceImpl.kt │ │ │ └── AuthCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── AuthRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── AuthCacheDataSource.kt │ │ │ │ └── AuthRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── AuthAnalyticKeys.kt │ │ │ │ ├── AuthCredentialsClickedContinueWithSocialHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthCredentialsClickedResetPasswordHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthCredentialsClickedSignInHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthCredentialsFailedHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthCredentialsViewedHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthSignInAmplitudeAnalyticEvent.kt │ │ │ │ ├── AuthSignInAppsFlyerAnalyticEvent.kt │ │ │ │ ├── AuthSignUpAmplitudeAnalyticEvent.kt │ │ │ │ ├── AuthSignUpAppsFlyerAnalyticEvent.kt │ │ │ │ ├── AuthSocialClickedContinueWithEmailHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthSocialClickedSignInWithSocialHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthSocialFailedHyperskillAnalyticEvent.kt │ │ │ │ ├── AuthSocialViewedHyperskillAnalyticEvent.kt │ │ │ │ └── GetAnalyticTarget.kt │ │ │ ├── exception │ │ │ │ ├── AuthCredentialsException.kt │ │ │ │ └── AuthSocialException.kt │ │ │ ├── interactor │ │ │ │ └── AuthInteractor.kt │ │ │ ├── model │ │ │ │ ├── AuthCredentialsError.kt │ │ │ │ ├── AuthSocialError.kt │ │ │ │ ├── SocialAuthProvider.kt │ │ │ │ └── UserDeauthorized.kt │ │ │ └── repository │ │ │ │ └── AuthRepository.kt │ │ ├── injection │ │ │ ├── AuthComponent.kt │ │ │ ├── AuthComponentImpl.kt │ │ │ ├── AuthCredentialsComponent.kt │ │ │ ├── AuthCredentialsComponentImpl.kt │ │ │ ├── AuthCredentialsFeatureBuilder.kt │ │ │ ├── AuthDataBuilder.kt │ │ │ ├── AuthSocialComponent.kt │ │ │ ├── AuthSocialComponentImpl.kt │ │ │ ├── AuthSocialFeatureBuilder.kt │ │ │ └── AuthSocialWebViewFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── AuthCredentialsActionDispatcher.kt │ │ │ ├── AuthCredentialsFeature.kt │ │ │ ├── AuthCredentialsReducer.kt │ │ │ ├── AuthSocialActionDispatcher.kt │ │ │ ├── AuthSocialFeature.kt │ │ │ ├── AuthSocialReducer.kt │ │ │ ├── AuthSocialWebViewActionDispatcher.kt │ │ │ ├── AuthSocialWebViewFeature.kt │ │ │ └── AuthSocialWebViewReducer.kt │ │ ├── remote │ │ │ ├── model │ │ │ │ ├── AuthResponse.kt │ │ │ │ └── AuthSocialErrorResponse.kt │ │ │ └── source │ │ │ │ └── AuthRemoteDataSourceImpl.kt │ │ └── view │ │ │ └── mapper │ │ │ ├── AuthCredentialsErrorMapper.kt │ │ │ ├── AuthSocialErrorMapper.kt │ │ │ └── SocialAuthProviderRequestURLBuilder.kt │ │ ├── badges │ │ ├── data │ │ │ ├── repository │ │ │ │ └── BadgesRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── BadgesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Badge.kt │ │ │ │ ├── BadgeKind.kt │ │ │ │ └── BadgeRank.kt │ │ │ └── repository │ │ │ │ └── BadgesRepository.kt │ │ ├── injection │ │ │ ├── BadgesDataComponent.kt │ │ │ └── BadgesDataComponentImpl.kt │ │ └── remote │ │ │ ├── BadgesRemoteDataSourceImpl.kt │ │ │ └── BadgesResponse.kt │ │ ├── challenges │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ChallengesRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ChallengesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Challenge.kt │ │ │ │ └── ChallengeStatus.kt │ │ │ └── repository │ │ │ │ └── ChallengesRepository.kt │ │ ├── injection │ │ │ ├── ChallengesDataComponent.kt │ │ │ └── ChallengesDataComponentImpl.kt │ │ ├── remote │ │ │ ├── ChallengesRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ └── ChallengesResponse.kt │ │ └── widget │ │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── ChallengeWidgetAnalyticParams.kt │ │ │ │ ├── ChallengeWidgetClickedCollectRewardHyperskillAnalyticEvent.kt │ │ │ │ ├── ChallengeWidgetClickedDeadlineReloadHyperskillAnalyticEvent.kt │ │ │ │ ├── ChallengeWidgetClickedLinkInTheDescriptionHyperskillAnalyticEvent.kt │ │ │ │ └── ChallengeWidgetClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ ├── ChallengeWidgetComponent.kt │ │ │ └── ChallengeWidgetComponentImpl.kt │ │ │ ├── presentation │ │ │ ├── ChallengeWidgetActionDispatcher.kt │ │ │ ├── ChallengeWidgetFeature.kt │ │ │ ├── ChallengeWidgetReducer.kt │ │ │ ├── MainChallengeWidgetActionDispatcher.kt │ │ │ └── StateExtentions.kt │ │ │ └── view │ │ │ ├── mapper │ │ │ └── ChallengeWidgetViewStateMapper.kt │ │ │ └── model │ │ │ └── ChallengeWidgetViewState.kt │ │ ├── code │ │ └── domain │ │ │ └── model │ │ │ └── ProgrammingLanguage.kt │ │ ├── comments │ │ ├── data │ │ │ ├── repository │ │ │ │ └── CommentsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── CommentsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Comment.kt │ │ │ │ ├── CommentAuthor.kt │ │ │ │ ├── CommentReaction.kt │ │ │ │ ├── CommentStatisticsEntry.kt │ │ │ │ └── CommentThread.kt │ │ │ └── repository │ │ │ │ └── CommentsRepository.kt │ │ ├── injection │ │ │ ├── CommentsDataComponent.kt │ │ │ └── CommentsDataComponentImpl.kt │ │ ├── remote │ │ │ ├── CommentsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ └── CommentsResponse.kt │ │ └── screen │ │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── CommentsScreenClickedReactionHyperskillAnalyticEvent.kt │ │ │ │ ├── CommentsScreenClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ ├── CommentsScreenClickedShowDiscussionRepliesHyperskillAnalyticEvent.kt │ │ │ │ ├── CommentsScreenClickedShowMoreDiscussionsHyperskillAnalyticEvent.kt │ │ │ │ └── CommentsScreenViewedHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── CommentsScreenInteractor.kt │ │ │ └── model │ │ │ │ └── CommentsScreenFeatureParams.kt │ │ │ ├── injection │ │ │ ├── CommentsScreenComponent.kt │ │ │ ├── CommentsScreenComponentImpl.kt │ │ │ └── CommentsScreenFeatureBuilder.kt │ │ │ ├── presentation │ │ │ ├── CommentsScreenActionDispatcher.kt │ │ │ ├── CommentsScreenFeature.kt │ │ │ └── CommentsScreenReducer.kt │ │ │ └── view │ │ │ ├── mapper │ │ │ ├── CommentThreadTitleMapper.kt │ │ │ └── CommentsScreenViewStateMapper.kt │ │ │ └── model │ │ │ └── CommentsScreenViewState.kt │ │ ├── config │ │ ├── BuildKonfig.kt │ │ └── BuildKonfigModule.kt │ │ ├── core │ │ ├── data │ │ │ ├── repository │ │ │ │ └── BaseStateRepository.kt │ │ │ └── repository_cache │ │ │ │ └── InMemoryRepositoryCache.kt │ │ ├── domain │ │ │ ├── BuildVariant.kt │ │ │ ├── DataSourceType.kt │ │ │ ├── LogError.kt │ │ │ ├── flow │ │ │ │ └── SharedDataFlow.kt │ │ │ ├── model │ │ │ │ ├── ContentType.kt │ │ │ │ └── ScreenOrientation.kt │ │ │ ├── platform │ │ │ │ ├── Platform.kt │ │ │ │ └── PlatformType.kt │ │ │ ├── repository │ │ │ │ ├── InMemoryStateHolder.kt │ │ │ │ ├── StateHolder.kt │ │ │ │ ├── StateRepository.kt │ │ │ │ └── StateWithSource.kt │ │ │ ├── repository_cache │ │ │ │ ├── RepositoryCache.kt │ │ │ │ └── RepositoryCacheProxy.kt │ │ │ └── url │ │ │ │ ├── HyperskillUrlBuilder.kt │ │ │ │ └── HyperskillUrlPath.kt │ │ ├── injection │ │ │ ├── AppGraph.kt │ │ │ ├── BaseAppGraph.kt │ │ │ ├── CommonComponent.kt │ │ │ ├── StateRepositoriesComponent.kt │ │ │ └── StateRepositoriesComponentImpl.kt │ │ ├── presentation │ │ │ ├── ActionDispatcherOptions.kt │ │ │ ├── CompletableCoroutineActionDispatcher.kt │ │ │ ├── CompletableCoroutineActionDispatcherConfig.kt │ │ │ ├── CompositeActionDispatcher.kt │ │ │ ├── Timer.kt │ │ │ └── TransformState.kt │ │ ├── remote │ │ │ ├── Meta.kt │ │ │ ├── MetaResponse.kt │ │ │ └── UserAgentInfo.kt │ │ ├── utils │ │ │ ├── CollectionExtensions.kt │ │ │ ├── CollectionToJsonElement.kt │ │ │ ├── DateTimeUtils.kt │ │ │ └── RegexUtils.kt │ │ └── view │ │ │ └── mapper │ │ │ ├── NumbersFormatter.kt │ │ │ ├── ResourceProvider.kt │ │ │ └── date │ │ │ ├── MonthFormatter.kt │ │ │ └── SharedDateFormatter.kt │ │ ├── debug │ │ ├── cache │ │ │ ├── DebugCacheDataSourceImpl.kt │ │ │ └── DebugCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── DebugRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── DebugCacheDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── DebugInteractor.kt │ │ │ ├── model │ │ │ │ ├── DebugSettings.kt │ │ │ │ └── EndpointConfigType.kt │ │ │ └── repository │ │ │ │ └── DebugRepository.kt │ │ ├── injection │ │ │ ├── DebugComponent.kt │ │ │ ├── DebugComponentImpl.kt │ │ │ └── DebugFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── DebugActionDispatcher.kt │ │ │ ├── DebugFeature.kt │ │ │ └── DebugReducer.kt │ │ └── view │ │ │ └── DebugViewStateMapper.kt │ │ ├── devices │ │ ├── cache │ │ │ ├── CurrentDeviceCacheDataSourceImpl.kt │ │ │ └── DevicesCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── DevicesRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── CurrentDeviceCacheDataSource.kt │ │ │ │ └── DevicesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Device.kt │ │ │ │ └── DeviceType.kt │ │ │ └── repository │ │ │ │ └── DevicesRepository.kt │ │ ├── injection │ │ │ ├── DevicesDataComponent.kt │ │ │ └── DevicesDataComponentImpl.kt │ │ └── remote │ │ │ └── DevicesRemoteDataSourceImpl.kt │ │ ├── discussions │ │ ├── data │ │ │ ├── repository │ │ │ │ └── DiscussionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── DiscussionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ └── Discussion.kt │ │ │ └── repository │ │ │ │ └── DiscussionsRepository.kt │ │ ├── injection │ │ │ ├── DiscussionsDataComponent.kt │ │ │ └── DiscussionsDataComponentImpl.kt │ │ └── remote │ │ │ ├── DiscussionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── DiscussionsRequest.kt │ │ │ └── DiscussionsResponse.kt │ │ ├── features │ │ └── data │ │ │ └── source │ │ │ └── FeaturesDataSource.kt │ │ ├── first_problem_onboarding │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── FirstProblemOnboardingClickedLearningActionHyperskillAnalyticEvent.kt │ │ │ │ ├── FirstProblemOnboardingViewedHyperskillAnalyticEvent.kt │ │ │ │ └── OnboardingCompletionAppsFlyerAnalyticEvent.kt │ │ ├── injection │ │ │ ├── FirstProblemOnboardingComponent.kt │ │ │ ├── FirstProblemOnboardingComponentImpl.kt │ │ │ └── FirstProblemOnboardingFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── FirstProblemOnboardingActionDispatcher.kt │ │ │ ├── FirstProblemOnboardingFeature.kt │ │ │ └── FirstProblemOnboardingReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── FirstProblemOnboardingViewStateMapper.kt │ │ ├── gamification_toolbar │ │ ├── data │ │ │ ├── repository │ │ │ │ └── CurrentGamificationToolbarDataStateRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── GamificationToolbarRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── GamificationToolbarClickedProblemsLimitHSAnalyticEvent.kt │ │ │ │ ├── GamificationToolbarClickedProgressHyperskillAnalyticEvent.kt │ │ │ │ ├── GamificationToolbarClickedSearchHyperskillAnalyticEvent.kt │ │ │ │ └── GamificationToolbarClickedStreakHyperskillAnalyticEvent.kt │ │ │ ├── model │ │ │ │ ├── GamificationToolbarData.kt │ │ │ │ ├── GamificationToolbarScreen.kt │ │ │ │ └── GamificationToolbarTrackProgress.kt │ │ │ └── repository │ │ │ │ └── CurrentGamificationToolbarDataStateRepository.kt │ │ ├── injection │ │ │ ├── GamificationToolbarComponent.kt │ │ │ └── GamificationToolbarComponentImpl.kt │ │ ├── presentation │ │ │ ├── GamificationToolbarActionDispatcher.kt │ │ │ ├── GamificationToolbarFeature.kt │ │ │ ├── GamificationToolbarReducer.kt │ │ │ └── MainGamificationToolbarActionDispatcher.kt │ │ ├── remote │ │ │ ├── GamificationToolbarRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ └── CurrentGamificationToolbarResponse.kt │ │ └── view │ │ │ └── mapper │ │ │ └── GamificationToolbarViewStateMapper.kt │ │ ├── home │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── HomeClickedProblemOfDayCardHyperskillAnalyticEvent.kt │ │ │ │ ├── HomeClickedProblemOfDayCardReloadHyperskillAnalyticEvent.kt │ │ │ │ ├── HomeClickedPullToRefreshHyperskillAnalyticEvent.kt │ │ │ │ ├── HomeClickedTopicsRepetitionsCardHyperskillAnalyticEvent.kt │ │ │ │ ├── HomeHyperskillAnalyticParams.kt │ │ │ │ └── HomeViewedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── HomeComponent.kt │ │ │ ├── HomeComponentImpl.kt │ │ │ └── HomeFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── HomeActionDispatcher.kt │ │ │ ├── HomeFeature.kt │ │ │ └── HomeReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── HomeViewStateMapper.kt │ │ ├── hypercoins │ │ └── domain │ │ │ └── HypercoinsAwards.kt │ │ ├── items │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ItemsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ItemsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── ItemsInteractor.kt │ │ │ ├── model │ │ │ │ └── Item.kt │ │ │ └── repository │ │ │ │ └── ItemsRepository.kt │ │ ├── injection │ │ │ ├── ItemsDataComponent.kt │ │ │ └── ItemsDataComponentImpl.kt │ │ └── remote │ │ │ ├── ItemsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── ItemsResponse.kt │ │ ├── leaderboard │ │ ├── data │ │ │ ├── repository │ │ │ │ └── LeaderboardRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── LeaderboardRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Leaderboard.kt │ │ │ │ └── LeaderboardItem.kt │ │ │ └── repository │ │ │ │ └── LeaderboardRepository.kt │ │ ├── injection │ │ │ ├── LeaderboardDataComponent.kt │ │ │ └── LeaderboardDataComponentImpl.kt │ │ ├── remote │ │ │ └── LeaderboardRemoteDataSourceImpl.kt │ │ ├── screen │ │ │ ├── domain │ │ │ │ └── analytic │ │ │ │ │ ├── LeaderboardClickedPullToRefreshHyperskillAnalyticEvent.kt │ │ │ │ │ ├── LeaderboardClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ │ ├── LeaderboardClickedTabHyperskillAnalyticEvent.kt │ │ │ │ │ └── LeaderboardViewedHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ │ ├── LeaderboardScreenComponent.kt │ │ │ │ ├── LeaderboardScreenComponentImpl.kt │ │ │ │ └── LeaderboardScreenFeatureBuilder.kt │ │ │ ├── presentation │ │ │ │ ├── LeaderboardScreenActionDispatcher.kt │ │ │ │ ├── LeaderboardScreenFeature.kt │ │ │ │ └── LeaderboardScreenReducer.kt │ │ │ └── view │ │ │ │ └── mapper │ │ │ │ └── LeaderboardScreenViewStateMapper.kt │ │ └── widget │ │ │ ├── domain │ │ │ └── analytic │ │ │ │ └── LeaderboardWidgetClickedListItemHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ ├── LeaderboardWidgetComponent.kt │ │ │ └── LeaderboardWidgetComponentImpl.kt │ │ │ ├── presentation │ │ │ ├── LeaderboardWidgetActionDispatcher.kt │ │ │ ├── LeaderboardWidgetFeature.kt │ │ │ ├── LeaderboardWidgetReducer.kt │ │ │ └── MainLeaderboardWidgetActionDispatcher.kt │ │ │ └── view │ │ │ ├── mapper │ │ │ └── LeaderboardWidgetViewStateMapper.kt │ │ │ └── model │ │ │ └── LeaderboardWidgetListItem.kt │ │ ├── learning_activities │ │ ├── data │ │ │ ├── repository │ │ │ │ ├── LearningActivitiesRepositoryImpl.kt │ │ │ │ └── NextLearningActivityStateRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── LearningActivitiesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── LearningActivity.kt │ │ │ │ ├── LearningActivityState.kt │ │ │ │ └── LearningActivityType.kt │ │ │ └── repository │ │ │ │ ├── LearningActivitiesRepository.kt │ │ │ │ └── NextLearningActivityStateRepository.kt │ │ ├── injection │ │ │ ├── LearningActivitiesDataComponent.kt │ │ │ └── LearningActivitiesDataComponentImpl.kt │ │ ├── presentation │ │ │ ├── mapper │ │ │ │ └── LearningActivityTargetViewActionMapper.kt │ │ │ └── model │ │ │ │ └── LearningActivityTargetViewAction.kt │ │ ├── remote │ │ │ ├── LearningActivitiesRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── LearningActivitiesRequest.kt │ │ │ │ ├── LearningActivitiesRequestParams.kt │ │ │ │ ├── LearningActivitiesResponse.kt │ │ │ │ ├── LearningActivitiesWithSectionsRequest.kt │ │ │ │ ├── LearningActivitiesWithSectionsResponse.kt │ │ │ │ └── NextLearningActivityRequest.kt │ │ └── view │ │ │ └── mapper │ │ │ └── LearningActivityTextsMapper.kt │ │ ├── likes │ │ ├── data │ │ │ ├── repository │ │ │ │ └── LikesRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── LikesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── LikesInteractor.kt │ │ │ ├── model │ │ │ │ ├── Like.kt │ │ │ │ ├── LikeSubject.kt │ │ │ │ └── LikeValue.kt │ │ │ └── repository │ │ │ │ └── LikesRepository.kt │ │ ├── injection │ │ │ ├── LikesDataComponent.kt │ │ │ └── LikesDataComponentImpl.kt │ │ └── remote │ │ │ ├── LikesRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── LikesRequest.kt │ │ │ └── LikesResponse.kt │ │ ├── logging │ │ ├── injection │ │ │ ├── LoggerBuilder.kt │ │ │ ├── LoggerComponent.kt │ │ │ └── LoggerComponentImpl.kt │ │ ├── presentation │ │ │ └── WrapWithLogger.kt │ │ └── sentry │ │ │ ├── SentryLogWriter.kt │ │ │ ├── SentryMessageStringFormatter.kt │ │ │ └── SentryMessageStringFormatterImpl.kt │ │ ├── magic_links │ │ ├── data │ │ │ ├── repository │ │ │ │ └── MagicLinksRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── MagicLinksRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ ├── MagicLinksInteractor.kt │ │ │ │ └── UrlPathProcessor.kt │ │ │ ├── model │ │ │ │ └── MagicLink.kt │ │ │ └── repository │ │ │ │ └── MagicLinksRepository.kt │ │ ├── injection │ │ │ ├── MagicLinksDataComponent.kt │ │ │ └── MagicLinksDataComponentImpl.kt │ │ └── remote │ │ │ ├── MagicLinksRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── MagicLinksRequest.kt │ │ │ └── MagicLinksResponse.kt │ │ ├── main │ │ ├── cache │ │ │ ├── AppCacheDataSourceImpl.kt │ │ │ └── AppCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── AppRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── AppCacheDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── AppClickedBottomNavigationItemHyperskillAnalyticEvent.kt │ │ │ │ ├── AppLaunchFirstTimeAppsFlyerAnalyticEvent.kt │ │ │ │ └── AppLaunchFirstTimeHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── AppInteractor.kt │ │ │ └── repository │ │ │ │ └── AppRepository.kt │ │ ├── injection │ │ │ ├── AppFeatureBuilder.kt │ │ │ ├── MainComponent.kt │ │ │ ├── MainComponentImpl.kt │ │ │ ├── MainDataComponent.kt │ │ │ └── MainDataComponentImpl.kt │ │ └── presentation │ │ │ ├── AppActionDispatcher.kt │ │ │ ├── AppFeature.kt │ │ │ └── AppReducer.kt │ │ ├── manage_subscription │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── ManageSubscriptionClickedManageHyperskillAnalyticEvent.kt │ │ │ │ ├── ManageSubscriptionViewedHyperskillAnalyticEvent.kt │ │ │ │ └── RenewSubscriptionClickedManageHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── ManageSubscriptionComponent.kt │ │ │ ├── ManageSubscriptionComponentImpl.kt │ │ │ └── ManageSubscriptionFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── ManageSubscriptionActionDispatcher.kt │ │ │ ├── ManageSubscriptionFeature.kt │ │ │ ├── ManageSubscriptionReducer.kt │ │ │ └── ManageSubscriptionStateExtensions.kt │ │ └── view │ │ │ └── mapper │ │ │ └── ManageSubscriptionViewStateMapper.kt │ │ ├── network │ │ ├── BearerTokenHandler.kt │ │ ├── InstallBearerTokenPlugin.kt │ │ ├── NetworkBuilder.kt │ │ ├── PreconfiguredHttpClient.kt │ │ ├── domain │ │ │ └── model │ │ │ │ ├── AuthorizedClientDependencies.kt │ │ │ │ ├── NetworkClientType.kt │ │ │ │ └── NetworkEndpointConfigInfo.kt │ │ ├── injection │ │ │ ├── NetworkComponent.kt │ │ │ ├── NetworkComponentImpl.kt │ │ │ └── NetworkModule.kt │ │ ├── plugin │ │ │ ├── HttpCookiesPlugin.kt │ │ │ └── bearer_token │ │ │ │ ├── BearerTokenHttpClientPlugin.kt │ │ │ │ └── TokenRefreshResult.kt │ │ └── remote │ │ │ └── HttpRequestBuilderExt.kt │ │ ├── notification │ │ ├── click_handling │ │ │ ├── injection │ │ │ │ ├── NotificationClickHandlingComponent.kt │ │ │ │ └── NotificationClickHandlingComponentImpl.kt │ │ │ └── presentation │ │ │ │ ├── MainNotificationClickHandlingActionDispatcher.kt │ │ │ │ ├── NotificationClickHandlingActionDispatcher.kt │ │ │ │ ├── NotificationClickHandlingFeature.kt │ │ │ │ └── NotificationClickHandlingReducer.kt │ │ ├── local │ │ │ ├── cache │ │ │ │ ├── NotificationCacheDataSourceImpl.kt │ │ │ │ └── NotificationCacheKeyValues.kt │ │ │ ├── data │ │ │ │ ├── flow │ │ │ │ │ └── DailyStudyRemindersEnabledFlowImpl.kt │ │ │ │ ├── model │ │ │ │ │ └── NotificationDescription.kt │ │ │ │ ├── repository │ │ │ │ │ └── NotificationRepositoryImpl.kt │ │ │ │ └── source │ │ │ │ │ └── NotificationCacheDataSource.kt │ │ │ ├── domain │ │ │ │ ├── analytic │ │ │ │ │ ├── NotificationDailyStudyReminderClickedHyperskillAnalyticEvent.kt │ │ │ │ │ ├── NotificationDailyStudyReminderShownHyperskillAnalyticEvent.kt │ │ │ │ │ ├── NotificationSystemNoticeHiddenHyperskillAnalyticEvent.kt │ │ │ │ │ └── NotificationSystemNoticeShownHyperskillAnalyticEvent.kt │ │ │ │ ├── flow │ │ │ │ │ └── DailyStudyRemindersEnabledFlow.kt │ │ │ │ ├── interactor │ │ │ │ │ └── NotificationInteractor.kt │ │ │ │ └── repository │ │ │ │ │ └── NotificationRepository.kt │ │ │ └── injection │ │ │ │ ├── NotificationComponent.kt │ │ │ │ ├── NotificationComponentImpl.kt │ │ │ │ ├── NotificationFlowDataComponent.kt │ │ │ │ └── NotificationFlowDataComponentImpl.kt │ │ └── remote │ │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── PushNotificationClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── PushNotificationDataAnalyticContextMapper.kt │ │ │ │ ├── PushNotificationHyperskillAnalyticParams.kt │ │ │ │ └── PushNotificationShownHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── PushNotificationsInteractor.kt │ │ │ ├── model │ │ │ │ ├── PushNotificationCategory.kt │ │ │ │ ├── PushNotificationData.kt │ │ │ │ └── PushNotificationType.kt │ │ │ └── repository │ │ │ │ └── FCMTokenRepository.kt │ │ │ ├── injection │ │ │ ├── PlatformPushNotificationsDataComponent.kt │ │ │ ├── PushNotificationsComponent.kt │ │ │ └── PushNotificationsComponentImpl.kt │ │ │ └── remote │ │ │ └── SetNotificationTimeRequest.kt │ │ ├── notification_daily_study_reminder_widget │ │ ├── cache │ │ │ ├── NotificationDailyStudyReminderWidgetCacheDataSourceImpl.kt │ │ │ └── NotificationDailyStudyReminderWidgetCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── NotificationDailyStudyReminderWidgetRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── NotificationDailyStudyReminderWidgetCacheDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── NotificationDailyStudyReminderWidgetClickedCloseHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationDailyStudyReminderWidgetClickedHyperskillAnalyticEvent.kt │ │ │ │ └── NotificationDailyStudyReminderWidgetViewedHyperskillAnalyticEvent.kt │ │ │ └── repository │ │ │ │ └── NotificationDailyStudyReminderWidgetRepository.kt │ │ ├── injection │ │ │ ├── NotificationDailyStudyReminderWidgetComponent.kt │ │ │ └── NotificationDailyStudyReminderWidgetComponentImpl.kt │ │ ├── presentation │ │ │ ├── MainNotificationDailyStudyReminderWidgetActionDispatcher.kt │ │ │ ├── NotificationDailyStudyReminderWidgetActionDispatcher.kt │ │ │ ├── NotificationDailyStudyReminderWidgetFeature.kt │ │ │ └── NotificationDailyStudyReminderWidgetReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── NotificationDailyStudyReminderWidgetViewStateMapper.kt │ │ ├── notifications_onboarding │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── NotificationsOnboardingAnalyticParams.kt │ │ │ │ ├── NotificationsOnboardingClickedAllowNotificationsHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationsOnboardingClickedDailyStudyRemindsIntervalHourHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationsOnboardingClickedNotNowHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationsOnboardingDailyStudyRemindersIntervalPickerModalClickedConfirmHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationsOnboardingDailyStudyRemindersIntervalPickerModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── NotificationsOnboardingDailyStudyRemindersIntervalPickerModalShownHyperskillAnalyticEvent.kt │ │ │ │ └── NotificationsOnboardingViewedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── NotificationsOnboardingComponent.kt │ │ │ ├── NotificationsOnboardingComponentImpl.kt │ │ │ └── NotificationsOnboardingFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── NotificationsOnboardingActionDispatcher.kt │ │ │ ├── NotificationsOnboardingFeature.kt │ │ │ └── NotificationsOnboardingReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── NotificationsOnboardingViewStateMapper.kt │ │ ├── onboarding │ │ ├── cache │ │ │ ├── OnboardingCacheDataSourceImpl.kt │ │ │ └── OnboardingCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── OnboardingRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── OnboardingCacheDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── OnboardingInteractor.kt │ │ │ ├── model │ │ │ │ └── ProblemsOnboardingFlags.kt │ │ │ └── repository │ │ │ │ └── OnboardingRepository.kt │ │ └── injection │ │ │ ├── OnboardingDataComponent.kt │ │ │ └── OnboardingDataComponentImpl.kt │ │ ├── paywall │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── PaywallAnalyticParams.kt │ │ │ │ ├── PaywallClickedBuySubscriptionHyperskillAnalyticEvent.kt │ │ │ │ ├── PaywallClickedCloseButtonHyperskillAnalyticEvent.kt │ │ │ │ ├── PaywallClickedProductHyperskillAnalyticEvent.kt │ │ │ │ ├── PaywallClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ ├── PaywallClickedTermsOfServiceAndPrivacyPolicyHyperskillAnalyticEvent.kt │ │ │ │ ├── PaywallSubscriptionPurchasedAmplitudeAnalyticEvent.kt │ │ │ │ ├── PaywallSubscriptionPurchasedAppsFlyerAnalyticEvent.kt │ │ │ │ └── PaywallViewedHyperskillAnalyticEvent.kt │ │ │ └── model │ │ │ │ └── PaywallTransitionSource.kt │ │ ├── injection │ │ │ ├── PaywallComponent.kt │ │ │ ├── PaywallComponentImpl.kt │ │ │ └── PaywallFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── PaywallActionDispatcher.kt │ │ │ ├── PaywallFeature.kt │ │ │ └── PaywallReducer.kt │ │ └── view │ │ │ └── PaywallViewStateMapper.kt │ │ ├── problems_limit_info │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── ProblemsLimitInfoModalAnalyticKeys.kt │ │ │ │ ├── ProblemsLimitInfoModalClickedUnlockUnlimitedProblemsHSAnalyticEvent.kt │ │ │ │ ├── ProblemsLimitInfoModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ └── ProblemsLimitInfoModalShownHyperskillAnalyticEvent.kt │ │ │ └── model │ │ │ │ ├── ProblemsLimitInfoModalContext.kt │ │ │ │ ├── ProblemsLimitInfoModalFeatureParams.kt │ │ │ │ └── ProblemsLimitInfoModalLaunchSource.kt │ │ ├── injection │ │ │ ├── ProblemsLimitInfoModalComponent.kt │ │ │ ├── ProblemsLimitInfoModalComponentImpl.kt │ │ │ └── ProblemsLimitInfoModalFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── ProblemsLimitInfoModalFeature.kt │ │ │ └── ProblemsLimitInfoModalReducer.kt │ │ └── view │ │ │ └── ProblemsLimitInfoModalViewStateMapper.kt │ │ ├── products │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ProductsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ProductsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── ProductsInteractor.kt │ │ │ ├── model │ │ │ │ └── Product.kt │ │ │ └── repository │ │ │ │ └── ProductsRepository.kt │ │ ├── injection │ │ │ ├── ProductsDataComponent.kt │ │ │ └── ProductsDataComponentImpl.kt │ │ └── remote │ │ │ ├── ProductsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── BuyProductRequest.kt │ │ │ ├── GetProductsRequest.kt │ │ │ └── ProductsResponse.kt │ │ ├── profile │ │ ├── cache │ │ │ ├── CurrentProfileStateHolderImpl.kt │ │ │ └── ProfileCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ ├── CurrentProfileStateRepositoryImpl.kt │ │ │ │ └── ProfileRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── CurrentProfileStateHolder.kt │ │ │ │ └── ProfileRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── ProfileClickedDailyStudyRemindsTimeHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileClickedDailyStudyRemindsToggleHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileClickedPullToRefreshHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileClickedSettingsHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileClickedViewFullProfileHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileViewedHyperskillAnalyticEvent.kt │ │ │ │ ├── badges │ │ │ │ │ ├── BadgesAnalyticKeys.kt │ │ │ │ │ ├── EarnedBadgeModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ │ ├── EarnedBadgeModalShownHyperskillAnalyticEvent.kt │ │ │ │ │ ├── ProfileBadgeModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ │ ├── ProfileBadgeModalShownHyperskillAnalyticEvent.kt │ │ │ │ │ ├── ProfileClickedBadgeCardHyperskillAnalyticEvent.kt │ │ │ │ │ └── ProfileClickedBadgesVisibilityButtonHyperskillAnalyticEvent.kt │ │ │ │ └── streak_freeze │ │ │ │ │ ├── StreakFreezeAnalyticState.kt │ │ │ │ │ ├── StreakFreezeCardAnalyticAction.kt │ │ │ │ │ ├── StreakFreezeClickedCardActionHyperskillAnalyticEvent.kt │ │ │ │ │ ├── StreakFreezeClickedModalActionButtonHyperskillAnalyticEvent.kt │ │ │ │ │ ├── StreakFreezeModalAnalyticAction.kt │ │ │ │ │ ├── StreakFreezeModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ │ └── StreakFreezeModalShownHyperskillAnalyticEvent.kt │ │ │ ├── model │ │ │ │ ├── FeatureKeys.kt │ │ │ │ ├── FeatureValues.kt │ │ │ │ ├── FeaturesMap.kt │ │ │ │ ├── Gamification.kt │ │ │ │ └── Profile.kt │ │ │ └── repository │ │ │ │ ├── CurrentProfileStateRepository.kt │ │ │ │ └── ProfileRepository.kt │ │ ├── injection │ │ │ ├── ProfileComponent.kt │ │ │ ├── ProfileComponentImpl.kt │ │ │ ├── ProfileDataComponent.kt │ │ │ ├── ProfileDataComponentImpl.kt │ │ │ └── ProfileFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── ProfileActionDispatcher.kt │ │ │ ├── ProfileFeature.kt │ │ │ └── ProfileReducer.kt │ │ ├── remote │ │ │ ├── ProfileRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── ProfileResponse.kt │ │ │ │ ├── ProfileSelectTrackRequest.kt │ │ │ │ ├── ProfileSelectTrackWithProjectRequest.kt │ │ │ │ ├── ProfileSetNotificationHourRequest.kt │ │ │ │ ├── ProfileSetNotificationHourWithTimeZoneRequest.kt │ │ │ │ └── ProfileSetTimeZoneRequest.kt │ │ └── view │ │ │ ├── BadgeDetailsViewState.kt │ │ │ ├── BadgeImage.kt │ │ │ ├── BadgesViewState.kt │ │ │ ├── BadgesViewStateMapper.kt │ │ │ ├── EarnedBadgeModalViewState.kt │ │ │ └── social_redirect │ │ │ └── SocialNetworksRedirect.kt │ │ ├── profile_settings │ │ ├── cache │ │ │ ├── ProfileSettingsCacheDataSourceImpl.kt │ │ │ └── ProfileSettingsCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ProfileSettingsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ProfileSettingsCacheDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── ProfileSettingsClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileSettingsDeleteAccountNoticeHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileSettingsDeleteAccountNoticeShownHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileSettingsSignOutNoticeHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── ProfileSettingsSignOutNoticeShownHyperskillAnalyticEvent.kt │ │ │ │ └── ProfileSettingsViewedHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── ProfileSettingsInteractor.kt │ │ │ ├── model │ │ │ │ ├── FeedbackEmailData.kt │ │ │ │ ├── FeedbackEmailDataBuilder.kt │ │ │ │ ├── ProfileSettings.kt │ │ │ │ └── Theme.kt │ │ │ └── repository │ │ │ │ └── ProfileSettingsRepository.kt │ │ ├── injection │ │ │ ├── ProfileSettingsComponent.kt │ │ │ ├── ProfileSettingsComponentImpl.kt │ │ │ └── ProfileSettingsFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── ProfileSettingsActionDispatcher.kt │ │ │ ├── ProfileSettingsFeature.kt │ │ │ └── ProfileSettingsReducer.kt │ │ └── view │ │ │ └── ProfileSettingsViewStateMapper.kt │ │ ├── progress_screen │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── ProgressScreenClickedChangeProjectHyperskillAnalyticEvent.kt │ │ │ │ ├── ProgressScreenClickedChangeTrackHyperskillAnalyticEvent.kt │ │ │ │ ├── ProgressScreenClickedPullToRefreshHyperskillAnalyticEvent.kt │ │ │ │ └── ProgressScreenViewedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── ProgressScreenComponent.kt │ │ │ ├── ProgressScreenComponentImpl.kt │ │ │ └── ProgressScreenFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── ProgressScreenActionDispatcher.kt │ │ │ ├── ProgressScreenFeature.kt │ │ │ └── ProgressScreenReducer.kt │ │ └── view │ │ │ ├── ProgressScreenViewState.kt │ │ │ └── ProgressScreenViewStateMapper.kt │ │ ├── progresses │ │ ├── cache │ │ │ ├── ProjectProgressesCacheDataSourceImpl.kt │ │ │ ├── TopicProgressesCacheDataSourceImpl.kt │ │ │ └── TrackProgressesCacheDataSourceImpl.kt │ │ ├── data │ │ │ ├── flow │ │ │ │ └── TopicProgressFlowImpl.kt │ │ │ ├── repository │ │ │ │ └── ProgressesRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── ProgressesRemoteDataSource.kt │ │ │ │ ├── ProjectProgressesCacheDataSource.kt │ │ │ │ ├── TopicProgressesCacheDataSource.kt │ │ │ │ └── TrackProgressesCacheDataSource.kt │ │ ├── domain │ │ │ ├── flow │ │ │ │ └── TopicProgressFlow.kt │ │ │ ├── interactor │ │ │ │ └── ProgressesInteractor.kt │ │ │ ├── model │ │ │ │ └── Progress.kt │ │ │ └── repository │ │ │ │ └── ProgressesRepository.kt │ │ ├── injection │ │ │ ├── ProgressesDataComponent.kt │ │ │ ├── ProgressesDataComponentImpl.kt │ │ │ ├── ProgressesFlowDataComponent.kt │ │ │ └── ProgressesFlowDataComponentImpl.kt │ │ └── remote │ │ │ ├── ProgressesRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── ProjectProgressResponse.kt │ │ │ ├── TopicProgressesResponse.kt │ │ │ └── TrackProgressesResponse.kt │ │ ├── project_selection │ │ ├── details │ │ │ ├── domain │ │ │ │ ├── analytic │ │ │ │ │ ├── ProjectSelectionDetailsClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ │ ├── ProjectSelectionDetailsClickedSelectThisProjectHyperskillAnalyticEvent.kt │ │ │ │ │ └── ProjectSelectionDetailsViewedHyperskillAnalyticEvent.kt │ │ │ │ └── interactor │ │ │ │ │ └── ProjectSelectionDetailsInteractor.kt │ │ │ ├── injection │ │ │ │ ├── ProjectSelectionDetailsComponent.kt │ │ │ │ ├── ProjectSelectionDetailsComponentImpl.kt │ │ │ │ ├── ProjectSelectionDetailsFeatureBuilder.kt │ │ │ │ └── ProjectSelectionDetailsParams.kt │ │ │ ├── presentation │ │ │ │ ├── ProjectSelectionDetailsActionDispatcher.kt │ │ │ │ ├── ProjectSelectionDetailsFeature.kt │ │ │ │ └── ProjectSelectionDetailsReducer.kt │ │ │ └── view │ │ │ │ └── ProjectSelectionDetailsViewStateMapper.kt │ │ └── list │ │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── ProjectSelectionListClickedProjectHyperskillAnalyticEvent.kt │ │ │ │ ├── ProjectSelectionListClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ └── ProjectSelectionListViewedHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ ├── ProjectSelectionListComponent.kt │ │ │ ├── ProjectSelectionListComponentImpl.kt │ │ │ ├── ProjectSelectionListFeatureBuilder.kt │ │ │ └── ProjectSelectionListParams.kt │ │ │ ├── presentation │ │ │ ├── ProjectSelectionListActionDispatcher.kt │ │ │ ├── ProjectSelectionListFeature.kt │ │ │ ├── ProjectSelectionListReducer.kt │ │ │ └── StateExtensions.kt │ │ │ └── view │ │ │ └── mapper │ │ │ └── ProjectSelectionListViewStateMapper.kt │ │ ├── projects │ │ ├── cache │ │ │ └── ProjectsCacheDataSourceImpl.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ProjectsRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── ProjectsCacheDataSource.kt │ │ │ │ └── ProjectsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Project.kt │ │ │ │ ├── ProjectKind.kt │ │ │ │ ├── ProjectLevel.kt │ │ │ │ ├── ProjectProgress.kt │ │ │ │ ├── ProjectTracksEntry.kt │ │ │ │ └── ProjectWithProgress.kt │ │ │ └── repository │ │ │ │ └── ProjectsRepository.kt │ │ ├── injection │ │ │ ├── ProjectsDataComponent.kt │ │ │ └── ProjectsDataComponentImpl.kt │ │ └── remote │ │ │ ├── ProjectsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── ProjectsResponse.kt │ │ ├── providers │ │ ├── cache │ │ │ └── ProvidersCacheDataSourceImpl.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ProvidersRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── ProvidersCacheDataSource.kt │ │ │ │ └── ProvidersRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── ProvidersInteractor.kt │ │ │ ├── model │ │ │ │ └── Provider.kt │ │ │ └── repository │ │ │ │ └── ProvidersRepository.kt │ │ ├── injection │ │ │ ├── ProvidersDataComponent.kt │ │ │ └── ProvidersDataComponentImpl.kt │ │ └── remote │ │ │ ├── ProvidersRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── ProvidersResponse.kt │ │ ├── purchases │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── PurchaseInteractor.kt │ │ │ └── model │ │ │ │ ├── HyperskillStoreProduct.kt │ │ │ │ ├── PlatformProductIdentifiers.kt │ │ │ │ ├── PlatformPurchaseParams.kt │ │ │ │ ├── PurchaseManager.kt │ │ │ │ ├── PurchaseResult.kt │ │ │ │ ├── SubscriptionPeriod.kt │ │ │ │ └── SubscriptionProduct.kt │ │ └── injection │ │ │ ├── PurchaseComponent.kt │ │ │ └── PurchaseComponentImpl.kt │ │ ├── reactions │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ReactionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ReactionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Reaction.kt │ │ │ │ └── ReactionType.kt │ │ │ └── repository │ │ │ │ └── ReactionsRepository.kt │ │ ├── injection │ │ │ ├── ReactionsDataComponent.kt │ │ │ └── ReactionsDataComponentImpl.kt │ │ └── remote │ │ │ ├── ReactionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── ReactionsRequest.kt │ │ │ └── ReactionsResponse.kt │ │ ├── request_review │ │ ├── cache │ │ │ ├── RequestReviewCacheDataSourceImpl.kt │ │ │ └── RequestReviewCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── RequestReviewRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── RequestReviewCacheDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── RequestReviewInteractor.kt │ │ │ └── repository │ │ │ │ └── RequestReviewRepository.kt │ │ ├── injection │ │ │ ├── RequestReviewDataComponent.kt │ │ │ └── RequestReviewDataComponentImpl.kt │ │ └── modal │ │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── RequestReviewModalClickHyperskillAnalyticEvent.kt │ │ │ │ ├── RequestReviewModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ └── RequestReviewModalShownHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ ├── RequestReviewModalComponent.kt │ │ │ ├── RequestReviewModalComponentImpl.kt │ │ │ └── RequestReviewModalFeatureBuilder.kt │ │ │ ├── presentation │ │ │ ├── RequestReviewModalFeature.kt │ │ │ └── RequestReviewModalReducer.kt │ │ │ └── view │ │ │ └── mapper │ │ │ └── RequestReviewModalViewStateMapper.kt │ │ ├── run_code │ │ ├── data │ │ │ ├── repository │ │ │ │ └── RunCodeRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── RunCodeRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ └── RunCodeExecutionResult.kt │ │ │ └── repository │ │ │ │ └── RunCodeRepository.kt │ │ ├── injection │ │ │ ├── RunCodeDataComponent.kt │ │ │ └── RunCodeDataComponentImpl.kt │ │ └── remote │ │ │ ├── RunCodeRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── RunCodeRequest.kt │ │ │ └── RunCodeResponse.kt │ │ ├── search │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── SearchAnalyticParams.kt │ │ │ │ ├── SearchClickedItemHyperskillAnalyticEvent.kt │ │ │ │ ├── SearchClickedRetrySearchHyperskillAnalyticEvent.kt │ │ │ │ ├── SearchClickedSearchHyperskillAnalyticEvent.kt │ │ │ │ └── SearchViewedHyperskillAnalyticEvent.kt │ │ │ └── interactor │ │ │ │ └── SearchInteractor.kt │ │ ├── injection │ │ │ ├── SearchComponent.kt │ │ │ ├── SearchComponentImpl.kt │ │ │ └── SearchFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── SearchActionDispatcher.kt │ │ │ ├── SearchFeature.kt │ │ │ └── SearchReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── SearchViewStateMapper.kt │ │ ├── search_results │ │ ├── data │ │ │ ├── repository │ │ │ │ └── SearchResultsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── SearchResultsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ └── SearchResult.kt │ │ │ └── repository │ │ │ │ └── SearchResultsRepository.kt │ │ ├── injection │ │ │ ├── SearchResultsDataComponent.kt │ │ │ └── SearchResultsDataComponentImpl.kt │ │ └── remote │ │ │ ├── SearchResultsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── SearchResultsRequest.kt │ │ │ └── SearchResultsResponse.kt │ │ ├── sentry │ │ ├── domain │ │ │ ├── SentryExtentions.kt │ │ │ ├── interactor │ │ │ │ └── SentryInteractor.kt │ │ │ └── model │ │ │ │ ├── breadcrumb │ │ │ │ ├── HyperskillSentryBreadcrumb.kt │ │ │ │ ├── HyperskillSentryBreadcrumbAnalyticEventMapper.kt │ │ │ │ ├── HyperskillSentryBreadcrumbBuilder.kt │ │ │ │ └── HyperskillSentryBreadcrumbCategory.kt │ │ │ │ ├── level │ │ │ │ └── HyperskillSentryLevel.kt │ │ │ │ ├── manager │ │ │ │ └── SentryManager.kt │ │ │ │ └── transaction │ │ │ │ ├── HyperskillSentryTransaction.kt │ │ │ │ ├── HyperskillSentryTransactionBuilder.kt │ │ │ │ ├── HyperskillSentryTransactionKeyValues.kt │ │ │ │ ├── HyperskillSentryTransactionOperation.kt │ │ │ │ └── HyperskillSentryTransactionTag.kt │ │ └── injection │ │ │ ├── SentryComponent.kt │ │ │ └── SentryComponentImpl.kt │ │ ├── share_streak │ │ ├── cache │ │ │ ├── ShareStreakCacheDataSourceImpl.kt │ │ │ └── ShareStreakCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── ShareStreakRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── ShareStreakCacheDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── ShareStreakInteractor.kt │ │ │ └── repository │ │ │ │ └── ShareStreakRepository.kt │ │ └── injection │ │ │ ├── ShareStreakDataComponent.kt │ │ │ └── ShareStreakDataComponentImpl.kt │ │ ├── stage_implement │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── ProjectCompletedModalClickedGoToStudyPlanHyperskillAnalyticEvent.kt │ │ │ │ ├── ProjectCompletedModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── ProjectCompletedModalShownHyperskillAnalyticEvent.kt │ │ │ │ ├── StageCompletedModalClickedGoToStudyPlanHyperskillAnalyticEvent.kt │ │ │ │ ├── StageCompletedModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── StageCompletedModalShownHyperskillAnalyticEvent.kt │ │ │ │ └── StageImplementViewedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── StageImplementComponent.kt │ │ │ ├── StageImplementComponentImpl.kt │ │ │ └── StageImplementFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── StageImplementActionDispatcher.kt │ │ │ ├── StageImplementFeature.kt │ │ │ └── StageImplementReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── StageImplementViewStateMapper.kt │ │ ├── stages │ │ ├── data │ │ │ ├── repository │ │ │ │ └── StagesRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── StagesRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── StagesInteractor.kt │ │ │ ├── model │ │ │ │ └── Stage.kt │ │ │ └── repository │ │ │ │ └── StagesRepository.kt │ │ ├── injection │ │ │ ├── StagesDataComponent.kt │ │ │ └── StagesDataComponentImpl.kt │ │ └── remote │ │ │ ├── StagesRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── StagesResponse.kt │ │ ├── step │ │ ├── data │ │ │ ├── repository │ │ │ │ └── StepRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── StepRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── StepAnalyticParams.kt │ │ │ │ ├── StepToolbarCommentClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── StepToolbarMenuActionClickedHyperskillAnalyticEvent.kt │ │ │ │ └── StepViewedHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── StepInteractor.kt │ │ │ ├── model │ │ │ │ ├── Block.kt │ │ │ │ ├── BlockName.kt │ │ │ │ ├── Limit.kt │ │ │ │ ├── Step.kt │ │ │ │ ├── StepContext.kt │ │ │ │ ├── StepMenuSecondaryAction.kt │ │ │ │ ├── StepRoute.kt │ │ │ │ └── serializer │ │ │ │ │ └── DatasetSerializer.kt │ │ │ └── repository │ │ │ │ └── StepRepository.kt │ │ ├── injection │ │ │ ├── StepComponent.kt │ │ │ ├── StepComponentImpl.kt │ │ │ ├── StepDataComponent.kt │ │ │ ├── StepDataComponentImpl.kt │ │ │ └── StepFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── StepActionDispatcher.kt │ │ │ ├── StepFeature.kt │ │ │ ├── StepReducer.kt │ │ │ └── ViewStepActionDispatcher.kt │ │ ├── remote │ │ │ ├── StepRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── LogStepSolvingTimeRequest.kt │ │ │ │ ├── StepResponse.kt │ │ │ │ └── ViewsRequest.kt │ │ └── view │ │ │ └── mapper │ │ │ └── StepViewStateMapper.kt │ │ ├── step_completion │ │ ├── data │ │ │ └── flow │ │ │ │ ├── DailyStepCompletedFlowImpl.kt │ │ │ │ ├── StepCompletedFlowImpl.kt │ │ │ │ └── TopicCompletedFlowImpl.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── StepCompletionClickedContinueHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionClickedStartPracticingHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionDailyStepCompletedModalClickedGoBackHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionDailyStepCompletedModalClickedShareStreakHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionDailyStepCompletedModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionDailyStepCompletedModalShownHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionHyperskillAnalyticParams.kt │ │ │ │ ├── StepCompletionShareStreakModalClickedNoThanksHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionShareStreakModalClickedShareHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionShareStreakModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionShareStreakModalShownHyperskillAnalyticEvent.kt │ │ │ │ ├── StepCompletionStepSolvedAmplitudeAnalyticEvent.kt │ │ │ │ ├── StepCompletionStepSolvedAppsFlyerAnalyticEvent.kt │ │ │ │ ├── StepCompletionTopicCompletedAmplitudeAnalyticEvent.kt │ │ │ │ └── StepCompletionTopicCompletedAppsFlyerAnalyticEvent.kt │ │ │ └── flow │ │ │ │ ├── DailyStepCompletedFlow.kt │ │ │ │ ├── StepCompletedFlow.kt │ │ │ │ └── TopicCompletedFlow.kt │ │ ├── injection │ │ │ ├── StepCompletionComponent.kt │ │ │ ├── StepCompletionComponentImpl.kt │ │ │ ├── StepCompletionFlowDataComponent.kt │ │ │ └── StepCompletionFlowDataComponentImpl.kt │ │ └── presentation │ │ │ ├── MainStepCompletionActionDispatcher.kt │ │ │ ├── StepCompletionActionDispatcher.kt │ │ │ ├── StepCompletionFeature.kt │ │ │ └── StepCompletionReducer.kt │ │ ├── step_feedback │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── StepFeedbackAnalyticKeys.kt │ │ │ │ ├── StepFeedbackModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── StepFeedbackModalSendButtonClickedHyperskillAnalyticEvent.kt │ │ │ │ └── StepFeedbackModalShownHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── StepFeedbackComponent.kt │ │ │ ├── StepFeedbackComponentImpl.kt │ │ │ └── StepFeedbackFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── StepFeedbackActionDispatcher.kt │ │ │ ├── StepFeedbackFeature.kt │ │ │ └── StepFeedbackReducer.kt │ │ └── view │ │ │ └── StepFeedbackViewStateMapper.kt │ │ ├── step_quiz │ │ ├── data │ │ │ ├── repository │ │ │ │ └── AttemptRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── AttemptRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── ProblemOnboardingModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── ProblemOnboardingModalShownHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizAnalyticParams.kt │ │ │ │ ├── StepQuizClickedCodeDetailsHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedOpenFullScreenCodeEditorHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedRetryHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedRunHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedSendHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedStepTextDetailsHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizClickedTheoryToolbarItemHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeEditorClickedInputAccessoryButtonHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCreateSubmissionAmplitudeAnalyticEvent.kt │ │ │ │ ├── StepQuizFeedbackReadCommentsClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizFeedbackSeeHintClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizFeedbackSkipClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizFullScreenCodeEditorClickedCodeDetailsHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizFullScreenCodeEditorClickedStepTextDetailsHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizSubmissionCreatedAmplitudeAnalyticEvent.kt │ │ │ │ ├── StepQuizUnsupportedClickedGoToStudyPlanHyperskillAnalyticEvent.kt │ │ │ │ └── StepQuizUnsupportedClickedSolveOnTheWebHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── StepQuizInteractor.kt │ │ │ ├── model │ │ │ │ └── attempts │ │ │ │ │ ├── Attempt.kt │ │ │ │ │ ├── AttemptStatus.kt │ │ │ │ │ ├── Component.kt │ │ │ │ │ ├── Dataset.kt │ │ │ │ │ └── Pair.kt │ │ │ ├── repository │ │ │ │ └── AttemptRepository.kt │ │ │ └── validation │ │ │ │ ├── ReplyValidationResult.kt │ │ │ │ └── StepQuizReplyValidator.kt │ │ ├── injection │ │ │ ├── StepQuizComponent.kt │ │ │ ├── StepQuizComponentImpl.kt │ │ │ └── StepQuizFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── StepQuizActionDispatcher.kt │ │ │ ├── StepQuizChildFeatureReducer.kt │ │ │ ├── StepQuizFeature.kt │ │ │ ├── StepQuizReducer.kt │ │ │ ├── StepQuizResolver.kt │ │ │ └── StepQuizStateExtensions.kt │ │ ├── remote │ │ │ ├── AttemptRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── AttemptRequest.kt │ │ │ │ └── AttemptResponse.kt │ │ └── view │ │ │ ├── StepQuizViewUtils.kt │ │ │ ├── mapper │ │ │ ├── StepQuizFeedbackMapper.kt │ │ │ ├── StepQuizStatsTextMapper.kt │ │ │ └── StepQuizTitleMapper.kt │ │ │ └── model │ │ │ └── StepQuizFeedbackState.kt │ │ ├── step_quiz_code_blanks │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── StepQuizCodeBlanksAnalyticParams.kt │ │ │ │ ├── StepQuizCodeBlanksClickedCodeBlockChildHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeBlanksClickedCodeBlockHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeBlanksClickedDecreaseIndentLevelHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeBlanksClickedDeleteHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeBlanksClickedEnterHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizCodeBlanksClickedSpaceHyperskillAnalyticEvent.kt │ │ │ │ └── StepQuizCodeBlanksClickedSuggestionHyperskillAnalyticEvent.kt │ │ │ └── model │ │ │ │ ├── CodeBlock.kt │ │ │ │ ├── CodeBlockChild.kt │ │ │ │ ├── Suggestion.kt │ │ │ │ └── template │ │ │ │ ├── CodeBlanksTemplateMapper.kt │ │ │ │ ├── CodeBlockTemplateEntry.kt │ │ │ │ └── CodeBlockTemplateEntryType.kt │ │ ├── injection │ │ │ ├── StepQuizCodeBlanksComponent.kt │ │ │ └── StepQuizCodeBlanksComponentImpl.kt │ │ ├── presentation │ │ │ ├── StepQuizCodeBlanksActionDispatcher.kt │ │ │ ├── StepQuizCodeBlanksFeature.kt │ │ │ ├── StepQuizCodeBlanksOnboardingReducer.kt │ │ │ ├── StepQuizCodeBlanksReducer.kt │ │ │ ├── StepQuizCodeBlanksResolver.kt │ │ │ └── StepQuizCodeBlanksStateExtensions.kt │ │ └── view │ │ │ ├── mapper │ │ │ └── StepQuizCodeBlanksViewStateMapper.kt │ │ │ └── model │ │ │ └── StepQuizCodeBlanksViewState.kt │ │ ├── step_quiz_fill_blanks │ │ ├── model │ │ │ ├── FillBlanksConfig.kt │ │ │ ├── FillBlanksData.kt │ │ │ ├── FillBlanksItem.kt │ │ │ ├── FillBlanksMode.kt │ │ │ ├── FillBlanksOption.kt │ │ │ └── InvalidFillBlanksConfigException.kt │ │ └── presentation │ │ │ ├── FillBlanksItemMapper.kt │ │ │ └── FillBlanksResolver.kt │ │ ├── step_quiz_hints │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── StepQuizHintsClickedHyperskillAnalyticEvent.kt │ │ │ │ ├── StepQuizHintsHiddenReportHintNoticeHyperskillAnalyticEvent.kt │ │ │ │ └── StepQuizHintsShownReportHintNoticeHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── StepQuizHintsInteractor.kt │ │ │ └── model │ │ │ │ └── HintState.kt │ │ ├── injection │ │ │ ├── StepQuizHintsComponent.kt │ │ │ └── StepQuizHintsComponentImpl.kt │ │ ├── presentation │ │ │ ├── MainStepQuizHintsActionDispatcher.kt │ │ │ ├── StepQuizHintsActionDispatcher.kt │ │ │ ├── StepQuizHintsFeature.kt │ │ │ └── StepQuizHintsReducer.kt │ │ └── view │ │ │ └── mapper │ │ │ └── StepQuizHintsViewStateMapper.kt │ │ ├── step_quiz_toolbar │ │ ├── domain │ │ │ └── analytic │ │ │ │ └── StepQuizToolbarLimitClickedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── StepQuizToolbarComponent.kt │ │ │ └── StepQuizToolbarComponentImpl.kt │ │ ├── presentation │ │ │ ├── MainStepQuizToolbarActionDispatcher.kt │ │ │ ├── StepQuizToolbarActionDispatcher.kt │ │ │ ├── StepQuizToolbarFeature.kt │ │ │ ├── StepQuizToolbarReducer.kt │ │ │ └── StepQuizToolbarResolver.kt │ │ └── view │ │ │ └── StepQuizToolbarViewStateMapper.kt │ │ ├── step_toolbar │ │ ├── domain │ │ │ └── analytic │ │ │ │ └── StepToolbarSpacebotClickedHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── StepToolbarComponent.kt │ │ │ └── StepToolbarComponentImpl.kt │ │ ├── presentation │ │ │ ├── MainStepToolbarActionDispatcher.kt │ │ │ ├── StepToolbarActionDispatcher.kt │ │ │ ├── StepToolbarFeature.kt │ │ │ ├── StepToolbarReducer.kt │ │ │ └── StepToolbarResolver.kt │ │ └── view │ │ │ └── mapper │ │ │ └── StepToolbarViewStateMapper.kt │ │ ├── streak_recovery │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── StreakRecoveryModalClickedNoThanksHyperskillAnalyticEvent.kt │ │ │ │ ├── StreakRecoveryModalClickedRestoreStreakHyperskillAnalyticEvent.kt │ │ │ │ ├── StreakRecoveryModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ └── StreakRecoveryModalShownHyperskillAnalyticEvent.kt │ │ ├── injection │ │ │ ├── StreakRecoveryComponent.kt │ │ │ └── StreakRecoveryComponentImpl.kt │ │ └── presentation │ │ │ ├── MainStreakRecoveryActionDispatcher.kt │ │ │ ├── StreakRecoveryActionDispatcher.kt │ │ │ ├── StreakRecoveryFeature.kt │ │ │ └── StreakRecoveryReducer.kt │ │ ├── streaks │ │ ├── data │ │ │ ├── flow │ │ │ │ └── StreakFlowImpl.kt │ │ │ ├── repository │ │ │ │ └── StreaksRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── StreaksRemoteDataSource.kt │ │ ├── domain │ │ │ ├── flow │ │ │ │ └── StreakFlow.kt │ │ │ ├── interactor │ │ │ │ └── StreaksInteractor.kt │ │ │ ├── model │ │ │ │ ├── HistoricalStreak.kt │ │ │ │ ├── Streak.kt │ │ │ │ └── StreakState.kt │ │ │ └── repository │ │ │ │ └── StreaksRepository.kt │ │ ├── injection │ │ │ ├── StreakFlowDataComponent.kt │ │ │ ├── StreakFlowDataComponentImpl.kt │ │ │ ├── StreaksDataComponent.kt │ │ │ └── StreaksDataComponentImpl.kt │ │ └── remote │ │ │ ├── StreaksRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── StreaksResponse.kt │ │ ├── study_plan │ │ ├── data │ │ │ ├── repository │ │ │ │ ├── CurrentStudyPlanStateRepositoryImpl.kt │ │ │ │ └── StudyPlanSectionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── StudyPlanRemoteDataSource.kt │ │ │ │ └── StudyPlanSectionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── StudyPlanAnalyticParams.kt │ │ │ │ ├── StudyPlanClickedActivityHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedChangeTrackHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedPullToRefreshHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedRetryActivitiesLoadingHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedSectionHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanClickedSubscribeHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanExpandCompletedActivitiesClickedHSAnalyticEvent.kt │ │ │ │ ├── StudyPlanLoadMoreActivitiesClickedHSAnalyticEvent.kt │ │ │ │ ├── StudyPlanStageImplementUnsupportedModalClickedGoToHomeScreenHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanStageImplementUnsupportedModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── StudyPlanStageImplementUnsupportedModalShownHyperskillAnalyticEvent.kt │ │ │ │ └── StudyPlanViewedHyperskillAnalyticEvent.kt │ │ │ ├── model │ │ │ │ ├── StudyPlan.kt │ │ │ │ ├── StudyPlanSection.kt │ │ │ │ ├── StudyPlanSectionType.kt │ │ │ │ └── StudyPlanStatus.kt │ │ │ └── repository │ │ │ │ ├── CurrentStudyPlanStateRepository.kt │ │ │ │ └── StudyPlanSectionsRepository.kt │ │ ├── remote │ │ │ ├── StudyPlanRemoteDataSourceImpl.kt │ │ │ ├── StudyPlanSectionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── StudyPlanResponse.kt │ │ │ │ └── StudyPlanSectionsResponse.kt │ │ ├── screen │ │ │ ├── injection │ │ │ │ ├── StudyPlanScreenComponent.kt │ │ │ │ ├── StudyPlanScreenComponentImpl.kt │ │ │ │ └── StudyPlanScreenFeatureBuilder.kt │ │ │ ├── presentation │ │ │ │ ├── StudyPlanScreenFeature.kt │ │ │ │ └── StudyPlanScreenReducer.kt │ │ │ └── view │ │ │ │ └── StudyPlanScreenViewStateMapper.kt │ │ └── widget │ │ │ ├── domain │ │ │ └── mapper │ │ │ │ └── LearningActivityToTopicProgressMapper.kt │ │ │ ├── injection │ │ │ ├── StudyPlanWidgetComponent.kt │ │ │ └── StudyPlanWidgetComponentImpl.kt │ │ │ ├── presentation │ │ │ ├── MainStudyPlanWidgetActionDispatcher.kt │ │ │ ├── StudyPlanWidgetActionDispatcher.kt │ │ │ ├── StudyPlanWidgetFeature.kt │ │ │ ├── StudyPlanWidgetReducer.kt │ │ │ └── StudyPlanWidgetStateExtensions.kt │ │ │ └── view │ │ │ ├── mapper │ │ │ └── StudyPlanWidgetViewStateMapper.kt │ │ │ └── model │ │ │ └── StudyPlanWidgetViewState.kt │ │ ├── submissions │ │ ├── cache │ │ │ ├── SubmissionsCacheDataSourceImpl.kt │ │ │ └── SubmissionsCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── SubmissionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── SubmissionsCacheDataSource.kt │ │ │ │ └── SubmissionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Attachment.kt │ │ │ │ ├── Cell.kt │ │ │ │ ├── ChoiceAnswer.kt │ │ │ │ ├── Feedback.kt │ │ │ │ ├── ParsonsLine.kt │ │ │ │ ├── PyCharmFile.kt │ │ │ │ ├── Reply.kt │ │ │ │ ├── ReplyScore.kt │ │ │ │ ├── Submission.kt │ │ │ │ ├── SubmissionStatus.kt │ │ │ │ └── TableChoiceAnswer.kt │ │ │ ├── repository │ │ │ │ └── SubmissionsRepository.kt │ │ │ └── serialization │ │ │ │ ├── choice_answer │ │ │ │ ├── ChoiceAnswerChoiceSerializer.kt │ │ │ │ ├── ChoiceAnswerContentSerializer.kt │ │ │ │ └── ChoiceAnswerTableSerializer.kt │ │ │ │ ├── feedback │ │ │ │ ├── FeedbackContentSerializer.kt │ │ │ │ └── FeedbackTextSerializer.kt │ │ │ │ └── score │ │ │ │ ├── ReplyScoreContentSerializer.kt │ │ │ │ ├── ReplyScoreFloatSerializer.kt │ │ │ │ └── ReplyScoreStringSerializer.kt │ │ ├── injection │ │ │ ├── SubmissionsDataComponent.kt │ │ │ └── SubmissionsDataComponentImpl.kt │ │ └── remote │ │ │ ├── SubmissionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ ├── CreateSubmissionRequest.kt │ │ │ └── SubmissionsResponse.kt │ │ ├── subscriptions │ │ ├── cache │ │ │ ├── CurrentSubscriptionStateHolderImpl.kt │ │ │ └── SubscriptionCacheKeys.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ ├── CurrentSubscriptionStateRepositoryImpl.kt │ │ │ │ └── SubscriptionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── CurrentSubscriptionStateHolder.kt │ │ │ │ └── SubscriptionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── SubscriptionsInteractor.kt │ │ │ ├── model │ │ │ │ ├── FreemiumChargeLimitsStrategy.kt │ │ │ │ ├── Subscription.kt │ │ │ │ ├── SubscriptionLimitType.kt │ │ │ │ ├── SubscriptionStatus.kt │ │ │ │ ├── SubscriptionType.kt │ │ │ │ └── SubscriptionWithLimitType.kt │ │ │ └── repository │ │ │ │ ├── CurrentSubscriptionStateRepository.kt │ │ │ │ └── SubscriptionsRepository.kt │ │ ├── injection │ │ │ ├── SubscriptionsDataComponent.kt │ │ │ └── SubscriptionsDataComponentImpl.kt │ │ └── remote │ │ │ ├── SubscriptionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── SubscriptionsResponse.kt │ │ ├── topic_completed_modal │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── TopicCompletedModalClickedCloseHyperskillAnalyticEvent.kt │ │ │ │ ├── TopicCompletedModalClickedContinueNextTopicHyperskillAnalyticEvent.kt │ │ │ │ ├── TopicCompletedModalClickedGoToStudyPlanHyperskillAnalyticEvent.kt │ │ │ │ ├── TopicCompletedModalHiddenHyperskillAnalyticEvent.kt │ │ │ │ ├── TopicCompletedModalShownHyperskillAnalyticEvent.kt │ │ │ │ └── TopicCompletedModalUserDidTakeScreenshotHyperskillAnalyticEvent.kt │ │ │ └── model │ │ │ │ └── TopicCompletedModalFeatureParams.kt │ │ ├── injection │ │ │ ├── TopicCompletedModalComponent.kt │ │ │ ├── TopicCompletedModalComponentImpl.kt │ │ │ └── TopicCompletedModalFeatureBuilder.kt │ │ ├── presentation │ │ │ ├── TopicCompletedModalFeature.kt │ │ │ └── TopicCompletedModalReducer.kt │ │ └── view │ │ │ └── TopicCompletedModalViewStateMapper.kt │ │ ├── topics │ │ ├── data │ │ │ ├── repository │ │ │ │ └── TopicsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── TopicsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── model │ │ │ │ ├── Topic.kt │ │ │ │ └── TopicProgress.kt │ │ │ └── repository │ │ │ │ └── TopicsRepository.kt │ │ ├── injection │ │ │ ├── TopicsDataComponent.kt │ │ │ └── TopicsDataComponentImpl.kt │ │ └── remote │ │ │ ├── TopicsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── TopicsResponse.kt │ │ ├── topics_repetitions │ │ ├── data │ │ │ ├── flow │ │ │ │ └── TopicRepeatedFlowImpl.kt │ │ │ ├── repository │ │ │ │ └── TopicsRepetitionsRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── TopicsRepetitionsRemoteDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── TopicsRepetitionsClickedRepeatNextTopicHyperskillAnalyticEvent.kt │ │ │ │ ├── TopicsRepetitionsClickedRepeatTopicHyperskillAnalyticEvent.kt │ │ │ │ └── TopicsRepetitionsViewedHyperskillAnalyticEvent.kt │ │ │ ├── flow │ │ │ │ └── TopicRepeatedFlow.kt │ │ │ ├── interactor │ │ │ │ └── TopicsRepetitionsInteractor.kt │ │ │ ├── model │ │ │ │ ├── TopicRepetition.kt │ │ │ │ └── TopicRepetitionStatistics.kt │ │ │ └── repository │ │ │ │ └── TopicsRepetitionsRepository.kt │ │ ├── injection │ │ │ ├── TopicsRepetitionsComponent.kt │ │ │ ├── TopicsRepetitionsComponentImpl.kt │ │ │ ├── TopicsRepetitionsDataComponent.kt │ │ │ ├── TopicsRepetitionsDataComponentImpl.kt │ │ │ ├── TopicsRepetitionsFeatureBuilder.kt │ │ │ ├── TopicsRepetitionsFlowDataComponent.kt │ │ │ └── TopicsRepetitionsFlowDataComponentImpl.kt │ │ ├── presentation │ │ │ ├── TopicsRepetitionsActionDispatcher.kt │ │ │ ├── TopicsRepetitionsFeature.kt │ │ │ └── TopicsRepetitionsReducer.kt │ │ ├── remote │ │ │ ├── TopicsRepetitionsRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ │ ├── TopicsRepetitionStatisticsResponse.kt │ │ │ │ └── TopicsRepetitionsResponse.kt │ │ └── view │ │ │ ├── mapper │ │ │ └── TopicsRepetitionsViewDataMapper.kt │ │ │ └── model │ │ │ ├── RepetitionsStatus.kt │ │ │ ├── ShowMoreButtonState.kt │ │ │ ├── TopicToRepeat.kt │ │ │ └── TopicsRepetitionsViewData.kt │ │ ├── track │ │ ├── cache │ │ │ └── TrackCacheDataSourceImpl.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── TrackRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── TrackCacheDataSource.kt │ │ │ │ └── TrackRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── TrackInteractor.kt │ │ │ ├── model │ │ │ │ ├── ProjectsByLevel.kt │ │ │ │ ├── Track.kt │ │ │ │ ├── TrackProgress.kt │ │ │ │ └── TrackWithProgress.kt │ │ │ └── repository │ │ │ │ └── TrackRepository.kt │ │ ├── injection │ │ │ ├── TrackDataComponent.kt │ │ │ └── TrackDataComponentImpl.kt │ │ └── remote │ │ │ ├── TrackRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── TrackResponse.kt │ │ ├── track_selection │ │ ├── details │ │ │ ├── cache │ │ │ │ ├── TrackSelectionDetailsCacheDataSourceImpl.kt │ │ │ │ └── TrackSelectionDetailsCacheKeyValues.kt │ │ │ ├── data │ │ │ │ ├── repository │ │ │ │ │ └── TrackSelectionDetailsRepositoryImpl.kt │ │ │ │ └── source │ │ │ │ │ └── TrackSelectionDetailsCacheDataSource.kt │ │ │ ├── domain │ │ │ │ ├── analytic │ │ │ │ │ ├── TrackSelectionDetailsClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ │ ├── TrackSelectionDetailsSelectButtonClickedHyperskillAnalyticEvent.kt │ │ │ │ │ └── TrackSelectionDetailsViewedHyperskillAnalyticEvent.kt │ │ │ │ └── repository │ │ │ │ │ └── TrackSelectionDetailsRepository.kt │ │ │ ├── injection │ │ │ │ ├── TrackSelectionDetailsComponent.kt │ │ │ │ ├── TrackSelectionDetailsComponentImpl.kt │ │ │ │ ├── TrackSelectionDetailsDataComponent.kt │ │ │ │ ├── TrackSelectionDetailsDataComponentImpl.kt │ │ │ │ ├── TrackSelectionDetailsFeatureBuilder.kt │ │ │ │ └── TrackSelectionDetailsParams.kt │ │ │ ├── presentation │ │ │ │ ├── TrackSelectionDetailsActionDispatcher.kt │ │ │ │ ├── TrackSelectionDetailsFeature.kt │ │ │ │ └── TrackSelectionDetailsReducer.kt │ │ │ └── view │ │ │ │ └── TrackSelectionDetailsViewStateMapper.kt │ │ └── list │ │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── TrackSelectionListClickedRetryContentLoadingHyperskillAnalyticEvent.kt │ │ │ │ ├── TrackSelectionListTrackClickedHyperskillAnalyticEvent.kt │ │ │ │ └── TrackSelectionListViewedHyperskillAnalyticEvent.kt │ │ │ ├── injection │ │ │ ├── TrackSelectionListComponent.kt │ │ │ ├── TrackSelectionListComponentImpl.kt │ │ │ ├── TrackSelectionListFeatureBuilder.kt │ │ │ └── TrackSelectionListParams.kt │ │ │ ├── presentation │ │ │ ├── TrackSelectionListActionDispatcher.kt │ │ │ ├── TrackSelectionListFeature.kt │ │ │ └── TrackSelectionListReducer.kt │ │ │ └── view │ │ │ └── TrackSelectionListViewStateMapper.kt │ │ ├── user_storage │ │ ├── cache │ │ │ ├── UserStorageCacheDataSourceImpl.kt │ │ │ └── UserStorageCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── UserStorageRepositoryImpl.kt │ │ │ └── source │ │ │ │ ├── UserStorageCacheDataSource.kt │ │ │ │ └── UserStorageRemoteDataSource.kt │ │ ├── domain │ │ │ ├── interactor │ │ │ │ └── UserStorageInteractor.kt │ │ │ ├── model │ │ │ │ ├── UserStorage.kt │ │ │ │ ├── UserStoragePathBuilder.kt │ │ │ │ └── UserStoragePathKeyValues.kt │ │ │ └── repository │ │ │ │ └── UserStorageRepository.kt │ │ ├── injection │ │ │ ├── UserStorageComponent.kt │ │ │ └── UserStorageComponentImpl.kt │ │ └── remote │ │ │ ├── UserStorageRemoteDataSourceImpl.kt │ │ │ └── model │ │ │ └── UserStorageResponse.kt │ │ ├── users │ │ └── domain │ │ │ └── model │ │ │ └── User.kt │ │ ├── users_interview_widget │ │ ├── cache │ │ │ ├── UsersInterviewWidgetCacheDataSourceImpl.kt │ │ │ └── UsersInterviewWidgetCacheKeyValues.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── UsersInterviewWidgetRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── UsersInterviewWidgetCacheDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── UsersInterviewWidgetClickedCloseHyperskillAnalyticEvent.kt │ │ │ │ ├── UsersInterviewWidgetClickedHyperskillAnalyticEvent.kt │ │ │ │ └── UsersInterviewWidgetViewedHyperskillAnalyticEvent.kt │ │ │ └── repository │ │ │ │ └── UsersInterviewWidgetRepository.kt │ │ ├── injection │ │ │ ├── UsersInterviewWidgetComponent.kt │ │ │ └── UsersInterviewWidgetComponentImpl.kt │ │ └── presentation │ │ │ ├── MainUsersInterviewWidgetActionDispatcher.kt │ │ │ ├── UsersInterviewWidgetActionDispatcher.kt │ │ │ ├── UsersInterviewWidgetFeature.kt │ │ │ └── UsersInterviewWidgetReducer.kt │ │ ├── welcome │ │ ├── cache │ │ │ ├── WelcomeCacheDataSourceImpl.kt │ │ │ └── WelcomeCacheKeys.kt │ │ ├── data │ │ │ ├── repository │ │ │ │ └── WelcomeRepositoryImpl.kt │ │ │ └── source │ │ │ │ └── WelcomeCacheDataSource.kt │ │ ├── domain │ │ │ ├── analytic │ │ │ │ ├── WelcomeScreenClickedSignInHyperskillAnalyticEvent.kt │ │ │ │ ├── WelcomeScreenClickedSignUnHyperskillAnalyticEvent.kt │ │ │ │ └── WelcomeScreenViewedHyperskillAnalyticEvent.kt │ │ │ ├── interactor │ │ │ │ └── WelcomeInteractor.kt │ │ │ └── repository │ │ │ │ └── WelcomeRepository.kt │ │ ├── injection │ │ │ ├── WelcomeComponent.kt │ │ │ ├── WelcomeComponentImpl.kt │ │ │ ├── WelcomeDataComponent.kt │ │ │ ├── WelcomeDataComponentImpl.kt │ │ │ └── WelcomeFeatureBuilder.kt │ │ └── presentation │ │ │ ├── WelcomeActionDispatcher.kt │ │ │ ├── WelcomeFeature.kt │ │ │ └── WelcomeReducer.kt │ │ └── welcome_onboarding │ │ ├── finish │ │ ├── injection │ │ │ ├── WelcomeOnboardingFinishComponent.kt │ │ │ └── WelcomeOnboardingFinishComponentImpl.kt │ │ └── view │ │ │ ├── WelcomeOnboardingFinishViewState.kt │ │ │ └── WelcomeOnboardingFinishViewStateMapper.kt │ │ ├── model │ │ ├── WelcomeOnboardingFeatureParams.kt │ │ └── WelcomeOnboardingTrack.kt │ │ ├── questionnaire │ │ ├── injection │ │ │ ├── WelcomeQuestionnaireComponent.kt │ │ │ └── WelcomeQuestionnaireComponentImpl.kt │ │ ├── model │ │ │ ├── WelcomeQuestionnaireItemType.kt │ │ │ └── WelcomeQuestionnaireType.kt │ │ └── view │ │ │ ├── WelcomeQuestionnaireItem.kt │ │ │ ├── WelcomeQuestionnaireViewState.kt │ │ │ └── WelcomeQuestionnaireViewStateMapper.kt │ │ ├── root │ │ ├── domain │ │ │ └── analytic │ │ │ │ ├── WelcomeOnboardingFinishScreenStartClickedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingFinishScreenViewedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingProgrammingLanguageClickedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingQuestionnaireItemClickedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingSelectProgrammingLanguageViewedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingStartJourneyClickedHSAnalyticEvent.kt │ │ │ │ ├── WelcomeOnboardingStartScreenViewedHSAnalyticEvent.kt │ │ │ │ └── WelcomeOnboardingUserQuestionnaireViewedHSAnalyticEvent.kt │ │ ├── injection │ │ │ ├── WelcomeOnboardingComponent.kt │ │ │ ├── WelcomeOnboardingComponentImpl.kt │ │ │ └── WelcomeOnboardingFeatureBuilder.kt │ │ ├── model │ │ │ ├── WelcomeOnboardingProgrammingLanguage.kt │ │ │ └── WelcomeOnboardingStartScreen.kt │ │ └── presentation │ │ │ ├── WelcomeOnboardingActionDispatcher.kt │ │ │ ├── WelcomeOnboardingFeature.kt │ │ │ └── WelcomeOnboardingReducer.kt │ │ └── track_details │ │ ├── domain │ │ └── analytic │ │ │ ├── WelcomeOnboardingSelectTrackClickedHSAnalyticEvent.kt │ │ │ └── WelcomeOnboardingSelectTrackViewedHSAnalyticEvent.kt │ │ ├── injection │ │ ├── WelcomeOnboardingTrackDetailsComponent.kt │ │ ├── WelcomeOnboardingTrackDetailsComponentImpl.kt │ │ └── WelcomeOnboardingTrackDetailsFeatureBuilder.kt │ │ ├── presentation │ │ ├── WelcomeOnboardingTrackDetailsActionDispatcher.kt │ │ ├── WelcomeOnboardingTrackDetailsFeature.kt │ │ └── WelcomeOnboardingTrackDetailsReducer.kt │ │ └── view │ │ ├── WelcomeOnboardingTrackDetailsTitle.kt │ │ └── WelcomeOnboardingTrackDetailsViewStateMapper.kt └── moko-resources │ ├── base │ ├── plurals.xml │ └── strings.xml │ └── colors │ └── colors.xml ├── commonTest └── kotlin │ └── org │ └── hyperskill │ ├── AnalyticHyperskillRequestTest.kt │ ├── HyperskillAnalyticRouteTest.kt │ ├── HyperskillUrlBuilderTest.kt │ ├── KotlinDateSerializationTest.kt │ ├── ProjectWithProgressTest.kt │ ├── ReplySerializationTest.kt │ ├── RepositoryCacheProxyTest.kt │ ├── ResourceProviderStub.kt │ ├── StepQuizHintsViewStateMapperTest.kt │ ├── SubmissionFeedbackSerializationTest.kt │ ├── SubmissionSerializationTest.kt │ ├── TopicProgressTest.kt │ ├── TrackWithProgressTest.kt │ ├── analytic │ ├── data │ │ └── repository │ │ │ └── AnalyticHyperskillRepositoryTest.kt │ └── domain │ │ └── processor │ │ └── AmplitudeAnalyticEventMapperTest.kt │ ├── auth │ └── AuthResponseSerializationTest.kt │ ├── challenges │ ├── domain │ │ └── model │ │ │ └── ChallengeDeserializationTest.kt │ └── widget │ │ └── view │ │ └── mapper │ │ └── ChallengeWidgetViewStateMapperTest.kt │ ├── commets │ ├── domain │ │ └── model │ │ │ ├── CommentAuthorStub.kt │ │ │ └── CommentStub.kt │ └── screen │ │ ├── CommentsScreenReducerTest.kt │ │ └── CommentsScreenViewStateMapperTest.kt │ ├── core │ ├── data │ │ └── repository │ │ │ ├── BaseStateRepositoryTest.kt │ │ │ ├── TestStateHolder.kt │ │ │ └── TestStateRepository.kt │ ├── presentation │ │ └── CompletableCoroutineActionDispatcherTest.kt │ └── view │ │ └── mapper │ │ └── date │ │ ├── MonthFormatterTest.kt │ │ └── SharedDateFormatterTest.kt │ ├── device │ └── DeviceSerializationTest.kt │ ├── leaderboard │ ├── domain │ │ └── model │ │ │ └── LeaderboardItemDeserializationTest.kt │ └── widget │ │ └── view │ │ └── mapper │ │ └── LeaderboardWidgetViewStateMapperTest.kt │ ├── learning_activities │ ├── LearningActivitiesRequestTest.kt │ └── domain │ │ └── model │ │ └── LearningActivityStub.kt │ ├── main │ └── AppFeatureTest.kt │ ├── notification │ └── NotificationClickHandlingFeatureTest.kt │ ├── notification_daily_study_reminder_widget │ ├── NotificationDailyStudyReminderWidgetTest.kt │ └── NotificationDailyStudyReminderWidgetViewStateMapperTest.kt │ ├── notifications_onboarding │ └── NotificationsOnboardingFeatureTest.kt │ ├── onboarding │ └── domain │ │ └── model │ │ └── ProblemsOnboardingFlagsStub.kt │ ├── paywall │ └── PaywallTest.kt │ ├── products │ └── domain │ │ └── model │ │ └── ProductStub.kt │ ├── profile │ ├── ProfileSerializationTest.kt │ └── ProfileStub.kt │ ├── profile_settings │ └── ProfileSettingsSerializationTest.kt │ ├── progress_screen │ └── ProgressScreenTest.kt │ ├── projects_selection │ ├── ProjectProgressStub.kt │ ├── ProjectStub.kt │ ├── ProjectWithProgressStub.kt │ └── ProjectsListTest.kt │ ├── providers │ └── ProviderStub.kt │ ├── search_results │ └── remote │ │ └── model │ │ └── SearchResultsResponseDeserializationTest.kt │ ├── sentry │ ├── breadcrumb │ │ └── HyperskillSentryBreadcrumbAnalyticEventMapperTest.kt │ └── transaction │ │ ├── HyperskillSentryTransactionBuilderTest.kt │ │ └── HyperskillSentryTransactionTagTest.kt │ ├── stage_implement │ └── StageImplementTest.kt │ ├── stages │ └── domain │ │ └── model │ │ └── StageStub.kt │ ├── step │ ├── StepViewStateMapperTest.kt │ └── domain │ │ └── model │ │ ├── BlockStub.kt │ │ └── StepStub.kt │ ├── step_completion │ └── StepCompletionTest.kt │ ├── step_quiz │ ├── StepQuizFeedbackMapperTest.kt │ ├── StepQuizResolverTest.kt │ ├── StepQuizTest.kt │ ├── domain │ │ ├── model │ │ │ ├── AttemptStub.kt │ │ │ └── SubmissionStub.kt │ │ └── validation │ │ │ └── StepQuizReplyValidatorTest.kt │ └── presentation │ │ └── StepQuizChildFeatureReducerStub.kt │ ├── step_quiz_code_blanks │ ├── presentation │ │ ├── StepQuizCodeBlanksCreateReplyTest.kt │ │ ├── StepQuizCodeBlanksFeatureStateStub.kt │ │ ├── StepQuizCodeBlanksReducerCodeBlockChildClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerCodeBlockClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerDecreaseIndentLevelButtonClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerDeleteButtonClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerElifAndElseStatementsSuggestionsAvailabilityTest.kt │ │ ├── StepQuizCodeBlanksReducerEnterButtonClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerInitializeTest.kt │ │ ├── StepQuizCodeBlanksReducerOnboardingTest.kt │ │ ├── StepQuizCodeBlanksReducerSpaceButtonClickedTest.kt │ │ ├── StepQuizCodeBlanksReducerStub.kt │ │ ├── StepQuizCodeBlanksReducerSuggestionClickedTest.kt │ │ └── StepQuizCodeBlanksStateExtensionsTest.kt │ ├── template │ │ └── CodeBlanksTemplateMapperTest.kt │ └── view │ │ ├── StepQuizCodeBlanksViewStateMapperIsDecreaseIndentLevelButtonHiddenTest.kt │ │ ├── StepQuizCodeBlanksViewStateMapperIsDeleteButtonEnabledTest.kt │ │ ├── StepQuizCodeBlanksViewStateMapperIsSpaceButtonHiddenTest.kt │ │ ├── StepQuizCodeBlanksViewStateMapperSequencesTest.kt │ │ ├── StepQuizCodeBlanksViewStateMapperSuggestionsTest.kt │ │ └── StepQuizCodeBlanksViewStateTest.kt │ ├── step_quiz_fill_blanks │ ├── FillBlanksMapperInputModeTest.kt │ ├── FillBlanksMapperSelectModeTest.kt │ └── FillBlanksResolverTest.kt │ ├── step_quiz_toolbar │ └── StepQuizToolbarTest.kt │ ├── step_toolbar │ └── StepToolbarTest.kt │ ├── streak_recovery │ └── StreakRecoveryTest.kt │ ├── streaks │ └── domain │ │ └── model │ │ └── StreakStub.kt │ ├── study_plan │ ├── domain │ │ └── model │ │ │ ├── StudyPlanSectionStub.kt │ │ │ ├── StudyPlanSectionTest.kt │ │ │ └── StudyPlanStub.kt │ ├── screen │ │ ├── StudyPlanScreenFeatureStubState.kt │ │ ├── StudyPlanScreenTest.kt │ │ └── StudyPlanScreenViewStateMapperTest.kt │ └── widget │ │ ├── StudyPlanExpandCompletedActivitiesTest.kt │ │ ├── StudyPlanLoadMoreActivitiesTest.kt │ │ ├── StudyPlanWidgetStateExtensionsTest.kt │ │ └── StudyPlanWidgetTest.kt │ ├── subscriptions │ ├── SubscriptionSerializationTest.kt │ └── SubscriptionStub.kt │ ├── topic_completed_modal │ ├── TopicCompletedModalReducerTest.kt │ └── TopicCompletedModalViewStateMapperTest.kt │ ├── track │ └── TrackStub.kt │ └── track_selection │ ├── TrackProgressStub.kt │ ├── TrackWithProgressStub.kt │ ├── details │ └── TrackSelectionDetailsTest.kt │ └── list │ └── TrackSelectionListTest.kt └── iosMain └── kotlin └── org └── hyperskill └── app ├── application_shortcuts ├── domain │ ├── analytic │ │ └── ApplicationShortcutItemClickedHyperskillAnalyticEvent.kt │ └── interactor │ │ └── ApplicationShortcutsInteractor.kt └── injection │ ├── ApplicationShortcutsDataComponent.kt │ └── ApplicationShortcutsDataComponentImpl.kt ├── config └── Settings.kt ├── core ├── domain │ ├── model │ │ └── SwiftyResult.kt │ └── platform │ │ └── Platform.kt ├── error │ └── RethrowThrowable.kt ├── extension │ └── KtorUrlToNSURL.kt ├── injection │ ├── CommonComponentImpl.kt │ ├── IosAppComponent.kt │ └── IosAppComponentImpl.kt ├── utils │ └── RegexUtils.ios.kt └── view │ └── mapper │ └── ResourceProviderImpl.kt ├── network └── PreconfiguredHttpClient.kt ├── notification └── remote │ ├── data │ └── repository │ │ ├── IosFCMTokenProvider.kt │ │ └── IosFCMTokenRepository.kt │ └── injection │ └── IosPlatformPushNotificationsDataComponent.kt ├── purchases └── domain │ ├── manager │ ├── IosPurchaseManager.kt │ └── IosPurchaseManagerImpl.kt │ └── model │ ├── HyperskillStoreProduct.kt │ ├── PlatformProductIdentifiers.kt │ └── PlatformPurchaseParams.kt ├── step └── domain │ └── model │ └── BlockName.kt └── step_quiz └── presentation └── StepQuizStateExtensions.kt /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.editorconfig -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/PULL_REQUEST_TEMPLATE.md -------------------------------------------------------------------------------- /.github/actions/setup-android/action.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/actions/setup-android/action.yml -------------------------------------------------------------------------------- /.github/actions/setup-ios/action.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/actions/setup-ios/action.yml -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/filters.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/filters.yaml -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/labeler.yml -------------------------------------------------------------------------------- /.github/workflows/android_beta_deployment.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/android_beta_deployment.yml -------------------------------------------------------------------------------- /.github/workflows/android_deploy_to_firebase.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/android_deploy_to_firebase.yml -------------------------------------------------------------------------------- /.github/workflows/android_deploy_to_firebase_manually.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/android_deploy_to_firebase_manually.yml -------------------------------------------------------------------------------- /.github/workflows/android_release_deployment.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/android_release_deployment.yml -------------------------------------------------------------------------------- /.github/workflows/auto_author_assign.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/auto_author_assign.yml -------------------------------------------------------------------------------- /.github/workflows/automerge_into_release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/automerge_into_release.yml -------------------------------------------------------------------------------- /.github/workflows/build_caches.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/build_caches.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/claude.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/claude.yml -------------------------------------------------------------------------------- /.github/workflows/cleanup_pr_caches.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/cleanup_pr_caches.yml -------------------------------------------------------------------------------- /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/codeql.yml -------------------------------------------------------------------------------- /.github/workflows/detect_changed_files_reusable_workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/detect_changed_files_reusable_workflow.yml -------------------------------------------------------------------------------- /.github/workflows/gh_pages_analytics.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/gh_pages_analytics.yml -------------------------------------------------------------------------------- /.github/workflows/greetings.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/greetings.yml -------------------------------------------------------------------------------- /.github/workflows/ios_beta_deployment.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/ios_beta_deployment.yml -------------------------------------------------------------------------------- /.github/workflows/ios_release_deployment.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/ios_release_deployment.yml -------------------------------------------------------------------------------- /.github/workflows/ios_unit_testing.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/ios_unit_testing.yml -------------------------------------------------------------------------------- /.github/workflows/label.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/label.yml -------------------------------------------------------------------------------- /.github/workflows/merge_main_into_develop.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/merge_main_into_develop.yml -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.github/workflows/stale.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/.gitignore -------------------------------------------------------------------------------- /.java-version: -------------------------------------------------------------------------------- 1 | temurin64-19.0.2 2 | -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/README.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/SECURITY.md -------------------------------------------------------------------------------- /androidHyperskillApp/.ruby-version: -------------------------------------------------------------------------------- 1 | 3.3.0 2 | -------------------------------------------------------------------------------- /androidHyperskillApp/Gemfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/Gemfile -------------------------------------------------------------------------------- /androidHyperskillApp/Gemfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/Gemfile.lock -------------------------------------------------------------------------------- /androidHyperskillApp/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/build.gradle.kts -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/Appfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/fastlane/Appfile -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/Fastfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/fastlane/Fastfile -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/Pluginfile: -------------------------------------------------------------------------------- 1 | gem 'fastlane-plugin-firebase_app_distribution' 2 | -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/fastlane/README.md -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/metadata/android/en-US/changelogs/default.txt: -------------------------------------------------------------------------------- 1 | Bug fixes, minor improvements, and more. -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/fastlane/metadata/android/en-US/full_description.txt -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/fastlane/metadata/android/en-US/short_description.txt -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Hyperskill: Learn to Code -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/metadata/android/en-US/video.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /androidHyperskillApp/fastlane/release-notes.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /androidHyperskillApp/google-services.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/google-services.json -------------------------------------------------------------------------------- /androidHyperskillApp/keys/debug.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/keys/debug.properties -------------------------------------------------------------------------------- /androidHyperskillApp/keys/debug_keystore.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/keys/debug_keystore.properties -------------------------------------------------------------------------------- /androidHyperskillApp/keys/release.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/keys/release.properties -------------------------------------------------------------------------------- /androidHyperskillApp/libs/flexbox-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/libs/flexbox-release.aar -------------------------------------------------------------------------------- /androidHyperskillApp/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/proguard-rules.pro -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/alt.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/alt.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/altcontent.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/altcontent.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/bootstrap.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/bootstrap.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/fonts.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/fonts.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/highlight.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/highlight.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/hljs.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/hljs.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/icons.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/icons.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/step.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/step.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/variables.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/variables.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/css/wysiwyg.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/css/wysiwyg.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/auto-render.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/auto-render.min.js -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/katex.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/katex.min.css -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/katex/katex.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/katex/katex.min.js -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/scripts/highlight.pack.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/scripts/highlight.pack.js -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/scripts/lines_wrapper.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/scripts/lines_wrapper.js -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/assets/scripts/remove_iframes.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/assets/scripts/remove_iframes.js -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/ic_app_icon-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/ic_app_icon-playstore.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/fade_out.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/navigation_fade_out.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/navigation_fade_out.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/navigation_slide_in.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/navigation_slide_in.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/slide_in.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/slide_in.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/slide_in_from_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/slide_in_from_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/anim/slide_out_to_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/anim/slide_out_to_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/animator/arrow_bottom_to_top.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/animator/arrow_bottom_to_top.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/animator/arrow_top_to_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/animator/arrow_top_to_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/color/color_step_quiz_sorting_stroke.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/color/color_step_quiz_sorting_stroke.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/badge_placeholder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/badge_placeholder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/bg_hexogens_static.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/bg_hexogens_static.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/ic_branded_logo_splash.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/ic_branded_logo_splash.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/ic_complete_daily_step.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/ic_complete_daily_step.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/ic_notifiaction_small.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/ic_notifiaction_small.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/ic_stage_ide_required.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/ic_stage_ide_required.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/ic_subtitle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/ic_subtitle.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_challenge_progress.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_challenge_progress.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_leaderboard_stub.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_leaderboard_stub.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_project_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_project_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_reload.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_stage_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_stage_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_streak_recovery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_streak_recovery.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_study_plan_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_study_plan_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_user_interview_inv.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_user_interview_inv.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/img_welcome_screen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/img_welcome_screen.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-hdpi/problems_limit_reached.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-hdpi/problems_limit_reached.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/badge_placeholder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/badge_placeholder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/bg_hexogens_static.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/bg_hexogens_static.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/ic_branded_logo_splash.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/ic_branded_logo_splash.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/ic_complete_daily_step.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/ic_complete_daily_step.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/ic_notifiaction_small.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/ic_notifiaction_small.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/ic_stage_ide_required.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/ic_stage_ide_required.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/ic_subtitle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/ic_subtitle.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_challenge_progress.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_challenge_progress.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_leaderboard_stub.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_leaderboard_stub.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_project_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_project_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_reload.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_stage_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_stage_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_streak_recovery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_streak_recovery.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_study_plan_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_study_plan_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_user_interview_inv.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_user_interview_inv.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/img_welcome_screen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/img_welcome_screen.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-mdpi/problems_limit_reached.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-mdpi/problems_limit_reached.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/branded_logo_splash.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/branded_logo_splash.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_disabled_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_disabled_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_frozen_streak.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_frozen_streak.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_menu_empty_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_menu_empty_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_profile_projects.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_profile_projects.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_profile_tracks.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_profile_tracks.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-night/ic_settings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-night/ic_settings.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/badge_placeholder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/badge_placeholder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/bg_hexogens_static.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/bg_hexogens_static.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/ic_notifiaction_small.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/ic_notifiaction_small.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/ic_stage_ide_required.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/ic_stage_ide_required.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/ic_subtitle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/ic_subtitle.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_leaderboard_stub.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_leaderboard_stub.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_project_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_project_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_reload.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_stage_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_stage_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_streak_recovery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_streak_recovery.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xhdpi/img_welcome_screen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xhdpi/img_welcome_screen.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/badge_placeholder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/badge_placeholder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/bg_hexogens_static.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/bg_hexogens_static.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/ic_notifiaction_small.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/ic_notifiaction_small.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/ic_subtitle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/ic_subtitle.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_leaderboard_stub.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_leaderboard_stub.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_reload.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_stage_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_stage_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_streak_recovery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_streak_recovery.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxhdpi/img_welcome_screen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxhdpi/img_welcome_screen.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/badge_placeholder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/badge_placeholder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/bg_hexogens_static.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/bg_hexogens_static.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/ic_subtitle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/ic_subtitle.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_paywall.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_paywall.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_reload.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_stage_completed.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_stage_completed.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_streak_recovery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_streak_recovery.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_welcome_screen.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable-xxxhdpi/img_welcome_screen.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/avatar_place_holder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/avatar_place_holder.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/avd_arrow_bottom_to_top.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/avd_arrow_bottom_to_top.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/avd_arrow_top_to_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/avd_arrow_top_to_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_bottom_sheet_dialog.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_bottom_sheet_dialog.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_completed_lable.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_completed_lable.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_divider_vertical.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_divider_vertical.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_gradient_blue.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_gradient_blue.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_gradient_splash.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_gradient_splash.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_gradient_yellow_green.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_gradient_yellow_green.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_next_topic.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_next_topic.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_shape_logo_rectangle.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_shape_logo_rectangle.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_shape_rounded.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_shape_rounded.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_shape_rounded_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_shape_rounded_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_shape_rounded_top.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_shape_rounded_top.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_step_quiz_feedback_wrong.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_step_quiz_feedback_wrong.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_study_plan_current_badge.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_study_plan_current_badge.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_tag_blue.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_tag_blue.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_tag_green.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_tag_green.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_tag_orange.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_tag_orange.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_tag_violet.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_tag_violet.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_topics_repetition_chart.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_topics_repetition_chart.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_topics_to_repeat.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_topics_to_repeat.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/bg_track_progress.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/bg_track_progress.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/branded_logo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/branded_logo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/branded_logo_splash.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/branded_logo_splash.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_activity_locked.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_activity_locked.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_app_icon_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_app_icon_background.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_app_icon_foreground.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_app_icon_foreground.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_arrow_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_arrow_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_arrow_right.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_arrow_right.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_arrow_top.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_arrow_top.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_badge_details_locked.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_badge_details_locked.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_badge_locked.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_badge_locked.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_buy_streak_freeze.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_buy_streak_freeze.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_change_track.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_change_track.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_checkmark.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_checkmark.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_chevron_forward.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_chevron_forward.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_close.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_close_thin.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_close_thin.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_close_topic_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_close_topic_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_crown.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_crown.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_debug.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_debug.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_disabled_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_disabled_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_discussion.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_discussion.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_edit.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_enabled_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_enabled_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_expand_code_editor.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_expand_code_editor.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_frozen_streak.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_frozen_streak.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_gembox.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_gembox.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_gems_count.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_gems_count.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_gems_not_enough.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_gems_not_enough.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_github_logo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_github_logo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_google_logo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_google_logo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_graduate_project.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_graduate_project.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_grip.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_grip.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_hammer.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_hammer.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_hints_helpful.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_hints_helpful.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_hints_useless.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_hints_useless.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_home_screen_arrow_button.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_home_screen_arrow_button.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_hyperskill_logo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_hyperskill_logo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_info_outline_24px.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_info_outline_24px.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_jetbrains_logo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_jetbrains_logo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_leaderboard_first_place.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_leaderboard_first_place.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_leaderboard_second_place.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_leaderboard_second_place.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_leaderboard_third_place.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_leaderboard_third_place.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_level_challenging.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_level_challenging.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_level_easy.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_level_easy.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_level_hard.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_level_hard.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_level_medium.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_level_medium.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_lightning.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_lightning.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_limits.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_limits.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_empty_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_empty_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_enabled_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_enabled_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_gems_count.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_gems_count.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_problems_limit.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_problems_limit.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_recovered_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_recovered_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_menu_search.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_menu_search.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_missed_challenge_day.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_missed_challenge_day.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_close.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_close.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_home.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_home.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_leaderboard.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_leaderboard.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_profile.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_profile.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_study_plan.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_study_plan.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_track.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_track.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_navigation_training.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_navigation_training.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_no_wifi.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_no_wifi.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_parsons_add_tab.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_parsons_add_tab.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_parsons_drop_down_line.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_parsons_drop_down_line.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_parsons_put_up_line.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_parsons_put_up_line.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_parsons_raise_up_line.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_parsons_raise_up_line.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_parsons_remove_tab.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_parsons_remove_tab.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_paywall_option.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_paywall_option.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_facebook.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_facebook.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_github.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_github.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_linkedin.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_linkedin.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_projects.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_projects.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_reddit.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_reddit.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_tracks.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_tracks.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_profile_twitter.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_profile_twitter.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_project_details_graduate.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_project_details_graduate.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_project_details_hard.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_project_details_hard.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_project_details_medium.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_project_details_medium.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_project_graduate.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_project_graduate.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_question_mark.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_question_mark.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_clapping.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_clapping.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_confused.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_confused.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_downvote.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_downvote.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_fire.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_fire.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_show_more.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_show_more.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_smile.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_smile.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_thinking.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_thinking.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_reaction_upvote.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_reaction_upvote.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_recovered_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_recovered_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_retry.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_retry.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_run.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_run.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_section_arrow_bottom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_section_arrow_bottom.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_section_arrow_top.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_section_arrow_top.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_section_time_to_complete.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_section_time_to_complete.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_section_topics_count.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_section_topics_count.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_settings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_settings.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_sorting_down.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_sorting_down.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_sorting_up.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_sorting_up.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_splash_icon.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_splash_icon.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_splash_icon_blue.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_splash_icon_blue.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_splash_icon_inset.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_splash_icon_inset.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_splash_subtitle.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_splash_subtitle.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_star.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_star.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_step_menu_comments.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_step_menu_comments.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_step_quiz_feedback_wrong.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_step_quiz_feedback_wrong.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_step_theory_feedback.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_step_theory_feedback.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_study_plan_expand_all.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_study_plan_expand_all.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_table_arrow.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_table_arrow.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_task_day.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_task_day.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_theory.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_theory.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_time.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_time.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_toolbar_back.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_toolbar_back.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_topic.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_topic.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_topic_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_topic_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_topic_completed_gems.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_topic_completed_gems.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_topic_skipped.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_topic_skipped.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_about_book.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_about_book.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_about_project.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_about_project.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_about_time.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_about_time.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_overview_rating.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_overview_rating.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_progress_time.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_progress_time.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_progress_topics.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_progress_topics.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_track_time.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_track_time.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_user_interview_close.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_user_interview_close.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_welcome_questionnaire_fun.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_welcome_questionnaire_fun.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/ic_welcome_questionnaire_pro.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/ic_welcome_questionnaire_pro.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/img_share_streak_day_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/img_share_streak_day_10.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/img_share_streak_day_100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/img_share_streak_day_100.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/img_share_streak_day_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/img_share_streak_day_25.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/img_share_streak_day_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/img_share_streak_day_5.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/img_share_streak_day_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/img_share_streak_day_50.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_1.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_2.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_3.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_4.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_5.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_6.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_7.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_8.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/drawable/topic_completion_spacebot_9.webp -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/menlo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/menlo.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/menlo_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/menlo_regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/pt_mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/pt_mono.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_bold.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_bolditalic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_italic.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_light.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_medium.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/font/roboto_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/font/roboto_regular.ttf -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/activity_main.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/dialog_in_app_web_view.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/dialog_in_app_web_view.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/dialog_magic_link_progress.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/dialog_magic_link_progress.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/dialog_progress.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/dialog_progress.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_auth_email.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_auth_email.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_auth_social.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_auth_social.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_auth_social_web_view.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_auth_social_web_view.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_badge_details.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_badge_details.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_badge_earned.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_badge_earned.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_completed_daily_step.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_completed_daily_step.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_debug.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_debug.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_fill_blanks_input.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_fill_blanks_input.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_home.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_home.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_leaderboard.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_leaderboard.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_main.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_main.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_problems_limit_info.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_problems_limit_info.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_profile.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_profile.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_profile_settings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_profile_settings.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_project_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_project_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_search_topic.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_search_topic.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_share_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_share_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_stage_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_stage_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_stage_implementation.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_stage_implementation.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_stage_step_wrapper.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_stage_step_wrapper.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step_practice.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step_practice.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step_quiz.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step_quiz.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step_quiz_unsupported.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step_quiz_unsupported.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step_theory.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step_theory.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_step_wrapper.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_step_wrapper.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_streak_freeze.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_streak_freeze.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_streak_recovery.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_streak_recovery.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_study_plan.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_study_plan.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_topic_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_topic_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_topics_repetition.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_topics_repetition.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_track_selection_list.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_track_selection_list.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_unsupported_stage.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_unsupported_stage.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/fragment_welcome.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/fragment_welcome.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_auth_material_card_view.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_auth_material_card_view.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_button_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_button_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_choice_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_choice_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_project.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_project.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_project_block_header.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_project_block_header.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_project_selection_header.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_project_selection_header.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_step_quiz_multiple_choice.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_step_quiz_multiple_choice.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_step_quiz_parsons_line.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_step_quiz_parsons_line.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_step_quiz_single_choice.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_step_quiz_single_choice.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_step_quiz_sorting.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_step_quiz_sorting.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_step_theory_rating.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_step_theory_rating.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_streak.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_streak.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_study_plan_activity.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_study_plan_activity.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_study_plan_paywall.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_study_plan_paywall.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_study_plan_section.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_study_plan_section.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_table_selection.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_table_selection.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_topic_to_repeat.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_topic_to_repeat.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_topics_list_placeholder.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_topics_list_placeholder.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_topics_to_repeat_header.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_topics_to_repeat_header.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_topics_to_repeat_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_topics_to_repeat_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_track.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_track.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_track_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_track_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/item_user.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/item_user.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_code_editor_test.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_code_editor_test.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_embedded_code_editor.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_embedded_code_editor.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_fill_blanks_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_fill_blanks_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_gamification_toolbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_gamification_toolbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_home_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_home_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_latex_textview.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_latex_textview.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_latex_webview.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_latex_webview.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_learn_next_topic_badge.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_learn_next_topic_badge.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_problem_of_the_day_card.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_problem_of_the_day_card.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_daily_reminder.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_daily_reminder.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_header.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_header.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_personal_info.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_personal_info.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_statistics.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_statistics.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_profile_streak_card.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_profile_streak_card.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_quiz_buttons.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_quiz_buttons.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_hint_action_button.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_hint_action_button.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_choice.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_choice.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_code.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_code.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_code_details.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_code_details.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_code_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_code_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_description.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_description.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_fill_blanks.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_fill_blanks.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_hint_card.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_hint_card.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_hints.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_hints.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_matching.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_matching.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_parsons.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_parsons.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_sorting.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_sorting.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_sql.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_sql.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_table.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_table.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_text.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_text.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_step_quiz_text_skeleton.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_step_quiz_text_skeleton.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_topics_repetition_card.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_topics_repetition_card.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/layout_topics_repetition_chart.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/layout_topics_repetition_chart.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/progress_bar_on_empty_screen.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/progress_bar_on_empty_screen.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/step_text_header.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/step_text_header.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_best_rating.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_best_rating.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_beta.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_beta.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_completed.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_completed.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_fastest_to_complete.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_fastest_to_complete.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_ide_required.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_ide_required.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_badge_selected.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_badge_selected.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_centered_appbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_centered_appbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_centered_toolbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_centered_toolbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_code_editor.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_code_editor.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_code_toolbar_item.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_code_toolbar_item.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_code_toolbar_separator.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_code_toolbar_separator.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_divider_vertical.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_divider_vertical.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_main_splash.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_main_splash.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_profile_settings_content.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_profile_settings_content.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_appbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_appbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_quiz_theory_button.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_quiz_theory_button.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_quiz_toolbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_quiz_toolbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_theory_action.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_theory_action.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_theory_feedback.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_theory_feedback.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/view_step_toolbar.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/view_step_toolbar.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/layout/widget_data_loading_error.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/layout/widget_data_loading_error.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/menu/code_playground_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/menu/code_playground_menu.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/menu/main_bottom_navigation.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/menu/main_bottom_navigation.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/menu/stage_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/menu/stage_menu.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/menu/step_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/menu/step_menu.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/menu/step_quiz_appbar_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/menu/step_quiz_appbar_menu.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-anydpi-v26/ic_app_icon.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-anydpi-v26/ic_app_icon.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-anydpi-v26/ic_app_icon_round.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-anydpi-v26/ic_app_icon_round.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-hdpi/ic_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-hdpi/ic_app_icon.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-hdpi/ic_app_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-hdpi/ic_app_icon_round.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-mdpi/ic_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-mdpi/ic_app_icon.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-mdpi/ic_app_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-mdpi/ic_app_icon_round.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xhdpi/ic_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xhdpi/ic_app_icon.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xhdpi/ic_app_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xhdpi/ic_app_icon_round.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xxhdpi/ic_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xxhdpi/ic_app_icon.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xxhdpi/ic_app_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xxhdpi/ic_app_icon_round.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xxxhdpi/ic_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xxxhdpi/ic_app_icon.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/mipmap-xxxhdpi/ic_app_icon_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/mipmap-xxxhdpi/ic_app_icon_round.png -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-mdpi/topic_completion_bg_1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-mdpi/topic_completion_bg_1.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-mdpi/topic_completion_bg_2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-mdpi/topic_completion_bg_2.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-night-mdpi/topic_completion_bg_1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-night-mdpi/topic_completion_bg_1.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-night-mdpi/topic_completion_bg_2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-night-mdpi/topic_completion_bg_2.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-night-xhdpi/topic_completion_bg_1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-night-xhdpi/topic_completion_bg_1.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-night-xhdpi/topic_completion_bg_2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-night-xhdpi/topic_completion_bg_2.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-xhdpi/topic_completion_bg_1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-xhdpi/topic_completion_bg_1.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-xhdpi/topic_completion_bg_2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-xhdpi/topic_completion_bg_2.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-xxxhdpi/topic_completion_bg_1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-xxxhdpi/topic_completion_bg_1.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/raw-xxxhdpi/topic_completion_bg_2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/raw-xxxhdpi/topic_completion_bg_2.mp4 -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values-night-v31/bool.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values-night-v31/bool.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values-night-v31/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values-night-v31/themes.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values-sw600dp/bools.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values-sw600dp/bools.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values-v31/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values-v31/themes.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/attrs.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/autocomplete_words.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/autocomplete_words.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/bools.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/bools.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/colors.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/dimens.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/frequent_symbols.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/frequent_symbols.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/github_code_theme.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/github_code_theme.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/ids.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/integers.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/light_code_theme.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/light_code_theme.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/loading_view_dimens.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/loading_view_dimens.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/shape.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/shape.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/styles.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/themes.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/tomorrow_night_code_theme.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/tomorrow_night_code_theme.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/tranquil_heart_code_theme.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/tranquil_heart_code_theme.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/values/type.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/values/type.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/xml/network_security_config.xml -------------------------------------------------------------------------------- /androidHyperskillApp/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/androidHyperskillApp/src/main/res/xml/provider_paths.xml -------------------------------------------------------------------------------- /config/detekt/baseline.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/config/detekt/baseline.xml -------------------------------------------------------------------------------- /config/detekt/detekt.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/config/detekt/detekt.yml -------------------------------------------------------------------------------- /gh_delete_all_caches.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gh_delete_all_caches.sh -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/app.versions.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradle/app.versions.toml -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradle/libs.versions.toml -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/gradlew.bat -------------------------------------------------------------------------------- /increment_build_number.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/increment_build_number.sh -------------------------------------------------------------------------------- /iosHyperskillApp/.ruby-version: -------------------------------------------------------------------------------- 1 | 3.3.0 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/.swiftlint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/.swiftlint.yml -------------------------------------------------------------------------------- /iosHyperskillApp/Gemfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Gemfile -------------------------------------------------------------------------------- /iosHyperskillApp/Gemfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Gemfile.lock -------------------------------------------------------------------------------- /iosHyperskillApp/NotificationServiceExtension/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/NotificationServiceExtension/Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/NotificationServiceExtension/NotificationService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/NotificationServiceExtension/NotificationService.swift -------------------------------------------------------------------------------- /iosHyperskillApp/Podfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Podfile -------------------------------------------------------------------------------- /iosHyperskillApp/Podfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Podfile.lock -------------------------------------------------------------------------------- /iosHyperskillApp/Rambafile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Rambafile -------------------------------------------------------------------------------- /iosHyperskillApp/Templates/hyperskill-module/Code/Assembly.swift.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Templates/hyperskill-module/Code/Assembly.swift.liquid -------------------------------------------------------------------------------- /iosHyperskillApp/Templates/hyperskill-module/Code/View.swift.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Templates/hyperskill-module/Code/View.swift.liquid -------------------------------------------------------------------------------- /iosHyperskillApp/Templates/hyperskill-module/Code/ViewModel.swift.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Templates/hyperskill-module/Code/ViewModel.swift.liquid -------------------------------------------------------------------------------- /iosHyperskillApp/Templates/hyperskill-module/hyperskill-module.rambaspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/Templates/hyperskill-module/hyperskill-module.rambaspec -------------------------------------------------------------------------------- /iosHyperskillApp/TestPlans/AllTests.xctestplan: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/TestPlans/AllTests.xctestplan -------------------------------------------------------------------------------- /iosHyperskillApp/TestPlans/UITests.xctestplan: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/TestPlans/UITests.xctestplan -------------------------------------------------------------------------------- /iosHyperskillApp/TestPlans/UnitTests.xctestplan: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/TestPlans/UnitTests.xctestplan -------------------------------------------------------------------------------- /iosHyperskillApp/autocorrect.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/autocorrect.sh -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Appfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Appfile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Devicefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Devicefile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Fastfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Fastfile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Matchfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Matchfile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Pluginfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Pluginfile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/README.md -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/Scanfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/Scanfile -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/certs/AppleWWDRCAG6.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/certs/AppleWWDRCAG6.cer -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/copyright.txt: -------------------------------------------------------------------------------- 1 | Hyperskill 2024 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/apple_tv_privacy_policy.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/description.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/en-US/description.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/keywords.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/en-US/keywords.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/marketing_url.txt: -------------------------------------------------------------------------------- 1 | https://hyperskill.org 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/name.txt: -------------------------------------------------------------------------------- 1 | Hyperskill: Learn to Code -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/privacy_url.txt: -------------------------------------------------------------------------------- 1 | https://hyperskill.org/terms 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/promotional_text.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/en-US/promotional_text.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/release_notes.txt: -------------------------------------------------------------------------------- 1 | Bug fixes, minor improvements, and more. -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/subtitle.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/en-US/subtitle.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/en-US/support_url.txt: -------------------------------------------------------------------------------- 1 | https://support.hyperskill.org/hc/en-us 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/primary_category.txt: -------------------------------------------------------------------------------- 1 | EDUCATION 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/primary_first_sub_category.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/primary_second_sub_category.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/demo_password.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/demo_password.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/demo_user.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/demo_user.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/email_address.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/email_address.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/first_name.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/first_name.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/last_name.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/last_name.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/notes.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/notes.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/review_information/phone_number.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/metadata/review_information/phone_number.txt -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/secondary_category.txt: -------------------------------------------------------------------------------- 1 | DEVELOPER_TOOLS 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/secondary_first_sub_category.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/metadata/secondary_second_sub_category.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/release-notes.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /iosHyperskillApp/fastlane/screenshots/README.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/fastlane/screenshots/README.txt -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/AppsFlyer-Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/AppsFlyer-Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/AuthSocial/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/AuthSocial/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Comments/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Comments/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Common/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Common/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Home/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Home/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Leaderboard/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Leaderboard/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Onboarding/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Onboarding/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Paywall/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Paywall/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Placeholder/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Placeholder/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Profile/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Profile/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/ShareStreak/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/ShareStreak/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Step/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Step/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/StepQuiz/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/StepQuiz/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/StudyPlan/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/StudyPlan/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/TabBar/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/TabBar/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Track/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Assets.xcassets/Track/Contents.json -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/GoogleService-Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/GoogleService-Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/LaunchScreen.storyboard -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/LottieAnimations/LottieAnimations.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/LottieAnimations/LottieAnimations.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/MathJax.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/MathJax.js -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/PrivacyInfo.xcprivacy -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/RevenueCat-Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/RevenueCat-Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sentry-Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sentry-Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/AppDelegate.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Frameworks/Core/Assembly.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Frameworks/Core/Assembly.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Debouncer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Debouncer.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/DeviceInfo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/DeviceInfo.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Formatter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Formatter.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/LayoutInsets.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/LayoutInsets.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/MainBundleInfo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/MainBundleInfo.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Require.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/Require.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/UnitConverters.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/UnitConverters.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Helpers/UserAgentBuilder.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Helpers/UserAgentBuilder.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Models/Constants/SentryInfo.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Models/Constants/SentryInfo.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Models/Constants/Strings.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Models/Constants/Strings.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppAssembly.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppAssembly.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppView.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/App/AppViewModel.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Debug/DebugAssembly.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Debug/DebugAssembly.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/HomeAssembly.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/HomeAssembly.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/HomeViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/HomeViewModel.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/Views/HomeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Home/Views/HomeView.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/StepAssembly.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/StepAssembly.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/StepViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/StepViewModel.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/Views/StepView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Step/Views/StepView.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Modules/Welcome/WelcomeView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Modules/Welcome/WelcomeView.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Protocols/Reusable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Protocols/Reusable.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/AmplitudeManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/AmplitudeManager.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/AppAppearance.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/AppAppearance.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/AppsFlyerManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/AppsFlyerManager.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/KeyboardManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/KeyboardManager.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/NukeManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/NukeManager.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/ProgressHUD.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/ProgressHUD.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Systems/PurchaseManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Systems/PurchaseManager.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/CardView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/CardView.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/HSTabBar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/HSTabBar.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/RadioButton.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Sources/Views/SwiftUI/RadioButton.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Theme/Color+DesignSystem.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Theme/Color+DesignSystem.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Theme/ColorPalette.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Theme/ColorPalette.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/Theme/UIColor+DesignSystem.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/Theme/UIColor+DesignSystem.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/alt.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/alt.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/altcontent.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/altcontent.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/bootstrap.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/bootstrap.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/fonts.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/fonts.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/highlight.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/highlight.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/highlight.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/highlight.js -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/icons.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/icons.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/iosHyperskillApp-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "WKWebViewPanelManager.h" 2 | -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/iosHyperskillApp.entitlements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/iosHyperskillApp.entitlements -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/jquery-3.4.1.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/jquery-3.4.1.min.js -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/kotlin-playground-1.21.1.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/kotlin-playground-1.21.1.min.js -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/lines_wrapper.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/lines_wrapper.js -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/step.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/step.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/variables.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/variables.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillApp/wysiwyg.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillApp/wysiwyg.css -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillAppTests/CollectionsTests/QueueTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillAppTests/CollectionsTests/QueueTests.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillAppTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillAppTests/Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillAppUITests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillAppUITests/Info.plist -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillAppUITests/LaunchPerformanceTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillAppUITests/LaunchPerformanceTests.swift -------------------------------------------------------------------------------- /iosHyperskillApp/iosHyperskillAppUITests/LaunchTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/iosHyperskillAppUITests/LaunchTests.swift -------------------------------------------------------------------------------- /iosHyperskillApp/lint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/iosHyperskillApp/lint.sh -------------------------------------------------------------------------------- /resources/badges/appstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/resources/badges/appstore.png -------------------------------------------------------------------------------- /resources/badges/google-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/resources/badges/google-play.png -------------------------------------------------------------------------------- /resources/screenshots/01.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/resources/screenshots/01.webp -------------------------------------------------------------------------------- /resources/screenshots/02.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/resources/screenshots/02.webp -------------------------------------------------------------------------------- /resources/screenshots/03.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/resources/screenshots/03.webp -------------------------------------------------------------------------------- /sentry.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/sentry.properties -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/settings.gradle.kts -------------------------------------------------------------------------------- /setup_new_release_branch.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/setup_new_release_branch.sh -------------------------------------------------------------------------------- /shared/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/build.gradle.kts -------------------------------------------------------------------------------- /shared/keys/main.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/keys/main.properties -------------------------------------------------------------------------------- /shared/keys/production.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/keys/production.properties -------------------------------------------------------------------------------- /shared/shared.podspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/shared.podspec -------------------------------------------------------------------------------- /shared/src/androidMain/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/androidMain/AndroidManifest.xml -------------------------------------------------------------------------------- /shared/src/androidMain/keys/revenuecat.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/androidMain/keys/revenuecat.properties -------------------------------------------------------------------------------- /shared/src/androidMain/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/androidMain/proguard-rules.pro -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/config/BuildKonfig.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/config/BuildKonfig.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/config/BuildKonfigModule.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/config/BuildKonfigModule.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/domain/BuildVariant.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/domain/BuildVariant.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/domain/LogError.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/domain/LogError.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/injection/AppGraph.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/injection/AppGraph.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/presentation/Timer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/presentation/Timer.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/remote/Meta.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/remote/Meta.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/remote/MetaResponse.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/remote/MetaResponse.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/utils/DateTimeUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/utils/DateTimeUtils.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/core/utils/RegexUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/core/utils/RegexUtils.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/items/domain/model/Item.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/items/domain/model/Item.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/likes/domain/model/Like.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/likes/domain/model/Like.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/network/NetworkBuilder.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/network/NetworkBuilder.kt -------------------------------------------------------------------------------- /shared/src/commonMain/kotlin/org/hyperskill/app/step/domain/model/Step.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/kotlin/org/hyperskill/app/step/domain/model/Step.kt -------------------------------------------------------------------------------- /shared/src/commonMain/moko-resources/base/plurals.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/moko-resources/base/plurals.xml -------------------------------------------------------------------------------- /shared/src/commonMain/moko-resources/base/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/moko-resources/base/strings.xml -------------------------------------------------------------------------------- /shared/src/commonMain/moko-resources/colors/colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonMain/moko-resources/colors/colors.xml -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/HyperskillUrlBuilderTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/HyperskillUrlBuilderTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/ProjectWithProgressTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/ProjectWithProgressTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/ReplySerializationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/ReplySerializationTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/RepositoryCacheProxyTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/RepositoryCacheProxyTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/ResourceProviderStub.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/ResourceProviderStub.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/TopicProgressTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/TopicProgressTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/TrackWithProgressTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/TrackWithProgressTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/main/AppFeatureTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/main/AppFeatureTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/paywall/PaywallTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/paywall/PaywallTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/profile/ProfileStub.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/profile/ProfileStub.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/providers/ProviderStub.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/providers/ProviderStub.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/step/domain/model/StepStub.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/step/domain/model/StepStub.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/step_quiz/StepQuizTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/step_quiz/StepQuizTest.kt -------------------------------------------------------------------------------- /shared/src/commonTest/kotlin/org/hyperskill/track/TrackStub.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/commonTest/kotlin/org/hyperskill/track/TrackStub.kt -------------------------------------------------------------------------------- /shared/src/iosMain/kotlin/org/hyperskill/app/config/Settings.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/iosMain/kotlin/org/hyperskill/app/config/Settings.kt -------------------------------------------------------------------------------- /shared/src/iosMain/kotlin/org/hyperskill/app/core/utils/RegexUtils.ios.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyperskill/mobile-app/HEAD/shared/src/iosMain/kotlin/org/hyperskill/app/core/utils/RegexUtils.ios.kt --------------------------------------------------------------------------------