gitextract__a69pf7r/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── actions/ │ │ └── setup-protobuf/ │ │ └── action.yml │ ├── pull_request_template.md │ ├── scripts/ │ │ └── parse_changelog.sh │ └── workflows/ │ ├── build.yml │ ├── build_pr.yml │ ├── build_quick.yml │ └── release.yml ├── .gitignore ├── .gitmodules ├── AGENTS.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── generate_proto.sh │ ├── lint.xml │ ├── proguard-rules.pro │ ├── schemas/ │ │ └── com.metrolist.music.db.InternalDatabase/ │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 3.json │ │ ├── 30.json │ │ ├── 31.json │ │ ├── 32.json │ │ ├── 33.json │ │ ├── 34.json │ │ ├── 35.json │ │ ├── 36.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ └── src/ │ ├── debug/ │ │ └── res/ │ │ └── xml/ │ │ └── shortcuts.xml │ ├── foss/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── metrolist/ │ │ └── music/ │ │ ├── cast/ │ │ │ └── CastOptionsProvider.kt │ │ ├── playback/ │ │ │ └── CastConnectionHandler.kt │ │ └── ui/ │ │ └── component/ │ │ └── CastButton.kt │ ├── gms/ │ │ └── kotlin/ │ │ └── com/ │ │ └── metrolist/ │ │ └── music/ │ │ ├── cast/ │ │ │ ├── CastManager.kt │ │ │ └── CastOptionsProvider.kt │ │ ├── playback/ │ │ │ └── CastConnectionHandler.kt │ │ └── ui/ │ │ └── component/ │ │ ├── CastButton.kt │ │ └── CastPickerSheet.kt │ ├── izzy/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── metrolist/ │ │ └── music/ │ │ ├── cast/ │ │ │ └── CastOptionsProvider.kt │ │ ├── playback/ │ │ │ └── CastConnectionHandler.kt │ │ └── ui/ │ │ └── component/ │ │ └── CastButton.kt │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ ├── po_token.html │ │ └── solver/ │ │ ├── astring.js │ │ ├── meriyah.js │ │ └── yt.solver.core.js │ ├── kotlin/ │ │ └── com/ │ │ ├── dpi/ │ │ │ ├── ActivityLifecycleManager.kt │ │ │ ├── BaseLifecycleContentProvider.kt │ │ │ ├── DensityConfiguration.kt │ │ │ └── DensityScaler.kt │ │ └── metrolist/ │ │ └── music/ │ │ ├── App.kt │ │ ├── MainActivity.kt │ │ ├── api/ │ │ │ ├── DeepLService.kt │ │ │ ├── MistralService.kt │ │ │ ├── OpenRouterService.kt │ │ │ └── OpenRouterStreamingService.kt │ │ ├── constants/ │ │ │ ├── Dimensions.kt │ │ │ ├── HistorySource.kt │ │ │ ├── LibraryFilter.kt │ │ │ ├── MediaSessionConstants.kt │ │ │ ├── PreferenceKeys.kt │ │ │ └── StatPeriod.kt │ │ ├── db/ │ │ │ ├── Converters.kt │ │ │ ├── DatabaseDao.kt │ │ │ ├── MusicDatabase.kt │ │ │ ├── daos/ │ │ │ │ └── SpeedDialDao.kt │ │ │ └── entities/ │ │ │ ├── Album.kt │ │ │ ├── AlbumArtistMap.kt │ │ │ ├── AlbumEntity.kt │ │ │ ├── AlbumWithSongs.kt │ │ │ ├── Artist.kt │ │ │ ├── ArtistEntity.kt │ │ │ ├── Event.kt │ │ │ ├── EventWithSong.kt │ │ │ ├── FormatEntity.kt │ │ │ ├── LocalItem.kt │ │ │ ├── LyricsEntity.kt │ │ │ ├── PlayCountEntity.kt │ │ │ ├── Playlist.kt │ │ │ ├── PlaylistEntity.kt │ │ │ ├── PlaylistSong.kt │ │ │ ├── PlaylistSongMap.kt │ │ │ ├── PlaylistSongMapPreview.kt │ │ │ ├── PodcastEntity.kt │ │ │ ├── RecognitionHistory.kt │ │ │ ├── RelatedSongMap.kt │ │ │ ├── SearchHistory.kt │ │ │ ├── SetVideoIdEntity.kt │ │ │ ├── Song.kt │ │ │ ├── SongAlbumMap.kt │ │ │ ├── SongArtistMap.kt │ │ │ ├── SongEntity.kt │ │ │ ├── SongWithStats.kt │ │ │ ├── SortedSongAlbumMap.kt │ │ │ ├── SortedSongArtistMap.kt │ │ │ └── SpeedDialItem.kt │ │ ├── di/ │ │ │ ├── AppModule.kt │ │ │ ├── LyricsHelperEntryPoint.kt │ │ │ ├── NetworkModule.kt │ │ │ ├── Qualifiers.kt │ │ │ └── WrappedModule.kt │ │ ├── eq/ │ │ │ ├── EqualizerService.kt │ │ │ ├── audio/ │ │ │ │ ├── BiquadFilter.kt │ │ │ │ └── CustomEqualizerAudioProcessor.kt │ │ │ └── data/ │ │ │ ├── EQProfileRepository.kt │ │ │ ├── FilterType.kt │ │ │ ├── ParametricEQ.kt │ │ │ └── ParametricEQParser.kt │ │ ├── extensions/ │ │ │ ├── ContextExt.kt │ │ │ ├── CoroutineExt.kt │ │ │ ├── FileExt.kt │ │ │ ├── ListExt.kt │ │ │ ├── MediaItemExt.kt │ │ │ ├── PlayerExt.kt │ │ │ ├── QueueExt.kt │ │ │ ├── StringExt.kt │ │ │ └── UtilExt.kt │ │ ├── listentogether/ │ │ │ ├── ListenTogetherActionReceiver.kt │ │ │ ├── ListenTogetherClient.kt │ │ │ ├── ListenTogetherManager.kt │ │ │ ├── ListenTogetherServers.kt │ │ │ ├── MessageCodec.kt │ │ │ └── Protocol.kt │ │ ├── lyrics/ │ │ │ ├── BetterLyricsProvider.kt │ │ │ ├── KuGouLyricsProvider.kt │ │ │ ├── LrcLibLyricsProvider.kt │ │ │ ├── LyricsEntry.kt │ │ │ ├── LyricsHelper.kt │ │ │ ├── LyricsPlusProvider.kt │ │ │ ├── LyricsProvider.kt │ │ │ ├── LyricsProviderRegistry.kt │ │ │ ├── LyricsTranslationHelper.kt │ │ │ ├── LyricsUtils.kt │ │ │ ├── SimpMusicLyricsProvider.kt │ │ │ ├── YouTubeLyricsProvider.kt │ │ │ └── YouTubeSubtitleLyricsProvider.kt │ │ ├── models/ │ │ │ ├── ItemsPage.kt │ │ │ ├── MediaMetadata.kt │ │ │ ├── PersistPlayerState.kt │ │ │ ├── PersistQueue.kt │ │ │ └── SimilarRecommendation.kt │ │ ├── playback/ │ │ │ ├── DownloadUtil.kt │ │ │ ├── ExoDownloadService.kt │ │ │ ├── MediaLibrarySessionCallback.kt │ │ │ ├── MetrolistCacheEvictor.kt │ │ │ ├── MusicService.kt │ │ │ ├── PlayerConnection.kt │ │ │ ├── SleepTimer.kt │ │ │ ├── alarm/ │ │ │ │ ├── MusicAlarmReceiver.kt │ │ │ │ ├── MusicAlarmRescheduleReceiver.kt │ │ │ │ ├── MusicAlarmScheduler.kt │ │ │ │ └── MusicAlarmStore.kt │ │ │ ├── audio/ │ │ │ │ └── SilenceDetectorAudioProcessor.kt │ │ │ └── queues/ │ │ │ ├── EmptyQueue.kt │ │ │ ├── ListQueue.kt │ │ │ ├── LocalAlbumRadio.kt │ │ │ ├── Queue.kt │ │ │ ├── YouTubeAlbumRadio.kt │ │ │ ├── YouTubePlaylistQueue.kt │ │ │ └── YouTubeQueue.kt │ │ ├── quicksettings/ │ │ │ └── MusicRecognizerTileService.kt │ │ ├── recognition/ │ │ │ ├── AudioResampler.kt │ │ │ ├── MusicRecognitionService.kt │ │ │ ├── RecognitionForegroundService.kt │ │ │ ├── RecognitionLaunchActivity.kt │ │ │ ├── ShazamSignatureGenerator.kt │ │ │ └── VibraSignature.kt │ │ ├── ui/ │ │ │ ├── component/ │ │ │ │ ├── AppNavigation.kt │ │ │ │ ├── AutoResizeText.kt │ │ │ │ ├── BigSeekBar.kt │ │ │ │ ├── BottomSheet.kt │ │ │ │ ├── BottomSheetMenu.kt │ │ │ │ ├── BottomSheetPage.kt │ │ │ │ ├── ChipsRow.kt │ │ │ │ ├── CreatePlaylistDialog.kt │ │ │ │ ├── Dialog.kt │ │ │ │ ├── DraggableLyricsProviderList.kt │ │ │ │ ├── DraggableScrollBarOverlay.kt │ │ │ │ ├── EmptyPlaceholder.kt │ │ │ │ ├── EnumDialog.kt │ │ │ │ ├── ExpandableText.kt │ │ │ │ ├── GridMenu.kt │ │ │ │ ├── HideOnScrollFAB.kt │ │ │ │ ├── IconButton.kt │ │ │ │ ├── IntegrationCard.kt │ │ │ │ ├── Items.kt │ │ │ │ ├── Library.kt │ │ │ │ ├── Lyrics.kt │ │ │ │ ├── LyricsImageCard.kt │ │ │ │ ├── Material3SettingsGroup.kt │ │ │ │ ├── Menu.kt │ │ │ │ ├── NavigationTile.kt │ │ │ │ ├── NavigationTitle.kt │ │ │ │ ├── NewMenuComponents.kt │ │ │ │ ├── PlayerSlider.kt │ │ │ │ ├── PlayingIndicator.kt │ │ │ │ ├── Preference.kt │ │ │ │ ├── RandomizeGridItem.kt │ │ │ │ ├── ReleaseNotesCard.kt │ │ │ │ ├── SearchBar.kt │ │ │ │ ├── SettingsSleepTimerDialog.kt │ │ │ │ ├── SongDropdownSelect.kt │ │ │ │ ├── SortHeader.kt │ │ │ │ ├── SpeedDialGridItem.kt │ │ │ │ ├── SquigglySlider.kt │ │ │ │ ├── TimeTransfer.kt │ │ │ │ ├── VolumeSlider.kt │ │ │ │ ├── WavySlider.kt │ │ │ │ └── shimmer/ │ │ │ │ ├── ButtonPlaceholder.kt │ │ │ │ ├── GridItemPlaceholder.kt │ │ │ │ ├── ListItemPlaceholder.kt │ │ │ │ ├── ShimmerHost.kt │ │ │ │ └── TextPlaceholder.kt │ │ │ ├── menu/ │ │ │ │ ├── AddToPlaylistDialog.kt │ │ │ │ ├── AddToPlaylistDialogOnline.kt │ │ │ │ ├── AlbumMenu.kt │ │ │ │ ├── ArtistMenu.kt │ │ │ │ ├── CsvColumnMappingDialog.kt │ │ │ │ ├── CustomThumbnailMenu.kt │ │ │ │ ├── ImportPlaylistDialog.kt │ │ │ │ ├── LoadingScreen.kt │ │ │ │ ├── LyricsMenu.kt │ │ │ │ ├── PlayerMenu.kt │ │ │ │ ├── PlaylistMenu.kt │ │ │ │ ├── PlaylistScreenMenus.kt │ │ │ │ ├── QueueMenu.kt │ │ │ │ ├── SelectionSongsMenu.kt │ │ │ │ ├── SongMenu.kt │ │ │ │ ├── YouTubeAlbumMenu.kt │ │ │ │ ├── YouTubeArtistMenu.kt │ │ │ │ ├── YouTubePlaylistMenu.kt │ │ │ │ ├── YouTubeSelectionSongMenu.kt │ │ │ │ └── YouTubeSongMenu.kt │ │ │ ├── player/ │ │ │ │ ├── MiniPlayer.kt │ │ │ │ ├── PlaybackError.kt │ │ │ │ ├── Player.kt │ │ │ │ ├── Queue.kt │ │ │ │ ├── Thumbnail.kt │ │ │ │ └── ThumbnailSnapUtils.kt │ │ │ ├── screens/ │ │ │ │ ├── AccountScreen.kt │ │ │ │ ├── AlbumScreen.kt │ │ │ │ ├── BrowseScreen.kt │ │ │ │ ├── ChartsScreen.kt │ │ │ │ ├── CrashActivity.kt │ │ │ │ ├── ExploreScreen.kt │ │ │ │ ├── HistoryScreen.kt │ │ │ │ ├── HomeScreen.kt │ │ │ │ ├── ListenTogetherScreen.kt │ │ │ │ ├── LoginScreen.kt │ │ │ │ ├── MoodAndGenresScreen.kt │ │ │ │ ├── NavigationBuilder.kt │ │ │ │ ├── NewReleaseScreen.kt │ │ │ │ ├── Screens.kt │ │ │ │ ├── StatsScreen.kt │ │ │ │ ├── YouTubeBrowseScreen.kt │ │ │ │ ├── artist/ │ │ │ │ │ ├── ArtistAlbumsScreen.kt │ │ │ │ │ ├── ArtistItemsScreen.kt │ │ │ │ │ ├── ArtistScreen.kt │ │ │ │ │ └── ArtistSongsScreen.kt │ │ │ │ ├── equalizer/ │ │ │ │ │ ├── EQState.kt │ │ │ │ │ ├── EQViewModel.kt │ │ │ │ │ └── EqScreen.kt │ │ │ │ ├── library/ │ │ │ │ │ ├── LibraryAlbumsScreen.kt │ │ │ │ │ ├── LibraryArtistsScreen.kt │ │ │ │ │ ├── LibraryMixScreen.kt │ │ │ │ │ ├── LibraryPlaylistsScreen.kt │ │ │ │ │ ├── LibraryPodcastsScreen.kt │ │ │ │ │ ├── LibraryScreen.kt │ │ │ │ │ └── LibrarySongsScreen.kt │ │ │ │ ├── playlist/ │ │ │ │ │ ├── AutoPlaylistScreen.kt │ │ │ │ │ ├── CachePlaylistScreen.kt │ │ │ │ │ ├── LocalPlaylistScreen.kt │ │ │ │ │ ├── OnlinePlaylistScreen.kt │ │ │ │ │ └── TopPlaylistScreen.kt │ │ │ │ ├── podcast/ │ │ │ │ │ └── OnlinePodcastScreen.kt │ │ │ │ ├── recognition/ │ │ │ │ │ ├── RecognitionHistoryScreen.kt │ │ │ │ │ └── RecognitionScreen.kt │ │ │ │ ├── search/ │ │ │ │ │ ├── LocalSearchScreen.kt │ │ │ │ │ ├── OnlineSearchResult.kt │ │ │ │ │ ├── OnlineSearchScreen.kt │ │ │ │ │ └── SearchScreen.kt │ │ │ │ ├── settings/ │ │ │ │ │ ├── AboutScreen.kt │ │ │ │ │ ├── AccountSettings.kt │ │ │ │ │ ├── AiSettings.kt │ │ │ │ │ ├── AlarmSettings.kt │ │ │ │ │ ├── AndroidAutoSettings.kt │ │ │ │ │ ├── AppearanceSettings.kt │ │ │ │ │ ├── BackupAndRestore.kt │ │ │ │ │ ├── ChangelogScreen.kt │ │ │ │ │ ├── ContentSettings.kt │ │ │ │ │ ├── DiscordLoginScreen.kt │ │ │ │ │ ├── PlayerSettings.kt │ │ │ │ │ ├── PrivacySettings.kt │ │ │ │ │ ├── RomanizationSettings.kt │ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ │ ├── StorageSettings.kt │ │ │ │ │ ├── ThemeScreen.kt │ │ │ │ │ ├── UpdaterSettings.kt │ │ │ │ │ └── integrations/ │ │ │ │ │ ├── DiscordSettings.kt │ │ │ │ │ ├── IntegrationScreen.kt │ │ │ │ │ ├── LastFMSettings.kt │ │ │ │ │ └── ListenTogetherSettings.kt │ │ │ │ └── wrapped/ │ │ │ │ ├── WrappedAudioService.kt │ │ │ │ ├── WrappedConstants.kt │ │ │ │ ├── WrappedData.kt │ │ │ │ ├── WrappedEntryPoint.kt │ │ │ │ ├── WrappedManager.kt │ │ │ │ ├── WrappedScreen.kt │ │ │ │ ├── WrappedState.kt │ │ │ │ ├── WrappedViewModel.kt │ │ │ │ ├── components/ │ │ │ │ │ ├── AnimatedBackground.kt │ │ │ │ │ ├── AnimatedDecorativeElement.kt │ │ │ │ │ └── AutoResizingText.kt │ │ │ │ └── pages/ │ │ │ │ ├── AlbumPages.kt │ │ │ │ ├── ConclusionPage.kt │ │ │ │ ├── PlaylistPage.kt │ │ │ │ ├── WrappedIntro.kt │ │ │ │ ├── WrappedMinutesScreen.kt │ │ │ │ ├── WrappedMinutesTease.kt │ │ │ │ ├── WrappedTop5ArtistsScreen.kt │ │ │ │ ├── WrappedTop5SongsScreen.kt │ │ │ │ ├── WrappedTopArtistScreen.kt │ │ │ │ ├── WrappedTopSongScreen.kt │ │ │ │ ├── WrappedTotalArtistsScreen.kt │ │ │ │ └── WrappedTotalSongsScreen.kt │ │ │ ├── theme/ │ │ │ │ ├── Font.kt │ │ │ │ ├── PlayerColorExtractor.kt │ │ │ │ ├── PlayerSliderColors.kt │ │ │ │ ├── Theme.kt │ │ │ │ ├── Type.kt │ │ │ │ └── bbh_bartle.kt │ │ │ └── utils/ │ │ │ ├── AppBar.kt │ │ │ ├── FadingEdge.kt │ │ │ ├── ItemWrapper.kt │ │ │ ├── KeyUtils.kt │ │ │ ├── LazyGridSnapLayoutInfoProvider.kt │ │ │ ├── NavControllerUtils.kt │ │ │ ├── ScrollUtils.kt │ │ │ ├── ShapeUtils.kt │ │ │ ├── ShowMediaInfo.kt │ │ │ ├── ShowOffsetDialog.kt │ │ │ ├── StringUtils.kt │ │ │ └── YouTubeUtils.kt │ │ ├── utils/ │ │ │ ├── CoilBitmapLoader.kt │ │ │ ├── ComposeDebugUtils.kt │ │ │ ├── ComposeToImage.kt │ │ │ ├── CrashHandler.kt │ │ │ ├── DataStore.kt │ │ │ ├── DiscordRPC.kt │ │ │ ├── IconUtils.kt │ │ │ ├── NetworkConnectivityObserver.kt │ │ │ ├── NetworkUtils.kt │ │ │ ├── PlaylistExporter.kt │ │ │ ├── PodcastRefreshTrigger.kt │ │ │ ├── ScrobbleManager.kt │ │ │ ├── StringUtils.kt │ │ │ ├── SuperProperties.kt │ │ │ ├── SyncUtils.kt │ │ │ ├── Updater.kt │ │ │ ├── Utils.kt │ │ │ ├── YTPlayerUtils.kt │ │ │ ├── cipher/ │ │ │ │ ├── CipherDeobfuscator.kt │ │ │ │ ├── CipherWebView.kt │ │ │ │ ├── FunctionNameExtractor.kt │ │ │ │ └── PlayerJsFetcher.kt │ │ │ ├── potoken/ │ │ │ │ ├── JavaScriptUtil.kt │ │ │ │ ├── PoTokenException.kt │ │ │ │ ├── PoTokenGenerator.kt │ │ │ │ ├── PoTokenResult.kt │ │ │ │ └── PoTokenWebView.kt │ │ │ └── sabr/ │ │ │ ├── EjsNTransformSolver.kt │ │ │ └── SabrException.kt │ │ ├── viewmodels/ │ │ │ ├── AccountSettingsViewModel.kt │ │ │ ├── AccountViewModel.kt │ │ │ ├── AlbumViewModel.kt │ │ │ ├── ArtistAlbumsViewModel.kt │ │ │ ├── ArtistItemsViewModel.kt │ │ │ ├── ArtistViewModel.kt │ │ │ ├── AutoPlaylistViewModel.kt │ │ │ ├── BackupRestoreViewModel.kt │ │ │ ├── BrowseViewModel.kt │ │ │ ├── CachePlaylistViewModel.kt │ │ │ ├── ChartsViewModel.kt │ │ │ ├── ExploreViewModel.kt │ │ │ ├── HistoryViewModel.kt │ │ │ ├── HomeViewModel.kt │ │ │ ├── LibraryViewModels.kt │ │ │ ├── ListenTogetherViewModel.kt │ │ │ ├── LocalPlaylistViewModel.kt │ │ │ ├── LocalSearchViewModel.kt │ │ │ ├── LyricsMenuViewModel.kt │ │ │ ├── MoodAndGenresViewModel.kt │ │ │ ├── NewReleaseViewModel.kt │ │ │ ├── OnlinePlaylistViewModel.kt │ │ │ ├── OnlinePodcastViewModel.kt │ │ │ ├── OnlineSearchSuggestionViewModel.kt │ │ │ ├── OnlineSearchViewModel.kt │ │ │ ├── PlaylistsViewModel.kt │ │ │ ├── StatsViewModel.kt │ │ │ ├── ThemeViewModel.kt │ │ │ ├── TopPlaylistViewModel.kt │ │ │ └── YouTubeBrowseViewModel.kt │ │ └── widget/ │ │ ├── MetrolistWidgetManager.kt │ │ ├── MusicRecognizerWidgetReceiver.kt │ │ ├── MusicRecognizerWidgetService.kt │ │ ├── MusicWidgetReceiver.kt │ │ └── TurntableWidgetReceiver.kt │ └── res/ │ ├── drawable/ │ │ ├── account.xml │ │ ├── add.xml │ │ ├── add_circle.xml │ │ ├── album.xml │ │ ├── alphabet_cyrillic.xml │ │ ├── app_logo.xml │ │ ├── arrow_back.xml │ │ ├── arrow_downward.xml │ │ ├── arrow_forward.xml │ │ ├── arrow_top_left.xml │ │ ├── arrow_upward.xml │ │ ├── artist.xml │ │ ├── backup.xml │ │ ├── baseline_event_repeat_24.xml │ │ ├── bedtime.xml │ │ ├── bluetooth.xml │ │ ├── bug_report.xml │ │ ├── buymeacoffee.xml │ │ ├── cached.xml │ │ ├── cast.xml │ │ ├── cast_connected.xml │ │ ├── check.xml │ │ ├── clear_all.xml │ │ ├── close.xml │ │ ├── cloud.xml │ │ ├── content_copy.xml │ │ ├── contrast.xml │ │ ├── crop.xml │ │ ├── crown.xml │ │ ├── delete.xml │ │ ├── delete_history.xml │ │ ├── discord.xml │ │ ├── discover_tune.xml │ │ ├── dock_to_top.xml │ │ ├── done.xml │ │ ├── download.xml │ │ ├── drag_handle.xml │ │ ├── edit.xml │ │ ├── equalizer.xml │ │ ├── error.xml │ │ ├── expand_less.xml │ │ ├── expand_more.xml │ │ ├── explicit.xml │ │ ├── explore_outlined.xml │ │ ├── fast_forward.xml │ │ ├── favorite.xml │ │ ├── favorite_border.xml │ │ ├── fullscreen.xml │ │ ├── github.xml │ │ ├── gradient.xml │ │ ├── graphic_eq.xml │ │ ├── grid_view.xml │ │ ├── group.xml │ │ ├── group_add.xml │ │ ├── group_filled.xml │ │ ├── group_outlined.xml │ │ ├── hide_image.xml │ │ ├── history.xml │ │ ├── home_filled.xml │ │ ├── home_outlined.xml │ │ ├── ic_android_auto.xml │ │ ├── ic_dynamic_icon.xml │ │ ├── ic_heart.xml │ │ ├── ic_heart_outline.xml │ │ ├── ic_launcher_background_v31.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_launcher_foreground_v31.xml │ │ ├── ic_launcher_monochrome.xml │ │ ├── ic_push_pin.xml │ │ ├── ic_widget_heart_nav.xml │ │ ├── ic_widget_heart_outline_nav.xml │ │ ├── ic_widget_mic.xml │ │ ├── ic_widget_pause.xml │ │ ├── ic_widget_pause_low.xml │ │ ├── ic_widget_pause_secondary.xml │ │ ├── ic_widget_play.xml │ │ ├── ic_widget_play_low.xml │ │ ├── ic_widget_play_secondary.xml │ │ ├── ic_widget_skip_next.xml │ │ ├── ic_widget_skip_previous.xml │ │ ├── info.xml │ │ ├── insert_photo.xml │ │ ├── instagram.xml │ │ ├── integration.xml │ │ ├── key.xml │ │ ├── language.xml │ │ ├── language_japanese_latin.xml │ │ ├── language_korean_latin.xml │ │ ├── library_add.xml │ │ ├── library_add_check.xml │ │ ├── library_music.xml │ │ ├── library_music_filled.xml │ │ ├── library_music_outlined.xml │ │ ├── linear_scale.xml │ │ ├── link.xml │ │ ├── list.xml │ │ ├── location_on.xml │ │ ├── lock.xml │ │ ├── lock_open.xml │ │ ├── login.xml │ │ ├── logout.xml │ │ ├── lyrics.xml │ │ ├── manage_search.xml │ │ ├── mic.xml │ │ ├── more_horiz.xml │ │ ├── more_time.xml │ │ ├── more_vert.xml │ │ ├── music_note.xml │ │ ├── nav_bar.xml │ │ ├── navigate_next.xml │ │ ├── newspaper.xml │ │ ├── notification.xml │ │ ├── offline.xml │ │ ├── palette.xml │ │ ├── pause.xml │ │ ├── person.xml │ │ ├── play.xml │ │ ├── playlist_add.xml │ │ ├── playlist_play.xml │ │ ├── queue_music.xml │ │ ├── radio.xml │ │ ├── radio_button_checked.xml │ │ ├── radio_button_unchecked.xml │ │ ├── refresh.xml │ │ ├── remove.xml │ │ ├── repeat.xml │ │ ├── repeat_on.xml │ │ ├── repeat_one.xml │ │ ├── repeat_one_on.xml │ │ ├── replay.xml │ │ ├── restore.xml │ │ ├── screenshot.xml │ │ ├── search.xml │ │ ├── search_off.xml │ │ ├── security.xml │ │ ├── select_all.xml │ │ ├── settings.xml │ │ ├── share.xml │ │ ├── shortcut_library.xml │ │ ├── shortcut_search.xml │ │ ├── shuffle.xml │ │ ├── shuffle_on.xml │ │ ├── similar.xml │ │ ├── skip_next.xml │ │ ├── skip_previous.xml │ │ ├── sliders.xml │ │ ├── slow_motion_video.xml │ │ ├── small_icon.xml │ │ ├── speed.xml │ │ ├── star.xml │ │ ├── stats.xml │ │ ├── storage.xml │ │ ├── subscribe.xml │ │ ├── subscribed.xml │ │ ├── swipe.xml │ │ ├── sync.xml │ │ ├── tab.xml │ │ ├── telegram.xml │ │ ├── time_auto.xml │ │ ├── timer.xml │ │ ├── timer_arrow_down.xml │ │ ├── token.xml │ │ ├── translate.xml │ │ ├── trending_up.xml │ │ ├── tune.xml │ │ ├── update.xml │ │ ├── upload.xml │ │ ├── volume_down.xml │ │ ├── volume_mute.xml │ │ ├── volume_off.xml │ │ ├── volume_off_pause.xml │ │ ├── volume_up.xml │ │ ├── warning.xml │ │ ├── widget_background.xml │ │ ├── widget_like_button_bg.xml │ │ ├── widget_mic_button_bg.xml │ │ ├── widget_mic_button_bg_active.xml │ │ ├── widget_mic_pulse_1.xml │ │ ├── widget_mic_pulse_2.xml │ │ ├── widget_mic_pulse_3.xml │ │ ├── widget_mic_pulse_4.xml │ │ ├── widget_mic_pulse_idle.xml │ │ ├── widget_play_button_circular.xml │ │ ├── widget_play_pill_bg.xml │ │ ├── widget_progress_clip.xml │ │ ├── widget_progress_fill.xml │ │ ├── widget_progress_track.xml │ │ ├── widget_turntable_default_art.xml │ │ ├── widget_turntable_nav_bg.xml │ │ ├── widget_turntable_play_bg.xml │ │ └── wifi_proxy.xml │ ├── drawable-night/ │ │ ├── widget_background.xml │ │ ├── widget_play_pill_bg.xml │ │ ├── widget_progress_fill.xml │ │ ├── widget_progress_track.xml │ │ ├── widget_turntable_nav_bg.xml │ │ └── widget_turntable_play_bg.xml │ ├── drawable-night-v31/ │ │ ├── widget_background.xml │ │ ├── widget_play_pill_bg.xml │ │ ├── widget_progress_fill.xml │ │ ├── widget_progress_track.xml │ │ ├── widget_turntable_nav_bg.xml │ │ └── widget_turntable_play_bg.xml │ ├── drawable-v31/ │ │ ├── ic_launcher_background_v31.xml │ │ ├── ic_widget_mic.xml │ │ ├── widget_background.xml │ │ ├── widget_mic_button_bg.xml │ │ ├── widget_mic_button_bg_active.xml │ │ ├── widget_mic_pulse_1.xml │ │ ├── widget_mic_pulse_2.xml │ │ ├── widget_mic_pulse_3.xml │ │ ├── widget_mic_pulse_4.xml │ │ ├── widget_play_pill_bg.xml │ │ ├── widget_progress_fill.xml │ │ ├── widget_progress_track.xml │ │ ├── widget_turntable_nav_bg.xml │ │ └── widget_turntable_play_bg.xml │ ├── font/ │ │ └── bbh_bartle.xml │ ├── layout/ │ │ ├── widget_compact_square.xml │ │ ├── widget_compact_wide.xml │ │ ├── widget_music_player.xml │ │ ├── widget_recognizer_compact.xml │ │ ├── widget_recognizer_tiny.xml │ │ ├── widget_recognizer_wide.xml │ │ └── widget_turntable.xml │ ├── mipmap-anydpi/ │ │ ├── ic_launcher.xml │ │ ├── ic_launcher_round.xml │ │ ├── ic_launcher_static.xml │ │ └── ic_launcher_static_round.xml │ ├── mipmap-anydpi-v31/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── resources.properties │ ├── values/ │ │ ├── app_name.xml │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── metrolist_strings.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ ├── values.xml │ │ └── widget_colors.xml │ ├── values-ar/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-as/ │ │ └── metrolist_strings.xml │ ├── values-az/ │ │ └── metrolist_strings.xml │ ├── values-b+sr+Latn/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-be/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-bg/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-bn/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-bn-rIN/ │ │ └── strings.xml │ ├── values-bs/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-ca/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-cs/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-de/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-el/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-en-rCA/ │ │ └── strings.xml │ ├── values-es/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-es-rUS/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-et/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-eu/ │ │ └── metrolist_strings.xml │ ├── values-fa/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-fi/ │ │ └── strings.xml │ ├── values-fil/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-fr/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-hi/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-hr/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-hu/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-in/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-it/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-iw/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-ja/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-km/ │ │ └── metrolist_strings.xml │ ├── values-ko/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-lt/ │ │ └── metrolist_strings.xml │ ├── values-mfe/ │ │ └── metrolist_strings.xml │ ├── values-ml/ │ │ └── strings.xml │ ├── values-ms/ │ │ └── metrolist_strings.xml │ ├── values-nb-rNO/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-night/ │ │ ├── colors.xml │ │ └── widget_colors.xml │ ├── values-night-v31/ │ │ └── widget_colors.xml │ ├── values-nl/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-nn/ │ │ └── metrolist_strings.xml │ ├── values-or/ │ │ └── metrolist_strings.xml │ ├── values-pa/ │ │ └── strings.xml │ ├── values-pl/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-pt/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-pt-rBR/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-ro/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-ru/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-sk/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-sl/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-sv/ │ │ └── metrolist_strings.xml │ ├── values-ta/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-te/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-th/ │ │ └── metrolist_strings.xml │ ├── values-tr/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-uk/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-v31/ │ │ ├── styles.xml │ │ └── widget_colors.xml │ ├── values-vi/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-wae/ │ │ └── metrolist_strings.xml │ ├── values-zh-rCN/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── values-zh-rTW/ │ │ ├── metrolist_strings.xml │ │ └── strings.xml │ ├── xml/ │ │ ├── automotive_app_desc.xml │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ ├── music_widget_info.xml │ │ ├── network_security_config.xml │ │ ├── provider_paths.xml │ │ ├── recognizer_widget_info.xml │ │ ├── shortcuts.xml │ │ └── turntable_widget_info.xml │ └── xml-v31/ │ ├── music_widget_info.xml │ ├── recognizer_widget_info.xml │ └── turntable_widget_info.xml ├── betterlyrics/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── music/ │ └── betterlyrics/ │ ├── BetterLyrics.kt │ ├── TTMLParser.kt │ └── models/ │ └── Track.kt ├── build.gradle.kts ├── changelog.md ├── crowdin.yml ├── development_guide.md ├── fastlane/ │ └── metadata/ │ └── android/ │ ├── ar/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── az-AZ/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── bg/ │ │ └── short_description.txt │ ├── ca/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── cs-CZ/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── de-DE/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── en-US/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── es/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── et/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── eu-ES/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── fil/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── fr-FR/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── id/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── it/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── ko-KR/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── lt/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── mfe/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── pt/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── pt-BR/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── ro/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── ru-RU/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── sk/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── sl/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── te-IN/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── tr/ │ │ ├── full_description.txt │ │ └── short_description.txt │ └── uk-UA/ │ ├── full_description.txt │ └── short_description.txt ├── gradle/ │ ├── gradle-daemon-jvm.properties │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── innertube/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── innertube/ │ ├── InnerTube.kt │ ├── NetworkConfig.kt │ ├── YouTube.kt │ ├── YouTubeConstants.kt │ ├── models/ │ │ ├── AccountInfo.kt │ │ ├── AutomixPreviewVideoRenderer.kt │ │ ├── Badges.kt │ │ ├── Button.kt │ │ ├── Context.kt │ │ ├── Continuation.kt │ │ ├── ContinuationItemRenderer.kt │ │ ├── Endpoint.kt │ │ ├── GridRenderer.kt │ │ ├── Icon.kt │ │ ├── MediaInfo.kt │ │ ├── Menu.kt │ │ ├── MusicCardShelfRenderer.kt │ │ ├── MusicCarouselShelfRenderer.kt │ │ ├── MusicDescriptionShelfRenderer.kt │ │ ├── MusicEditablePlaylistDetailHeaderRenderer.kt │ │ ├── MusicMultiRowImageItemRenderer.kt │ │ ├── MusicMultiRowListItemRenderer.kt │ │ ├── MusicNavigationButtonRenderer.kt │ │ ├── MusicPlaylistShelfRenderer.kt │ │ ├── MusicQueueRenderer.kt │ │ ├── MusicResponsiveHeaderRenderer.kt │ │ ├── MusicResponsiveListItemRenderer.kt │ │ ├── MusicShelfRenderer.kt │ │ ├── MusicTwoRowItemRenderer.kt │ │ ├── NavigationEndpoint.kt │ │ ├── PlaylistDeleteBody.kt │ │ ├── PlaylistPanelRenderer.kt │ │ ├── PlaylistPanelVideoRenderer.kt │ │ ├── ResponseContext.kt │ │ ├── ReturnYouTubeDislikeResponse.kt │ │ ├── Runs.kt │ │ ├── SearchSuggestions.kt │ │ ├── SearchSuggestionsSectionRenderer.kt │ │ ├── SectionListRenderer.kt │ │ ├── SubscriptionButton.kt │ │ ├── Tabs.kt │ │ ├── TasteProfile.kt │ │ ├── ThumbnailRenderer.kt │ │ ├── Thumbnails.kt │ │ ├── TwoColumnBrowseResultsRenderer.kt │ │ ├── UrlEndpoint.kt │ │ ├── YTItem.kt │ │ ├── YouTubeClient.kt │ │ ├── YouTubeDataPage.kt │ │ ├── YouTubeLocale.kt │ │ ├── body/ │ │ │ ├── AccountMenuBody.kt │ │ │ ├── BrowseBody.kt │ │ │ ├── CreatePlaylistBody.kt │ │ │ ├── EditPlaylistBody.kt │ │ │ ├── FeedbackBody.kt │ │ │ ├── GetQueueBody.kt │ │ │ ├── GetSearchSuggestionsBody.kt │ │ │ ├── GetTranscriptBody.kt │ │ │ ├── LikeBody.kt │ │ │ ├── NextBody.kt │ │ │ ├── PlayerBody.kt │ │ │ ├── SearchBody.kt │ │ │ └── SubscribeBody.kt │ │ └── response/ │ │ ├── AccountMenuResponse.kt │ │ ├── AddItemYouTubePlaylistResponse.kt │ │ ├── BrowseResponse.kt │ │ ├── ContinuationResponse.kt │ │ ├── CreatePlaylistResponse.kt │ │ ├── EditPlaylistResponse.kt │ │ ├── FeedbackResponse.kt │ │ ├── GetQueueResponse.kt │ │ ├── GetSearchSuggestionsResponse.kt │ │ ├── GetTranscriptResponse.kt │ │ ├── ImageUploadResponse.kt │ │ ├── NextResponse.kt │ │ ├── PlayerResponse.kt │ │ └── SearchResponse.kt │ ├── pages/ │ │ ├── AlbumPage.kt │ │ ├── ArtistItemsContinuationPage.kt │ │ ├── ArtistItemsPage.kt │ │ ├── ArtistPage.kt │ │ ├── BrowseResult.kt │ │ ├── ChartsPage.kt │ │ ├── ExplorePage.kt │ │ ├── HistoryPage.kt │ │ ├── HomePage.kt │ │ ├── LibraryAlbumsPage.kt │ │ ├── LibraryContinuationPage.kt │ │ ├── LibraryPage.kt │ │ ├── MoodAndGenres.kt │ │ ├── NewPipe.kt │ │ ├── NewReleaseAlbumPage.kt │ │ ├── NextPage.kt │ │ ├── PageHelper.kt │ │ ├── PlaylistContinuationPage.kt │ │ ├── PlaylistPage.kt │ │ ├── PodcastPage.kt │ │ ├── RelatedPage.kt │ │ ├── SearchPage.kt │ │ ├── SearchSuggestionPage.kt │ │ └── SearchSummaryPage.kt │ └── utils/ │ └── Utils.kt ├── kizzy/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── my/ │ └── kizzy/ │ ├── gateway/ │ │ ├── DiscordWebSocket.kt │ │ └── entities/ │ │ ├── HeartBeat.kt │ │ ├── Identify.kt │ │ ├── Payload.kt │ │ ├── Ready.kt │ │ ├── Resume.kt │ │ ├── op/ │ │ │ ├── OpCode.kt │ │ │ └── OpCodesSerializer.kt │ │ └── presence/ │ │ ├── Activity.kt │ │ ├── Assets.kt │ │ ├── Metadata.kt │ │ ├── Presence.kt │ │ └── Timestamps.kt │ ├── rpc/ │ │ ├── ArtworkCache.kt │ │ ├── ExternalAssets.kt │ │ ├── KizzyRPC.kt │ │ ├── RpcImage.kt │ │ └── UserInfo.kt │ └── utils/ │ └── Ext.kt ├── kugou/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── kugou/ │ ├── KuGou.kt │ └── models/ │ ├── DownloadLyricsResponse.kt │ ├── Keyword.kt │ ├── SearchLyricsResponse.kt │ └── SearchSongResponse.kt ├── lastfm/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── lastfm/ │ ├── LastFM.kt │ └── models/ │ └── Authentication.kt ├── lint.xml ├── lrclib/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── lrclib/ │ ├── LrcLib.kt │ └── models/ │ └── Track.kt ├── renovate.json ├── settings.gradle.kts ├── shazamkit/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── kotlin/ │ └── com/ │ └── metrolist/ │ └── shazamkit/ │ ├── Shazam.kt │ └── models/ │ └── ShazamModels.kt └── simpmusic/ ├── build.gradle.kts └── src/ └── main/ ├── AndroidManifest.xml └── kotlin/ └── com/ └── metrolist/ └── simpmusic/ ├── SimpMusicLyrics.kt └── models/ └── LyricsResponse.kt