gitextract_e5trxlyi/ ├── .circleci/ │ └── config.yml ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── questions-support-requests-other.md │ ├── doc-json.md │ ├── faq.md │ ├── faq.ru.md │ └── workflows/ │ └── e2e-test.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── AUTHORS ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build.gradle.kts ├── buildSrc/ │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── Helpers.kt ├── core/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── gfwlist/ │ │ ├── gen.pl │ │ ├── gen.py │ │ └── parse.py │ ├── proguard-rules.pro │ ├── schemas/ │ │ ├── com.github.shadowsocks.database.PrivateDatabase/ │ │ │ ├── 26.json │ │ │ ├── 27.json │ │ │ ├── 28.json │ │ │ └── 29.json │ │ └── com.github.shadowsocks.database.PublicDatabase/ │ │ └── 3.json │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── github/ │ │ └── shadowsocks/ │ │ ├── acl/ │ │ │ └── AclTest.kt │ │ ├── database/ │ │ │ ├── MigrationTest.kt │ │ │ └── ProfileTest.kt │ │ └── net/ │ │ └── SubnetTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── aidl/ │ │ │ └── com/ │ │ │ └── github/ │ │ │ └── shadowsocks/ │ │ │ └── aidl/ │ │ │ ├── IShadowsocksService.aidl │ │ │ ├── IShadowsocksServiceCallback.aidl │ │ │ └── TrafficStats.aidl │ │ ├── assets/ │ │ │ └── acl/ │ │ │ ├── bypass-china.acl │ │ │ ├── bypass-lan-china.acl │ │ │ ├── bypass-lan.acl │ │ │ ├── china-list.acl │ │ │ └── gfwlist.acl │ │ ├── java/ │ │ │ └── com/ │ │ │ └── github/ │ │ │ └── shadowsocks/ │ │ │ ├── BootReceiver.kt │ │ │ ├── Core.kt │ │ │ ├── UrlImportActivity.kt │ │ │ ├── VpnRequestActivity.kt │ │ │ ├── acl/ │ │ │ │ ├── Acl.kt │ │ │ │ └── AclSyncer.kt │ │ │ ├── aidl/ │ │ │ │ ├── ShadowsocksConnection.kt │ │ │ │ └── TrafficStats.kt │ │ │ ├── bg/ │ │ │ │ ├── BaseService.kt │ │ │ │ ├── Executable.kt │ │ │ │ ├── GuardedProcessPool.kt │ │ │ │ ├── LocalDnsWorker.kt │ │ │ │ ├── ProxyInstance.kt │ │ │ │ ├── ProxyService.kt │ │ │ │ ├── ServiceNotification.kt │ │ │ │ ├── TrafficMonitor.kt │ │ │ │ ├── TransproxyService.kt │ │ │ │ └── VpnService.kt │ │ │ ├── database/ │ │ │ │ ├── KeyValuePair.kt │ │ │ │ ├── PrivateDatabase.kt │ │ │ │ ├── Profile.kt │ │ │ │ ├── ProfileManager.kt │ │ │ │ ├── PublicDatabase.kt │ │ │ │ └── migration/ │ │ │ │ └── RecreateSchemaMigration.kt │ │ │ ├── net/ │ │ │ │ ├── ConcurrentLocalSocketListener.kt │ │ │ │ ├── DefaultNetworkListener.kt │ │ │ │ ├── DnsResolverCompat.kt │ │ │ │ ├── HttpsTest.kt │ │ │ │ ├── LocalSocketListener.kt │ │ │ │ └── Subnet.kt │ │ │ ├── plugin/ │ │ │ │ ├── NativePlugin.kt │ │ │ │ ├── NoPlugin.kt │ │ │ │ ├── Plugin.kt │ │ │ │ ├── PluginConfiguration.kt │ │ │ │ ├── PluginList.kt │ │ │ │ ├── PluginManager.kt │ │ │ │ └── ResolvedPlugin.kt │ │ │ ├── preference/ │ │ │ │ ├── DataStore.kt │ │ │ │ ├── EditTextPreferenceModifiers.kt │ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt │ │ │ │ └── RoomPreferenceDataStore.kt │ │ │ ├── subscription/ │ │ │ │ ├── Subscription.kt │ │ │ │ └── SubscriptionService.kt │ │ │ ├── utils/ │ │ │ │ ├── ActivityResultContracts.kt │ │ │ │ ├── ArrayIterator.kt │ │ │ │ ├── Commandline.kt │ │ │ │ ├── Constants.kt │ │ │ │ ├── DeviceStorageApp.kt │ │ │ │ ├── DirectBoot.kt │ │ │ │ ├── Sorters.kt │ │ │ │ └── Utils.kt │ │ │ └── widget/ │ │ │ └── AutoCollapseTextView.kt │ │ ├── jni/ │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ └── build-shared-executable.mk │ │ ├── res/ │ │ │ ├── color-v24/ │ │ │ │ └── ic_launcher_foreground_shadow.xml │ │ │ ├── drawable/ │ │ │ │ ├── ic_file_cloud_download.xml │ │ │ │ ├── ic_launcher_monochrome.xml │ │ │ │ └── ic_service_active.xml │ │ │ ├── drawable-anydpi-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── mipmap-anydpi-v24/ │ │ │ │ └── banner.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ └── ic_launcher.xml │ │ │ ├── values/ │ │ │ │ ├── arrays.xml │ │ │ │ ├── colors.xml │ │ │ │ └── strings.xml │ │ │ ├── values-ar/ │ │ │ │ └── strings.xml │ │ │ ├── values-de/ │ │ │ │ └── strings.xml │ │ │ ├── values-es/ │ │ │ │ └── strings.xml │ │ │ ├── values-fa/ │ │ │ │ └── strings.xml │ │ │ ├── values-fr/ │ │ │ │ └── strings.xml │ │ │ ├── values-ja/ │ │ │ │ └── strings.xml │ │ │ ├── values-ko/ │ │ │ │ └── strings.xml │ │ │ ├── values-ru/ │ │ │ │ └── strings.xml │ │ │ ├── values-tr/ │ │ │ │ └── strings.xml │ │ │ ├── values-uk/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW/ │ │ │ │ └── strings.xml │ │ │ └── xml/ │ │ │ ├── backup_descriptor.xml │ │ │ ├── default_configs.xml │ │ │ ├── locales_config.xml │ │ │ └── network_security_config.xml │ │ └── rust/ │ │ └── linker-wrapper.py │ └── test/ │ └── java/ │ └── com/ │ └── github/ │ └── shadowsocks/ │ └── database/ │ └── KeyValuePairTest.kt ├── detekt.yml ├── gradle/ │ ├── gradle-daemon-jvm.properties │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── mobile/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── google-services.json │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── github/ │ │ └── shadowsocks/ │ │ ├── AboutFragment.kt │ │ ├── App.kt │ │ ├── AppManager.kt │ │ ├── GlobalSettingsFragment.kt │ │ ├── GlobalSettingsPreferenceFragment.kt │ │ ├── MainActivity.kt │ │ ├── ProfileConfigActivity.kt │ │ ├── ProfileConfigFragment.kt │ │ ├── ProfilesFragment.kt │ │ ├── QuickToggleShortcut.kt │ │ ├── ScannerActivity.kt │ │ ├── ToolbarFragment.kt │ │ ├── UdpFallbackProfileActivity.kt │ │ ├── acl/ │ │ │ └── CustomRulesFragment.kt │ │ ├── bg/ │ │ │ └── TileService.kt │ │ ├── preference/ │ │ │ ├── PluginConfigurationDialogFragment.kt │ │ │ ├── PluginPreference.kt │ │ │ └── PluginPreferenceDialogFragment.kt │ │ ├── subscription/ │ │ │ └── SubscriptionFragment.kt │ │ ├── tasker/ │ │ │ ├── ActionListener.kt │ │ │ ├── ConfigActivity.kt │ │ │ └── Settings.kt │ │ └── widget/ │ │ ├── FabProgressBehavior.kt │ │ ├── ServiceButton.kt │ │ ├── StatsBar.kt │ │ ├── UndoSnackbarManager.kt │ │ └── WindowInsetsListeners.kt │ └── res/ │ ├── color/ │ │ ├── background_service.xml │ │ └── nav_item_tint.xml │ ├── drawable/ │ │ ├── background_profile.xml │ │ ├── background_selectable.xml │ │ ├── ic_action_assignment.xml │ │ ├── ic_action_copyright.xml │ │ ├── ic_action_delete.xml │ │ ├── ic_action_description.xml │ │ ├── ic_action_dns.xml │ │ ├── ic_action_done.xml │ │ ├── ic_action_help_outline.xml │ │ ├── ic_action_lock.xml │ │ ├── ic_action_lock_open.xml │ │ ├── ic_action_note_add.xml │ │ ├── ic_action_settings.xml │ │ ├── ic_app_shortcut_background.xml │ │ ├── ic_av_playlist_add.xml │ │ ├── ic_communication_phonelink_ring.xml │ │ ├── ic_device_data_usage.xml │ │ ├── ic_device_developer_mode.xml │ │ ├── ic_file_cloud_queue.xml │ │ ├── ic_file_file_upload.xml │ │ ├── ic_hardware_router.xml │ │ ├── ic_image_camera_alt.xml │ │ ├── ic_image_edit.xml │ │ ├── ic_image_looks_6.xml │ │ ├── ic_image_photo.xml │ │ ├── ic_maps_360.xml │ │ ├── ic_maps_directions.xml │ │ ├── ic_maps_directions_boat.xml │ │ ├── ic_navigation_apps.xml │ │ ├── ic_navigation_menu.xml │ │ ├── ic_notification_enhanced_encryption.xml │ │ ├── ic_qu_camera_launcher.xml │ │ ├── ic_qu_shadowsocks_foreground.xml │ │ ├── ic_qu_shadowsocks_launcher.xml │ │ ├── ic_service_busy.xml │ │ ├── ic_service_connected.xml │ │ ├── ic_service_connecting.xml │ │ ├── ic_service_idle.xml │ │ ├── ic_service_stopped.xml │ │ ├── ic_service_stopping.xml │ │ ├── ic_settings_password.xml │ │ ├── ic_social_emoji_symbols.xml │ │ └── ic_social_share.xml │ ├── drawable-v26/ │ │ ├── ic_qu_camera_launcher.xml │ │ └── ic_qu_shadowsocks_launcher.xml │ ├── layout/ │ │ ├── dialog_acl_rule.xml │ │ ├── dialog_subscription.xml │ │ ├── icon_list_item_2.xml │ │ ├── layout_about.xml │ │ ├── layout_apps.xml │ │ ├── layout_apps_item.xml │ │ ├── layout_custom_rules.xml │ │ ├── layout_global_settings.xml │ │ ├── layout_list.xml │ │ ├── layout_main.xml │ │ ├── layout_profile.xml │ │ ├── layout_profile_config.xml │ │ ├── layout_scanner.xml │ │ ├── layout_subscriptions.xml │ │ ├── layout_tasker.xml │ │ ├── layout_udp_fallback.xml │ │ ├── navigation_header.xml │ │ └── preference_dialog_password.xml │ ├── menu/ │ │ ├── app_manager_menu.xml │ │ ├── custom_rules_menu.xml │ │ ├── custom_rules_selection.xml │ │ ├── navigation_main.xml │ │ ├── profile_config_menu.xml │ │ ├── profile_manager_menu.xml │ │ ├── profile_share_popup.xml │ │ ├── scanner_menu.xml │ │ └── subscription_menu.xml │ ├── raw/ │ │ └── about.html │ ├── values/ │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimen.xml │ │ └── styles.xml │ ├── values-night/ │ │ └── colors.xml │ └── xml/ │ ├── pref_global.xml │ ├── pref_profile.xml │ └── shortcuts.xml ├── plugin/ │ ├── .gitignore │ ├── CHANGES.md │ ├── README.md │ ├── build.gradle.kts │ ├── doc.md │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── github/ │ │ │ └── shadowsocks/ │ │ │ └── plugin/ │ │ │ ├── AlertDialogFragment.kt │ │ │ ├── ConfigurationActivity.kt │ │ │ ├── HelpActivity.kt │ │ │ ├── HelpCallback.kt │ │ │ ├── NativePluginProvider.kt │ │ │ ├── OptionsCapableActivity.kt │ │ │ ├── PathProvider.kt │ │ │ ├── PluginContract.kt │ │ │ ├── PluginOptions.kt │ │ │ ├── Utils.kt │ │ │ └── fragment/ │ │ │ ├── AlertDialogFragment.kt │ │ │ └── Utils.kt │ │ └── res/ │ │ ├── color/ │ │ │ └── mtrl_text_btn_text_color_selector.xml │ │ ├── drawable/ │ │ │ └── ic_navigation_close.xml │ │ ├── layout/ │ │ │ └── toolbar_light_dark.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── values-de/ │ │ │ └── strings.xml │ │ ├── values-es/ │ │ │ └── strings.xml │ │ ├── values-fa/ │ │ │ └── strings.xml │ │ ├── values-fr/ │ │ │ └── strings.xml │ │ ├── values-ja/ │ │ │ └── strings.xml │ │ ├── values-ko/ │ │ │ └── strings.xml │ │ ├── values-night/ │ │ │ └── colors.xml │ │ ├── values-ru/ │ │ │ └── strings.xml │ │ ├── values-tr/ │ │ │ └── strings.xml │ │ ├── values-uk/ │ │ │ └── strings.xml │ │ ├── values-v29/ │ │ │ └── styles.xml │ │ ├── values-zh-rCN/ │ │ │ └── strings.xml │ │ └── values-zh-rTW/ │ │ └── strings.xml │ └── test/ │ └── java/ │ └── com/ │ └── github/ │ └── shadowsocks/ │ └── plugin/ │ └── PluginOptionsTest.kt ├── privacy_policy.md ├── release.sh ├── repositories.gradle.kts ├── settings.gradle.kts ├── test-e2e.sh ├── translate.py └── tv/ ├── .gitignore ├── build.gradle.kts ├── google-services.json └── src/ ├── freedom/ │ └── res/ │ └── values/ │ └── styles.xml └── main/ ├── AndroidManifest.xml ├── java/ │ └── com/ │ └── github/ │ └── shadowsocks/ │ └── tv/ │ ├── App.kt │ ├── MainActivity.kt │ ├── MainFragment.kt │ ├── MainPreferenceFragment.kt │ ├── ProfilesDialogFragment.kt │ └── preference/ │ └── LeanbackSingleListPreferenceDialogFragment.kt └── res/ ├── layout/ │ ├── activity_main.xml │ └── leanback_list_preference_item_single_2.xml ├── values/ │ └── styles.xml └── xml/ └── pref_main.xml