From dbea577662bf9d0192d44c313fb09c9758422cc1 Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 1 Oct 2024 10:29:31 +0000 Subject: [PATCH] Merge branch icons into master [release] --- CONTRIBUTING.md | 16 +- README.md | 4 + app/build.gradle | 4 +- .../io/xpipe/app/beacon/AppBeaconServer.java | 2 +- .../app/beacon/BeaconRequestHandler.java | 3 +- .../impl/ConnectionRefreshExchangeImpl.java | 4 +- .../app/beacon/impl/FsReadExchangeImpl.java | 3 +- .../beacon/impl/ShellStartExchangeImpl.java | 3 +- .../beacon/impl/SshLaunchExchangeImpl.java | 7 +- .../impl/TerminalLaunchExchangeImpl.java | 2 +- .../beacon/impl/TerminalWaitExchangeImpl.java | 2 +- .../xpipe/app/browser/BrowserClipboard.java | 2 +- .../xpipe/app/browser/BrowserFileOpener.java | 68 +- .../io/xpipe/app/browser/BrowserNavBar.java | 2 +- .../app/browser/BrowserStatusBarComp.java | 6 +- .../app/browser/BrowserTransferModel.java | 10 +- .../app/browser/BrowserTransferProgress.java | 8 - .../xpipe/app/browser/BrowserWelcomeComp.java | 5 +- .../xpipe/app/browser/file/BrowserAlerts.java | 4 +- .../xpipe/app/browser/file/BrowserEntry.java | 6 +- .../app/browser/file/BrowserFileListComp.java | 11 +- .../file/BrowserFileTransferOperation.java | 26 +- .../file/BrowserQuickAccessContextMenu.java | 3 +- .../app/browser/file/LocalFileSystem.java | 9 +- .../app/browser/fs/OpenFileSystemCache.java | 6 +- .../app/browser/fs/OpenFileSystemModel.java | 25 +- .../icon/BrowserIconDirectoryType.java | 29 +- .../app/browser/icon/BrowserIconFileType.java | 6 +- .../xpipe/app/browser/icon/BrowserIcons.java | 6 +- .../app/browser/icon/FileIconManager.java | 11 +- .../browser/session/BrowserChooserComp.java | 133 +- .../browser/session/BrowserSessionModel.java | 5 +- .../session/BrowserSessionTabsComp.java | 14 +- .../java/io/xpipe/app/comp/AppLayoutComp.java | 1 - .../io/xpipe/app/comp/base/DialogComp.java | 20 +- .../xpipe/app/comp/base/ListBoxViewComp.java | 9 +- .../io/xpipe/app/comp/base/MarkdownComp.java | 2 +- .../io/xpipe/app/comp/base/OsLogoComp.java | 21 +- .../app/comp/store/StoreCreationComp.java | 42 +- .../app/comp/store/StoreCreationMenu.java | 15 +- .../xpipe/app/comp/store/StoreEntryComp.java | 53 +- .../app/comp/store/StoreEntryListComp.java | 10 +- .../store/StoreEntryListOverviewComp.java | 26 +- .../app/comp/store/StoreEntryWrapper.java | 12 +- .../app/comp/store/StoreIconChoiceComp.java | 145 + .../comp/store/StoreIconChoiceDialogComp.java | 99 + .../xpipe/app/comp/store/StoreIconComp.java | 64 + .../xpipe/app/comp/store/StoreIntroComp.java | 4 +- .../xpipe/app/comp/store/StoreNotesComp.java | 3 + .../store/StoreQuickAccessButtonComp.java | 3 +- .../io/xpipe/app/comp/store/StoreSection.java | 3 +- .../app/comp/store/StoreSectionComp.java | 15 +- .../app/comp/store/StoreSectionMiniComp.java | 16 +- .../xpipe/app/comp/store/StoreViewState.java | 9 +- app/src/main/java/io/xpipe/app/core/App.java | 10 + .../xpipe/app/core/AppDesktopIntegration.java | 5 +- .../xpipe/app/core/AppExtensionManager.java | 13 +- .../main/java/io/xpipe/app/core/AppFont.java | 1 + .../java/io/xpipe/app/core/AppGreetings.java | 1 + .../java/io/xpipe/app/core/AppImages.java | 144 - .../io/xpipe/app/core/AppLayoutModel.java | 49 +- .../java/io/xpipe/app/core/AppResources.java | 132 - .../main/java/io/xpipe/app/core/AppStyle.java | 1 + .../main/java/io/xpipe/app/core/AppTheme.java | 1 + .../java/io/xpipe/app/core/AppTrayIcon.java | 2 + .../io/xpipe/app/core/check/AppAvCheck.java | 7 +- .../app/core/check/AppBundledToolsCheck.java | 4 +- .../io/xpipe/app/core/check/AppGpuCheck.java | 22 + .../app/core/check/AppJavaOptionsCheck.java | 28 + .../xpipe/app/core/check/AppRosettaCheck.java | 7 +- .../xpipe/app/core/check/AppShellCheck.java | 2 +- .../java/io/xpipe/app/core/mode/BaseMode.java | 11 +- .../java/io/xpipe/app/core/mode/GuiMode.java | 8 + .../io/xpipe/app/core/mode/OperationMode.java | 28 +- .../io/xpipe/app/core/mode/PlatformMode.java | 10 +- .../xpipe/app/core/window/AppMainWindow.java | 6 +- .../app/core/window/AppWindowHelper.java | 2 + .../core/window/NativeMacOsWindowControl.java | 4 +- .../io/xpipe/app/ext/ContainerImageStore.java | 6 + .../io/xpipe/app/ext/DataStoreProvider.java | 6 +- .../io/xpipe/app/ext/ExtensionException.java | 19 +- .../java/io/xpipe/app/ext/LocalStore.java | 7 +- .../xpipe/app/ext/ProcessControlProvider.java | 3 + .../java/io/xpipe/app/ext/ScanProvider.java | 4 +- .../app/fxcomps/impl/DataStoreChoiceComp.java | 14 +- .../fxcomps/impl/DataStoreListChoiceComp.java | 2 +- .../app/fxcomps/impl/IconButtonComp.java | 36 +- .../app/fxcomps/impl/PrettyImageComp.java | 2 +- .../app/fxcomps/impl/PrettyImageHelper.java | 67 +- .../xpipe/app/fxcomps/impl/PrettySvgComp.java | 2 +- .../app/fxcomps/impl/StoreCategoryComp.java | 20 +- .../java/io/xpipe/app/issue/ErrorAction.java | 20 + .../io/xpipe/app/issue/ErrorHandlerComp.java | 9 +- .../io/xpipe/app/issue/UserReportComp.java | 1 + .../xpipe/app/launcher/LauncherCommand.java | 18 +- .../io/xpipe/app/prefs/AboutCategory.java | 2 +- .../java/io/xpipe/app/prefs/AppPrefs.java | 28 +- .../app/prefs/ExternalApplicationType.java | 11 +- .../xpipe/app/prefs/ExternalEditorType.java | 5 +- .../app/prefs/ExternalPasswordManager.java | 146 +- .../ExternalPasswordManagerTemplate.java | 81 + .../app/prefs/ExternalRdpClientType.java | 4 + .../io/xpipe/app/prefs/LockChangeAlert.java | 55 + .../app/prefs/PasswordManagerCategory.java | 136 +- .../io/xpipe/app/prefs/SecurityCategory.java | 5 +- .../java/io/xpipe/app/prefs/SyncCategory.java | 75 +- .../io/xpipe/app/prefs/TerminalCategory.java | 2 +- .../xpipe/app/prefs/ThirdPartyDependency.java | 2 +- .../xpipe/app/prefs/TroubleshootCategory.java | 9 +- .../io/xpipe/app/prefs/VaultCategory.java | 10 +- .../io/xpipe/app/prefs/WorkflowCategory.java | 6 +- .../app/prefs/WorkspaceCreationAlert.java | 1 + .../io/xpipe/app/resources/AppImages.java | 155 + .../io/xpipe/app/resources/AppResources.java | 134 + .../resources/ContainerAutoSystemIcon.java | 45 + .../app/resources/FileAutoSystemIcon.java | 36 + .../app/resources/ShellAutoSystemIcon.java | 25 + .../io/xpipe/app/resources/SystemIcon.java | 23 + .../io/xpipe/app/resources/SystemIcons.java | 119 + .../io/xpipe/app/storage/DataStorage.java | 41 +- .../app/storage/DataStorageSyncHandler.java | 4 + .../io/xpipe/app/storage/DataStoreEntry.java | 123 +- .../io/xpipe/app/storage/StandardStorage.java | 18 +- .../io/xpipe/app/storage/StorageElement.java | 1 - .../app/terminal/ExternalTerminalType.java | 30 +- .../xpipe/app/terminal/KittyTerminalType.java | 2 +- .../xpipe/app/terminal/WezTerminalType.java | 9 +- .../io/xpipe/app/update/AppInstaller.java | 11 +- .../io/xpipe/app/update/ChocoUpdater.java | 2 +- .../io/xpipe/app/update/PortableUpdater.java | 4 +- .../app/update/XPipeDistributionType.java | 11 +- .../io/xpipe/app/util/AppJacksonModule.java | 2 +- .../java/io/xpipe/app/util/AsktextAlert.java | 94 + .../io/xpipe/app/util/CommandSupport.java | 9 + .../java/io/xpipe/app/util/DesktopHelper.java | 12 +- .../java/io/xpipe/app/util/FileReference.java | 2 +- .../xpipe/app/util/FixedHierarchyStore.java | 13 +- .../xpipe/app/util/HumanReadableFormat.java | 17 +- .../java/io/xpipe/app/util/Hyperlinks.java | 5 + .../java/io/xpipe/app/util/Indicator.java | 106 - .../io/xpipe/app/util/LockChangeAlert.java | 56 - .../io/xpipe/app/util/NamedCharacter.java | 62 - .../java/io/xpipe/app/util/PlatformState.java | 7 +- .../io/xpipe/app/util/PrettyListView.java | 144 - .../app/util/ProxyManagerProviderImpl.java | 35 - .../java/io/xpipe/app/util/RdpConfig.java | 6 + .../java/io/xpipe/app/util/ScanAlert.java | 252 +- .../java/io/xpipe/app/util/ScanDialog.java | 207 + .../app/util/SecretRetrievalStrategy.java | 14 +- .../util/SecretRetrievalStrategyHelper.java | 1 - .../java/io/xpipe/app/util/ShellTemp.java | 3 +- .../io/xpipe/app/util/SshLocalBridge.java | 26 +- .../xpipe/app/util/TerminalLaunchRequest.java | 87 + .../xpipe/app/util/TerminalLaunchResult.java | 18 + .../io/xpipe/app/util/TerminalLauncher.java | 3 +- .../app/util/TerminalLauncherManager.java | 154 +- .../java/io/xpipe/app/util/UserConfig.java | 3 - .../java/io/xpipe/app/util/Validatable.java | 6 - .../io/xpipe/app/util/WindowsRegistry.java | 30 +- app/src/main/java/module-info.java | 6 +- .../default_folder_opened-24.png | Bin 450 -> 0 bytes .../default_root_folder_opened-24.png | Bin 714 -> 0 bytes .../folder_type_android_opened-24.png | Bin 781 -> 0 bytes .../folder_type_api_opened-24.png | Bin 1034 -> 0 bytes .../folder_type_app_opened-24.png | Bin 861 -> 0 bytes .../folder_type_arangodb_opened-24.png | Bin 986 -> 0 bytes .../folder_type_asset_opened-24.png | Bin 918 -> 0 bytes .../folder_type_audio_opened-24.png | Bin 789 -> 0 bytes .../folder_type_aurelia_opened-24.png | Bin 1163 -> 0 bytes .../folder_type_aws_opened-24.png | Bin 884 -> 0 bytes .../folder_type_azure_opened-24.png | Bin 926 -> 0 bytes .../folder_type_azurepipelines_opened-24.png | Bin 923 -> 0 bytes .../folder_type_binary_opened-24.png | Bin 851 -> 0 bytes .../folder_type_bloc_opened-24.png | Bin 788 -> 0 bytes .../folder_type_blueprint_opened-24.png | Bin 1026 -> 0 bytes .../folder_type_bot_opened-24.png | Bin 787 -> 0 bytes .../folder_type_bower_opened-24.png | Bin 1051 -> 0 bytes .../folder_type_buildkite_opened-24.png | Bin 783 -> 0 bytes .../folder_type_cake_opened-24.png | Bin 1021 -> 0 bytes .../folder_type_certificate_opened-24.png | Bin 674 -> 0 bytes .../folder_type_chef_opened-24.png | Bin 1248 -> 0 bytes .../folder_type_circleci_opened-24.png | Bin 984 -> 0 bytes .../folder_type_cli_opened-24.png | Bin 619 -> 0 bytes .../folder_type_client_opened-24.png | Bin 792 -> 0 bytes .../folder_type_cmake_opened-24.png | Bin 973 -> 0 bytes .../folder_type_common_opened-24.png | Bin 875 -> 0 bytes .../folder_type_component_opened-24.png | Bin 1001 -> 0 bytes .../folder_type_composer_opened-24.png | Bin 1138 -> 0 bytes .../folder_type_config_opened-24.png | Bin 863 -> 0 bytes .../folder_type_controller_opened-24.png | Bin 1026 -> 0 bytes .../folder_type_coverage_opened-24.png | Bin 797 -> 0 bytes .../folder_type_css_opened-24.png | Bin 982 -> 0 bytes .../folder_type_cubit_opened-24.png | Bin 881 -> 0 bytes .../folder_type_cypress_opened-24.png | Bin 1122 -> 0 bytes .../folder_type_dapr_opened-24.png | Bin 639 -> 0 bytes .../folder_type_datadog_opened-24.png | Bin 1123 -> 0 bytes .../folder_type_db_opened-24.png | Bin 877 -> 0 bytes .../folder_type_debian_opened-24.png | Bin 904 -> 0 bytes .../folder_type_dependabot_opened-24.png | Bin 847 -> 0 bytes .../folder_type_devcontainer_opened-24.png | Bin 905 -> 0 bytes .../folder_type_dist_opened-24.png | Bin 881 -> 0 bytes .../folder_type_docker_opened-24.png | Bin 812 -> 0 bytes .../folder_type_docs_opened-24.png | Bin 823 -> 0 bytes .../folder_type_e2e_opened-24.png | Bin 851 -> 0 bytes ...folder_type_elasticbeanstalk_opened-24.png | Bin 791 -> 0 bytes .../folder_type_electron_opened-24.png | Bin 977 -> 0 bytes .../folder_type_expo_opened-24.png | Bin 1000 -> 0 bytes .../folder_type_favicon_opened-24.png | Bin 1021 -> 0 bytes .../folder_type_flow_opened-24.png | Bin 955 -> 0 bytes .../folder_type_fonts_opened-24.png | Bin 873 -> 0 bytes .../folder_type_gcp_opened-24.png | Bin 1006 -> 0 bytes .../folder_type_git_opened-24.png | Bin 891 -> 0 bytes .../folder_type_github_opened-24.png | Bin 907 -> 0 bytes .../folder_type_gitlab_opened-24.png | Bin 907 -> 0 bytes .../folder_type_gradle_opened-24.png | Bin 839 -> 0 bytes .../folder_type_graphql_opened-24.png | Bin 929 -> 0 bytes .../folder_type_grunt_opened-24.png | Bin 1065 -> 0 bytes .../folder_type_gulp_opened-24.png | Bin 731 -> 0 bytes .../folder_type_haxelib_opened-24.png | Bin 991 -> 0 bytes .../folder_type_helper_opened-24.png | Bin 1017 -> 0 bytes .../folder_type_hook_opened-24.png | Bin 787 -> 0 bytes .../folder_type_husky_opened-24.png | Bin 865 -> 0 bytes .../folder_type_idea_opened-24.png | Bin 927 -> 0 bytes .../folder_type_images_opened-24.png | Bin 749 -> 0 bytes .../folder_type_include_opened-24.png | Bin 755 -> 0 bytes .../folder_type_interfaces_opened-24.png | Bin 937 -> 0 bytes .../folder_type_ios_opened-24.png | Bin 695 -> 0 bytes .../folder_type_js_opened-24.png | Bin 845 -> 0 bytes .../folder_type_json_official_opened-24.png | Bin 922 -> 0 bytes .../folder_type_json_opened-24.png | Bin 825 -> 0 bytes .../folder_type_kubernetes_opened-24.png | Bin 1130 -> 0 bytes .../folder_type_less_opened-24.png | Bin 864 -> 0 bytes .../folder_type_library_opened-24.png | Bin 969 -> 0 bytes .../folder_type_light_cypress_opened-24.png | Bin 1135 -> 0 bytes .../folder_type_light_electron_opened-24.png | Bin 1023 -> 0 bytes .../folder_type_light_expo_opened-24.png | Bin 999 -> 0 bytes .../folder_type_light_fonts_opened-24.png | Bin 826 -> 0 bytes .../folder_type_light_gradle_opened-24.png | Bin 948 -> 0 bytes .../folder_type_light_meteor_opened-24.png | Bin 937 -> 0 bytes .../folder_type_light_mysql_opened-24.png | Bin 845 -> 0 bytes .../folder_type_light_node_opened-24.png | Bin 1128 -> 0 bytes .../folder_type_light_redux_opened-24.png | Bin 927 -> 0 bytes .../folder_type_light_sass_opened-24.png | Bin 1024 -> 0 bytes .../folder_type_linux_opened-24.png | Bin 944 -> 0 bytes .../folder_type_locale_opened-24.png | Bin 940 -> 0 bytes .../folder_type_log_opened-24.png | Bin 788 -> 0 bytes .../folder_type_macos_opened-24.png | Bin 839 -> 0 bytes .../folder_type_mariadb_opened-24.png | Bin 847 -> 0 bytes .../folder_type_maven_opened-24.png | Bin 910 -> 0 bytes .../folder_type_memcached_opened-24.png | Bin 1072 -> 0 bytes .../folder_type_meteor_opened-24.png | Bin 999 -> 0 bytes .../folder_type_middleware_opened-24.png | Bin 839 -> 0 bytes .../folder_type_minikube_opened-24.png | Bin 1112 -> 0 bytes .../folder_type_mjml_opened-24.png | Bin 866 -> 0 bytes .../folder_type_mock_opened-24.png | Bin 924 -> 0 bytes .../folder_type_model_opened-24.png | Bin 1056 -> 0 bytes .../folder_type_module_opened-24.png | Bin 1087 -> 0 bytes .../folder_type_mongodb_opened-24.png | Bin 719 -> 0 bytes .../folder_type_mysql_opened-24.png | Bin 846 -> 0 bytes .../folder_type_next_opened-24.png | Bin 951 -> 0 bytes .../folder_type_nginx_opened-24.png | Bin 840 -> 0 bytes .../folder_type_nix_opened-24.png | Bin 1055 -> 0 bytes .../folder_type_node_opened-24.png | Bin 908 -> 0 bytes .../folder_type_notification_opened-24.png | Bin 877 -> 0 bytes .../folder_type_nuget_opened-24.png | Bin 1031 -> 0 bytes .../folder_type_nuxt_opened-24.png | Bin 897 -> 0 bytes .../folder_type_package_opened-24.png | Bin 716 -> 0 bytes .../folder_type_paket_opened-24.png | Bin 916 -> 0 bytes .../folder_type_php_opened-24.png | Bin 924 -> 0 bytes .../folder_type_platformio_opened-24.png | Bin 969 -> 0 bytes .../folder_type_plugin_opened-24.png | Bin 742 -> 0 bytes .../folder_type_prisma_opened-24.png | Bin 957 -> 0 bytes .../folder_type_private_opened-24.png | Bin 967 -> 0 bytes .../folder_type_public_opened-24.png | Bin 942 -> 0 bytes .../folder_type_python_opened-24.png | Bin 892 -> 0 bytes .../folder_type_ravendb_opened-24.png | Bin 964 -> 0 bytes .../folder_type_redis_opened-24.png | Bin 1103 -> 0 bytes .../folder_type_redux_opened-24.png | Bin 873 -> 0 bytes .../folder_type_route_opened-24.png | Bin 1065 -> 0 bytes .../folder_type_sass_opened-24.png | Bin 924 -> 0 bytes .../folder_type_script_opened-24.png | Bin 847 -> 0 bytes .../folder_type_server_opened-24.png | Bin 719 -> 0 bytes .../folder_type_services_opened-24.png | Bin 1003 -> 0 bytes .../folder_type_shared_opened-24.png | Bin 877 -> 0 bytes .../folder_type_src_opened-24.png | Bin 871 -> 0 bytes .../folder_type_sso_opened-24.png | Bin 893 -> 0 bytes .../folder_type_story_opened-24.png | Bin 787 -> 0 bytes .../folder_type_style_opened-24.png | Bin 968 -> 0 bytes .../folder_type_tauri_opened-24.png | Bin 1046 -> 0 bytes .../folder_type_temp_opened-24.png | Bin 950 -> 0 bytes .../folder_type_template_opened-24.png | Bin 811 -> 0 bytes .../folder_type_test_opened-24.png | Bin 950 -> 0 bytes .../folder_type_theme_opened-24.png | Bin 1037 -> 0 bytes .../folder_type_tools_opened-24.png | Bin 1082 -> 0 bytes .../folder_type_travis_opened-24.png | Bin 1179 -> 0 bytes .../folder_type_trunk_opened-24.png | Bin 892 -> 0 bytes .../folder_type_typescript_opened-24.png | Bin 956 -> 0 bytes .../folder_type_typings2_opened-24.png | Bin 841 -> 0 bytes .../folder_type_typings_opened-24.png | Bin 933 -> 0 bytes .../folder_type_vagrant_opened-24.png | Bin 1029 -> 0 bytes .../folder_type_video_opened-24.png | Bin 886 -> 0 bytes .../folder_type_view_opened-24.png | Bin 916 -> 0 bytes .../folder_type_vs2_opened-24.png | Bin 857 -> 0 bytes .../folder_type_vs_opened-24.png | Bin 915 -> 0 bytes .../folder_type_vscode2_opened-24.png | Bin 823 -> 0 bytes .../folder_type_vscode3_opened-24.png | Bin 826 -> 0 bytes .../folder_type_vscode_opened-24.png | Bin 893 -> 0 bytes .../folder_type_vscode_test2_opened-24.png | Bin 862 -> 0 bytes .../folder_type_vscode_test3_opened-24.png | Bin 841 -> 0 bytes .../folder_type_vscode_test_opened-24.png | Bin 914 -> 0 bytes .../folder_type_webpack_opened-24.png | Bin 939 -> 0 bytes .../folder_type_windows_opened-24.png | Bin 650 -> 0 bytes .../folder_type_www_opened-24.png | Bin 1151 -> 0 bytes .../folder_type_yarn_opened-24.png | Bin 644 -> 0 bytes .../browser}/default_file-24.png | Bin .../browser}/default_folder-24.png | Bin .../browser}/default_root_folder-24.png | Bin .../browser}/file_type_access-24.png | Bin .../browser}/file_type_access2-24.png | Bin .../browser}/file_type_actionscript-24.png | Bin .../browser}/file_type_actionscript2-24.png | Bin .../browser}/file_type_ada-24.png | Bin .../browser}/file_type_advpl-24.png | Bin .../browser}/file_type_affectscript-24.png | Bin .../file_type_affinitydesigner-24.png | Bin .../browser}/file_type_affinityphoto-24.png | Bin .../file_type_affinitypublisher-24.png | Bin .../browser}/file_type_ai-24.png | Bin .../browser}/file_type_ai2-24.png | Bin .../browser}/file_type_al-24.png | Bin .../browser}/file_type_al_dal-24.png | Bin .../browser}/file_type_allcontributors-24.png | Bin .../browser}/file_type_angular-24.png | Bin .../browser}/file_type_ansible-24.png | Bin .../browser}/file_type_antlr-24.png | Bin .../browser}/file_type_anyscript-24.png | Bin .../browser}/file_type_apache-24.png | Bin .../browser}/file_type_apex-24.png | Bin .../browser}/file_type_api_extractor-24.png | Bin .../browser}/file_type_apib-24.png | Bin .../browser}/file_type_apib2-24.png | Bin .../browser}/file_type_apl-24.png | Bin .../browser}/file_type_applescript-24.png | Bin .../browser}/file_type_appscript-24.png | Bin .../browser}/file_type_appsemble-24.png | Bin .../browser}/file_type_appveyor-24.png | Bin .../browser}/file_type_arduino-24.png | Bin .../browser}/file_type_asciidoc-24.png | Bin .../browser}/file_type_asp-24.png | Bin .../browser}/file_type_aspx-24.png | Bin .../browser}/file_type_assembly-24.png | Bin .../browser}/file_type_astro-24.png | Bin .../browser}/file_type_astroconfig-24.png | Bin .../browser}/file_type_ats-24.png | Bin .../browser}/file_type_audio-24.png | Bin .../browser}/file_type_aurelia-24.png | Bin .../browser}/file_type_autohotkey-24.png | Bin .../browser}/file_type_autoit-24.png | Bin .../browser}/file_type_avif-24.png | Bin .../browser}/file_type_avro-24.png | Bin .../browser}/file_type_awk-24.png | Bin .../browser}/file_type_aws-24.png | Bin .../browser}/file_type_azure-24.png | Bin .../browser}/file_type_azurepipelines-24.png | Bin .../browser}/file_type_babel-24.png | Bin .../browser}/file_type_babel2-24.png | Bin .../browser}/file_type_ballerina-24.png | Bin .../browser}/file_type_bat-24.png | Bin .../browser}/file_type_bats-24.png | Bin .../browser}/file_type_bazaar-24.png | Bin .../browser}/file_type_bazel-24.png | Bin .../browser}/file_type_bazel_ignore-24.png | Bin .../browser}/file_type_bazel_version-24.png | Bin .../browser}/file_type_befunge-24.png | Bin .../browser}/file_type_bicep-24.png | Bin .../browser}/file_type_biml-24.png | Bin .../browser}/file_type_binary-24.png | Bin .../file_type_bitbucketpipeline-24.png | Bin .../browser}/file_type_bithound-24.png | Bin .../browser}/file_type_blade-24.png | Bin .../browser}/file_type_blitzbasic-24.png | Bin .../browser}/file_type_bolt-24.png | Bin .../browser}/file_type_bosque-24.png | Bin .../browser}/file_type_bower-24.png | Bin .../browser}/file_type_bower2-24.png | Bin .../browser}/file_type_browserslist-24.png | Bin .../browser}/file_type_buckbuild-24.png | Bin .../browser}/file_type_bun-24.png | Bin .../browser}/file_type_bundler-24.png | Bin .../browser}/file_type_bunfig-24.png | Bin .../browser}/file_type_c-24.png | Bin .../browser}/file_type_c2-24.png | Bin .../browser}/file_type_c3-24.png | Bin .../browser}/file_type_c_al-24.png | Bin .../browser}/file_type_cabal-24.png | Bin .../browser}/file_type_caddy-24.png | Bin .../browser}/file_type_cake-24.png | Bin .../browser}/file_type_cakephp-24.png | Bin .../browser}/file_type_capacitor-24.png | Bin .../browser}/file_type_cargo-24.png | Bin .../browser}/file_type_casc-24.png | Bin .../browser}/file_type_cddl-24.png | Bin .../browser}/file_type_cert-24.png | Bin .../browser}/file_type_ceylon-24.png | Bin .../browser}/file_type_cf-24.png | Bin .../browser}/file_type_cf2-24.png | Bin .../browser}/file_type_cfc-24.png | Bin .../browser}/file_type_cfc2-24.png | Bin .../browser}/file_type_cfm-24.png | Bin .../browser}/file_type_cfm2-24.png | Bin .../browser}/file_type_cheader-24.png | Bin .../browser}/file_type_chef-24.png | Bin .../browser}/file_type_chef_cookbook-24.png | Bin .../browser}/file_type_circleci-24.png | Bin .../browser}/file_type_class-24.png | Bin .../browser}/file_type_clojure-24.png | Bin .../browser}/file_type_clojurescript-24.png | Bin .../browser}/file_type_cloudfoundry-24.png | Bin .../browser}/file_type_cmake-24.png | Bin .../browser}/file_type_cobol-24.png | Bin .../browser}/file_type_codacy-24.png | Bin .../browser}/file_type_codeclimate-24.png | Bin .../browser}/file_type_codecov-24.png | Bin .../browser}/file_type_codekit-24.png | Bin .../browser}/file_type_codeowners-24.png | Bin .../browser}/file_type_codeql-24.png | Bin .../browser}/file_type_coffeelint-24.png | Bin .../browser}/file_type_coffeescript-24.png | Bin .../browser}/file_type_commitizen-24.png | Bin .../browser}/file_type_commitlint-24.png | Bin .../browser}/file_type_compass-24.png | Bin .../browser}/file_type_composer-24.png | Bin .../browser}/file_type_conan-24.png | Bin .../browser}/file_type_conda-24.png | Bin .../browser}/file_type_config-24.png | Bin .../browser}/file_type_confluence-24.png | Bin .../browser}/file_type_coveralls-24.png | Bin .../browser}/file_type_cpp-24.png | Bin .../browser}/file_type_cpp2-24.png | Bin .../browser}/file_type_cpp3-24.png | Bin .../browser}/file_type_cppheader-24.png | Bin .../browser}/file_type_crowdin-24.png | Bin .../browser}/file_type_crystal-24.png | Bin .../browser}/file_type_csharp-24.png | Bin .../browser}/file_type_csharp2-24.png | Bin .../browser}/file_type_cspell-24.png | Bin .../browser}/file_type_csproj-24.png | Bin .../browser}/file_type_css-24.png | Bin .../browser}/file_type_csscomb-24.png | Bin .../browser}/file_type_csslint-24.png | Bin .../browser}/file_type_cssmap-24.png | Bin .../browser}/file_type_cucumber-24.png | Bin .../browser}/file_type_cuda-24.png | Bin .../browser}/file_type_cvs-24.png | Bin .../browser}/file_type_cypress-24.png | Bin .../browser}/file_type_cypress_spec-24.png | Bin .../browser}/file_type_cython-24.png | Bin .../browser}/file_type_dal-24.png | Bin .../browser}/file_type_darcs-24.png | Bin .../browser}/file_type_dartlang-24.png | Bin .../file_type_dartlang_generated-24.png | Bin .../browser}/file_type_dartlang_ignore-24.png | Bin .../browser}/file_type_datadog-24.png | Bin .../browser}/file_type_db-24.png | Bin .../browser}/file_type_delphi-24.png | Bin .../browser}/file_type_deno-24.png | Bin .../browser}/file_type_dependabot-24.png | Bin .../browser}/file_type_dependencies-24.png | Bin .../browser}/file_type_devcontainer-24.png | Bin .../browser}/file_type_dhall-24.png | Bin .../browser}/file_type_diff-24.png | Bin .../browser}/file_type_django-24.png | Bin .../browser}/file_type_dlang-24.png | Bin .../browser}/file_type_docker-24.png | Bin .../browser}/file_type_docker2-24.png | Bin .../browser}/file_type_dockertest-24.png | Bin .../browser}/file_type_dockertest2-24.png | Bin .../browser}/file_type_docpad-24.png | Bin .../browser}/file_type_docz-24.png | Bin .../browser}/file_type_dojo-24.png | Bin .../browser}/file_type_doppler-24.png | Bin .../browser}/file_type_dotjs-24.png | Bin .../browser}/file_type_doxygen-24.png | Bin .../browser}/file_type_drawio-24.png | Bin .../browser}/file_type_drone-24.png | Bin .../browser}/file_type_drools-24.png | Bin .../browser}/file_type_dustjs-24.png | Bin .../browser}/file_type_dvc-24.png | Bin .../browser}/file_type_dylan-24.png | Bin .../browser}/file_type_earthly-24.png | Bin .../browser}/file_type_eas-metadata-24.png | Bin .../browser}/file_type_edge-24.png | Bin .../browser}/file_type_edge2-24.png | Bin .../browser}/file_type_editorconfig-24.png | Bin .../browser}/file_type_eex-24.png | Bin .../browser}/file_type_ejs-24.png | Bin .../browser}/file_type_elastic-24.png | Bin .../file_type_elasticbeanstalk-24.png | Bin .../browser}/file_type_eleventy-24.png | Bin .../browser}/file_type_eleventy2-24.png | Bin .../browser}/file_type_elixir-24.png | Bin .../browser}/file_type_elm-24.png | Bin .../browser}/file_type_elm2-24.png | Bin .../browser}/file_type_emacs-24.png | Bin .../browser}/file_type_ember-24.png | Bin .../browser}/file_type_ensime-24.png | Bin .../browser}/file_type_eps-24.png | Bin .../browser}/file_type_erb-24.png | Bin .../browser}/file_type_erlang-24.png | Bin .../browser}/file_type_erlang2-24.png | Bin .../browser}/file_type_esbuild-24.png | Bin .../browser}/file_type_eslint-24.png | Bin .../browser}/file_type_eslint2-24.png | Bin .../browser}/file_type_esphome-24.png | Bin .../browser}/file_type_excel-24.png | Bin .../browser}/file_type_excel2-24.png | Bin .../browser}/file_type_expo-24.png | Bin .../browser}/file_type_falcon-24.png | Bin .../browser}/file_type_fantasticon-24.png | Bin .../browser}/file_type_fauna-24.png | Bin .../browser}/file_type_favicon-24.png | Bin .../browser}/file_type_fbx-24.png | Bin .../browser}/file_type_firebase-24.png | Bin .../browser}/file_type_firebasehosting-24.png | Bin .../browser}/file_type_firestore-24.png | Bin .../browser}/file_type_fitbit-24.png | Bin .../browser}/file_type_fla-24.png | Bin .../browser}/file_type_flareact-24.png | Bin .../browser}/file_type_flash-24.png | Bin .../browser}/file_type_floobits-24.png | Bin .../browser}/file_type_flow-24.png | Bin .../browser}/file_type_flutter-24.png | Bin .../browser}/file_type_flutter_package-24.png | Bin .../browser}/file_type_font-24.png | Bin .../browser}/file_type_formkit-24.png | Bin .../browser}/file_type_fortran-24.png | Bin .../browser}/file_type_fossa-24.png | Bin .../browser}/file_type_fossil-24.png | Bin .../browser}/file_type_freemarker-24.png | Bin .../browser}/file_type_fsharp-24.png | Bin .../browser}/file_type_fsharp2-24.png | Bin .../browser}/file_type_fsproj-24.png | Bin .../browser}/file_type_fthtml-24.png | Bin .../browser}/file_type_funding-24.png | Bin .../browser}/file_type_fusebox-24.png | Bin .../browser}/file_type_galen-24.png | Bin .../browser}/file_type_galen2-24.png | Bin .../browser}/file_type_gamemaker-24.png | Bin .../browser}/file_type_gamemaker2-24.png | Bin .../browser}/file_type_gamemaker81-24.png | Bin .../browser}/file_type_gatsby-24.png | Bin .../browser}/file_type_gcloud-24.png | Bin .../browser}/file_type_gcode-24.png | Bin .../browser}/file_type_gdscript-24.png | Bin .../browser}/file_type_genstat-24.png | Bin .../browser}/file_type_git-24.png | Bin .../browser}/file_type_git2-24.png | Bin .../browser}/file_type_gitlab-24.png | Bin .../browser}/file_type_gitpod-24.png | Bin .../browser}/file_type_glide-24.png | Bin .../browser}/file_type_glitter-24.png | Bin .../browser}/file_type_glsl-24.png | Bin .../browser}/file_type_glyphs-24.png | Bin .../browser}/file_type_gnu-24.png | Bin .../browser}/file_type_gnuplot-24.png | Bin .../browser}/file_type_go-24.png | Bin .../browser}/file_type_go_aqua-24.png | Bin .../browser}/file_type_go_black-24.png | Bin .../browser}/file_type_go_fuchsia-24.png | Bin .../browser}/file_type_go_gopher-24.png | Bin .../browser}/file_type_go_lightblue-24.png | Bin .../browser}/file_type_go_package-24.png | Bin .../browser}/file_type_go_white-24.png | Bin .../browser}/file_type_go_work-24.png | Bin .../browser}/file_type_go_yellow-24.png | Bin .../browser}/file_type_goctl-24.png | Bin .../browser}/file_type_godot-24.png | Bin .../browser}/file_type_gradle-24.png | Bin .../browser}/file_type_gradle2-24.png | Bin .../browser}/file_type_graphql-24.png | Bin .../browser}/file_type_graphql_config-24.png | Bin .../browser}/file_type_graphviz-24.png | Bin .../browser}/file_type_greenkeeper-24.png | Bin .../browser}/file_type_gridsome-24.png | Bin .../browser}/file_type_groovy-24.png | Bin .../browser}/file_type_groovy2-24.png | Bin .../browser}/file_type_grunt-24.png | Bin .../browser}/file_type_gulp-24.png | Bin .../browser}/file_type_haml-24.png | Bin .../browser}/file_type_handlebars-24.png | Bin .../browser}/file_type_handlebars2-24.png | Bin .../browser}/file_type_harbour-24.png | Bin .../browser}/file_type_hardhat-24.png | Bin .../browser}/file_type_hashicorp-24.png | Bin .../browser}/file_type_haskell-24.png | Bin .../browser}/file_type_haskell2-24.png | Bin .../browser}/file_type_haxe-24.png | Bin .../browser}/file_type_haxecheckstyle-24.png | Bin .../browser}/file_type_haxedevelop-24.png | Bin .../browser}/file_type_helix-24.png | Bin .../browser}/file_type_helm-24.png | Bin .../browser}/file_type_hjson-24.png | Bin .../browser}/file_type_hlsl-24.png | Bin .../browser}/file_type_homeassistant-24.png | Bin .../browser}/file_type_horusec-24.png | Bin .../browser}/file_type_host-24.png | Bin .../browser}/file_type_html-24.png | Bin .../browser}/file_type_htmlhint-24.png | Bin .../browser}/file_type_http-24.png | Bin .../browser}/file_type_hunspell-24.png | Bin .../browser}/file_type_husky-24.png | Bin .../browser}/file_type_hy-24.png | Bin .../browser}/file_type_hygen-24.png | Bin .../browser}/file_type_hypr-24.png | Bin .../browser}/file_type_icl-24.png | Bin .../browser}/file_type_idris-24.png | Bin .../browser}/file_type_idrisbin-24.png | Bin .../browser}/file_type_idrispkg-24.png | Bin .../browser}/file_type_image-24.png | Bin .../browser}/file_type_imba-24.png | Bin .../browser}/file_type_inc-24.png | Bin .../browser}/file_type_infopath-24.png | Bin .../browser}/file_type_informix-24.png | Bin .../browser}/file_type_ini-24.png | Bin .../browser}/file_type_ink-24.png | Bin .../browser}/file_type_innosetup-24.png | Bin .../browser}/file_type_io-24.png | Bin .../browser}/file_type_iodine-24.png | Bin .../browser}/file_type_ionic-24.png | Bin .../browser}/file_type_jake-24.png | Bin .../browser}/file_type_janet-24.png | Bin .../browser}/file_type_jar-24.png | Bin .../browser}/file_type_jasmine-24.png | Bin .../browser}/file_type_java-24.png | Bin .../browser}/file_type_jbuilder-24.png | Bin .../browser}/file_type_jekyll-24.png | Bin .../browser}/file_type_jenkins-24.png | Bin .../browser}/file_type_jest-24.png | Bin .../browser}/file_type_jest_snapshot-24.png | Bin .../browser}/file_type_jinja-24.png | Bin .../browser}/file_type_jpm-24.png | Bin .../browser}/file_type_js-24.png | Bin .../browser}/file_type_js_official-24.png | Bin .../browser}/file_type_jsbeautify-24.png | Bin .../browser}/file_type_jsconfig-24.png | Bin .../browser}/file_type_jscpd-24.png | Bin .../browser}/file_type_jshint-24.png | Bin .../browser}/file_type_jsmap-24.png | Bin .../browser}/file_type_json-24.png | Bin .../browser}/file_type_json2-24.png | Bin .../browser}/file_type_json5-24.png | Bin .../browser}/file_type_json_official-24.png | Bin .../browser}/file_type_jsonld-24.png | Bin .../browser}/file_type_jsonnet-24.png | Bin .../browser}/file_type_jsp-24.png | Bin .../browser}/file_type_jss-24.png | Bin .../browser}/file_type_julia-24.png | Bin .../browser}/file_type_julia2-24.png | Bin .../browser}/file_type_jupyter-24.png | Bin .../browser}/file_type_k-24.png | Bin .../browser}/file_type_karma-24.png | Bin .../browser}/file_type_key-24.png | Bin .../browser}/file_type_kitchenci-24.png | Bin .../browser}/file_type_kite-24.png | Bin .../browser}/file_type_kivy-24.png | Bin .../browser}/file_type_kos-24.png | Bin .../browser}/file_type_kotlin-24.png | Bin .../browser}/file_type_kusto-24.png | Bin .../browser}/file_type_latino-24.png | Bin .../browser}/file_type_layout-24.png | Bin .../browser}/file_type_lerna-24.png | Bin .../browser}/file_type_less-24.png | Bin .../browser}/file_type_lex-24.png | Bin .../browser}/file_type_license-24.png | Bin .../browser}/file_type_licensebat-24.png | Bin .../file_type_light_actionscript2-24.png | Bin .../browser}/file_type_light_ada-24.png | Bin .../browser}/file_type_light_apl-24.png | Bin .../browser}/file_type_light_babel-24.png | Bin .../browser}/file_type_light_babel2-24.png | Bin .../browser}/file_type_light_cabal-24.png | Bin .../browser}/file_type_light_circleci-24.png | Bin .../file_type_light_cloudfoundry-24.png | Bin .../browser}/file_type_light_codacy-24.png | Bin .../file_type_light_codeclimate-24.png | Bin .../file_type_light_codeowners-24.png | Bin .../browser}/file_type_light_config-24.png | Bin .../browser}/file_type_light_crystal-24.png | Bin .../browser}/file_type_light_cypress-24.png | Bin .../file_type_light_cypress_spec-24.png | Bin .../browser}/file_type_light_db-24.png | Bin .../browser}/file_type_light_deno-24.png | Bin .../browser}/file_type_light_dhall-24.png | Bin .../browser}/file_type_light_docpad-24.png | Bin .../browser}/file_type_light_drone-24.png | Bin .../file_type_light_eas-metadata-24.png | Bin .../browser}/file_type_light_eleventy-24.png | Bin .../browser}/file_type_light_eleventy2-24.png | Bin .../browser}/file_type_light_esphome-24.png | Bin .../browser}/file_type_light_expo-24.png | Bin .../file_type_light_firebasehosting-24.png | Bin .../browser}/file_type_light_fla-24.png | Bin .../browser}/file_type_light_font-24.png | Bin .../file_type_light_gamemaker2-24.png | Bin .../browser}/file_type_light_gradle-24.png | Bin .../browser}/file_type_light_hashicorp-24.png | Bin .../browser}/file_type_light_hjson-24.png | Bin .../browser}/file_type_light_ini-24.png | Bin .../browser}/file_type_light_io-24.png | Bin .../browser}/file_type_light_js-24.png | Bin .../browser}/file_type_light_jsconfig-24.png | Bin .../browser}/file_type_light_jsmap-24.png | Bin .../browser}/file_type_light_json-24.png | Bin .../browser}/file_type_light_json5-24.png | Bin .../browser}/file_type_light_jsonld-24.png | Bin .../browser}/file_type_light_kite-24.png | Bin .../browser}/file_type_light_lerna-24.png | Bin .../browser}/file_type_light_mailing-24.png | Bin .../browser}/file_type_light_mdx-24.png | Bin .../browser}/file_type_light_mlang-24.png | Bin .../browser}/file_type_light_mustache-24.png | Bin .../browser}/file_type_light_next-24.png | Bin .../browser}/file_type_light_nim-24.png | Bin .../browser}/file_type_light_nx-24.png | Bin .../file_type_light_objidconfig-24.png | Bin .../browser}/file_type_light_openHAB-24.png | Bin .../browser}/file_type_light_pcl-24.png | Bin .../browser}/file_type_light_pnpm-24.png | Bin .../browser}/file_type_light_prettier-24.png | Bin .../browser}/file_type_light_prisma-24.png | Bin .../file_type_light_purescript-24.png | Bin .../browser}/file_type_light_quasar-24.png | Bin .../browser}/file_type_light_razzle-24.png | Bin .../browser}/file_type_light_rehype-24.png | Bin .../browser}/file_type_light_remark-24.png | Bin .../browser}/file_type_light_replit-24.png | Bin .../browser}/file_type_light_retext-24.png | Bin .../browser}/file_type_light_rome-24.png | Bin .../browser}/file_type_light_rubocop-24.png | Bin .../browser}/file_type_light_rust-24.png | Bin .../file_type_light_rust_toolchain-24.png | Bin .../browser}/file_type_light_shaderlab-24.png | Bin .../browser}/file_type_light_solidity-24.png | Bin .../browser}/file_type_light_stylelint-24.png | Bin .../browser}/file_type_light_stylus-24.png | Bin .../browser}/file_type_light_symfony-24.png | Bin .../browser}/file_type_light_systemd-24.png | Bin .../file_type_light_systemverilog-24.png | Bin .../browser}/file_type_light_testcafe-24.png | Bin .../browser}/file_type_light_testjs-24.png | Bin .../browser}/file_type_light_tex-24.png | Bin .../browser}/file_type_light_todo-24.png | Bin .../browser}/file_type_light_toit-24.png | Bin .../browser}/file_type_light_toml-24.png | Bin .../browser}/file_type_light_tree-24.png | Bin .../browser}/file_type_light_turbo-24.png | Bin .../file_type_light_unibeautify-24.png | Bin .../browser}/file_type_light_vash-24.png | Bin .../browser}/file_type_light_vsix-24.png | Bin .../file_type_light_vsixmanifest-24.png | Bin .../browser}/file_type_light_xfl-24.png | Bin .../browser}/file_type_light_yaml-24.png | Bin .../browser}/file_type_light_zeit-24.png | Bin .../browser}/file_type_lighthouse-24.png | Bin .../browser}/file_type_lilypond-24.png | Bin .../browser}/file_type_lime-24.png | Bin .../browser}/file_type_lintstagedrc-24.png | Bin .../browser}/file_type_liquid-24.png | Bin .../browser}/file_type_lisp-24.png | Bin .../browser}/file_type_livescript-24.png | Bin .../browser}/file_type_lnk-24.png | Bin .../browser}/file_type_locale-24.png | Bin .../browser}/file_type_log-24.png | Bin .../browser}/file_type_lolcode-24.png | Bin .../browser}/file_type_lsl-24.png | Bin .../browser}/file_type_lua-24.png | Bin .../browser}/file_type_luau-24.png | Bin .../browser}/file_type_lync-24.png | Bin .../browser}/file_type_mailing-24.png | Bin .../browser}/file_type_manifest-24.png | Bin .../browser}/file_type_manifest_bak-24.png | Bin .../browser}/file_type_manifest_skip-24.png | Bin .../browser}/file_type_map-24.png | Bin .../browser}/file_type_mariadb-24.png | Bin .../browser}/file_type_markdown-24.png | Bin .../browser}/file_type_markdownlint-24.png | Bin .../file_type_markdownlint_ignore-24.png | Bin .../browser}/file_type_marko-24.png | Bin .../browser}/file_type_markojs-24.png | Bin .../browser}/file_type_master-co-24.png | Bin .../browser}/file_type_matlab-24.png | Bin .../browser}/file_type_maven-24.png | Bin .../browser}/file_type_maxscript-24.png | Bin .../browser}/file_type_maya-24.png | Bin .../browser}/file_type_mdx-24.png | Bin .../browser}/file_type_mediawiki-24.png | Bin .../browser}/file_type_mercurial-24.png | Bin .../browser}/file_type_meson-24.png | Bin .../browser}/file_type_meteor-24.png | Bin .../browser}/file_type_mjml-24.png | Bin .../browser}/file_type_mlang-24.png | Bin .../browser}/file_type_mocha-24.png | Bin .../browser}/file_type_modernizr-24.png | Bin .../browser}/file_type_mojolicious-24.png | Bin .../browser}/file_type_moleculer-24.png | Bin .../browser}/file_type_mondoo-24.png | Bin .../browser}/file_type_mongo-24.png | Bin .../browser}/file_type_monotone-24.png | Bin .../browser}/file_type_motif-24.png | Bin .../browser}/file_type_mson-24.png | Bin .../browser}/file_type_mustache-24.png | Bin .../browser}/file_type_mysql-24.png | Bin .../browser}/file_type_ndst-24.png | Bin .../browser}/file_type_nearly-24.png | Bin .../browser}/file_type_nest_adapter_js-24.png | Bin .../browser}/file_type_nest_adapter_ts-24.png | Bin .../file_type_nest_controller_js-24.png | Bin .../file_type_nest_controller_ts-24.png | Bin .../file_type_nest_decorator_js-24.png | Bin .../file_type_nest_decorator_ts-24.png | Bin .../browser}/file_type_nest_filter_js-24.png | Bin .../browser}/file_type_nest_filter_ts-24.png | Bin .../browser}/file_type_nest_gateway_js-24.png | Bin .../browser}/file_type_nest_gateway_ts-24.png | Bin .../browser}/file_type_nest_guard_js-24.png | Bin .../browser}/file_type_nest_guard_ts-24.png | Bin .../file_type_nest_interceptor_js-24.png | Bin .../file_type_nest_interceptor_ts-24.png | Bin .../file_type_nest_middleware_js-24.png | Bin .../file_type_nest_middleware_ts-24.png | Bin .../browser}/file_type_nest_module_js-24.png | Bin .../browser}/file_type_nest_module_ts-24.png | Bin .../browser}/file_type_nest_pipe_js-24.png | Bin .../browser}/file_type_nest_pipe_ts-24.png | Bin .../browser}/file_type_nest_service_js-24.png | Bin .../browser}/file_type_nest_service_ts-24.png | Bin .../browser}/file_type_nestjs-24.png | Bin .../browser}/file_type_netlify-24.png | Bin .../browser}/file_type_next-24.png | Bin .../file_type_ng_component_css-24.png | Bin .../file_type_ng_component_dart-24.png | Bin .../file_type_ng_component_html-24.png | Bin .../browser}/file_type_ng_component_js-24.png | Bin .../file_type_ng_component_js2-24.png | Bin .../file_type_ng_component_less-24.png | Bin .../file_type_ng_component_sass-24.png | Bin .../file_type_ng_component_scss-24.png | Bin .../browser}/file_type_ng_component_ts-24.png | Bin .../file_type_ng_component_ts2-24.png | Bin .../file_type_ng_controller_js-24.png | Bin .../file_type_ng_controller_ts-24.png | Bin .../file_type_ng_directive_dart-24.png | Bin .../browser}/file_type_ng_directive_js-24.png | Bin .../file_type_ng_directive_js2-24.png | Bin .../browser}/file_type_ng_directive_ts-24.png | Bin .../file_type_ng_directive_ts2-24.png | Bin .../browser}/file_type_ng_guard_dart-24.png | Bin .../browser}/file_type_ng_guard_js-24.png | Bin .../browser}/file_type_ng_guard_ts-24.png | Bin .../file_type_ng_interceptor_dart-24.png | Bin .../file_type_ng_interceptor_js-24.png | Bin .../file_type_ng_interceptor_ts-24.png | Bin .../browser}/file_type_ng_module_dart-24.png | Bin .../browser}/file_type_ng_module_js-24.png | Bin .../browser}/file_type_ng_module_js2-24.png | Bin .../browser}/file_type_ng_module_ts-24.png | Bin .../browser}/file_type_ng_module_ts2-24.png | Bin .../browser}/file_type_ng_pipe_dart-24.png | Bin .../browser}/file_type_ng_pipe_js-24.png | Bin .../browser}/file_type_ng_pipe_js2-24.png | Bin .../browser}/file_type_ng_pipe_ts-24.png | Bin .../browser}/file_type_ng_pipe_ts2-24.png | Bin .../browser}/file_type_ng_routing_dart-24.png | Bin .../browser}/file_type_ng_routing_js-24.png | Bin .../browser}/file_type_ng_routing_js2-24.png | Bin .../browser}/file_type_ng_routing_ts-24.png | Bin .../browser}/file_type_ng_routing_ts2-24.png | Bin .../browser}/file_type_ng_service_dart-24.png | Bin .../browser}/file_type_ng_service_js-24.png | Bin .../browser}/file_type_ng_service_js2-24.png | Bin .../browser}/file_type_ng_service_ts-24.png | Bin .../browser}/file_type_ng_service_ts2-24.png | Bin .../file_type_ng_smart_component_dart-24.png | Bin .../file_type_ng_smart_component_js-24.png | Bin .../file_type_ng_smart_component_js2-24.png | Bin .../file_type_ng_smart_component_ts-24.png | Bin .../file_type_ng_smart_component_ts2-24.png | Bin .../browser}/file_type_ng_tailwind-24.png | Bin .../browser}/file_type_nginx-24.png | Bin .../browser}/file_type_nim-24.png | Bin .../browser}/file_type_nimble-24.png | Bin .../browser}/file_type_ninja-24.png | Bin .../browser}/file_type_nix-24.png | Bin .../browser}/file_type_njsproj-24.png | Bin .../browser}/file_type_noc-24.png | Bin .../browser}/file_type_node-24.png | Bin .../browser}/file_type_node2-24.png | Bin .../browser}/file_type_nodemon-24.png | Bin .../browser}/file_type_npm-24.png | Bin .../browser}/file_type_nsi-24.png | Bin .../browser}/file_type_nsri-24.png | Bin .../browser}/file_type_nsri-integrity-24.png | Bin .../browser}/file_type_nuget-24.png | Bin .../browser}/file_type_numpy-24.png | Bin .../browser}/file_type_nunjucks-24.png | Bin .../browser}/file_type_nuxt-24.png | Bin .../browser}/file_type_nx-24.png | Bin .../browser}/file_type_nyc-24.png | Bin .../browser}/file_type_objectivec-24.png | Bin .../browser}/file_type_objectivecpp-24.png | Bin .../browser}/file_type_objidconfig-24.png | Bin .../browser}/file_type_ocaml-24.png | Bin .../browser}/file_type_ogone-24.png | Bin .../browser}/file_type_onenote-24.png | Bin .../browser}/file_type_openHAB-24.png | Bin .../browser}/file_type_opencl-24.png | Bin .../browser}/file_type_openscad-24.png | Bin .../browser}/file_type_org-24.png | Bin .../browser}/file_type_outlook-24.png | Bin .../browser}/file_type_ovpn-24.png | Bin .../browser}/file_type_package-24.png | Bin .../browser}/file_type_paket-24.png | Bin .../browser}/file_type_patch-24.png | Bin .../browser}/file_type_pcl-24.png | Bin .../browser}/file_type_pddl-24.png | Bin .../browser}/file_type_pddl_happenings-24.png | Bin .../browser}/file_type_pddl_plan-24.png | Bin .../browser}/file_type_pdf-24.png | Bin .../browser}/file_type_pdf2-24.png | Bin .../browser}/file_type_peeky-24.png | Bin .../browser}/file_type_perl-24.png | Bin .../browser}/file_type_perl2-24.png | Bin .../browser}/file_type_perl6-24.png | Bin .../browser}/file_type_pgsql-24.png | Bin .../browser}/file_type_photoshop-24.png | Bin .../browser}/file_type_photoshop2-24.png | Bin .../browser}/file_type_php-24.png | Bin .../browser}/file_type_php2-24.png | Bin .../browser}/file_type_php3-24.png | Bin .../browser}/file_type_phpcsfixer-24.png | Bin .../browser}/file_type_phpstan-24.png | Bin .../browser}/file_type_phpunit-24.png | Bin .../browser}/file_type_phraseapp-24.png | Bin .../browser}/file_type_pine-24.png | Bin .../browser}/file_type_pip-24.png | Bin .../browser}/file_type_pipeline-24.png | Bin .../browser}/file_type_plantuml-24.png | Bin .../browser}/file_type_platformio-24.png | Bin .../browser}/file_type_playwright-24.png | Bin .../browser}/file_type_plsql-24.png | Bin .../browser}/file_type_plsql_package-24.png | Bin .../file_type_plsql_package_body-24.png | Bin .../file_type_plsql_package_header-24.png | Bin .../file_type_plsql_package_spec-24.png | Bin .../browser}/file_type_pm2-24.png | Bin .../browser}/file_type_pnpm-24.png | Bin .../browser}/file_type_poedit-24.png | Bin .../browser}/file_type_poetry-24.png | Bin .../browser}/file_type_polymer-24.png | Bin .../browser}/file_type_pony-24.png | Bin .../browser}/file_type_postcss-24.png | Bin .../browser}/file_type_postcssconfig-24.png | Bin .../browser}/file_type_powerpoint-24.png | Bin .../browser}/file_type_powerpoint2-24.png | Bin .../browser}/file_type_powershell-24.png | Bin .../browser}/file_type_powershell2-24.png | Bin .../file_type_powershell_format-24.png | Bin .../browser}/file_type_powershell_psd-24.png | Bin .../browser}/file_type_powershell_psd2-24.png | Bin .../browser}/file_type_powershell_psm-24.png | Bin .../browser}/file_type_powershell_psm2-24.png | Bin .../file_type_powershell_types-24.png | Bin .../browser}/file_type_preact-24.png | Bin .../browser}/file_type_precommit-24.png | Bin .../browser}/file_type_prettier-24.png | Bin .../browser}/file_type_prisma-24.png | Bin .../browser}/file_type_processinglang-24.png | Bin .../browser}/file_type_procfile-24.png | Bin .../browser}/file_type_progress-24.png | Bin .../browser}/file_type_prolog-24.png | Bin .../browser}/file_type_prometheus-24.png | Bin .../browser}/file_type_protobuf-24.png | Bin .../browser}/file_type_protractor-24.png | Bin .../browser}/file_type_publisher-24.png | Bin .../browser}/file_type_pug-24.png | Bin .../browser}/file_type_pulumi-24.png | Bin .../browser}/file_type_puppet-24.png | Bin .../browser}/file_type_purescript-24.png | Bin .../browser}/file_type_pyret-24.png | Bin .../browser}/file_type_python-24.png | Bin .../browser}/file_type_pythowo-24.png | Bin .../browser}/file_type_pytyped-24.png | Bin .../browser}/file_type_pyup-24.png | Bin .../browser}/file_type_q-24.png | Bin .../browser}/file_type_qbs-24.png | Bin .../browser}/file_type_qlikview-24.png | Bin .../browser}/file_type_qml-24.png | Bin .../browser}/file_type_qmldir-24.png | Bin .../browser}/file_type_qsharp-24.png | Bin .../browser}/file_type_quasar-24.png | Bin .../browser}/file_type_r-24.png | Bin .../browser}/file_type_racket-24.png | Bin .../browser}/file_type_rails-24.png | Bin .../browser}/file_type_rake-24.png | Bin .../browser}/file_type_raml-24.png | Bin .../browser}/file_type_razor-24.png | Bin .../browser}/file_type_razzle-24.png | Bin .../browser}/file_type_reactjs-24.png | Bin .../browser}/file_type_reacttemplate-24.png | Bin .../browser}/file_type_reactts-24.png | Bin .../browser}/file_type_reason-24.png | Bin .../browser}/file_type_red-24.png | Bin .../browser}/file_type_registry-24.png | Bin .../browser}/file_type_rego-24.png | Bin .../browser}/file_type_rehype-24.png | Bin .../browser}/file_type_remark-24.png | Bin .../browser}/file_type_renovate-24.png | Bin .../browser}/file_type_replit-24.png | Bin .../browser}/file_type_rescript-24.png | Bin .../browser}/file_type_rest-24.png | Bin .../browser}/file_type_retext-24.png | Bin .../browser}/file_type_rexx-24.png | Bin .../browser}/file_type_riot-24.png | Bin .../browser}/file_type_rmd-24.png | Bin .../browser}/file_type_robotframework-24.png | Bin .../browser}/file_type_robots-24.png | Bin .../browser}/file_type_rollup-24.png | Bin .../browser}/file_type_rome-24.png | Bin .../browser}/file_type_ron-24.png | Bin .../browser}/file_type_rproj-24.png | Bin .../browser}/file_type_rspec-24.png | Bin .../browser}/file_type_rubocop-24.png | Bin .../browser}/file_type_ruby-24.png | Bin .../browser}/file_type_rust-24.png | Bin .../browser}/file_type_rust_toolchain-24.png | Bin .../browser}/file_type_sails-24.png | Bin .../browser}/file_type_saltstack-24.png | Bin .../browser}/file_type_san-24.png | Bin .../file_type_sapphire_framework_cli-24.png | Bin .../browser}/file_type_sas-24.png | Bin .../browser}/file_type_sass-24.png | Bin .../browser}/file_type_sbt-24.png | Bin .../browser}/file_type_scala-24.png | Bin .../browser}/file_type_scilab-24.png | Bin .../browser}/file_type_script-24.png | Bin .../browser}/file_type_scss-24.png | Bin .../browser}/file_type_scss2-24.png | Bin .../browser}/file_type_sdlang-24.png | Bin .../browser}/file_type_sentry-24.png | Bin .../browser}/file_type_sequelize-24.png | Bin .../browser}/file_type_serverless-24.png | Bin .../browser}/file_type_shaderlab-24.png | Bin .../browser}/file_type_shell-24.png | Bin .../browser}/file_type_shellcheck-24.png | Bin .../browser}/file_type_shuttle-24.png | Bin .../browser}/file_type_silverstripe-24.png | Bin .../browser}/file_type_siyuan-24.png | Bin .../browser}/file_type_sketch-24.png | Bin .../browser}/file_type_skipper-24.png | Bin .../browser}/file_type_slang-24.png | Bin .../browser}/file_type_slashup-24.png | Bin .../browser}/file_type_slice-24.png | Bin .../browser}/file_type_slim-24.png | Bin .../browser}/file_type_sln-24.png | Bin .../browser}/file_type_sln2-24.png | Bin .../browser}/file_type_smarty-24.png | Bin .../browser}/file_type_snapcraft-24.png | Bin .../browser}/file_type_snort-24.png | Bin .../browser}/file_type_snyk-24.png | Bin .../browser}/file_type_solidarity-24.png | Bin .../browser}/file_type_solidity-24.png | Bin .../browser}/file_type_source-24.png | Bin .../browser}/file_type_spacengine-24.png | Bin .../browser}/file_type_sparql-24.png | Bin .../browser}/file_type_sqf-24.png | Bin .../browser}/file_type_sql-24.png | Bin .../browser}/file_type_sqlite-24.png | Bin .../browser}/file_type_squirrel-24.png | Bin .../browser}/file_type_sss-24.png | Bin .../browser}/file_type_stan-24.png | Bin .../browser}/file_type_stata-24.png | Bin .../browser}/file_type_stencil-24.png | Bin .../browser}/file_type_storyboard-24.png | Bin .../browser}/file_type_storybook-24.png | Bin .../browser}/file_type_stryker-24.png | Bin .../browser}/file_type_stylable-24.png | Bin .../browser}/file_type_style-24.png | Bin .../browser}/file_type_styled-24.png | Bin .../browser}/file_type_stylelint-24.png | Bin .../browser}/file_type_stylish_haskell-24.png | Bin .../browser}/file_type_stylus-24.png | Bin .../browser}/file_type_subversion-24.png | Bin .../browser}/file_type_svelte-24.png | Bin .../browser}/file_type_svg-24.png | Bin .../browser}/file_type_swagger-24.png | Bin .../browser}/file_type_swift-24.png | Bin .../browser}/file_type_swig-24.png | Bin .../browser}/file_type_symfony-24.png | Bin .../browser}/file_type_systemd-24.png | Bin .../browser}/file_type_systemverilog-24.png | Bin .../browser}/file_type_t4tt-24.png | Bin .../browser}/file_type_tailwind-24.png | Bin .../browser}/file_type_tauri-24.png | Bin .../browser}/file_type_tcl-24.png | Bin .../browser}/file_type_teal-24.png | Bin .../browser}/file_type_tera-24.png | Bin .../browser}/file_type_terraform-24.png | Bin .../browser}/file_type_test-24.png | Bin .../browser}/file_type_testcafe-24.png | Bin .../browser}/file_type_testjs-24.png | Bin .../browser}/file_type_testts-24.png | Bin .../browser}/file_type_tex-24.png | Bin .../browser}/file_type_text-24.png | Bin .../browser}/file_type_textile-24.png | Bin .../browser}/file_type_tfs-24.png | Bin .../browser}/file_type_tiltfile-24.png | Bin .../browser}/file_type_todo-24.png | Bin .../browser}/file_type_toit-24.png | Bin .../browser}/file_type_toml-24.png | Bin .../browser}/file_type_tox-24.png | Bin .../browser}/file_type_travis-24.png | Bin .../browser}/file_type_tree-24.png | Bin .../browser}/file_type_tres-24.png | Bin .../browser}/file_type_truffle-24.png | Bin .../browser}/file_type_trunk-24.png | Bin .../browser}/file_type_tscn-24.png | Bin .../browser}/file_type_tsconfig-24.png | Bin .../file_type_tsconfig_official-24.png | Bin .../browser}/file_type_tslint-24.png | Bin .../browser}/file_type_tt-24.png | Bin .../browser}/file_type_ttcn-24.png | Bin .../browser}/file_type_tuc-24.png | Bin .../browser}/file_type_turbo-24.png | Bin .../browser}/file_type_twig-24.png | Bin .../browser}/file_type_typedoc-24.png | Bin .../browser}/file_type_typescript-24.png | Bin .../file_type_typescript_official-24.png | Bin .../browser}/file_type_typescriptdef-24.png | Bin .../file_type_typescriptdef_official-24.png | Bin .../browser}/file_type_typo3-24.png | Bin .../browser}/file_type_unibeautify-24.png | Bin .../browser}/file_type_unison-24.png | Bin .../browser}/file_type_unlicense-24.png | Bin .../browser}/file_type_vagrant-24.png | Bin .../browser}/file_type_vala-24.png | Bin .../browser}/file_type_vanilla_extract-24.png | Bin .../browser}/file_type_vapi-24.png | Bin .../browser}/file_type_vapor-24.png | Bin .../browser}/file_type_vash-24.png | Bin .../browser}/file_type_vb-24.png | Bin .../browser}/file_type_vba-24.png | Bin .../browser}/file_type_vbhtml-24.png | Bin .../browser}/file_type_vbproj-24.png | Bin .../browser}/file_type_vcxproj-24.png | Bin .../browser}/file_type_velocity-24.png | Bin .../browser}/file_type_verilog-24.png | Bin .../browser}/file_type_vhdl-24.png | Bin .../browser}/file_type_video-24.png | Bin .../browser}/file_type_view-24.png | Bin .../browser}/file_type_vim-24.png | Bin .../browser}/file_type_vite-24.png | Bin .../browser}/file_type_vitest-24.png | Bin .../browser}/file_type_vlang-24.png | Bin .../browser}/file_type_volt-24.png | Bin .../browser}/file_type_vscode-24.png | Bin .../browser}/file_type_vscode-insiders-24.png | Bin .../browser}/file_type_vscode2-24.png | Bin .../browser}/file_type_vscode3-24.png | Bin .../browser}/file_type_vsix-24.png | Bin .../browser}/file_type_vsixmanifest-24.png | Bin .../browser}/file_type_vue-24.png | Bin .../browser}/file_type_vueconfig-24.png | Bin .../browser}/file_type_wallaby-24.png | Bin .../browser}/file_type_wally-24.png | Bin .../browser}/file_type_wasm-24.png | Bin .../browser}/file_type_watchmanconfig-24.png | Bin .../browser}/file_type_webpack-24.png | Bin .../browser}/file_type_wenyan-24.png | Bin .../browser}/file_type_wercker-24.png | Bin .../browser}/file_type_wgsl-24.png | Bin .../browser}/file_type_wikitext-24.png | Bin .../browser}/file_type_windi-24.png | Bin .../browser}/file_type_wolfram-24.png | Bin .../browser}/file_type_word-24.png | Bin .../browser}/file_type_word2-24.png | Bin .../browser}/file_type_wpml-24.png | Bin .../browser}/file_type_wurst-24.png | Bin .../browser}/file_type_wxml-24.png | Bin .../browser}/file_type_wxss-24.png | Bin .../browser}/file_type_xcode-24.png | Bin .../browser}/file_type_xfl-24.png | Bin .../browser}/file_type_xib-24.png | Bin .../browser}/file_type_xliff-24.png | Bin .../browser}/file_type_xmake-24.png | Bin .../browser}/file_type_xml-24.png | Bin .../browser}/file_type_xquery-24.png | Bin .../browser}/file_type_xsl-24.png | Bin .../browser}/file_type_yacc-24.png | Bin .../browser}/file_type_yaml-24.png | Bin .../browser}/file_type_yamllint-24.png | Bin .../browser}/file_type_yandex-24.png | Bin .../browser}/file_type_yang-24.png | Bin .../browser}/file_type_yarn-24.png | Bin .../browser}/file_type_yeoman-24.png | Bin .../browser}/file_type_zeit-24.png | Bin .../browser}/file_type_zig-24.png | Bin .../browser}/file_type_zip-24.png | Bin .../browser}/file_type_zip2-24.png | Bin .../browser}/folder_type_android-24.png | Bin .../browser}/folder_type_api-24.png | Bin .../browser}/folder_type_app-24.png | Bin .../browser}/folder_type_arangodb-24.png | Bin .../browser}/folder_type_asset-24.png | Bin .../browser}/folder_type_audio-24.png | Bin .../browser}/folder_type_aurelia-24.png | Bin .../browser}/folder_type_aws-24.png | Bin .../browser}/folder_type_azure-24.png | Bin .../folder_type_azurepipelines-24.png | Bin .../browser}/folder_type_binary-24.png | Bin .../browser}/folder_type_bloc-24.png | Bin .../browser}/folder_type_blueprint-24.png | Bin .../browser}/folder_type_bot-24.png | Bin .../browser}/folder_type_bower-24.png | Bin .../browser}/folder_type_buildkite-24.png | Bin .../browser}/folder_type_cake-24.png | Bin .../browser}/folder_type_certificate-24.png | Bin .../browser}/folder_type_chef-24.png | Bin .../browser}/folder_type_circleci-24.png | Bin .../browser}/folder_type_cli-24.png | Bin .../browser}/folder_type_client-24.png | Bin .../browser}/folder_type_cmake-24.png | Bin .../browser}/folder_type_common-24.png | Bin .../browser}/folder_type_component-24.png | Bin .../browser}/folder_type_composer-24.png | Bin .../browser}/folder_type_config-24.png | Bin .../browser}/folder_type_controller-24.png | Bin .../browser}/folder_type_coverage-24.png | Bin .../browser}/folder_type_css-24.png | Bin .../browser}/folder_type_cubit-24.png | Bin .../browser}/folder_type_cypress-24.png | Bin .../browser}/folder_type_dapr-24.png | Bin .../browser}/folder_type_datadog-24.png | Bin .../browser}/folder_type_db-24.png | Bin .../browser}/folder_type_debian-24.png | Bin .../browser}/folder_type_dependabot-24.png | Bin .../browser}/folder_type_devcontainer-24.png | Bin .../browser}/folder_type_dist-24.png | Bin .../browser}/folder_type_docker-24.png | Bin .../browser}/folder_type_docs-24.png | Bin .../browser}/folder_type_e2e-24.png | Bin .../folder_type_elasticbeanstalk-24.png | Bin .../browser}/folder_type_electron-24.png | Bin .../browser}/folder_type_expo-24.png | Bin .../browser}/folder_type_favicon-24.png | Bin .../browser}/folder_type_flow-24.png | Bin .../browser}/folder_type_fonts-24.png | Bin .../browser}/folder_type_gcp-24.png | Bin .../browser}/folder_type_git-24.png | Bin .../browser}/folder_type_github-24.png | Bin .../browser}/folder_type_gitlab-24.png | Bin .../browser}/folder_type_gradle-24.png | Bin .../browser}/folder_type_graphql-24.png | Bin .../browser}/folder_type_grunt-24.png | Bin .../browser}/folder_type_gulp-24.png | Bin .../browser}/folder_type_haxelib-24.png | Bin .../browser}/folder_type_helper-24.png | Bin .../browser}/folder_type_hook-24.png | Bin .../browser}/folder_type_husky-24.png | Bin .../browser}/folder_type_idea-24.png | Bin .../browser}/folder_type_images-24.png | Bin .../browser}/folder_type_include-24.png | Bin .../browser}/folder_type_interfaces-24.png | Bin .../browser}/folder_type_ios-24.png | Bin .../browser}/folder_type_js-24.png | Bin .../browser}/folder_type_json-24.png | Bin .../browser}/folder_type_json_official-24.png | Bin .../browser}/folder_type_kubernetes-24.png | Bin .../browser}/folder_type_less-24.png | Bin .../browser}/folder_type_library-24.png | Bin .../browser}/folder_type_light_cypress-24.png | Bin .../folder_type_light_electron-24.png | Bin .../browser}/folder_type_light_expo-24.png | Bin .../browser}/folder_type_light_fonts-24.png | Bin .../browser}/folder_type_light_gradle-24.png | Bin .../browser}/folder_type_light_meteor-24.png | Bin .../browser}/folder_type_light_mysql-24.png | Bin .../browser}/folder_type_light_node-24.png | Bin .../browser}/folder_type_light_redux-24.png | Bin .../browser}/folder_type_light_sass-24.png | Bin .../browser}/folder_type_linux-24.png | Bin .../browser}/folder_type_locale-24.png | Bin .../browser}/folder_type_log-24.png | Bin .../browser}/folder_type_macos-24.png | Bin .../browser}/folder_type_mariadb-24.png | Bin .../browser}/folder_type_maven-24.png | Bin .../browser}/folder_type_memcached-24.png | Bin .../browser}/folder_type_meteor-24.png | Bin .../browser}/folder_type_middleware-24.png | Bin .../browser}/folder_type_minikube-24.png | Bin .../browser}/folder_type_mjml-24.png | Bin .../browser}/folder_type_mock-24.png | Bin .../browser}/folder_type_model-24.png | Bin .../browser}/folder_type_module-24.png | Bin .../browser}/folder_type_mongodb-24.png | Bin .../browser}/folder_type_mysql-24.png | Bin .../browser}/folder_type_next-24.png | Bin .../browser}/folder_type_nginx-24.png | Bin .../browser}/folder_type_nix-24.png | Bin .../browser}/folder_type_node-24.png | Bin .../browser}/folder_type_notification-24.png | Bin .../browser}/folder_type_nuget-24.png | Bin .../browser}/folder_type_nuxt-24.png | Bin .../browser}/folder_type_package-24.png | Bin .../browser}/folder_type_paket-24.png | Bin .../browser}/folder_type_php-24.png | Bin .../browser}/folder_type_platformio-24.png | Bin .../browser}/folder_type_plugin-24.png | Bin .../browser}/folder_type_prisma-24.png | Bin .../browser}/folder_type_private-24.png | Bin .../browser}/folder_type_public-24.png | Bin .../browser}/folder_type_python-24.png | Bin .../browser}/folder_type_ravendb-24.png | Bin .../browser}/folder_type_redis-24.png | Bin .../browser}/folder_type_redux-24.png | Bin .../browser}/folder_type_route-24.png | Bin .../browser}/folder_type_sass-24.png | Bin .../browser}/folder_type_script-24.png | Bin .../browser}/folder_type_server-24.png | Bin .../browser}/folder_type_services-24.png | Bin .../browser}/folder_type_shared-24.png | Bin .../browser}/folder_type_src-24.png | Bin .../browser}/folder_type_sso-24.png | Bin .../browser}/folder_type_story-24.png | Bin .../browser}/folder_type_style-24.png | Bin .../browser}/folder_type_tauri-24.png | Bin .../browser}/folder_type_temp-24.png | Bin .../browser}/folder_type_template-24.png | Bin .../browser}/folder_type_test-24.png | Bin .../browser}/folder_type_theme-24.png | Bin .../browser}/folder_type_tools-24.png | Bin .../browser}/folder_type_travis-24.png | Bin .../browser}/folder_type_trunk-24.png | Bin .../browser}/folder_type_typescript-24.png | Bin .../browser}/folder_type_typings-24.png | Bin .../browser}/folder_type_typings2-24.png | Bin .../browser}/folder_type_vagrant-24.png | Bin .../browser}/folder_type_video-24.png | Bin .../browser}/folder_type_view-24.png | Bin .../browser}/folder_type_vs-24.png | Bin .../browser}/folder_type_vs2-24.png | Bin .../browser}/folder_type_vscode-24.png | Bin .../browser}/folder_type_vscode2-24.png | Bin .../browser}/folder_type_vscode3-24.png | Bin .../browser}/folder_type_vscode_test-24.png | Bin .../browser}/folder_type_vscode_test2-24.png | Bin .../browser}/folder_type_vscode_test3-24.png | Bin .../browser}/folder_type_webpack-24.png | Bin .../browser}/folder_type_windows-24.png | Bin .../browser}/folder_type_www-24.png | Bin .../browser}/folder_type_yarn-24.png | Bin .../app/resources/img/file_drag_icon.png | Bin 23849 -> 0 bytes .../img/{ => graphics}/Hips-dark.svg | 0 .../app/resources/img/{ => graphics}/Hips.svg | 0 .../img/{ => graphics}/Wave-dark.svg | 0 .../app/resources/img/{ => graphics}/Wave.svg | 0 .../app/resources/img/{ => logo}/logo.png | Bin .../io/xpipe/app/resources/img/os/alma-40.png | Bin 0 -> 2150 bytes .../xpipe/app/resources/img/os/alpine-40.png | Bin 0 -> 1408 bytes .../xpipe/app/resources/img/os/amazon-40.png | Bin 0 -> 1175 bytes .../io/xpipe/app/resources/img/os/arch-40.png | Bin 0 -> 1256 bytes .../xpipe/app/resources/img/os/centos-40.png | Bin 0 -> 2316 bytes .../xpipe/app/resources/img/os/debian-40.png | Bin 0 -> 1744 bytes .../resources/img/os/elementary-40-dark.png | Bin 0 -> 1140 bytes .../app/resources/img/os/elementary-40.png | Bin 0 -> 1051 bytes .../resources/img/os/endeavour-40-dark.png | Bin 0 -> 1803 bytes .../app/resources/img/os/endeavour-40.png | Bin 0 -> 1783 bytes .../xpipe/app/resources/img/os/fedora-40.png | Bin 0 -> 1450 bytes .../xpipe/app/resources/img/os/freebsd-40.png | Bin 0 -> 1253 bytes .../xpipe/app/resources/img/os/garuda-40.png | Bin 0 -> 2084 bytes .../xpipe/app/resources/img/os/gentoo-40.png | Bin 0 -> 2149 bytes .../io/xpipe/app/resources/img/os/kali-40.png | Bin 0 -> 1198 bytes .../xpipe/app/resources/img/os/kubuntu-40.png | Bin 0 -> 1826 bytes .../xpipe/app/resources/img/os/linux-40.png | Bin 0 -> 1882 bytes .../app/resources/img/os/macos-40-dark.png | Bin 0 -> 793 bytes .../xpipe/app/resources/img/os/macos-40.png | Bin 0 -> 696 bytes .../xpipe/app/resources/img/os/manjaro-40.png | Bin 0 -> 285 bytes .../io/xpipe/app/resources/img/os/mint-40.png | Bin 0 -> 1208 bytes .../xpipe/app/resources/img/os/netbsd-40.png | Bin 0 -> 1407 bytes .../xpipe/app/resources/img/os/nixos-40.png | Bin 0 -> 1788 bytes .../xpipe/app/resources/img/os/openbsd-40.png | Bin 0 -> 3088 bytes .../io/xpipe/app/resources/img/os/pop-40.png | Bin 0 -> 1191 bytes .../xpipe/app/resources/img/os/redhat-40.png | Bin 0 -> 998 bytes .../xpipe/app/resources/img/os/rocky-40.png | Bin 0 -> 1103 bytes .../io/xpipe/app/resources/img/os/suse-40.png | Bin 0 -> 1832 bytes .../xpipe/app/resources/img/os/ubuntu-40.png | Bin 0 -> 1698 bytes .../xpipe/app/resources/img/os/windows-40.png | Bin 0 -> 253 bytes .../xpipe/app/resources/img/os/zorin-40.png | Bin 0 -> 949 bytes .../app/resources/img/producthunt-color.png | Bin 0 -> 764 bytes .../resources/img/system/2fauth-16-dark.png | Bin 0 -> 280 bytes .../app/resources/img/system/2fauth-16.png | Bin 0 -> 327 bytes .../resources/img/system/2fauth-24-dark.png | Bin 0 -> 325 bytes .../app/resources/img/system/2fauth-24.png | Bin 0 -> 376 bytes .../resources/img/system/2fauth-40-dark.png | Bin 0 -> 398 bytes .../app/resources/img/system/2fauth-40.png | Bin 0 -> 461 bytes .../resources/img/system/activepieces-16.png | Bin 0 -> 508 bytes .../resources/img/system/activepieces-24.png | Bin 0 -> 702 bytes .../resources/img/system/activepieces-40.png | Bin 0 -> 1146 bytes .../resources/img/system/actual-budget-16.png | Bin 0 -> 552 bytes .../resources/img/system/actual-budget-24.png | Bin 0 -> 866 bytes .../resources/img/system/actual-budget-40.png | Bin 0 -> 1531 bytes .../resources/img/system/adguard-home-16.png | Bin 0 -> 591 bytes .../resources/img/system/adguard-home-24.png | Bin 0 -> 871 bytes .../resources/img/system/adguard-home-40.png | Bin 0 -> 1425 bytes .../resources/img/system/adminer-16-dark.png | Bin 0 -> 486 bytes .../app/resources/img/system/adminer-16.png | Bin 0 -> 645 bytes .../resources/img/system/adminer-24-dark.png | Bin 0 -> 741 bytes .../app/resources/img/system/adminer-24.png | Bin 0 -> 945 bytes .../resources/img/system/adminer-40-dark.png | Bin 0 -> 1238 bytes .../app/resources/img/system/adminer-40.png | Bin 0 -> 1559 bytes .../resources/img/system/affine-16-dark.png | Bin 0 -> 455 bytes .../app/resources/img/system/affine-16.png | Bin 0 -> 432 bytes .../resources/img/system/affine-24-dark.png | Bin 0 -> 688 bytes .../app/resources/img/system/affine-24.png | Bin 0 -> 649 bytes .../resources/img/system/affine-40-dark.png | Bin 0 -> 1190 bytes .../app/resources/img/system/affine-40.png | Bin 0 -> 1170 bytes .../app/resources/img/system/airtable-16.png | Bin 0 -> 540 bytes .../app/resources/img/system/airtable-24.png | Bin 0 -> 749 bytes .../app/resources/img/system/airtable-40.png | Bin 0 -> 1195 bytes .../resources/img/system/akkoma-16-dark.png | Bin 0 -> 546 bytes .../app/resources/img/system/akkoma-16.png | Bin 0 -> 544 bytes .../resources/img/system/akkoma-24-dark.png | Bin 0 -> 790 bytes .../app/resources/img/system/akkoma-24.png | Bin 0 -> 799 bytes .../resources/img/system/akkoma-40-dark.png | Bin 0 -> 1271 bytes .../app/resources/img/system/akkoma-40.png | Bin 0 -> 1250 bytes .../app/resources/img/system/alist-16.png | Bin 0 -> 674 bytes .../app/resources/img/system/alist-24.png | Bin 0 -> 1028 bytes .../app/resources/img/system/alist-40.png | Bin 0 -> 1667 bytes .../app/resources/img/system/anonaddy-16.png | Bin 0 -> 613 bytes .../app/resources/img/system/anonaddy-24.png | Bin 0 -> 981 bytes .../app/resources/img/system/anonaddy-40.png | Bin 0 -> 1601 bytes .../resources/img/system/ansible-16-dark.png | Bin 0 -> 494 bytes .../app/resources/img/system/ansible-16.png | Bin 0 -> 636 bytes .../resources/img/system/ansible-24-dark.png | Bin 0 -> 754 bytes .../app/resources/img/system/ansible-24.png | Bin 0 -> 952 bytes .../resources/img/system/ansible-40-dark.png | Bin 0 -> 1332 bytes .../app/resources/img/system/ansible-40.png | Bin 0 -> 1592 bytes .../resources/img/system/apache-answer-16.png | Bin 0 -> 357 bytes .../resources/img/system/apache-answer-24.png | Bin 0 -> 445 bytes .../resources/img/system/apache-answer-40.png | Bin 0 -> 658 bytes .../app/resources/img/system/appflowy-16.png | Bin 0 -> 667 bytes .../app/resources/img/system/appflowy-24.png | Bin 0 -> 1027 bytes .../app/resources/img/system/appflowy-40.png | Bin 0 -> 1747 bytes .../app/resources/img/system/appwrite-16.png | Bin 0 -> 500 bytes .../app/resources/img/system/appwrite-24.png | Bin 0 -> 674 bytes .../app/resources/img/system/appwrite-40.png | Bin 0 -> 1030 bytes .../img/system/ara-records-ansible-16.png | Bin 0 -> 902 bytes .../img/system/ara-records-ansible-24.png | Bin 0 -> 1479 bytes .../img/system/ara-records-ansible-40.png | Bin 0 -> 2658 bytes .../app/resources/img/system/argo-cd-16.png | Bin 0 -> 740 bytes .../app/resources/img/system/argo-cd-24.png | Bin 0 -> 1275 bytes .../app/resources/img/system/argo-cd-40.png | Bin 0 -> 2481 bytes .../app/resources/img/system/asciinema-16.png | Bin 0 -> 443 bytes .../app/resources/img/system/asciinema-24.png | Bin 0 -> 597 bytes .../app/resources/img/system/asciinema-40.png | Bin 0 -> 1002 bytes .../resources/img/system/atuin-16-dark.png | Bin 0 -> 526 bytes .../app/resources/img/system/atuin-16.png | Bin 0 -> 841 bytes .../resources/img/system/atuin-24-dark.png | Bin 0 -> 850 bytes .../app/resources/img/system/atuin-24.png | Bin 0 -> 1366 bytes .../resources/img/system/atuin-40-dark.png | Bin 0 -> 1578 bytes .../app/resources/img/system/atuin-40.png | Bin 0 -> 2648 bytes .../resources/img/system/audacity-16-dark.png | Bin 0 -> 471 bytes .../app/resources/img/system/audacity-16.png | Bin 0 -> 651 bytes .../resources/img/system/audacity-24-dark.png | Bin 0 -> 692 bytes .../app/resources/img/system/audacity-24.png | Bin 0 -> 1001 bytes .../resources/img/system/audacity-40-dark.png | Bin 0 -> 1069 bytes .../app/resources/img/system/audacity-40.png | Bin 0 -> 1664 bytes .../img/system/audiobookshelf-16.png | Bin 0 -> 902 bytes .../img/system/audiobookshelf-24.png | Bin 0 -> 1373 bytes .../img/system/audiobookshelf-40.png | Bin 0 -> 2347 bytes .../resources/img/system/authelia-16-dark.png | Bin 0 -> 542 bytes .../app/resources/img/system/authelia-16.png | Bin 0 -> 808 bytes .../resources/img/system/authelia-24-dark.png | Bin 0 -> 839 bytes .../app/resources/img/system/authelia-24.png | Bin 0 -> 1404 bytes .../resources/img/system/authelia-40-dark.png | Bin 0 -> 1464 bytes .../app/resources/img/system/authelia-40.png | Bin 0 -> 2678 bytes .../app/resources/img/system/authentik-16.png | Bin 0 -> 490 bytes .../app/resources/img/system/authentik-24.png | Bin 0 -> 639 bytes .../app/resources/img/system/authentik-40.png | Bin 0 -> 993 bytes .../app/resources/img/system/authman-16.png | Bin 0 -> 843 bytes .../app/resources/img/system/authman-24.png | Bin 0 -> 1444 bytes .../app/resources/img/system/authman-40.png | Bin 0 -> 2909 bytes .../app/resources/img/system/autobrr-16.png | Bin 0 -> 789 bytes .../app/resources/img/system/autobrr-24.png | Bin 0 -> 1237 bytes .../app/resources/img/system/autobrr-40.png | Bin 0 -> 2218 bytes .../resources/img/system/automad-16-dark.png | Bin 0 -> 414 bytes .../app/resources/img/system/automad-16.png | Bin 0 -> 384 bytes .../resources/img/system/automad-24-dark.png | Bin 0 -> 559 bytes .../app/resources/img/system/automad-24.png | Bin 0 -> 550 bytes .../resources/img/system/automad-40-dark.png | Bin 0 -> 895 bytes .../app/resources/img/system/automad-40.png | Bin 0 -> 864 bytes .../app/resources/img/system/azuracast-16.png | Bin 0 -> 737 bytes .../app/resources/img/system/azuracast-24.png | Bin 0 -> 1081 bytes .../app/resources/img/system/azuracast-40.png | Bin 0 -> 1793 bytes .../img/system/backblaze-16-dark.png | Bin 0 -> 410 bytes .../app/resources/img/system/backblaze-16.png | Bin 0 -> 618 bytes .../img/system/backblaze-24-dark.png | Bin 0 -> 608 bytes .../app/resources/img/system/backblaze-24.png | Bin 0 -> 909 bytes .../img/system/backblaze-40-dark.png | Bin 0 -> 993 bytes .../app/resources/img/system/backblaze-40.png | Bin 0 -> 1518 bytes .../resources/img/system/backrest-16-dark.png | Bin 0 -> 425 bytes .../app/resources/img/system/backrest-16.png | Bin 0 -> 401 bytes .../resources/img/system/backrest-24-dark.png | Bin 0 -> 585 bytes .../app/resources/img/system/backrest-24.png | Bin 0 -> 558 bytes .../resources/img/system/backrest-40-dark.png | Bin 0 -> 985 bytes .../app/resources/img/system/backrest-40.png | Bin 0 -> 896 bytes .../resources/img/system/bar-assistant-16.png | Bin 0 -> 660 bytes .../resources/img/system/bar-assistant-24.png | Bin 0 -> 973 bytes .../resources/img/system/bar-assistant-40.png | Bin 0 -> 1590 bytes .../resources/img/system/baserow-16-dark.png | Bin 0 -> 264 bytes .../app/resources/img/system/baserow-16.png | Bin 0 -> 284 bytes .../resources/img/system/baserow-24-dark.png | Bin 0 -> 363 bytes .../app/resources/img/system/baserow-24.png | Bin 0 -> 397 bytes .../resources/img/system/baserow-40-dark.png | Bin 0 -> 479 bytes .../app/resources/img/system/baserow-40.png | Bin 0 -> 555 bytes .../resources/img/system/bigbluebutton-16.png | Bin 0 -> 890 bytes .../resources/img/system/bigbluebutton-24.png | Bin 0 -> 1388 bytes .../resources/img/system/bigbluebutton-40.png | Bin 0 -> 2466 bytes .../resources/img/system/bigcapital-16.png | Bin 0 -> 412 bytes .../resources/img/system/bigcapital-24.png | Bin 0 -> 411 bytes .../resources/img/system/bigcapital-40.png | Bin 0 -> 528 bytes .../app/resources/img/system/bitwarden-16.png | Bin 0 -> 453 bytes .../app/resources/img/system/bitwarden-24.png | Bin 0 -> 611 bytes .../app/resources/img/system/bitwarden-40.png | Bin 0 -> 923 bytes .../app/resources/img/system/blocky-16.png | Bin 0 -> 873 bytes .../app/resources/img/system/blocky-24.png | Bin 0 -> 1469 bytes .../app/resources/img/system/blocky-40.png | Bin 0 -> 2735 bytes .../resources/img/system/bluesky-16-dark.png | Bin 0 -> 399 bytes .../app/resources/img/system/bluesky-16.png | Bin 0 -> 523 bytes .../resources/img/system/bluesky-24-dark.png | Bin 0 -> 579 bytes .../app/resources/img/system/bluesky-24.png | Bin 0 -> 792 bytes .../resources/img/system/bluesky-40-dark.png | Bin 0 -> 920 bytes .../app/resources/img/system/bluesky-40.png | Bin 0 -> 1205 bytes .../app/resources/img/system/booklogr-16.png | Bin 0 -> 611 bytes .../app/resources/img/system/booklogr-24.png | Bin 0 -> 891 bytes .../app/resources/img/system/booklogr-40.png | Bin 0 -> 1459 bytes .../app/resources/img/system/bookstack-16.png | Bin 0 -> 766 bytes .../app/resources/img/system/bookstack-24.png | Bin 0 -> 1220 bytes .../app/resources/img/system/bookstack-40.png | Bin 0 -> 2043 bytes .../app/resources/img/system/borg-16.png | Bin 0 -> 339 bytes .../app/resources/img/system/borg-24.png | Bin 0 -> 398 bytes .../app/resources/img/system/borg-40.png | Bin 0 -> 486 bytes .../img/system/borgmatic-16-dark.png | Bin 0 -> 523 bytes .../app/resources/img/system/borgmatic-16.png | Bin 0 -> 476 bytes .../img/system/borgmatic-24-dark.png | Bin 0 -> 726 bytes .../app/resources/img/system/borgmatic-24.png | Bin 0 -> 687 bytes .../img/system/borgmatic-40-dark.png | Bin 0 -> 1192 bytes .../app/resources/img/system/borgmatic-40.png | Bin 0 -> 1124 bytes .../app/resources/img/system/budgetbee-16.png | Bin 0 -> 651 bytes .../app/resources/img/system/budgetbee-24.png | Bin 0 -> 917 bytes .../app/resources/img/system/budgetbee-40.png | Bin 0 -> 1612 bytes .../app/resources/img/system/budibase-16.png | Bin 0 -> 470 bytes .../app/resources/img/system/budibase-24.png | Bin 0 -> 640 bytes .../app/resources/img/system/budibase-40.png | Bin 0 -> 941 bytes .../img/system/bunkerweb-16-dark.png | Bin 0 -> 366 bytes .../app/resources/img/system/bunkerweb-16.png | Bin 0 -> 472 bytes .../img/system/bunkerweb-24-dark.png | Bin 0 -> 486 bytes .../app/resources/img/system/bunkerweb-24.png | Bin 0 -> 654 bytes .../img/system/bunkerweb-40-dark.png | Bin 0 -> 759 bytes .../app/resources/img/system/bunkerweb-40.png | Bin 0 -> 1016 bytes .../app/resources/img/system/caddy-16.png | Bin 0 -> 796 bytes .../app/resources/img/system/caddy-24.png | Bin 0 -> 1224 bytes .../app/resources/img/system/caddy-40.png | Bin 0 -> 2191 bytes .../resources/img/system/cal-com-16-dark.png | Bin 0 -> 403 bytes .../app/resources/img/system/cal-com-16.png | Bin 0 -> 426 bytes .../resources/img/system/cal-com-24-dark.png | Bin 0 -> 636 bytes .../app/resources/img/system/cal-com-24.png | Bin 0 -> 642 bytes .../resources/img/system/cal-com-40-dark.png | Bin 0 -> 1050 bytes .../app/resources/img/system/cal-com-40.png | Bin 0 -> 1068 bytes .../app/resources/img/system/calibre-16.png | Bin 0 -> 659 bytes .../app/resources/img/system/calibre-24.png | Bin 0 -> 1113 bytes .../app/resources/img/system/calibre-40.png | Bin 0 -> 1977 bytes .../resources/img/system/calibre-web-16.png | Bin 0 -> 556 bytes .../resources/img/system/calibre-web-24.png | Bin 0 -> 831 bytes .../resources/img/system/calibre-web-40.png | Bin 0 -> 1373 bytes .../app/resources/img/system/castopod-16.png | Bin 0 -> 438 bytes .../app/resources/img/system/castopod-24.png | Bin 0 -> 614 bytes .../app/resources/img/system/castopod-40.png | Bin 0 -> 1001 bytes .../img/system/changedetection-16-dark.png | Bin 0 -> 514 bytes .../img/system/changedetection-16.png | Bin 0 -> 735 bytes .../img/system/changedetection-24-dark.png | Bin 0 -> 795 bytes .../img/system/changedetection-24.png | Bin 0 -> 1183 bytes .../img/system/changedetection-40-dark.png | Bin 0 -> 1309 bytes .../img/system/changedetection-40.png | Bin 0 -> 2200 bytes .../resources/img/system/channels-dvr-16.png | Bin 0 -> 402 bytes .../resources/img/system/channels-dvr-24.png | Bin 0 -> 538 bytes .../resources/img/system/channels-dvr-40.png | Bin 0 -> 624 bytes .../app/resources/img/system/chevereto-16.png | Bin 0 -> 595 bytes .../app/resources/img/system/chevereto-24.png | Bin 0 -> 867 bytes .../app/resources/img/system/chevereto-40.png | Bin 0 -> 1407 bytes .../app/resources/img/system/chirpy-16.png | Bin 0 -> 509 bytes .../app/resources/img/system/chirpy-24.png | Bin 0 -> 701 bytes .../app/resources/img/system/chirpy-40.png | Bin 0 -> 1181 bytes .../app/resources/img/system/chromium-16.png | Bin 0 -> 708 bytes .../app/resources/img/system/chromium-24.png | Bin 0 -> 1074 bytes .../app/resources/img/system/chromium-40.png | Bin 0 -> 1875 bytes .../resources/img/system/clickhouse-16.png | Bin 0 -> 305 bytes .../resources/img/system/clickhouse-24.png | Bin 0 -> 289 bytes .../resources/img/system/clickhouse-40.png | Bin 0 -> 399 bytes .../resources/img/system/cloudbeaver-16.png | Bin 0 -> 629 bytes .../resources/img/system/cloudbeaver-24.png | Bin 0 -> 1040 bytes .../resources/img/system/cloudbeaver-40.png | Bin 0 -> 1876 bytes .../resources/img/system/cloudflare-16.png | Bin 0 -> 400 bytes .../resources/img/system/cloudflare-24.png | Bin 0 -> 543 bytes .../resources/img/system/cloudflare-40.png | Bin 0 -> 876 bytes .../resources/img/system/cockpit-16-dark.png | Bin 0 -> 450 bytes .../app/resources/img/system/cockpit-16.png | Bin 0 -> 444 bytes .../resources/img/system/cockpit-24-dark.png | Bin 0 -> 666 bytes .../app/resources/img/system/cockpit-24.png | Bin 0 -> 632 bytes .../resources/img/system/cockpit-40-dark.png | Bin 0 -> 1151 bytes .../app/resources/img/system/cockpit-40.png | Bin 0 -> 1070 bytes .../app/resources/img/system/codeberg-16.png | Bin 0 -> 602 bytes .../app/resources/img/system/codeberg-24.png | Bin 0 -> 914 bytes .../app/resources/img/system/codeberg-40.png | Bin 0 -> 1498 bytes .../resources/img/system/coder-16-dark.png | Bin 0 -> 423 bytes .../app/resources/img/system/coder-16.png | Bin 0 -> 400 bytes .../resources/img/system/coder-24-dark.png | Bin 0 -> 642 bytes .../app/resources/img/system/coder-24.png | Bin 0 -> 594 bytes .../resources/img/system/coder-40-dark.png | Bin 0 -> 1010 bytes .../app/resources/img/system/coder-40.png | Bin 0 -> 938 bytes .../img/system/commafeed-16-dark.png | Bin 0 -> 428 bytes .../app/resources/img/system/commafeed-16.png | Bin 0 -> 650 bytes .../img/system/commafeed-24-dark.png | Bin 0 -> 615 bytes .../app/resources/img/system/commafeed-24.png | Bin 0 -> 963 bytes .../img/system/commafeed-40-dark.png | Bin 0 -> 948 bytes .../app/resources/img/system/commafeed-40.png | Bin 0 -> 1567 bytes .../resources/img/system/commento-16-dark.png | Bin 0 -> 537 bytes .../app/resources/img/system/commento-16.png | Bin 0 -> 674 bytes .../resources/img/system/commento-24-dark.png | Bin 0 -> 836 bytes .../app/resources/img/system/commento-24.png | Bin 0 -> 1001 bytes .../resources/img/system/commento-40-dark.png | Bin 0 -> 1421 bytes .../app/resources/img/system/commento-40.png | Bin 0 -> 1799 bytes .../resources/img/system/compreface-16.png | Bin 0 -> 693 bytes .../resources/img/system/compreface-24.png | Bin 0 -> 1126 bytes .../resources/img/system/compreface-40.png | Bin 0 -> 1929 bytes .../resources/img/system/confluence-16.png | Bin 0 -> 700 bytes .../resources/img/system/confluence-24.png | Bin 0 -> 1037 bytes .../resources/img/system/confluence-40.png | Bin 0 -> 1712 bytes .../resources/img/system/converse-16-dark.png | Bin 0 -> 442 bytes .../app/resources/img/system/converse-16.png | Bin 0 -> 431 bytes .../resources/img/system/converse-24-dark.png | Bin 0 -> 657 bytes .../app/resources/img/system/converse-24.png | Bin 0 -> 618 bytes .../resources/img/system/converse-40-dark.png | Bin 0 -> 1079 bytes .../app/resources/img/system/converse-40.png | Bin 0 -> 991 bytes .../resources/img/system/couchdb-16-dark.png | Bin 0 -> 341 bytes .../app/resources/img/system/couchdb-16.png | Bin 0 -> 432 bytes .../resources/img/system/couchdb-24-dark.png | Bin 0 -> 470 bytes .../app/resources/img/system/couchdb-24.png | Bin 0 -> 591 bytes .../resources/img/system/couchdb-40-dark.png | Bin 0 -> 732 bytes .../app/resources/img/system/couchdb-40.png | Bin 0 -> 985 bytes .../img/system/counter-analytics-16.png | Bin 0 -> 480 bytes .../img/system/counter-analytics-24.png | Bin 0 -> 646 bytes .../img/system/counter-analytics-40.png | Bin 0 -> 1003 bytes .../app/resources/img/system/crowdsec-16.png | Bin 0 -> 890 bytes .../app/resources/img/system/crowdsec-24.png | Bin 0 -> 1480 bytes .../app/resources/img/system/crowdsec-40.png | Bin 0 -> 2672 bytes .../app/resources/img/system/cryptpad-16.png | Bin 0 -> 622 bytes .../app/resources/img/system/cryptpad-24.png | Bin 0 -> 842 bytes .../app/resources/img/system/cryptpad-40.png | Bin 0 -> 1281 bytes .../app/resources/img/system/ctfreak-16.png | Bin 0 -> 433 bytes .../app/resources/img/system/ctfreak-24.png | Bin 0 -> 620 bytes .../app/resources/img/system/ctfreak-40.png | Bin 0 -> 907 bytes .../app/resources/img/system/cyberchef-16.png | Bin 0 -> 530 bytes .../app/resources/img/system/cyberchef-24.png | Bin 0 -> 786 bytes .../app/resources/img/system/cyberchef-40.png | Bin 0 -> 1249 bytes .../app/resources/img/system/czkawka-16.png | Bin 0 -> 699 bytes .../app/resources/img/system/czkawka-24.png | Bin 0 -> 1075 bytes .../app/resources/img/system/czkawka-40.png | Bin 0 -> 1727 bytes .../resources/img/system/dalibo-16-dark.png | Bin 0 -> 455 bytes .../app/resources/img/system/dalibo-16.png | Bin 0 -> 714 bytes .../resources/img/system/dalibo-24-dark.png | Bin 0 -> 719 bytes .../app/resources/img/system/dalibo-24.png | Bin 0 -> 1147 bytes .../resources/img/system/dalibo-40-dark.png | Bin 0 -> 1088 bytes .../app/resources/img/system/dalibo-40.png | Bin 0 -> 1780 bytes .../app/resources/img/system/davical-16.png | Bin 0 -> 572 bytes .../app/resources/img/system/davical-24.png | Bin 0 -> 891 bytes .../app/resources/img/system/davical-40.png | Bin 0 -> 1351 bytes .../app/resources/img/system/ddclient-16.png | Bin 0 -> 763 bytes .../app/resources/img/system/ddclient-24.png | Bin 0 -> 1186 bytes .../app/resources/img/system/ddclient-40.png | Bin 0 -> 2010 bytes .../resources/img/system/ddns-updater-16.png | Bin 0 -> 743 bytes .../resources/img/system/ddns-updater-24.png | Bin 0 -> 1217 bytes .../resources/img/system/ddns-updater-40.png | Bin 0 -> 2317 bytes .../app/resources/img/system/defguard-16.png | Bin 0 -> 546 bytes .../app/resources/img/system/defguard-24.png | Bin 0 -> 822 bytes .../app/resources/img/system/defguard-40.png | Bin 0 -> 1403 bytes .../app/resources/img/system/deluge-16.png | Bin 0 -> 695 bytes .../app/resources/img/system/deluge-24.png | Bin 0 -> 1127 bytes .../app/resources/img/system/deluge-40.png | Bin 0 -> 2047 bytes .../img/system/digitalocean-16-dark.png | Bin 0 -> 412 bytes .../resources/img/system/digitalocean-16.png | Bin 0 -> 500 bytes .../img/system/digitalocean-24-dark.png | Bin 0 -> 581 bytes .../resources/img/system/digitalocean-24.png | Bin 0 -> 689 bytes .../img/system/digitalocean-40-dark.png | Bin 0 -> 902 bytes .../resources/img/system/digitalocean-40.png | Bin 0 -> 1040 bytes .../img/system/dillinger-16-dark.png | Bin 0 -> 369 bytes .../app/resources/img/system/dillinger-16.png | Bin 0 -> 350 bytes .../img/system/dillinger-24-dark.png | Bin 0 -> 481 bytes .../app/resources/img/system/dillinger-24.png | Bin 0 -> 455 bytes .../img/system/dillinger-40-dark.png | Bin 0 -> 720 bytes .../app/resources/img/system/dillinger-40.png | Bin 0 -> 625 bytes .../img/system/docassemble-16-dark.png | Bin 0 -> 374 bytes .../resources/img/system/docassemble-16.png | Bin 0 -> 354 bytes .../img/system/docassemble-24-dark.png | Bin 0 -> 487 bytes .../resources/img/system/docassemble-24.png | Bin 0 -> 449 bytes .../img/system/docassemble-40-dark.png | Bin 0 -> 741 bytes .../resources/img/system/docassemble-40.png | Bin 0 -> 688 bytes .../resources/img/system/docker-16-dark.png | Bin 0 -> 353 bytes .../app/resources/img/system/docker-16.png | Bin 0 -> 445 bytes .../resources/img/system/docker-24-dark.png | Bin 0 -> 481 bytes .../app/resources/img/system/docker-24.png | Bin 0 -> 647 bytes .../resources/img/system/docker-40-dark.png | Bin 0 -> 693 bytes .../app/resources/img/system/docker-40.png | Bin 0 -> 984 bytes .../img/system/docker-volume-backup-16.png | Bin 0 -> 341 bytes .../img/system/docker-volume-backup-24.png | Bin 0 -> 437 bytes .../img/system/docker-volume-backup-40.png | Bin 0 -> 687 bytes .../app/resources/img/system/dockge-16.png | Bin 0 -> 754 bytes .../app/resources/img/system/dockge-24.png | Bin 0 -> 1098 bytes .../app/resources/img/system/dockge-40.png | Bin 0 -> 1808 bytes .../app/resources/img/system/docspell-16.png | Bin 0 -> 414 bytes .../app/resources/img/system/docspell-24.png | Bin 0 -> 589 bytes .../app/resources/img/system/docspell-40.png | Bin 0 -> 933 bytes .../resources/img/system/docusaurus-16.png | Bin 0 -> 601 bytes .../resources/img/system/docusaurus-24.png | Bin 0 -> 1049 bytes .../resources/img/system/docusaurus-40.png | Bin 0 -> 1657 bytes .../app/resources/img/system/docuseal-16.png | Bin 0 -> 705 bytes .../app/resources/img/system/docuseal-24.png | Bin 0 -> 1105 bytes .../app/resources/img/system/docuseal-40.png | Bin 0 -> 2083 bytes .../app/resources/img/system/dokemon-16.png | Bin 0 -> 519 bytes .../app/resources/img/system/dokemon-24.png | Bin 0 -> 734 bytes .../app/resources/img/system/dokemon-40.png | Bin 0 -> 1224 bytes .../app/resources/img/system/dokuwiki-16.png | Bin 0 -> 983 bytes .../app/resources/img/system/dokuwiki-24.png | Bin 0 -> 1782 bytes .../app/resources/img/system/dokuwiki-40.png | Bin 0 -> 4081 bytes .../resources/img/system/double-take-16.png | Bin 0 -> 523 bytes .../resources/img/system/double-take-24.png | Bin 0 -> 771 bytes .../resources/img/system/double-take-40.png | Bin 0 -> 1358 bytes .../app/resources/img/system/dovecot-16.png | Bin 0 -> 379 bytes .../app/resources/img/system/dovecot-24.png | Bin 0 -> 551 bytes .../app/resources/img/system/dovecot-40.png | Bin 0 -> 861 bytes .../resources/img/system/dozzle-16-dark.png | Bin 0 -> 456 bytes .../app/resources/img/system/dozzle-16.png | Bin 0 -> 559 bytes .../resources/img/system/dozzle-24-dark.png | Bin 0 -> 646 bytes .../app/resources/img/system/dozzle-24.png | Bin 0 -> 800 bytes .../resources/img/system/dozzle-40-dark.png | Bin 0 -> 1002 bytes .../app/resources/img/system/dozzle-40.png | Bin 0 -> 1319 bytes .../app/resources/img/system/draw-io-16.png | Bin 0 -> 513 bytes .../app/resources/img/system/draw-io-24.png | Bin 0 -> 655 bytes .../app/resources/img/system/draw-io-40.png | Bin 0 -> 970 bytes .../resources/img/system/dropbox-16-dark.png | Bin 0 -> 437 bytes .../app/resources/img/system/dropbox-16.png | Bin 0 -> 601 bytes .../resources/img/system/dropbox-24-dark.png | Bin 0 -> 621 bytes .../app/resources/img/system/dropbox-24.png | Bin 0 -> 915 bytes .../resources/img/system/dropbox-40-dark.png | Bin 0 -> 1000 bytes .../app/resources/img/system/dropbox-40.png | Bin 0 -> 1495 bytes .../app/resources/img/system/dropout-16.png | Bin 0 -> 555 bytes .../app/resources/img/system/dropout-24.png | Bin 0 -> 753 bytes .../app/resources/img/system/dropout-40.png | Bin 0 -> 1119 bytes .../app/resources/img/system/dub-16-dark.png | Bin 0 -> 338 bytes .../xpipe/app/resources/img/system/dub-16.png | Bin 0 -> 336 bytes .../app/resources/img/system/dub-24-dark.png | Bin 0 -> 499 bytes .../xpipe/app/resources/img/system/dub-24.png | Bin 0 -> 466 bytes .../app/resources/img/system/dub-40-dark.png | Bin 0 -> 796 bytes .../xpipe/app/resources/img/system/dub-40.png | Bin 0 -> 709 bytes .../app/resources/img/system/duckdns-16.png | Bin 0 -> 585 bytes .../app/resources/img/system/duckdns-24.png | Bin 0 -> 881 bytes .../app/resources/img/system/duckdns-40.png | Bin 0 -> 1463 bytes .../app/resources/img/system/duplicati-16.png | Bin 0 -> 482 bytes .../app/resources/img/system/duplicati-24.png | Bin 0 -> 634 bytes .../app/resources/img/system/duplicati-40.png | Bin 0 -> 876 bytes .../app/resources/img/system/element-16.png | Bin 0 -> 677 bytes .../app/resources/img/system/element-24.png | Bin 0 -> 1003 bytes .../app/resources/img/system/element-40.png | Bin 0 -> 1602 bytes .../resources/img/system/eleventy-16-dark.png | Bin 0 -> 410 bytes .../app/resources/img/system/eleventy-16.png | Bin 0 -> 548 bytes .../resources/img/system/eleventy-24-dark.png | Bin 0 -> 570 bytes .../app/resources/img/system/eleventy-24.png | Bin 0 -> 764 bytes .../resources/img/system/eleventy-40-dark.png | Bin 0 -> 965 bytes .../app/resources/img/system/eleventy-40.png | Bin 0 -> 1263 bytes .../app/resources/img/system/emby-16.png | Bin 0 -> 525 bytes .../app/resources/img/system/emby-24.png | Bin 0 -> 714 bytes .../app/resources/img/system/emby-40.png | Bin 0 -> 1002 bytes .../resources/img/system/endless-16-dark.png | Bin 0 -> 488 bytes .../app/resources/img/system/endless-16.png | Bin 0 -> 458 bytes .../resources/img/system/endless-24-dark.png | Bin 0 -> 740 bytes .../app/resources/img/system/endless-24.png | Bin 0 -> 676 bytes .../resources/img/system/endless-40-dark.png | Bin 0 -> 1262 bytes .../app/resources/img/system/endless-40.png | Bin 0 -> 1166 bytes .../app/resources/img/system/endurain-16.png | Bin 0 -> 492 bytes .../app/resources/img/system/endurain-24.png | Bin 0 -> 735 bytes .../app/resources/img/system/endurain-40.png | Bin 0 -> 1178 bytes .../resources/img/system/esphome-16-dark.png | Bin 0 -> 376 bytes .../app/resources/img/system/esphome-16.png | Bin 0 -> 465 bytes .../resources/img/system/esphome-24-dark.png | Bin 0 -> 474 bytes .../app/resources/img/system/esphome-24.png | Bin 0 -> 648 bytes .../resources/img/system/esphome-40-dark.png | Bin 0 -> 618 bytes .../app/resources/img/system/esphome-40.png | Bin 0 -> 765 bytes .../app/resources/img/system/etesync-16.png | Bin 0 -> 737 bytes .../app/resources/img/system/etesync-24.png | Bin 0 -> 1138 bytes .../app/resources/img/system/etesync-40.png | Bin 0 -> 1869 bytes .../resources/img/system/excalidraw-16.png | Bin 0 -> 693 bytes .../resources/img/system/excalidraw-24.png | Bin 0 -> 1087 bytes .../resources/img/system/excalidraw-40.png | Bin 0 -> 1990 bytes .../resources/img/system/fasten-health-16.png | Bin 0 -> 506 bytes .../resources/img/system/fasten-health-24.png | Bin 0 -> 635 bytes .../resources/img/system/fasten-health-40.png | Bin 0 -> 915 bytes .../app/resources/img/system/fastmail-16.png | Bin 0 -> 713 bytes .../app/resources/img/system/fastmail-24.png | Bin 0 -> 1025 bytes .../app/resources/img/system/fastmail-40.png | Bin 0 -> 1673 bytes .../resources/img/system/feedbase-16-dark.png | Bin 0 -> 320 bytes .../app/resources/img/system/feedbase-16.png | Bin 0 -> 308 bytes .../resources/img/system/feedbase-24-dark.png | Bin 0 -> 406 bytes .../app/resources/img/system/feedbase-24.png | Bin 0 -> 381 bytes .../resources/img/system/feedbase-40-dark.png | Bin 0 -> 576 bytes .../app/resources/img/system/feedbase-40.png | Bin 0 -> 528 bytes .../resources/img/system/feedbin-16-dark.png | Bin 0 -> 503 bytes .../app/resources/img/system/feedbin-16.png | Bin 0 -> 475 bytes .../resources/img/system/feedbin-24-dark.png | Bin 0 -> 717 bytes .../app/resources/img/system/feedbin-24.png | Bin 0 -> 650 bytes .../resources/img/system/feedbin-40-dark.png | Bin 0 -> 1203 bytes .../app/resources/img/system/feedbin-40.png | Bin 0 -> 1095 bytes .../resources/img/system/feedly-16-dark.png | Bin 0 -> 590 bytes .../app/resources/img/system/feedly-16.png | Bin 0 -> 590 bytes .../resources/img/system/feedly-24-dark.png | Bin 0 -> 877 bytes .../app/resources/img/system/feedly-24.png | Bin 0 -> 877 bytes .../resources/img/system/feedly-40-dark.png | Bin 0 -> 1467 bytes .../app/resources/img/system/feedly-40.png | Bin 0 -> 1467 bytes .../app/resources/img/system/feedlynx-16.png | Bin 0 -> 748 bytes .../app/resources/img/system/feedlynx-24.png | Bin 0 -> 1185 bytes .../app/resources/img/system/feedlynx-40.png | Bin 0 -> 2223 bytes .../app/resources/img/system/fenrus-16.png | Bin 0 -> 855 bytes .../app/resources/img/system/fenrus-24.png | Bin 0 -> 1375 bytes .../app/resources/img/system/fenrus-40.png | Bin 0 -> 2478 bytes .../resources/img/system/ferdium-16-dark.png | Bin 0 -> 395 bytes .../app/resources/img/system/ferdium-16.png | Bin 0 -> 676 bytes .../resources/img/system/ferdium-24-dark.png | Bin 0 -> 563 bytes .../app/resources/img/system/ferdium-24.png | Bin 0 -> 1010 bytes .../resources/img/system/ferdium-40-dark.png | Bin 0 -> 915 bytes .../app/resources/img/system/ferdium-40.png | Bin 0 -> 1674 bytes .../resources/img/system/ferretdb-16-dark.png | Bin 0 -> 487 bytes .../app/resources/img/system/ferretdb-16.png | Bin 0 -> 696 bytes .../resources/img/system/ferretdb-24-dark.png | Bin 0 -> 693 bytes .../app/resources/img/system/ferretdb-24.png | Bin 0 -> 1117 bytes .../resources/img/system/ferretdb-40-dark.png | Bin 0 -> 1138 bytes .../app/resources/img/system/ferretdb-40.png | Bin 0 -> 1832 bytes .../resources/img/system/file-browser-16.png | Bin 0 -> 770 bytes .../resources/img/system/file-browser-24.png | Bin 0 -> 1191 bytes .../resources/img/system/file-browser-40.png | Bin 0 -> 2036 bytes .../app/resources/img/system/fileflows-16.png | Bin 0 -> 629 bytes .../app/resources/img/system/fileflows-24.png | Bin 0 -> 1007 bytes .../app/resources/img/system/fileflows-40.png | Bin 0 -> 1800 bytes .../resources/img/system/filerun-16-dark.png | Bin 0 -> 356 bytes .../app/resources/img/system/filerun-16.png | Bin 0 -> 496 bytes .../resources/img/system/filerun-24-dark.png | Bin 0 -> 555 bytes .../app/resources/img/system/filerun-24.png | Bin 0 -> 740 bytes .../resources/img/system/filerun-40-dark.png | Bin 0 -> 798 bytes .../app/resources/img/system/filerun-40.png | Bin 0 -> 1115 bytes .../app/resources/img/system/filestash-16.png | Bin 0 -> 590 bytes .../app/resources/img/system/filestash-24.png | Bin 0 -> 910 bytes .../app/resources/img/system/filestash-40.png | Bin 0 -> 1611 bytes .../resources/img/system/firefly-iii-16.png | Bin 0 -> 631 bytes .../resources/img/system/firefly-iii-24.png | Bin 0 -> 953 bytes .../resources/img/system/firefly-iii-40.png | Bin 0 -> 1564 bytes .../resources/img/system/fittrackee-16.png | Bin 0 -> 901 bytes .../resources/img/system/fittrackee-24.png | Bin 0 -> 1547 bytes .../resources/img/system/fittrackee-40.png | Bin 0 -> 3020 bytes .../resources/img/system/flaresolverr-16.png | Bin 0 -> 543 bytes .../resources/img/system/flaresolverr-24.png | Bin 0 -> 837 bytes .../resources/img/system/flaresolverr-40.png | Bin 0 -> 1377 bytes .../app/resources/img/system/flarum-16.png | Bin 0 -> 310 bytes .../app/resources/img/system/flarum-24.png | Bin 0 -> 458 bytes .../app/resources/img/system/flarum-40.png | Bin 0 -> 590 bytes .../img/system/fluffychat-16-dark.png | Bin 0 -> 471 bytes .../resources/img/system/fluffychat-16.png | Bin 0 -> 678 bytes .../img/system/fluffychat-24-dark.png | Bin 0 -> 672 bytes .../resources/img/system/fluffychat-24.png | Bin 0 -> 1049 bytes .../img/system/fluffychat-40-dark.png | Bin 0 -> 1168 bytes .../resources/img/system/fluffychat-40.png | Bin 0 -> 1827 bytes .../app/resources/img/system/forgejo-16.png | Bin 0 -> 491 bytes .../app/resources/img/system/forgejo-24.png | Bin 0 -> 734 bytes .../app/resources/img/system/forgejo-40.png | Bin 0 -> 1178 bytes .../resources/img/system/forte-16-dark.png | Bin 0 -> 421 bytes .../app/resources/img/system/forte-16.png | Bin 0 -> 413 bytes .../resources/img/system/forte-24-dark.png | Bin 0 -> 628 bytes .../app/resources/img/system/forte-24.png | Bin 0 -> 616 bytes .../resources/img/system/forte-40-dark.png | Bin 0 -> 1065 bytes .../app/resources/img/system/forte-40.png | Bin 0 -> 992 bytes .../app/resources/img/system/freeipa-16.png | Bin 0 -> 625 bytes .../app/resources/img/system/freeipa-24.png | Bin 0 -> 961 bytes .../app/resources/img/system/freeipa-40.png | Bin 0 -> 1362 bytes .../app/resources/img/system/freshrss-16.png | Bin 0 -> 675 bytes .../app/resources/img/system/freshrss-24.png | Bin 0 -> 1116 bytes .../app/resources/img/system/freshrss-40.png | Bin 0 -> 1891 bytes .../app/resources/img/system/friendica-16.png | Bin 0 -> 396 bytes .../app/resources/img/system/friendica-24.png | Bin 0 -> 600 bytes .../app/resources/img/system/friendica-40.png | Bin 0 -> 924 bytes .../resources/img/system/frigate-16-dark.png | Bin 0 -> 345 bytes .../app/resources/img/system/frigate-16.png | Bin 0 -> 330 bytes .../resources/img/system/frigate-24-dark.png | Bin 0 -> 481 bytes .../app/resources/img/system/frigate-24.png | Bin 0 -> 442 bytes .../resources/img/system/frigate-40-dark.png | Bin 0 -> 764 bytes .../app/resources/img/system/frigate-40.png | Bin 0 -> 712 bytes .../img/system/funkwhale-16-dark.png | Bin 0 -> 602 bytes .../app/resources/img/system/funkwhale-16.png | Bin 0 -> 709 bytes .../img/system/funkwhale-24-dark.png | Bin 0 -> 1033 bytes .../app/resources/img/system/funkwhale-24.png | Bin 0 -> 1146 bytes .../img/system/funkwhale-40-dark.png | Bin 0 -> 1723 bytes .../app/resources/img/system/funkwhale-40.png | Bin 0 -> 1934 bytes .../img/system/fusionauth-16-dark.png | Bin 0 -> 594 bytes .../resources/img/system/fusionauth-16.png | Bin 0 -> 807 bytes .../img/system/fusionauth-24-dark.png | Bin 0 -> 955 bytes .../resources/img/system/fusionauth-24.png | Bin 0 -> 1284 bytes .../img/system/fusionauth-40-dark.png | Bin 0 -> 1630 bytes .../resources/img/system/fusionauth-40.png | Bin 0 -> 2272 bytes .../app/resources/img/system/garage-16.png | Bin 0 -> 625 bytes .../app/resources/img/system/garage-24.png | Bin 0 -> 982 bytes .../app/resources/img/system/garage-40.png | Bin 0 -> 1590 bytes .../app/resources/img/system/gatsby-16.png | Bin 0 -> 861 bytes .../app/resources/img/system/gatsby-24.png | Bin 0 -> 1454 bytes .../app/resources/img/system/gatsby-40.png | Bin 0 -> 2289 bytes .../app/resources/img/system/gatus-16.png | Bin 0 -> 711 bytes .../app/resources/img/system/gatus-24.png | Bin 0 -> 1064 bytes .../app/resources/img/system/gatus-40.png | Bin 0 -> 1695 bytes .../resources/img/system/ghostfolio-16.png | Bin 0 -> 486 bytes .../resources/img/system/ghostfolio-24.png | Bin 0 -> 666 bytes .../resources/img/system/ghostfolio-40.png | Bin 0 -> 1044 bytes .../app/resources/img/system/gitea-16.png | Bin 0 -> 556 bytes .../app/resources/img/system/gitea-24.png | Bin 0 -> 861 bytes .../app/resources/img/system/gitea-40.png | Bin 0 -> 1515 bytes .../app/resources/img/system/gitlab-16.png | Bin 0 -> 610 bytes .../app/resources/img/system/gitlab-24.png | Bin 0 -> 990 bytes .../app/resources/img/system/gitlab-40.png | Bin 0 -> 1602 bytes .../resources/img/system/glance-16-dark.png | Bin 0 -> 335 bytes .../app/resources/img/system/glance-16.png | Bin 0 -> 419 bytes .../resources/img/system/glance-24-dark.png | Bin 0 -> 439 bytes .../app/resources/img/system/glance-24.png | Bin 0 -> 570 bytes .../resources/img/system/glance-40-dark.png | Bin 0 -> 677 bytes .../app/resources/img/system/glance-40.png | Bin 0 -> 923 bytes .../app/resources/img/system/glpi-16.png | Bin 0 -> 484 bytes .../app/resources/img/system/glpi-24.png | Bin 0 -> 670 bytes .../app/resources/img/system/glpi-40.png | Bin 0 -> 1172 bytes .../app/resources/img/system/gotify-16.png | Bin 0 -> 602 bytes .../app/resources/img/system/gotify-24.png | Bin 0 -> 988 bytes .../app/resources/img/system/gotify-40.png | Bin 0 -> 1807 bytes .../resources/img/system/gotosocial-16.png | Bin 0 -> 785 bytes .../resources/img/system/gotosocial-24.png | Bin 0 -> 1271 bytes .../resources/img/system/gotosocial-40.png | Bin 0 -> 2249 bytes .../app/resources/img/system/grafana-16.png | Bin 0 -> 772 bytes .../app/resources/img/system/grafana-24.png | Bin 0 -> 1170 bytes .../app/resources/img/system/grafana-40.png | Bin 0 -> 1930 bytes .../app/resources/img/system/grav-16-dark.png | Bin 0 -> 484 bytes .../app/resources/img/system/grav-16.png | Bin 0 -> 685 bytes .../app/resources/img/system/grav-24-dark.png | Bin 0 -> 732 bytes .../app/resources/img/system/grav-24.png | Bin 0 -> 1098 bytes .../app/resources/img/system/grav-40-dark.png | Bin 0 -> 1239 bytes .../app/resources/img/system/grav-40.png | Bin 0 -> 1984 bytes .../app/resources/img/system/grimoire-16.png | Bin 0 -> 940 bytes .../app/resources/img/system/grimoire-24.png | Bin 0 -> 1764 bytes .../app/resources/img/system/grimoire-40.png | Bin 0 -> 4048 bytes .../app/resources/img/system/grist-16.png | Bin 0 -> 666 bytes .../app/resources/img/system/grist-24.png | Bin 0 -> 947 bytes .../app/resources/img/system/grist-40.png | Bin 0 -> 1378 bytes .../app/resources/img/system/grocy-16.png | Bin 0 -> 563 bytes .../app/resources/img/system/grocy-24.png | Bin 0 -> 747 bytes .../app/resources/img/system/grocy-40.png | Bin 0 -> 1206 bytes .../app/resources/img/system/haproxy-16.png | Bin 0 -> 927 bytes .../app/resources/img/system/haproxy-24.png | Bin 0 -> 1272 bytes .../app/resources/img/system/haproxy-40.png | Bin 0 -> 2226 bytes .../resources/img/system/haptic-16-dark.png | Bin 0 -> 551 bytes .../app/resources/img/system/haptic-16.png | Bin 0 -> 589 bytes .../resources/img/system/haptic-24-dark.png | Bin 0 -> 772 bytes .../app/resources/img/system/haptic-24.png | Bin 0 -> 885 bytes .../resources/img/system/haptic-40-dark.png | Bin 0 -> 1297 bytes .../app/resources/img/system/haptic-40.png | Bin 0 -> 1544 bytes .../app/resources/img/system/headscale-16.png | Bin 0 -> 389 bytes .../app/resources/img/system/headscale-24.png | Bin 0 -> 541 bytes .../app/resources/img/system/headscale-40.png | Bin 0 -> 890 bytes .../img/system/healthchecks-16-dark.png | Bin 0 -> 409 bytes .../resources/img/system/healthchecks-16.png | Bin 0 -> 533 bytes .../img/system/healthchecks-24-dark.png | Bin 0 -> 533 bytes .../resources/img/system/healthchecks-24.png | Bin 0 -> 723 bytes .../img/system/healthchecks-40-dark.png | Bin 0 -> 711 bytes .../resources/img/system/healthchecks-40.png | Bin 0 -> 993 bytes .../app/resources/img/system/hedgedoc-16.png | Bin 0 -> 699 bytes .../app/resources/img/system/hedgedoc-24.png | Bin 0 -> 1111 bytes .../app/resources/img/system/hedgedoc-40.png | Bin 0 -> 1779 bytes .../resources/img/system/heimdall-16-dark.png | Bin 0 -> 450 bytes .../app/resources/img/system/heimdall-16.png | Bin 0 -> 427 bytes .../resources/img/system/heimdall-24-dark.png | Bin 0 -> 689 bytes .../app/resources/img/system/heimdall-24.png | Bin 0 -> 649 bytes .../resources/img/system/heimdall-40-dark.png | Bin 0 -> 1228 bytes .../app/resources/img/system/heimdall-40.png | Bin 0 -> 1157 bytes .../app/resources/img/system/heyform-16.png | Bin 0 -> 491 bytes .../app/resources/img/system/heyform-24.png | Bin 0 -> 687 bytes .../app/resources/img/system/heyform-40.png | Bin 0 -> 1074 bytes .../app/resources/img/system/hivedav-16.png | Bin 0 -> 782 bytes .../app/resources/img/system/hivedav-24.png | Bin 0 -> 1334 bytes .../app/resources/img/system/hivedav-40.png | Bin 0 -> 2618 bytes .../resources/img/system/hoarder-16-dark.png | Bin 0 -> 298 bytes .../app/resources/img/system/hoarder-16.png | Bin 0 -> 291 bytes .../resources/img/system/hoarder-24-dark.png | Bin 0 -> 373 bytes .../app/resources/img/system/hoarder-24.png | Bin 0 -> 361 bytes .../resources/img/system/hoarder-40-dark.png | Bin 0 -> 546 bytes .../app/resources/img/system/hoarder-40.png | Bin 0 -> 505 bytes .../resources/img/system/hollo-16-dark.png | Bin 0 -> 396 bytes .../app/resources/img/system/hollo-16.png | Bin 0 -> 368 bytes .../resources/img/system/hollo-24-dark.png | Bin 0 -> 581 bytes .../app/resources/img/system/hollo-24.png | Bin 0 -> 522 bytes .../resources/img/system/hollo-40-dark.png | Bin 0 -> 954 bytes .../app/resources/img/system/hollo-40.png | Bin 0 -> 868 bytes .../app/resources/img/system/homarr-16.png | Bin 0 -> 554 bytes .../app/resources/img/system/homarr-24.png | Bin 0 -> 905 bytes .../app/resources/img/system/homarr-40.png | Bin 0 -> 1451 bytes .../img/system/home-assistant-16.png | Bin 0 -> 558 bytes .../img/system/home-assistant-24.png | Bin 0 -> 776 bytes .../img/system/home-assistant-40.png | Bin 0 -> 1100 bytes .../app/resources/img/system/homebox-16.png | Bin 0 -> 875 bytes .../app/resources/img/system/homebox-24.png | Bin 0 -> 1355 bytes .../app/resources/img/system/homebox-40.png | Bin 0 -> 2393 bytes .../img/system/homebridge-16-dark.png | Bin 0 -> 501 bytes .../resources/img/system/homebridge-16.png | Bin 0 -> 909 bytes .../img/system/homebridge-24-dark.png | Bin 0 -> 735 bytes .../resources/img/system/homebridge-24.png | Bin 0 -> 1576 bytes .../img/system/homebridge-40-dark.png | Bin 0 -> 1195 bytes .../resources/img/system/homebridge-40.png | Bin 0 -> 3172 bytes .../app/resources/img/system/homer-16.png | Bin 0 -> 828 bytes .../app/resources/img/system/homer-24.png | Bin 0 -> 1318 bytes .../app/resources/img/system/homer-40.png | Bin 0 -> 2492 bytes .../img/system/hoppscotch-16-dark.png | Bin 0 -> 394 bytes .../resources/img/system/hoppscotch-16.png | Bin 0 -> 759 bytes .../img/system/hoppscotch-24-dark.png | Bin 0 -> 611 bytes .../resources/img/system/hoppscotch-24.png | Bin 0 -> 1273 bytes .../img/system/hoppscotch-40-dark.png | Bin 0 -> 1033 bytes .../resources/img/system/hoppscotch-40.png | Bin 0 -> 2429 bytes .../resources/img/system/hubzilla-16-dark.png | Bin 0 -> 374 bytes .../app/resources/img/system/hubzilla-16.png | Bin 0 -> 514 bytes .../resources/img/system/hubzilla-24-dark.png | Bin 0 -> 503 bytes .../app/resources/img/system/hubzilla-24.png | Bin 0 -> 746 bytes .../resources/img/system/hubzilla-40-dark.png | Bin 0 -> 803 bytes .../app/resources/img/system/hubzilla-40.png | Bin 0 -> 1154 bytes .../app/resources/img/system/huginn-16.png | Bin 0 -> 789 bytes .../app/resources/img/system/huginn-24.png | Bin 0 -> 1271 bytes .../app/resources/img/system/huginn-40.png | Bin 0 -> 2399 bytes .../app/resources/img/system/hugo-16.png | Bin 0 -> 627 bytes .../app/resources/img/system/hugo-24.png | Bin 0 -> 880 bytes .../app/resources/img/system/hugo-40.png | Bin 0 -> 1350 bytes .../app/resources/img/system/humhub-16.png | Bin 0 -> 499 bytes .../app/resources/img/system/humhub-24.png | Bin 0 -> 726 bytes .../app/resources/img/system/humhub-40.png | Bin 0 -> 1164 bytes .../app/resources/img/system/icon-16.png | Bin 0 -> 546 bytes .../app/resources/img/system/icon-24.png | Bin 0 -> 765 bytes .../app/resources/img/system/icon-40.png | Bin 0 -> 1228 bytes .../app/resources/img/system/immich-16.png | Bin 0 -> 667 bytes .../app/resources/img/system/immich-24.png | Bin 0 -> 1016 bytes .../app/resources/img/system/immich-40.png | Bin 0 -> 1812 bytes .../img/system/immich-frame-16-dark.png | Bin 0 -> 433 bytes .../resources/img/system/immich-frame-16.png | Bin 0 -> 460 bytes .../img/system/immich-frame-24-dark.png | Bin 0 -> 670 bytes .../resources/img/system/immich-frame-24.png | Bin 0 -> 685 bytes .../img/system/immich-frame-40-dark.png | Bin 0 -> 1040 bytes .../resources/img/system/immich-frame-40.png | Bin 0 -> 1067 bytes .../resources/img/system/immich-kiosk-16.png | Bin 0 -> 810 bytes .../resources/img/system/immich-kiosk-24.png | Bin 0 -> 1446 bytes .../resources/img/system/immich-kiosk-40.png | Bin 0 -> 2789 bytes .../app/resources/img/system/influxdb-16.png | Bin 0 -> 813 bytes .../app/resources/img/system/influxdb-24.png | Bin 0 -> 1255 bytes .../app/resources/img/system/influxdb-40.png | Bin 0 -> 2305 bytes .../img/system/inoreader-16-dark.png | Bin 0 -> 359 bytes .../app/resources/img/system/inoreader-16.png | Bin 0 -> 485 bytes .../img/system/inoreader-24-dark.png | Bin 0 -> 491 bytes .../app/resources/img/system/inoreader-24.png | Bin 0 -> 727 bytes .../img/system/inoreader-40-dark.png | Bin 0 -> 761 bytes .../app/resources/img/system/inoreader-40.png | Bin 0 -> 1069 bytes .../app/resources/img/system/invidious-16.png | Bin 0 -> 563 bytes .../app/resources/img/system/invidious-24.png | Bin 0 -> 868 bytes .../app/resources/img/system/invidious-40.png | Bin 0 -> 1476 bytes .../img/system/invoice-ninja-16-dark.png | Bin 0 -> 473 bytes .../resources/img/system/invoice-ninja-16.png | Bin 0 -> 433 bytes .../img/system/invoice-ninja-24-dark.png | Bin 0 -> 665 bytes .../resources/img/system/invoice-ninja-24.png | Bin 0 -> 613 bytes .../img/system/invoice-ninja-40-dark.png | Bin 0 -> 1162 bytes .../resources/img/system/invoice-ninja-40.png | Bin 0 -> 1028 bytes .../resources/img/system/it-tools-16-dark.png | Bin 0 -> 710 bytes .../app/resources/img/system/it-tools-16.png | Bin 0 -> 740 bytes .../resources/img/system/it-tools-24-dark.png | Bin 0 -> 1063 bytes .../app/resources/img/system/it-tools-24.png | Bin 0 -> 1118 bytes .../resources/img/system/it-tools-40-dark.png | Bin 0 -> 1741 bytes .../app/resources/img/system/it-tools-40.png | Bin 0 -> 1882 bytes .../resources/img/system/jackett-16-dark.png | Bin 0 -> 391 bytes .../app/resources/img/system/jackett-16.png | Bin 0 -> 382 bytes .../resources/img/system/jackett-24-dark.png | Bin 0 -> 570 bytes .../app/resources/img/system/jackett-24.png | Bin 0 -> 545 bytes .../resources/img/system/jackett-40-dark.png | Bin 0 -> 876 bytes .../app/resources/img/system/jackett-40.png | Bin 0 -> 835 bytes .../app/resources/img/system/jekyll-16.png | Bin 0 -> 555 bytes .../app/resources/img/system/jekyll-24.png | Bin 0 -> 863 bytes .../app/resources/img/system/jekyll-40.png | Bin 0 -> 1475 bytes .../resources/img/system/jellyfin-16-dark.png | Bin 0 -> 465 bytes .../app/resources/img/system/jellyfin-16.png | Bin 0 -> 795 bytes .../resources/img/system/jellyfin-24-dark.png | Bin 0 -> 648 bytes .../app/resources/img/system/jellyfin-24.png | Bin 0 -> 1196 bytes .../resources/img/system/jellyfin-40-dark.png | Bin 0 -> 1056 bytes .../app/resources/img/system/jellyfin-40.png | Bin 0 -> 2046 bytes .../resources/img/system/jellyseerr-16.png | Bin 0 -> 805 bytes .../resources/img/system/jellyseerr-24.png | Bin 0 -> 1282 bytes .../resources/img/system/jellyseerr-40.png | Bin 0 -> 2320 bytes .../app/resources/img/system/jira-16.png | Bin 0 -> 610 bytes .../app/resources/img/system/jira-24.png | Bin 0 -> 832 bytes .../app/resources/img/system/jira-40.png | Bin 0 -> 1306 bytes .../resources/img/system/jitsi-meet-16.png | Bin 0 -> 646 bytes .../resources/img/system/jitsi-meet-24.png | Bin 0 -> 1063 bytes .../resources/img/system/jitsi-meet-40.png | Bin 0 -> 2121 bytes .../resources/img/system/jwt-io-16-dark.png | Bin 0 -> 344 bytes .../app/resources/img/system/jwt-io-16.png | Bin 0 -> 450 bytes .../resources/img/system/jwt-io-24-dark.png | Bin 0 -> 520 bytes .../app/resources/img/system/jwt-io-24.png | Bin 0 -> 693 bytes .../resources/img/system/jwt-io-40-dark.png | Bin 0 -> 918 bytes .../app/resources/img/system/jwt-io-40.png | Bin 0 -> 1235 bytes .../resources/img/system/kanboard-16-dark.png | Bin 0 -> 516 bytes .../app/resources/img/system/kanboard-16.png | Bin 0 -> 540 bytes .../resources/img/system/kanboard-24-dark.png | Bin 0 -> 726 bytes .../app/resources/img/system/kanboard-24.png | Bin 0 -> 750 bytes .../resources/img/system/kanboard-40-dark.png | Bin 0 -> 1071 bytes .../app/resources/img/system/kanboard-40.png | Bin 0 -> 1098 bytes .../app/resources/img/system/kanidm-16.png | Bin 0 -> 612 bytes .../app/resources/img/system/kanidm-24.png | Bin 0 -> 999 bytes .../app/resources/img/system/kanidm-40.png | Bin 0 -> 1953 bytes .../app/resources/img/system/kapowarr-16.png | Bin 0 -> 839 bytes .../app/resources/img/system/kapowarr-24.png | Bin 0 -> 1493 bytes .../app/resources/img/system/kapowarr-40.png | Bin 0 -> 3137 bytes .../app/resources/img/system/kavita-16.png | Bin 0 -> 624 bytes .../app/resources/img/system/kavita-24.png | Bin 0 -> 893 bytes .../app/resources/img/system/kavita-40.png | Bin 0 -> 1575 bytes .../app/resources/img/system/kbin-16.png | Bin 0 -> 627 bytes .../app/resources/img/system/kbin-24.png | Bin 0 -> 867 bytes .../app/resources/img/system/kbin-40.png | Bin 0 -> 1554 bytes .../app/resources/img/system/keepassxc-16.png | Bin 0 -> 972 bytes .../app/resources/img/system/keepassxc-24.png | Bin 0 -> 1622 bytes .../app/resources/img/system/keepassxc-40.png | Bin 0 -> 3125 bytes .../app/resources/img/system/keila-16.png | Bin 0 -> 627 bytes .../app/resources/img/system/keila-24.png | Bin 0 -> 925 bytes .../app/resources/img/system/keila-40.png | Bin 0 -> 1533 bytes .../app/resources/img/system/kestra-16.png | Bin 0 -> 566 bytes .../app/resources/img/system/kestra-24.png | Bin 0 -> 879 bytes .../app/resources/img/system/kestra-40.png | Bin 0 -> 1320 bytes .../app/resources/img/system/keycloak-16.png | Bin 0 -> 726 bytes .../app/resources/img/system/keycloak-24.png | Bin 0 -> 1203 bytes .../app/resources/img/system/keycloak-40.png | Bin 0 -> 2278 bytes .../app/resources/img/system/komga-16.png | Bin 0 -> 877 bytes .../app/resources/img/system/komga-24.png | Bin 0 -> 1470 bytes .../app/resources/img/system/komga-40.png | Bin 0 -> 2649 bytes .../app/resources/img/system/kontoj-16.png | Bin 0 -> 523 bytes .../app/resources/img/system/kontoj-24.png | Bin 0 -> 738 bytes .../app/resources/img/system/kontoj-40.png | Bin 0 -> 1070 bytes .../app/resources/img/system/krakend-16.png | Bin 0 -> 885 bytes .../app/resources/img/system/krakend-24.png | Bin 0 -> 1567 bytes .../app/resources/img/system/krakend-40.png | Bin 0 -> 3210 bytes .../app/resources/img/system/kyoo-16-dark.png | Bin 0 -> 567 bytes .../app/resources/img/system/kyoo-16.png | Bin 0 -> 630 bytes .../app/resources/img/system/kyoo-24-dark.png | Bin 0 -> 852 bytes .../app/resources/img/system/kyoo-24.png | Bin 0 -> 1027 bytes .../app/resources/img/system/kyoo-40-dark.png | Bin 0 -> 1641 bytes .../app/resources/img/system/kyoo-40.png | Bin 0 -> 1834 bytes .../img/system/lancommander-16-dark.png | Bin 0 -> 414 bytes .../resources/img/system/lancommander-16.png | Bin 0 -> 489 bytes .../img/system/lancommander-24-dark.png | Bin 0 -> 486 bytes .../resources/img/system/lancommander-24.png | Bin 0 -> 599 bytes .../img/system/lancommander-40-dark.png | Bin 0 -> 593 bytes .../resources/img/system/lancommander-40.png | Bin 0 -> 733 bytes .../app/resources/img/system/leantime-16.png | Bin 0 -> 541 bytes .../app/resources/img/system/leantime-24.png | Bin 0 -> 764 bytes .../app/resources/img/system/leantime-40.png | Bin 0 -> 1272 bytes .../img/system/lets-encrypt-16-dark.png | Bin 0 -> 441 bytes .../resources/img/system/lets-encrypt-16.png | Bin 0 -> 471 bytes .../img/system/lets-encrypt-24-dark.png | Bin 0 -> 637 bytes .../resources/img/system/lets-encrypt-24.png | Bin 0 -> 673 bytes .../img/system/lets-encrypt-40-dark.png | Bin 0 -> 1036 bytes .../resources/img/system/lets-encrypt-40.png | Bin 0 -> 1079 bytes .../resources/img/system/librespeed-16.png | Bin 0 -> 918 bytes .../resources/img/system/librespeed-24.png | Bin 0 -> 1497 bytes .../resources/img/system/librespeed-40.png | Bin 0 -> 2834 bytes .../app/resources/img/system/librum-16.png | Bin 0 -> 298 bytes .../app/resources/img/system/librum-24.png | Bin 0 -> 336 bytes .../app/resources/img/system/librum-40.png | Bin 0 -> 479 bytes .../app/resources/img/system/lidarr-16.png | Bin 0 -> 914 bytes .../app/resources/img/system/lidarr-24.png | Bin 0 -> 1505 bytes .../app/resources/img/system/lidarr-40.png | Bin 0 -> 3301 bytes .../resources/img/system/limesurvey-16.png | Bin 0 -> 686 bytes .../resources/img/system/limesurvey-24.png | Bin 0 -> 1053 bytes .../resources/img/system/limesurvey-40.png | Bin 0 -> 1802 bytes .../resources/img/system/linkace-16-dark.png | Bin 0 -> 371 bytes .../app/resources/img/system/linkace-16.png | Bin 0 -> 523 bytes .../resources/img/system/linkace-24-dark.png | Bin 0 -> 517 bytes .../app/resources/img/system/linkace-24.png | Bin 0 -> 881 bytes .../resources/img/system/linkace-40-dark.png | Bin 0 -> 753 bytes .../app/resources/img/system/linkace-40.png | Bin 0 -> 1286 bytes .../app/resources/img/system/linkding-16.png | Bin 0 -> 781 bytes .../app/resources/img/system/linkding-24.png | Bin 0 -> 1188 bytes .../app/resources/img/system/linkding-40.png | Bin 0 -> 1977 bytes .../resources/img/system/linkedin-16-dark.png | Bin 0 -> 341 bytes .../app/resources/img/system/linkedin-16.png | Bin 0 -> 447 bytes .../resources/img/system/linkedin-24-dark.png | Bin 0 -> 432 bytes .../app/resources/img/system/linkedin-24.png | Bin 0 -> 608 bytes .../resources/img/system/linkedin-40-dark.png | Bin 0 -> 674 bytes .../app/resources/img/system/linkedin-40.png | Bin 0 -> 875 bytes .../app/resources/img/system/linkstack-16.png | Bin 0 -> 893 bytes .../app/resources/img/system/linkstack-24.png | Bin 0 -> 1421 bytes .../app/resources/img/system/linkstack-40.png | Bin 0 -> 2553 bytes .../img/system/linuxserver-io-16.png | Bin 0 -> 921 bytes .../img/system/linuxserver-io-24.png | Bin 0 -> 1535 bytes .../img/system/linuxserver-io-40.png | Bin 0 -> 2759 bytes .../app/resources/img/system/listmonk-16.png | Bin 0 -> 480 bytes .../app/resources/img/system/listmonk-24.png | Bin 0 -> 700 bytes .../app/resources/img/system/listmonk-40.png | Bin 0 -> 1281 bytes .../app/resources/img/system/lodestone-16.png | Bin 0 -> 743 bytes .../app/resources/img/system/lodestone-24.png | Bin 0 -> 1149 bytes .../app/resources/img/system/lodestone-40.png | Bin 0 -> 2093 bytes .../app/resources/img/system/logseq-16.png | Bin 0 -> 635 bytes .../app/resources/img/system/logseq-24.png | Bin 0 -> 902 bytes .../app/resources/img/system/logseq-40.png | Bin 0 -> 1443 bytes .../app/resources/img/system/logto-16.png | Bin 0 -> 460 bytes .../app/resources/img/system/logto-24.png | Bin 0 -> 683 bytes .../app/resources/img/system/logto-40.png | Bin 0 -> 1206 bytes .../app/resources/img/system/loki-16.png | Bin 0 -> 602 bytes .../app/resources/img/system/loki-24.png | Bin 0 -> 1043 bytes .../app/resources/img/system/loki-40.png | Bin 0 -> 1975 bytes .../resources/img/system/mail-in-a-box-16.png | Bin 0 -> 448 bytes .../resources/img/system/mail-in-a-box-24.png | Bin 0 -> 608 bytes .../resources/img/system/mail-in-a-box-40.png | Bin 0 -> 1006 bytes .../app/resources/img/system/mailcow-16.png | Bin 0 -> 881 bytes .../app/resources/img/system/mailcow-24.png | Bin 0 -> 1414 bytes .../app/resources/img/system/mailcow-40.png | Bin 0 -> 2669 bytes .../resources/img/system/mailjet-16-dark.png | Bin 0 -> 364 bytes .../app/resources/img/system/mailjet-16.png | Bin 0 -> 578 bytes .../resources/img/system/mailjet-24-dark.png | Bin 0 -> 520 bytes .../app/resources/img/system/mailjet-24.png | Bin 0 -> 835 bytes .../resources/img/system/mailjet-40-dark.png | Bin 0 -> 818 bytes .../app/resources/img/system/mailjet-40.png | Bin 0 -> 1404 bytes .../app/resources/img/system/manyfold-16.png | Bin 0 -> 373 bytes .../app/resources/img/system/manyfold-24.png | Bin 0 -> 564 bytes .../app/resources/img/system/manyfold-40.png | Bin 0 -> 993 bytes .../app/resources/img/system/mariadb-16.png | Bin 0 -> 491 bytes .../app/resources/img/system/mariadb-24.png | Bin 0 -> 763 bytes .../app/resources/img/system/mariadb-40.png | Bin 0 -> 1278 bytes .../app/resources/img/system/mastodon-16.png | Bin 0 -> 680 bytes .../app/resources/img/system/mastodon-24.png | Bin 0 -> 1027 bytes .../app/resources/img/system/mastodon-40.png | Bin 0 -> 1550 bytes .../app/resources/img/system/matomo-16.png | Bin 0 -> 626 bytes .../app/resources/img/system/matomo-24.png | Bin 0 -> 914 bytes .../app/resources/img/system/matomo-40.png | Bin 0 -> 1523 bytes .../resources/img/system/matrix-16-dark.png | Bin 0 -> 293 bytes .../app/resources/img/system/matrix-16.png | Bin 0 -> 323 bytes .../resources/img/system/matrix-24-dark.png | Bin 0 -> 420 bytes .../app/resources/img/system/matrix-24.png | Bin 0 -> 486 bytes .../resources/img/system/matrix-40-dark.png | Bin 0 -> 557 bytes .../app/resources/img/system/matrix-40.png | Bin 0 -> 623 bytes .../img/system/mattermost-16-dark.png | Bin 0 -> 451 bytes .../resources/img/system/mattermost-16.png | Bin 0 -> 698 bytes .../img/system/mattermost-24-dark.png | Bin 0 -> 657 bytes .../resources/img/system/mattermost-24.png | Bin 0 -> 1043 bytes .../img/system/mattermost-40-dark.png | Bin 0 -> 1087 bytes .../resources/img/system/mattermost-40.png | Bin 0 -> 1701 bytes .../resources/img/system/mautic-16-dark.png | Bin 0 -> 610 bytes .../app/resources/img/system/mautic-16.png | Bin 0 -> 756 bytes .../resources/img/system/mautic-24-dark.png | Bin 0 -> 986 bytes .../app/resources/img/system/mautic-24.png | Bin 0 -> 1188 bytes .../resources/img/system/mautic-40-dark.png | Bin 0 -> 1649 bytes .../app/resources/img/system/mautic-40.png | Bin 0 -> 2027 bytes .../app/resources/img/system/maybe-16.png | Bin 0 -> 547 bytes .../app/resources/img/system/maybe-24.png | Bin 0 -> 868 bytes .../app/resources/img/system/maybe-40.png | Bin 0 -> 1199 bytes .../app/resources/img/system/mbin-16.png | Bin 0 -> 609 bytes .../app/resources/img/system/mbin-24.png | Bin 0 -> 982 bytes .../app/resources/img/system/mbin-40.png | Bin 0 -> 1674 bytes .../resources/img/system/mealie-16-dark.png | Bin 0 -> 393 bytes .../app/resources/img/system/mealie-16.png | Bin 0 -> 610 bytes .../resources/img/system/mealie-24-dark.png | Bin 0 -> 527 bytes .../app/resources/img/system/mealie-24.png | Bin 0 -> 943 bytes .../resources/img/system/mealie-40-dark.png | Bin 0 -> 762 bytes .../app/resources/img/system/mealie-40.png | Bin 0 -> 1452 bytes .../app/resources/img/system/medama-16.png | Bin 0 -> 719 bytes .../app/resources/img/system/medama-24.png | Bin 0 -> 1159 bytes .../app/resources/img/system/medama-40.png | Bin 0 -> 1833 bytes .../resources/img/system/mediux-16-dark.png | Bin 0 -> 367 bytes .../app/resources/img/system/mediux-16.png | Bin 0 -> 564 bytes .../resources/img/system/mediux-24-dark.png | Bin 0 -> 512 bytes .../app/resources/img/system/mediux-24.png | Bin 0 -> 774 bytes .../resources/img/system/mediux-40-dark.png | Bin 0 -> 864 bytes .../app/resources/img/system/mediux-40.png | Bin 0 -> 1273 bytes .../resources/img/system/medusa-16-dark.png | Bin 0 -> 368 bytes .../app/resources/img/system/medusa-16.png | Bin 0 -> 525 bytes .../resources/img/system/medusa-24-dark.png | Bin 0 -> 517 bytes .../app/resources/img/system/medusa-24.png | Bin 0 -> 728 bytes .../resources/img/system/medusa-40-dark.png | Bin 0 -> 837 bytes .../app/resources/img/system/medusa-40.png | Bin 0 -> 1196 bytes .../img/system/meilisearch-16-dark.png | Bin 0 -> 368 bytes .../resources/img/system/meilisearch-16.png | Bin 0 -> 487 bytes .../img/system/meilisearch-24-dark.png | Bin 0 -> 452 bytes .../resources/img/system/meilisearch-24.png | Bin 0 -> 731 bytes .../img/system/meilisearch-40-dark.png | Bin 0 -> 801 bytes .../resources/img/system/meilisearch-40.png | Bin 0 -> 1356 bytes .../resources/img/system/memories-16-dark.png | Bin 0 -> 578 bytes .../app/resources/img/system/memories-16.png | Bin 0 -> 525 bytes .../resources/img/system/memories-24-dark.png | Bin 0 -> 894 bytes .../app/resources/img/system/memories-24.png | Bin 0 -> 815 bytes .../resources/img/system/memories-40-dark.png | Bin 0 -> 1586 bytes .../app/resources/img/system/memories-40.png | Bin 0 -> 1468 bytes .../app/resources/img/system/mergeable-16.png | Bin 0 -> 586 bytes .../app/resources/img/system/mergeable-24.png | Bin 0 -> 890 bytes .../app/resources/img/system/mergeable-40.png | Bin 0 -> 1466 bytes .../resources/img/system/meshping-16-dark.png | Bin 0 -> 433 bytes .../app/resources/img/system/meshping-16.png | Bin 0 -> 414 bytes .../resources/img/system/meshping-24-dark.png | Bin 0 -> 624 bytes .../app/resources/img/system/meshping-24.png | Bin 0 -> 605 bytes .../resources/img/system/meshping-40-dark.png | Bin 0 -> 1013 bytes .../app/resources/img/system/meshping-40.png | Bin 0 -> 987 bytes .../app/resources/img/system/metabase-16.png | Bin 0 -> 738 bytes .../app/resources/img/system/metabase-24.png | Bin 0 -> 1199 bytes .../app/resources/img/system/metabase-40.png | Bin 0 -> 2182 bytes .../app/resources/img/system/metube-16.png | Bin 0 -> 409 bytes .../app/resources/img/system/metube-24.png | Bin 0 -> 557 bytes .../app/resources/img/system/metube-40.png | Bin 0 -> 882 bytes .../app/resources/img/system/minecraft-16.png | Bin 0 -> 866 bytes .../app/resources/img/system/minecraft-24.png | Bin 0 -> 1543 bytes .../app/resources/img/system/minecraft-40.png | Bin 0 -> 3778 bytes .../resources/img/system/miniflux-16-dark.png | Bin 0 -> 336 bytes .../app/resources/img/system/miniflux-16.png | Bin 0 -> 323 bytes .../resources/img/system/miniflux-24-dark.png | Bin 0 -> 400 bytes .../app/resources/img/system/miniflux-24.png | Bin 0 -> 398 bytes .../resources/img/system/miniflux-40-dark.png | Bin 0 -> 577 bytes .../app/resources/img/system/miniflux-40.png | Bin 0 -> 558 bytes .../resources/img/system/minio-16-dark.png | Bin 0 -> 372 bytes .../app/resources/img/system/minio-16.png | Bin 0 -> 364 bytes .../resources/img/system/minio-24-dark.png | Bin 0 -> 508 bytes .../app/resources/img/system/minio-24.png | Bin 0 -> 514 bytes .../resources/img/system/minio-40-dark.png | Bin 0 -> 839 bytes .../app/resources/img/system/minio-40.png | Bin 0 -> 835 bytes .../app/resources/img/system/mirotalk-16.png | Bin 0 -> 612 bytes .../app/resources/img/system/mirotalk-24.png | Bin 0 -> 939 bytes .../app/resources/img/system/mirotalk-40.png | Bin 0 -> 1662 bytes .../resources/img/system/misskey-16-dark.png | Bin 0 -> 378 bytes .../app/resources/img/system/misskey-16.png | Bin 0 -> 365 bytes .../resources/img/system/misskey-24-dark.png | Bin 0 -> 530 bytes .../app/resources/img/system/misskey-24.png | Bin 0 -> 500 bytes .../resources/img/system/misskey-40-dark.png | Bin 0 -> 749 bytes .../app/resources/img/system/misskey-40.png | Bin 0 -> 694 bytes .../resources/img/system/mitra-16-dark.png | Bin 0 -> 448 bytes .../app/resources/img/system/mitra-16.png | Bin 0 -> 736 bytes .../resources/img/system/mitra-24-dark.png | Bin 0 -> 705 bytes .../app/resources/img/system/mitra-24.png | Bin 0 -> 1271 bytes .../resources/img/system/mitra-40-dark.png | Bin 0 -> 1255 bytes .../app/resources/img/system/mitra-40.png | Bin 0 -> 2688 bytes .../app/resources/img/system/mixpost-16.png | Bin 0 -> 394 bytes .../app/resources/img/system/mixpost-24.png | Bin 0 -> 548 bytes .../app/resources/img/system/mixpost-40.png | Bin 0 -> 838 bytes .../app/resources/img/system/mobilizon-16.png | Bin 0 -> 547 bytes .../app/resources/img/system/mobilizon-24.png | Bin 0 -> 763 bytes .../app/resources/img/system/mobilizon-40.png | Bin 0 -> 1249 bytes .../app/resources/img/system/mongodb-16.png | Bin 0 -> 418 bytes .../app/resources/img/system/mongodb-24.png | Bin 0 -> 579 bytes .../app/resources/img/system/mongodb-40.png | Bin 0 -> 966 bytes .../resources/img/system/monica-16-dark.png | Bin 0 -> 741 bytes .../app/resources/img/system/monica-16.png | Bin 0 -> 827 bytes .../resources/img/system/monica-24-dark.png | Bin 0 -> 1171 bytes .../app/resources/img/system/monica-24.png | Bin 0 -> 1292 bytes .../resources/img/system/monica-40-dark.png | Bin 0 -> 2063 bytes .../app/resources/img/system/monica-40.png | Bin 0 -> 2272 bytes .../app/resources/img/system/mosquitto-16.png | Bin 0 -> 652 bytes .../app/resources/img/system/mosquitto-24.png | Bin 0 -> 1129 bytes .../app/resources/img/system/mosquitto-40.png | Bin 0 -> 2237 bytes .../app/resources/img/system/mqtt-16-dark.png | Bin 0 -> 460 bytes .../app/resources/img/system/mqtt-16.png | Bin 0 -> 648 bytes .../app/resources/img/system/mqtt-24-dark.png | Bin 0 -> 654 bytes .../app/resources/img/system/mqtt-24.png | Bin 0 -> 977 bytes .../app/resources/img/system/mqtt-40-dark.png | Bin 0 -> 1037 bytes .../app/resources/img/system/mqtt-40.png | Bin 0 -> 1528 bytes .../resources/img/system/mullvad-vpn-16.png | Bin 0 -> 768 bytes .../resources/img/system/mullvad-vpn-24.png | Bin 0 -> 1118 bytes .../resources/img/system/mullvad-vpn-40.png | Bin 0 -> 1945 bytes .../app/resources/img/system/mumble-16.png | Bin 0 -> 400 bytes .../app/resources/img/system/mumble-24.png | Bin 0 -> 570 bytes .../app/resources/img/system/mumble-40.png | Bin 0 -> 1470 bytes .../img/system/music-assistant-16-dark.png | Bin 0 -> 465 bytes .../img/system/music-assistant-16.png | Bin 0 -> 441 bytes .../img/system/music-assistant-24-dark.png | Bin 0 -> 646 bytes .../img/system/music-assistant-24.png | Bin 0 -> 613 bytes .../img/system/music-assistant-40-dark.png | Bin 0 -> 1067 bytes .../img/system/music-assistant-40.png | Bin 0 -> 968 bytes .../resources/img/system/myheats-16-dark.png | Bin 0 -> 666 bytes .../app/resources/img/system/myheats-16.png | Bin 0 -> 676 bytes .../resources/img/system/myheats-24-dark.png | Bin 0 -> 1081 bytes .../app/resources/img/system/myheats-24.png | Bin 0 -> 1094 bytes .../resources/img/system/myheats-40-dark.png | Bin 0 -> 2005 bytes .../app/resources/img/system/myheats-40.png | Bin 0 -> 2061 bytes .../resources/img/system/mysql-16-dark.png | Bin 0 -> 403 bytes .../app/resources/img/system/mysql-16.png | Bin 0 -> 576 bytes .../resources/img/system/mysql-24-dark.png | Bin 0 -> 564 bytes .../app/resources/img/system/mysql-24.png | Bin 0 -> 895 bytes .../resources/img/system/mysql-40-dark.png | Bin 0 -> 909 bytes .../app/resources/img/system/mysql-40.png | Bin 0 -> 1533 bytes .../xpipe/app/resources/img/system/n8n-16.png | Bin 0 -> 461 bytes .../xpipe/app/resources/img/system/n8n-24.png | Bin 0 -> 718 bytes .../xpipe/app/resources/img/system/n8n-40.png | Bin 0 -> 1259 bytes .../app/resources/img/system/navidrome-16.png | Bin 0 -> 797 bytes .../app/resources/img/system/navidrome-24.png | Bin 0 -> 1378 bytes .../app/resources/img/system/navidrome-40.png | Bin 0 -> 2467 bytes .../app/resources/img/system/neko-16-dark.png | Bin 0 -> 458 bytes .../app/resources/img/system/neko-16.png | Bin 0 -> 411 bytes .../app/resources/img/system/neko-24-dark.png | Bin 0 -> 643 bytes .../app/resources/img/system/neko-24.png | Bin 0 -> 609 bytes .../app/resources/img/system/neko-40-dark.png | Bin 0 -> 1119 bytes .../app/resources/img/system/neko-40.png | Bin 0 -> 1045 bytes .../app/resources/img/system/neodb-16.png | Bin 0 -> 559 bytes .../app/resources/img/system/neodb-24.png | Bin 0 -> 815 bytes .../app/resources/img/system/neodb-40.png | Bin 0 -> 1338 bytes .../app/resources/img/system/netalertx-16.png | Bin 0 -> 541 bytes .../app/resources/img/system/netalertx-24.png | Bin 0 -> 782 bytes .../app/resources/img/system/netalertx-40.png | Bin 0 -> 1200 bytes .../app/resources/img/system/netbird-16.png | Bin 0 -> 492 bytes .../app/resources/img/system/netbird-24.png | Bin 0 -> 686 bytes .../app/resources/img/system/netbird-40.png | Bin 0 -> 1078 bytes .../img/system/netboot-xyz-16-dark.png | Bin 0 -> 367 bytes .../resources/img/system/netboot-xyz-16.png | Bin 0 -> 419 bytes .../img/system/netboot-xyz-24-dark.png | Bin 0 -> 510 bytes .../resources/img/system/netboot-xyz-24.png | Bin 0 -> 599 bytes .../img/system/netboot-xyz-40-dark.png | Bin 0 -> 814 bytes .../resources/img/system/netboot-xyz-40.png | Bin 0 -> 985 bytes .../resources/img/system/netdata-16-dark.png | Bin 0 -> 325 bytes .../app/resources/img/system/netdata-16.png | Bin 0 -> 391 bytes .../resources/img/system/netdata-24-dark.png | Bin 0 -> 385 bytes .../app/resources/img/system/netdata-24.png | Bin 0 -> 462 bytes .../resources/img/system/netdata-40-dark.png | Bin 0 -> 648 bytes .../app/resources/img/system/netdata-40.png | Bin 0 -> 794 bytes .../app/resources/img/system/netlify-16.png | Bin 0 -> 742 bytes .../app/resources/img/system/netlify-24.png | Bin 0 -> 1200 bytes .../app/resources/img/system/netlify-40.png | Bin 0 -> 2376 bytes .../app/resources/img/system/newsblur-16.png | Bin 0 -> 824 bytes .../app/resources/img/system/newsblur-24.png | Bin 0 -> 1423 bytes .../app/resources/img/system/newsblur-40.png | Bin 0 -> 2730 bytes .../img/system/nextcloud-16-dark.png | Bin 0 -> 294 bytes .../app/resources/img/system/nextcloud-16.png | Bin 0 -> 420 bytes .../img/system/nextcloud-24-dark.png | Bin 0 -> 465 bytes .../app/resources/img/system/nextcloud-24.png | Bin 0 -> 653 bytes .../img/system/nextcloud-40-dark.png | Bin 0 -> 702 bytes .../app/resources/img/system/nextcloud-40.png | Bin 0 -> 1104 bytes .../img/system/nextcloud-news-16-dark.png | Bin 0 -> 278 bytes .../img/system/nextcloud-news-16.png | Bin 0 -> 333 bytes .../img/system/nextcloud-news-24-dark.png | Bin 0 -> 337 bytes .../img/system/nextcloud-news-24.png | Bin 0 -> 420 bytes .../img/system/nextcloud-news-40-dark.png | Bin 0 -> 449 bytes .../img/system/nextcloud-news-40.png | Bin 0 -> 531 bytes .../img/system/nextcloud-social-16-dark.png | Bin 0 -> 329 bytes .../img/system/nextcloud-social-16.png | Bin 0 -> 455 bytes .../img/system/nextcloud-social-24-dark.png | Bin 0 -> 430 bytes .../img/system/nextcloud-social-24.png | Bin 0 -> 622 bytes .../img/system/nextcloud-social-40-dark.png | Bin 0 -> 686 bytes .../img/system/nextcloud-social-40.png | Bin 0 -> 1022 bytes .../img/system/nextcloud-tables-16-dark.png | Bin 0 -> 246 bytes .../img/system/nextcloud-tables-16.png | Bin 0 -> 303 bytes .../img/system/nextcloud-tables-24-dark.png | Bin 0 -> 291 bytes .../img/system/nextcloud-tables-24.png | Bin 0 -> 232 bytes .../img/system/nextcloud-tables-40-dark.png | Bin 0 -> 313 bytes .../img/system/nextcloud-tables-40.png | Bin 0 -> 405 bytes .../img/system/nginx-proxy-manager-16.png | Bin 0 -> 912 bytes .../img/system/nginx-proxy-manager-24.png | Bin 0 -> 1625 bytes .../img/system/nginx-proxy-manager-40.png | Bin 0 -> 3233 bytes .../img/system/nintendo-switch-16-dark.png | Bin 0 -> 403 bytes .../img/system/nintendo-switch-16.png | Bin 0 -> 567 bytes .../img/system/nintendo-switch-24-dark.png | Bin 0 -> 615 bytes .../img/system/nintendo-switch-24.png | Bin 0 -> 841 bytes .../img/system/nintendo-switch-40-dark.png | Bin 0 -> 990 bytes .../img/system/nintendo-switch-40.png | Bin 0 -> 1417 bytes .../resources/img/system/nocodb-16-dark.png | Bin 0 -> 366 bytes .../app/resources/img/system/nocodb-16.png | Bin 0 -> 636 bytes .../resources/img/system/nocodb-24-dark.png | Bin 0 -> 464 bytes .../app/resources/img/system/nocodb-24.png | Bin 0 -> 942 bytes .../resources/img/system/nocodb-40-dark.png | Bin 0 -> 777 bytes .../app/resources/img/system/nocodb-40.png | Bin 0 -> 1496 bytes .../app/resources/img/system/node-red-16.png | Bin 0 -> 537 bytes .../app/resources/img/system/node-red-24.png | Bin 0 -> 802 bytes .../app/resources/img/system/node-red-40.png | Bin 0 -> 1346 bytes .../app/resources/img/system/nodebb-16.png | Bin 0 -> 600 bytes .../app/resources/img/system/nodebb-24.png | Bin 0 -> 884 bytes .../app/resources/img/system/nodebb-40.png | Bin 0 -> 1429 bytes .../resources/img/system/nordvpn-16-dark.png | Bin 0 -> 383 bytes .../app/resources/img/system/nordvpn-16.png | Bin 0 -> 480 bytes .../resources/img/system/nordvpn-24-dark.png | Bin 0 -> 528 bytes .../app/resources/img/system/nordvpn-24.png | Bin 0 -> 670 bytes .../resources/img/system/nordvpn-40-dark.png | Bin 0 -> 793 bytes .../app/resources/img/system/nordvpn-40.png | Bin 0 -> 1074 bytes .../app/resources/img/system/note-mark-16.png | Bin 0 -> 764 bytes .../app/resources/img/system/note-mark-24.png | Bin 0 -> 1141 bytes .../app/resources/img/system/note-mark-40.png | Bin 0 -> 1997 bytes .../img/system/notesnook-16-dark.png | Bin 0 -> 478 bytes .../app/resources/img/system/notesnook-16.png | Bin 0 -> 460 bytes .../img/system/notesnook-24-dark.png | Bin 0 -> 727 bytes .../app/resources/img/system/notesnook-24.png | Bin 0 -> 728 bytes .../img/system/notesnook-40-dark.png | Bin 0 -> 1161 bytes .../app/resources/img/system/notesnook-40.png | Bin 0 -> 1131 bytes .../resources/img/system/notion-16-dark.png | Bin 0 -> 500 bytes .../app/resources/img/system/notion-16.png | Bin 0 -> 740 bytes .../resources/img/system/notion-24-dark.png | Bin 0 -> 687 bytes .../app/resources/img/system/notion-24.png | Bin 0 -> 1070 bytes .../resources/img/system/notion-40-dark.png | Bin 0 -> 1048 bytes .../app/resources/img/system/notion-40.png | Bin 0 -> 1634 bytes .../app/resources/img/system/ntfy-16-dark.png | Bin 0 -> 376 bytes .../app/resources/img/system/ntfy-16.png | Bin 0 -> 568 bytes .../app/resources/img/system/ntfy-24-dark.png | Bin 0 -> 520 bytes .../app/resources/img/system/ntfy-24.png | Bin 0 -> 797 bytes .../app/resources/img/system/ntfy-40-dark.png | Bin 0 -> 805 bytes .../app/resources/img/system/ntfy-40.png | Bin 0 -> 1318 bytes .../app/resources/img/system/obsidian-16.png | Bin 0 -> 597 bytes .../app/resources/img/system/obsidian-24.png | Bin 0 -> 881 bytes .../app/resources/img/system/obsidian-40.png | Bin 0 -> 1531 bytes .../app/resources/img/system/obtainium-16.png | Bin 0 -> 656 bytes .../app/resources/img/system/obtainium-24.png | Bin 0 -> 980 bytes .../app/resources/img/system/obtainium-40.png | Bin 0 -> 1646 bytes .../app/resources/img/system/octoprint-16.png | Bin 0 -> 545 bytes .../app/resources/img/system/octoprint-24.png | Bin 0 -> 744 bytes .../app/resources/img/system/octoprint-40.png | Bin 0 -> 1270 bytes .../app/resources/img/system/olivetin-16.png | Bin 0 -> 632 bytes .../app/resources/img/system/olivetin-24.png | Bin 0 -> 909 bytes .../app/resources/img/system/olivetin-40.png | Bin 0 -> 1484 bytes .../app/resources/img/system/omada-16.png | Bin 0 -> 456 bytes .../app/resources/img/system/omada-24.png | Bin 0 -> 738 bytes .../app/resources/img/system/omada-40.png | Bin 0 -> 1398 bytes .../app/resources/img/system/ombi-16.png | Bin 0 -> 682 bytes .../app/resources/img/system/ombi-24.png | Bin 0 -> 1033 bytes .../app/resources/img/system/ombi-40.png | Bin 0 -> 1890 bytes .../app/resources/img/system/omnivore-16.png | Bin 0 -> 764 bytes .../app/resources/img/system/omnivore-24.png | Bin 0 -> 1216 bytes .../app/resources/img/system/omnivore-40.png | Bin 0 -> 2109 bytes .../resources/img/system/onedev-16-dark.png | Bin 0 -> 514 bytes .../app/resources/img/system/onedev-16.png | Bin 0 -> 469 bytes .../resources/img/system/onedev-24-dark.png | Bin 0 -> 737 bytes .../app/resources/img/system/onedev-24.png | Bin 0 -> 673 bytes .../resources/img/system/onedev-40-dark.png | Bin 0 -> 1229 bytes .../app/resources/img/system/onedev-40.png | Bin 0 -> 1148 bytes .../img/system/oneuptime-16-dark.png | Bin 0 -> 359 bytes .../app/resources/img/system/oneuptime-16.png | Bin 0 -> 414 bytes .../img/system/oneuptime-24-dark.png | Bin 0 -> 472 bytes .../app/resources/img/system/oneuptime-24.png | Bin 0 -> 589 bytes .../img/system/oneuptime-40-dark.png | Bin 0 -> 682 bytes .../app/resources/img/system/oneuptime-40.png | Bin 0 -> 809 bytes .../img/system/open-source-initiative-16.png | Bin 0 -> 751 bytes .../img/system/open-source-initiative-24.png | Bin 0 -> 1109 bytes .../img/system/open-source-initiative-40.png | Bin 0 -> 1984 bytes .../img/system/openchangelog-16-dark.png | Bin 0 -> 495 bytes .../resources/img/system/openchangelog-16.png | Bin 0 -> 459 bytes .../img/system/openchangelog-24-dark.png | Bin 0 -> 720 bytes .../resources/img/system/openchangelog-24.png | Bin 0 -> 676 bytes .../img/system/openchangelog-40-dark.png | Bin 0 -> 1282 bytes .../resources/img/system/openchangelog-40.png | Bin 0 -> 1192 bytes .../resources/img/system/openemr-16-dark.png | Bin 0 -> 453 bytes .../app/resources/img/system/openemr-16.png | Bin 0 -> 435 bytes .../resources/img/system/openemr-24-dark.png | Bin 0 -> 686 bytes .../app/resources/img/system/openemr-24.png | Bin 0 -> 621 bytes .../resources/img/system/openemr-40-dark.png | Bin 0 -> 1122 bytes .../app/resources/img/system/openemr-40.png | Bin 0 -> 1011 bytes .../app/resources/img/system/openldap-16.png | Bin 0 -> 609 bytes .../app/resources/img/system/openldap-24.png | Bin 0 -> 914 bytes .../app/resources/img/system/openldap-40.png | Bin 0 -> 1657 bytes .../img/system/openpanel-16-dark.png | Bin 0 -> 398 bytes .../app/resources/img/system/openpanel-16.png | Bin 0 -> 368 bytes .../img/system/openpanel-24-dark.png | Bin 0 -> 538 bytes .../app/resources/img/system/openpanel-24.png | Bin 0 -> 523 bytes .../img/system/openpanel-40-dark.png | Bin 0 -> 856 bytes .../app/resources/img/system/openpanel-40.png | Bin 0 -> 762 bytes .../app/resources/img/system/openreads-16.png | Bin 0 -> 551 bytes .../app/resources/img/system/openreads-24.png | Bin 0 -> 921 bytes .../app/resources/img/system/openreads-40.png | Bin 0 -> 1490 bytes .../img/system/openspeedtest-16-dark.png | Bin 0 -> 562 bytes .../resources/img/system/openspeedtest-16.png | Bin 0 -> 822 bytes .../img/system/openspeedtest-24-dark.png | Bin 0 -> 870 bytes .../resources/img/system/openspeedtest-24.png | Bin 0 -> 1284 bytes .../img/system/openspeedtest-40-dark.png | Bin 0 -> 1436 bytes .../resources/img/system/openspeedtest-40.png | Bin 0 -> 2400 bytes .../app/resources/img/system/opentalk-16.png | Bin 0 -> 711 bytes .../app/resources/img/system/opentalk-24.png | Bin 0 -> 1092 bytes .../app/resources/img/system/opentalk-40.png | Bin 0 -> 1813 bytes .../resources/img/system/opentofu-16-dark.png | Bin 0 -> 431 bytes .../app/resources/img/system/opentofu-16.png | Bin 0 -> 763 bytes .../resources/img/system/opentofu-24-dark.png | Bin 0 -> 591 bytes .../app/resources/img/system/opentofu-24.png | Bin 0 -> 1201 bytes .../resources/img/system/opentofu-40-dark.png | Bin 0 -> 1008 bytes .../app/resources/img/system/opentofu-40.png | Bin 0 -> 2103 bytes .../resources/img/system/openvpn-16-dark.png | Bin 0 -> 619 bytes .../app/resources/img/system/openvpn-16.png | Bin 0 -> 666 bytes .../resources/img/system/openvpn-24-dark.png | Bin 0 -> 912 bytes .../app/resources/img/system/openvpn-24.png | Bin 0 -> 997 bytes .../resources/img/system/openvpn-40-dark.png | Bin 0 -> 1431 bytes .../app/resources/img/system/openvpn-40.png | Bin 0 -> 1579 bytes .../resources/img/system/openwrt-16-dark.png | Bin 0 -> 598 bytes .../app/resources/img/system/openwrt-16.png | Bin 0 -> 690 bytes .../resources/img/system/openwrt-24-dark.png | Bin 0 -> 919 bytes .../app/resources/img/system/openwrt-24.png | Bin 0 -> 1049 bytes .../resources/img/system/openwrt-40-dark.png | Bin 0 -> 1600 bytes .../app/resources/img/system/openwrt-40.png | Bin 0 -> 1846 bytes .../app/resources/img/system/opnsense-16.png | Bin 0 -> 791 bytes .../app/resources/img/system/opnsense-24.png | Bin 0 -> 1306 bytes .../app/resources/img/system/opnsense-40.png | Bin 0 -> 2374 bytes .../app/resources/img/system/outline-16.png | Bin 0 -> 463 bytes .../app/resources/img/system/outline-24.png | Bin 0 -> 757 bytes .../app/resources/img/system/outline-40.png | Bin 0 -> 1315 bytes .../app/resources/img/system/overleaf-16.png | Bin 0 -> 624 bytes .../app/resources/img/system/overleaf-24.png | Bin 0 -> 957 bytes .../app/resources/img/system/overleaf-40.png | Bin 0 -> 1699 bytes .../app/resources/img/system/overseerr-16.png | Bin 0 -> 732 bytes .../app/resources/img/system/overseerr-24.png | Bin 0 -> 1103 bytes .../app/resources/img/system/overseerr-40.png | Bin 0 -> 1932 bytes .../app/resources/img/system/owncast-16.png | Bin 0 -> 712 bytes .../app/resources/img/system/owncast-24.png | Bin 0 -> 1110 bytes .../app/resources/img/system/owncast-40.png | Bin 0 -> 2011 bytes .../resources/img/system/owncloud-16-dark.png | Bin 0 -> 370 bytes .../app/resources/img/system/owncloud-16.png | Bin 0 -> 491 bytes .../resources/img/system/owncloud-24-dark.png | Bin 0 -> 527 bytes .../app/resources/img/system/owncloud-24.png | Bin 0 -> 696 bytes .../resources/img/system/owncloud-40-dark.png | Bin 0 -> 909 bytes .../app/resources/img/system/owncloud-40.png | Bin 0 -> 1206 bytes .../app/resources/img/system/owntone-16.png | Bin 0 -> 681 bytes .../app/resources/img/system/owntone-24.png | Bin 0 -> 989 bytes .../app/resources/img/system/owntone-40.png | Bin 0 -> 1696 bytes .../app/resources/img/system/oxker-16.png | Bin 0 -> 883 bytes .../app/resources/img/system/oxker-24.png | Bin 0 -> 1463 bytes .../app/resources/img/system/oxker-40.png | Bin 0 -> 2619 bytes .../img/system/paperless-ngx-16-dark.png | Bin 0 -> 378 bytes .../resources/img/system/paperless-ngx-16.png | Bin 0 -> 495 bytes .../img/system/paperless-ngx-24-dark.png | Bin 0 -> 490 bytes .../resources/img/system/paperless-ngx-24.png | Bin 0 -> 685 bytes .../img/system/paperless-ngx-40-dark.png | Bin 0 -> 843 bytes .../resources/img/system/paperless-ngx-40.png | Bin 0 -> 1197 bytes .../img/system/papermark-16-dark.png | Bin 0 -> 373 bytes .../app/resources/img/system/papermark-16.png | Bin 0 -> 350 bytes .../img/system/papermark-24-dark.png | Bin 0 -> 543 bytes .../app/resources/img/system/papermark-24.png | Bin 0 -> 488 bytes .../img/system/papermark-40-dark.png | Bin 0 -> 885 bytes .../app/resources/img/system/papermark-40.png | Bin 0 -> 784 bytes .../resources/img/system/papermerge-16.png | Bin 0 -> 758 bytes .../resources/img/system/papermerge-24.png | Bin 0 -> 1173 bytes .../resources/img/system/papermerge-40.png | Bin 0 -> 1819 bytes .../app/resources/img/system/parseable-16.png | Bin 0 -> 638 bytes .../app/resources/img/system/parseable-24.png | Bin 0 -> 891 bytes .../app/resources/img/system/parseable-40.png | Bin 0 -> 1272 bytes .../app/resources/img/system/passbolt-16.png | Bin 0 -> 521 bytes .../app/resources/img/system/passbolt-24.png | Bin 0 -> 716 bytes .../app/resources/img/system/passbolt-40.png | Bin 0 -> 1134 bytes .../resources/img/system/payload-16-dark.png | Bin 0 -> 462 bytes .../app/resources/img/system/payload-16.png | Bin 0 -> 460 bytes .../resources/img/system/payload-24-dark.png | Bin 0 -> 613 bytes .../app/resources/img/system/payload-24.png | Bin 0 -> 605 bytes .../resources/img/system/payload-40-dark.png | Bin 0 -> 999 bytes .../app/resources/img/system/payload-40.png | Bin 0 -> 977 bytes .../resources/img/system/pdfding-16-dark.png | Bin 0 -> 364 bytes .../app/resources/img/system/pdfding-16.png | Bin 0 -> 344 bytes .../resources/img/system/pdfding-24-dark.png | Bin 0 -> 475 bytes .../app/resources/img/system/pdfding-24.png | Bin 0 -> 467 bytes .../resources/img/system/pdfding-40-dark.png | Bin 0 -> 744 bytes .../app/resources/img/system/pdfding-40.png | Bin 0 -> 704 bytes .../app/resources/img/system/peanut-16.png | Bin 0 -> 793 bytes .../app/resources/img/system/peanut-24.png | Bin 0 -> 1396 bytes .../app/resources/img/system/peanut-40.png | Bin 0 -> 2832 bytes .../app/resources/img/system/peertube-16.png | Bin 0 -> 483 bytes .../app/resources/img/system/peertube-24.png | Bin 0 -> 646 bytes .../app/resources/img/system/peertube-40.png | Bin 0 -> 893 bytes .../resources/img/system/pelican-panel-16.png | Bin 0 -> 883 bytes .../resources/img/system/pelican-panel-24.png | Bin 0 -> 1488 bytes .../resources/img/system/pelican-panel-40.png | Bin 0 -> 2889 bytes .../resources/img/system/penpot-16-dark.png | Bin 0 -> 439 bytes .../app/resources/img/system/penpot-16.png | Bin 0 -> 406 bytes .../resources/img/system/penpot-24-dark.png | Bin 0 -> 628 bytes .../app/resources/img/system/penpot-24.png | Bin 0 -> 569 bytes .../resources/img/system/penpot-40-dark.png | Bin 0 -> 1046 bytes .../app/resources/img/system/penpot-40.png | Bin 0 -> 955 bytes .../resources/img/system/peppermint-16.png | Bin 0 -> 583 bytes .../resources/img/system/peppermint-24.png | Bin 0 -> 866 bytes .../resources/img/system/peppermint-40.png | Bin 0 -> 1518 bytes .../img/system/pepperminty-wiki-16.png | Bin 0 -> 583 bytes .../img/system/pepperminty-wiki-24.png | Bin 0 -> 1048 bytes .../img/system/pepperminty-wiki-40.png | Bin 0 -> 2215 bytes .../resources/img/system/pfsense-16-dark.png | Bin 0 -> 447 bytes .../app/resources/img/system/pfsense-16.png | Bin 0 -> 633 bytes .../resources/img/system/pfsense-24-dark.png | Bin 0 -> 595 bytes .../app/resources/img/system/pfsense-24.png | Bin 0 -> 889 bytes .../resources/img/system/pfsense-40-dark.png | Bin 0 -> 985 bytes .../app/resources/img/system/pfsense-40.png | Bin 0 -> 1469 bytes .../resources/img/system/pg-back-web-16.png | Bin 0 -> 1064 bytes .../resources/img/system/pg-back-web-24.png | Bin 0 -> 1824 bytes .../resources/img/system/pg-back-web-40.png | Bin 0 -> 3461 bytes .../resources/img/system/photopea-16-dark.png | Bin 0 -> 445 bytes .../app/resources/img/system/photopea-16.png | Bin 0 -> 580 bytes .../resources/img/system/photopea-24-dark.png | Bin 0 -> 615 bytes .../app/resources/img/system/photopea-24.png | Bin 0 -> 875 bytes .../resources/img/system/photopea-40-dark.png | Bin 0 -> 950 bytes .../app/resources/img/system/photopea-40.png | Bin 0 -> 1388 bytes .../resources/img/system/photoprism-16.png | Bin 0 -> 745 bytes .../resources/img/system/photoprism-24.png | Bin 0 -> 1195 bytes .../resources/img/system/photoprism-40.png | Bin 0 -> 2104 bytes .../app/resources/img/system/photoview-16.png | Bin 0 -> 619 bytes .../app/resources/img/system/photoview-24.png | Bin 0 -> 872 bytes .../app/resources/img/system/photoview-40.png | Bin 0 -> 1629 bytes .../app/resources/img/system/pi-hole-16.png | Bin 0 -> 630 bytes .../app/resources/img/system/pi-hole-24.png | Bin 0 -> 910 bytes .../app/resources/img/system/pi-hole-40.png | Bin 0 -> 1548 bytes .../resources/img/system/pikapods-16-dark.png | Bin 0 -> 323 bytes .../app/resources/img/system/pikapods-16.png | Bin 0 -> 450 bytes .../resources/img/system/pikapods-24-dark.png | Bin 0 -> 436 bytes .../app/resources/img/system/pikapods-24.png | Bin 0 -> 659 bytes .../resources/img/system/pikapods-40-dark.png | Bin 0 -> 684 bytes .../app/resources/img/system/pikapods-40.png | Bin 0 -> 1010 bytes .../resources/img/system/pingvin-share-16.png | Bin 0 -> 595 bytes .../resources/img/system/pingvin-share-24.png | Bin 0 -> 902 bytes .../resources/img/system/pingvin-share-40.png | Bin 0 -> 1511 bytes .../app/resources/img/system/pinkary-16.png | Bin 0 -> 627 bytes .../app/resources/img/system/pinkary-24.png | Bin 0 -> 908 bytes .../app/resources/img/system/pinkary-40.png | Bin 0 -> 1504 bytes .../app/resources/img/system/piwigo-16.png | Bin 0 -> 643 bytes .../app/resources/img/system/piwigo-24.png | Bin 0 -> 925 bytes .../app/resources/img/system/piwigo-40.png | Bin 0 -> 1543 bytes .../app/resources/img/system/pixelfed-16.png | Bin 0 -> 900 bytes .../app/resources/img/system/pixelfed-24.png | Bin 0 -> 1435 bytes .../app/resources/img/system/pixelfed-40.png | Bin 0 -> 2625 bytes .../app/resources/img/system/plane-16.png | Bin 0 -> 261 bytes .../app/resources/img/system/plane-24.png | Bin 0 -> 236 bytes .../app/resources/img/system/plane-40.png | Bin 0 -> 313 bytes .../app/resources/img/system/plausible-16.png | Bin 0 -> 618 bytes .../app/resources/img/system/plausible-24.png | Bin 0 -> 896 bytes .../app/resources/img/system/plausible-40.png | Bin 0 -> 1470 bytes .../app/resources/img/system/pleroma-16.png | Bin 0 -> 231 bytes .../app/resources/img/system/pleroma-24.png | Bin 0 -> 289 bytes .../app/resources/img/system/pleroma-40.png | Bin 0 -> 381 bytes .../app/resources/img/system/plex-16.png | Bin 0 -> 460 bytes .../app/resources/img/system/plex-24.png | Bin 0 -> 642 bytes .../app/resources/img/system/plex-40.png | Bin 0 -> 997 bytes .../resources/img/system/plex-rewind-16.png | Bin 0 -> 629 bytes .../resources/img/system/plex-rewind-24.png | Bin 0 -> 1008 bytes .../resources/img/system/plex-rewind-40.png | Bin 0 -> 1570 bytes .../img/system/pocket-casts-16-dark.png | Bin 0 -> 447 bytes .../resources/img/system/pocket-casts-16.png | Bin 0 -> 815 bytes .../img/system/pocket-casts-24-dark.png | Bin 0 -> 719 bytes .../resources/img/system/pocket-casts-24.png | Bin 0 -> 1266 bytes .../img/system/pocket-casts-40-dark.png | Bin 0 -> 1236 bytes .../resources/img/system/pocket-casts-40.png | Bin 0 -> 2143 bytes .../img/system/pocket-id-16-dark.png | Bin 0 -> 476 bytes .../app/resources/img/system/pocket-id-16.png | Bin 0 -> 443 bytes .../img/system/pocket-id-24-dark.png | Bin 0 -> 676 bytes .../app/resources/img/system/pocket-id-24.png | Bin 0 -> 653 bytes .../img/system/pocket-id-40-dark.png | Bin 0 -> 1034 bytes .../app/resources/img/system/pocket-id-40.png | Bin 0 -> 987 bytes .../resources/img/system/podfetch-16-dark.png | Bin 0 -> 465 bytes .../app/resources/img/system/podfetch-16.png | Bin 0 -> 455 bytes .../resources/img/system/podfetch-24-dark.png | Bin 0 -> 677 bytes .../app/resources/img/system/podfetch-24.png | Bin 0 -> 659 bytes .../resources/img/system/podfetch-40-dark.png | Bin 0 -> 1075 bytes .../app/resources/img/system/podfetch-40.png | Bin 0 -> 1035 bytes .../app/resources/img/system/podman-16.png | Bin 0 -> 961 bytes .../app/resources/img/system/podman-24.png | Bin 0 -> 1617 bytes .../app/resources/img/system/podman-40.png | Bin 0 -> 3266 bytes .../app/resources/img/system/portainer-16.png | Bin 0 -> 648 bytes .../app/resources/img/system/portainer-24.png | Bin 0 -> 992 bytes .../app/resources/img/system/portainer-40.png | Bin 0 -> 1643 bytes .../app/resources/img/system/postal-16.png | Bin 0 -> 434 bytes .../app/resources/img/system/postal-24.png | Bin 0 -> 591 bytes .../app/resources/img/system/postal-40.png | Bin 0 -> 884 bytes .../resources/img/system/postgresql-16.png | Bin 0 -> 829 bytes .../resources/img/system/postgresql-24.png | Bin 0 -> 1319 bytes .../resources/img/system/postgresql-40.png | Bin 0 -> 2658 bytes .../app/resources/img/system/posthog-16.png | Bin 0 -> 569 bytes .../app/resources/img/system/posthog-24.png | Bin 0 -> 718 bytes .../app/resources/img/system/posthog-40.png | Bin 0 -> 1213 bytes .../img/system/private-internet-access-16.png | Bin 0 -> 615 bytes .../img/system/private-internet-access-24.png | Bin 0 -> 903 bytes .../img/system/private-internet-access-40.png | Bin 0 -> 1556 bytes .../resources/img/system/privatebin-16.png | Bin 0 -> 521 bytes .../resources/img/system/privatebin-24.png | Bin 0 -> 771 bytes .../resources/img/system/privatebin-40.png | Bin 0 -> 1575 bytes .../resources/img/system/projectsend-16.png | Bin 0 -> 692 bytes .../resources/img/system/projectsend-24.png | Bin 0 -> 1043 bytes .../resources/img/system/projectsend-40.png | Bin 0 -> 1650 bytes .../resources/img/system/prometheus-16.png | Bin 0 -> 660 bytes .../resources/img/system/prometheus-24.png | Bin 0 -> 950 bytes .../resources/img/system/prometheus-40.png | Bin 0 -> 1515 bytes .../app/resources/img/system/prowlarr-16.png | Bin 0 -> 889 bytes .../app/resources/img/system/prowlarr-24.png | Bin 0 -> 1473 bytes .../app/resources/img/system/prowlarr-40.png | Bin 0 -> 2833 bytes .../resources/img/system/proxmox-16-dark.png | Bin 0 -> 615 bytes .../app/resources/img/system/proxmox-16.png | Bin 0 -> 575 bytes .../resources/img/system/proxmox-24-dark.png | Bin 0 -> 948 bytes .../app/resources/img/system/proxmox-24.png | Bin 0 -> 900 bytes .../resources/img/system/proxmox-40-dark.png | Bin 0 -> 1662 bytes .../app/resources/img/system/proxmox-40.png | Bin 0 -> 1582 bytes .../resources/img/system/pterodactyl-16.png | Bin 0 -> 640 bytes .../resources/img/system/pterodactyl-24.png | Bin 0 -> 1040 bytes .../resources/img/system/pterodactyl-40.png | Bin 0 -> 2011 bytes .../resources/img/system/pushover-16-dark.png | Bin 0 -> 432 bytes .../app/resources/img/system/pushover-16.png | Bin 0 -> 656 bytes .../resources/img/system/pushover-24-dark.png | Bin 0 -> 692 bytes .../app/resources/img/system/pushover-24.png | Bin 0 -> 1015 bytes .../resources/img/system/pushover-40-dark.png | Bin 0 -> 1112 bytes .../app/resources/img/system/pushover-40.png | Bin 0 -> 1743 bytes .../app/resources/img/system/pyload-16.png | Bin 0 -> 638 bytes .../app/resources/img/system/pyload-24.png | Bin 0 -> 911 bytes .../app/resources/img/system/pyload-40.png | Bin 0 -> 1513 bytes .../resources/img/system/python-16-dark.png | Bin 0 -> 424 bytes .../app/resources/img/system/python-16.png | Bin 0 -> 594 bytes .../resources/img/system/python-24-dark.png | Bin 0 -> 591 bytes .../app/resources/img/system/python-24.png | Bin 0 -> 890 bytes .../resources/img/system/python-40-dark.png | Bin 0 -> 904 bytes .../app/resources/img/system/python-40.png | Bin 0 -> 1605 bytes .../resources/img/system/qbittorrent-16.png | Bin 0 -> 866 bytes .../resources/img/system/qbittorrent-24.png | Bin 0 -> 1360 bytes .../resources/img/system/qbittorrent-40.png | Bin 0 -> 2591 bytes .../app/resources/img/system/quickwit-16.png | Bin 0 -> 566 bytes .../app/resources/img/system/quickwit-24.png | Bin 0 -> 875 bytes .../app/resources/img/system/quickwit-40.png | Bin 0 -> 1449 bytes .../resources/img/system/radarr-16-dark.png | Bin 0 -> 536 bytes .../app/resources/img/system/radarr-16.png | Bin 0 -> 730 bytes .../resources/img/system/radarr-24-dark.png | Bin 0 -> 741 bytes .../app/resources/img/system/radarr-24.png | Bin 0 -> 1073 bytes .../resources/img/system/radarr-40-dark.png | Bin 0 -> 1227 bytes .../app/resources/img/system/radarr-40.png | Bin 0 -> 1724 bytes .../app/resources/img/system/radicale-16.png | Bin 0 -> 487 bytes .../app/resources/img/system/radicale-24.png | Bin 0 -> 721 bytes .../app/resources/img/system/radicale-40.png | Bin 0 -> 1273 bytes .../resources/img/system/rallly-16-dark.png | Bin 0 -> 346 bytes .../app/resources/img/system/rallly-16.png | Bin 0 -> 422 bytes .../resources/img/system/rallly-24-dark.png | Bin 0 -> 427 bytes .../app/resources/img/system/rallly-24.png | Bin 0 -> 586 bytes .../resources/img/system/rallly-40-dark.png | Bin 0 -> 645 bytes .../app/resources/img/system/rallly-40.png | Bin 0 -> 863 bytes .../resources/img/system/rancher-16-dark.png | Bin 0 -> 285 bytes .../app/resources/img/system/rancher-16.png | Bin 0 -> 354 bytes .../resources/img/system/rancher-24-dark.png | Bin 0 -> 396 bytes .../app/resources/img/system/rancher-24.png | Bin 0 -> 459 bytes .../resources/img/system/rancher-40-dark.png | Bin 0 -> 562 bytes .../app/resources/img/system/rancher-40.png | Bin 0 -> 659 bytes .../resources/img/system/raspberry-pi-16.png | Bin 0 -> 831 bytes .../resources/img/system/raspberry-pi-24.png | Bin 0 -> 1352 bytes .../resources/img/system/raspberry-pi-40.png | Bin 0 -> 2534 bytes .../app/resources/img/system/rclone-16.png | Bin 0 -> 726 bytes .../app/resources/img/system/rclone-24.png | Bin 0 -> 1083 bytes .../app/resources/img/system/rclone-40.png | Bin 0 -> 1752 bytes .../img/system/reactive-resume-16-dark.png | Bin 0 -> 510 bytes .../img/system/reactive-resume-16.png | Bin 0 -> 527 bytes .../img/system/reactive-resume-24-dark.png | Bin 0 -> 805 bytes .../img/system/reactive-resume-24.png | Bin 0 -> 805 bytes .../img/system/reactive-resume-40-dark.png | Bin 0 -> 1266 bytes .../img/system/reactive-resume-40.png | Bin 0 -> 1239 bytes .../app/resources/img/system/readarr-16.png | Bin 0 -> 803 bytes .../app/resources/img/system/readarr-24.png | Bin 0 -> 1528 bytes .../app/resources/img/system/readarr-40.png | Bin 0 -> 3044 bytes .../app/resources/img/system/readeck-16.png | Bin 0 -> 628 bytes .../app/resources/img/system/readeck-24.png | Bin 0 -> 920 bytes .../app/resources/img/system/readeck-40.png | Bin 0 -> 1443 bytes .../img/system/receipt-wrangler-16.png | Bin 0 -> 455 bytes .../img/system/receipt-wrangler-24.png | Bin 0 -> 638 bytes .../img/system/receipt-wrangler-40.png | Bin 0 -> 980 bytes .../resources/img/system/recipesage-16.png | Bin 0 -> 681 bytes .../resources/img/system/recipesage-24.png | Bin 0 -> 1063 bytes .../resources/img/system/recipesage-40.png | Bin 0 -> 1800 bytes .../app/resources/img/system/redict-16.png | Bin 0 -> 637 bytes .../app/resources/img/system/redict-24.png | Bin 0 -> 886 bytes .../app/resources/img/system/redict-40.png | Bin 0 -> 1281 bytes .../app/resources/img/system/redlib-16.png | Bin 0 -> 558 bytes .../app/resources/img/system/redlib-24.png | Bin 0 -> 701 bytes .../app/resources/img/system/redlib-40.png | Bin 0 -> 1087 bytes .../resources/img/system/reolink-16-dark.png | Bin 0 -> 439 bytes .../app/resources/img/system/reolink-16.png | Bin 0 -> 634 bytes .../resources/img/system/reolink-24-dark.png | Bin 0 -> 615 bytes .../app/resources/img/system/reolink-24.png | Bin 0 -> 874 bytes .../resources/img/system/reolink-40-dark.png | Bin 0 -> 1026 bytes .../app/resources/img/system/reolink-40.png | Bin 0 -> 1466 bytes .../app/resources/img/system/requestly-16.png | Bin 0 -> 700 bytes .../app/resources/img/system/requestly-24.png | Bin 0 -> 1056 bytes .../app/resources/img/system/requestly-40.png | Bin 0 -> 1850 bytes .../resources/img/system/restreamer-16.png | Bin 0 -> 576 bytes .../resources/img/system/restreamer-24.png | Bin 0 -> 833 bytes .../resources/img/system/restreamer-40.png | Bin 0 -> 1383 bytes .../app/resources/img/system/rhasspy-16.png | Bin 0 -> 733 bytes .../app/resources/img/system/rhasspy-24.png | Bin 0 -> 1126 bytes .../app/resources/img/system/rhasspy-40.png | Bin 0 -> 1926 bytes .../app/resources/img/system/richy-16.png | Bin 0 -> 665 bytes .../app/resources/img/system/richy-24.png | Bin 0 -> 1006 bytes .../app/resources/img/system/richy-40.png | Bin 0 -> 1542 bytes .../resources/img/system/rocket-chat-16.png | Bin 0 -> 646 bytes .../resources/img/system/rocket-chat-24.png | Bin 0 -> 1029 bytes .../resources/img/system/rocket-chat-40.png | Bin 0 -> 1706 bytes .../app/resources/img/system/romm-16.png | Bin 0 -> 888 bytes .../app/resources/img/system/romm-24.png | Bin 0 -> 1399 bytes .../app/resources/img/system/romm-40.png | Bin 0 -> 2557 bytes .../app/resources/img/system/roundcube-16.png | Bin 0 -> 617 bytes .../app/resources/img/system/roundcube-24.png | Bin 0 -> 865 bytes .../app/resources/img/system/roundcube-40.png | Bin 0 -> 1380 bytes .../resources/img/system/rss-bridge-16.png | Bin 0 -> 351 bytes .../resources/img/system/rss-bridge-24.png | Bin 0 -> 490 bytes .../resources/img/system/rss-bridge-40.png | Bin 0 -> 917 bytes .../img/system/rss-translator-16.png | Bin 0 -> 510 bytes .../img/system/rss-translator-24.png | Bin 0 -> 720 bytes .../img/system/rss-translator-40.png | Bin 0 -> 1165 bytes .../app/resources/img/system/rundeck-16.png | Bin 0 -> 274 bytes .../app/resources/img/system/rundeck-24.png | Bin 0 -> 311 bytes .../app/resources/img/system/rundeck-40.png | Bin 0 -> 334 bytes .../resources/img/system/runson-16-dark.png | Bin 0 -> 544 bytes .../app/resources/img/system/runson-16.png | Bin 0 -> 510 bytes .../resources/img/system/runson-24-dark.png | Bin 0 -> 965 bytes .../app/resources/img/system/runson-24.png | Bin 0 -> 894 bytes .../resources/img/system/runson-40-dark.png | Bin 0 -> 1872 bytes .../app/resources/img/system/runson-40.png | Bin 0 -> 1717 bytes .../app/resources/img/system/sabnzbd-16.png | Bin 0 -> 611 bytes .../app/resources/img/system/sabnzbd-24.png | Bin 0 -> 822 bytes .../app/resources/img/system/sabnzbd-40.png | Bin 0 -> 1237 bytes .../app/resources/img/system/saltcorn-16.png | Bin 0 -> 707 bytes .../app/resources/img/system/saltcorn-24.png | Bin 0 -> 1050 bytes .../app/resources/img/system/saltcorn-40.png | Bin 0 -> 1678 bytes .../resources/img/system/scrutiny-16-dark.png | Bin 0 -> 612 bytes .../app/resources/img/system/scrutiny-16.png | Bin 0 -> 629 bytes .../resources/img/system/scrutiny-24-dark.png | Bin 0 -> 963 bytes .../app/resources/img/system/scrutiny-24.png | Bin 0 -> 974 bytes .../resources/img/system/scrutiny-40-dark.png | Bin 0 -> 1638 bytes .../app/resources/img/system/scrutiny-40.png | Bin 0 -> 1690 bytes .../app/resources/img/system/seafile-16.png | Bin 0 -> 557 bytes .../app/resources/img/system/seafile-24.png | Bin 0 -> 777 bytes .../app/resources/img/system/seafile-40.png | Bin 0 -> 1252 bytes .../img/system/secureai-tools-16-dark.png | Bin 0 -> 523 bytes .../img/system/secureai-tools-16.png | Bin 0 -> 691 bytes .../img/system/secureai-tools-24-dark.png | Bin 0 -> 817 bytes .../img/system/secureai-tools-24.png | Bin 0 -> 1118 bytes .../img/system/secureai-tools-40-dark.png | Bin 0 -> 1423 bytes .../img/system/secureai-tools-40.png | Bin 0 -> 1959 bytes .../app/resources/img/system/seelf-16.png | Bin 0 -> 671 bytes .../app/resources/img/system/seelf-24.png | Bin 0 -> 938 bytes .../app/resources/img/system/seelf-40.png | Bin 0 -> 1504 bytes .../img/system/self-hosted-gateway-16.png | Bin 0 -> 485 bytes .../img/system/self-hosted-gateway-24.png | Bin 0 -> 672 bytes .../img/system/self-hosted-gateway-40.png | Bin 0 -> 913 bytes .../app/resources/img/system/shaarli-16.png | Bin 0 -> 865 bytes .../app/resources/img/system/shaarli-24.png | Bin 0 -> 1400 bytes .../app/resources/img/system/shaarli-40.png | Bin 0 -> 2429 bytes .../resources/img/system/shellhub-16-dark.png | Bin 0 -> 399 bytes .../app/resources/img/system/shellhub-16.png | Bin 0 -> 551 bytes .../resources/img/system/shellhub-24-dark.png | Bin 0 -> 573 bytes .../app/resources/img/system/shellhub-24.png | Bin 0 -> 861 bytes .../resources/img/system/shellhub-40-dark.png | Bin 0 -> 880 bytes .../app/resources/img/system/shellhub-40.png | Bin 0 -> 1440 bytes .../app/resources/img/system/shlink-16.png | Bin 0 -> 555 bytes .../app/resources/img/system/shlink-24.png | Bin 0 -> 902 bytes .../app/resources/img/system/shlink-40.png | Bin 0 -> 1498 bytes .../img/system/shoko-server-16-dark.png | Bin 0 -> 458 bytes .../resources/img/system/shoko-server-16.png | Bin 0 -> 750 bytes .../img/system/shoko-server-24-dark.png | Bin 0 -> 639 bytes .../resources/img/system/shoko-server-24.png | Bin 0 -> 1096 bytes .../img/system/shoko-server-40-dark.png | Bin 0 -> 1113 bytes .../resources/img/system/shoko-server-40.png | Bin 0 -> 1834 bytes .../resources/img/system/signal-16-dark.png | Bin 0 -> 446 bytes .../app/resources/img/system/signal-16.png | Bin 0 -> 568 bytes .../resources/img/system/signal-24-dark.png | Bin 0 -> 726 bytes .../app/resources/img/system/signal-24.png | Bin 0 -> 990 bytes .../resources/img/system/signal-40-dark.png | Bin 0 -> 1272 bytes .../app/resources/img/system/signal-40.png | Bin 0 -> 2093 bytes .../img/system/simplex-chat-16-dark.png | Bin 0 -> 659 bytes .../resources/img/system/simplex-chat-16.png | Bin 0 -> 703 bytes .../img/system/simplex-chat-24-dark.png | Bin 0 -> 857 bytes .../resources/img/system/simplex-chat-24.png | Bin 0 -> 920 bytes .../img/system/simplex-chat-40-dark.png | Bin 0 -> 1520 bytes .../resources/img/system/simplex-chat-40.png | Bin 0 -> 1586 bytes .../resources/img/system/siyuan-16-dark.png | Bin 0 -> 414 bytes .../app/resources/img/system/siyuan-16.png | Bin 0 -> 461 bytes .../resources/img/system/siyuan-24-dark.png | Bin 0 -> 495 bytes .../app/resources/img/system/siyuan-24.png | Bin 0 -> 524 bytes .../resources/img/system/siyuan-40-dark.png | Bin 0 -> 602 bytes .../app/resources/img/system/siyuan-40.png | Bin 0 -> 596 bytes .../resources/img/system/slash-16-dark.png | Bin 0 -> 405 bytes .../app/resources/img/system/slash-16.png | Bin 0 -> 387 bytes .../resources/img/system/slash-24-dark.png | Bin 0 -> 610 bytes .../app/resources/img/system/slash-24.png | Bin 0 -> 584 bytes .../resources/img/system/slash-40-dark.png | Bin 0 -> 985 bytes .../app/resources/img/system/slash-40.png | Bin 0 -> 938 bytes .../app/resources/img/system/snikket-16.png | Bin 0 -> 731 bytes .../app/resources/img/system/snikket-24.png | Bin 0 -> 1157 bytes .../app/resources/img/system/snikket-40.png | Bin 0 -> 2012 bytes .../img/system/socialhome-16-dark.png | Bin 0 -> 392 bytes .../resources/img/system/socialhome-16.png | Bin 0 -> 455 bytes .../img/system/socialhome-24-dark.png | Bin 0 -> 461 bytes .../resources/img/system/socialhome-24.png | Bin 0 -> 562 bytes .../img/system/socialhome-40-dark.png | Bin 0 -> 627 bytes .../resources/img/system/socialhome-40.png | Bin 0 -> 751 bytes .../img/system/solidtime-16-dark.png | Bin 0 -> 381 bytes .../app/resources/img/system/solidtime-16.png | Bin 0 -> 365 bytes .../img/system/solidtime-24-dark.png | Bin 0 -> 555 bytes .../app/resources/img/system/solidtime-24.png | Bin 0 -> 526 bytes .../img/system/solidtime-40-dark.png | Bin 0 -> 883 bytes .../app/resources/img/system/solidtime-40.png | Bin 0 -> 785 bytes .../app/resources/img/system/sonarqube-16.png | Bin 0 -> 595 bytes .../app/resources/img/system/sonarqube-24.png | Bin 0 -> 931 bytes .../app/resources/img/system/sonarqube-40.png | Bin 0 -> 1562 bytes .../app/resources/img/system/sonarr-16.png | Bin 0 -> 784 bytes .../app/resources/img/system/sonarr-24.png | Bin 0 -> 1296 bytes .../app/resources/img/system/sonarr-40.png | Bin 0 -> 2245 bytes .../system/specifically-clementines-16.png | Bin 0 -> 644 bytes .../system/specifically-clementines-24.png | Bin 0 -> 986 bytes .../system/specifically-clementines-40.png | Bin 0 -> 1882 bytes .../system/squirrel-servers-manager-16.png | Bin 0 -> 810 bytes .../system/squirrel-servers-manager-24.png | Bin 0 -> 1523 bytes .../system/squirrel-servers-manager-40.png | Bin 0 -> 3252 bytes .../app/resources/img/system/sshwifty-16.png | Bin 0 -> 938 bytes .../app/resources/img/system/sshwifty-24.png | Bin 0 -> 1605 bytes .../app/resources/img/system/sshwifty-40.png | Bin 0 -> 3094 bytes .../img/system/stalwart-mail-server-16.png | Bin 0 -> 768 bytes .../img/system/stalwart-mail-server-24.png | Bin 0 -> 1036 bytes .../img/system/stalwart-mail-server-40.png | Bin 0 -> 1707 bytes .../img/system/standard-notes-16.png | Bin 0 -> 494 bytes .../img/system/standard-notes-24.png | Bin 0 -> 606 bytes .../img/system/standard-notes-40.png | Bin 0 -> 975 bytes .../app/resources/img/system/step-ca-16.png | Bin 0 -> 593 bytes .../app/resources/img/system/step-ca-24.png | Bin 0 -> 898 bytes .../app/resources/img/system/step-ca-40.png | Bin 0 -> 1465 bytes .../resources/img/system/stirling-pdf-16.png | Bin 0 -> 676 bytes .../resources/img/system/stirling-pdf-24.png | Bin 0 -> 1020 bytes .../resources/img/system/stirling-pdf-40.png | Bin 0 -> 1738 bytes .../app/resources/img/system/stormkit-16.png | Bin 0 -> 605 bytes .../app/resources/img/system/stormkit-24.png | Bin 0 -> 849 bytes .../app/resources/img/system/stormkit-40.png | Bin 0 -> 1462 bytes .../app/resources/img/system/subatic-16.png | Bin 0 -> 414 bytes .../app/resources/img/system/subatic-24.png | Bin 0 -> 592 bytes .../app/resources/img/system/subatic-40.png | Bin 0 -> 978 bytes .../app/resources/img/system/supabase-16.png | Bin 0 -> 528 bytes .../app/resources/img/system/supabase-24.png | Bin 0 -> 731 bytes .../app/resources/img/system/supabase-40.png | Bin 0 -> 1217 bytes .../resources/img/system/synapse-16-dark.png | Bin 0 -> 491 bytes .../app/resources/img/system/synapse-16.png | Bin 0 -> 451 bytes .../resources/img/system/synapse-24-dark.png | Bin 0 -> 710 bytes .../app/resources/img/system/synapse-24.png | Bin 0 -> 664 bytes .../resources/img/system/synapse-40-dark.png | Bin 0 -> 1249 bytes .../app/resources/img/system/synapse-40.png | Bin 0 -> 1100 bytes .../app/resources/img/system/syncthing-16.png | Bin 0 -> 858 bytes .../app/resources/img/system/syncthing-24.png | Bin 0 -> 1355 bytes .../app/resources/img/system/syncthing-40.png | Bin 0 -> 2434 bytes .../img/system/tailscale-16-dark.png | Bin 0 -> 513 bytes .../app/resources/img/system/tailscale-16.png | Bin 0 -> 375 bytes .../img/system/tailscale-24-dark.png | Bin 0 -> 775 bytes .../app/resources/img/system/tailscale-24.png | Bin 0 -> 571 bytes .../img/system/tailscale-40-dark.png | Bin 0 -> 1366 bytes .../app/resources/img/system/tailscale-40.png | Bin 0 -> 982 bytes .../resources/img/system/tangerine-ui-16.png | Bin 0 -> 618 bytes .../resources/img/system/tangerine-ui-24.png | Bin 0 -> 937 bytes .../resources/img/system/tangerine-ui-40.png | Bin 0 -> 1683 bytes .../app/resources/img/system/tautulli-16.png | Bin 0 -> 718 bytes .../app/resources/img/system/tautulli-24.png | Bin 0 -> 1082 bytes .../app/resources/img/system/tautulli-40.png | Bin 0 -> 1859 bytes .../app/resources/img/system/telegram-16.png | Bin 0 -> 645 bytes .../app/resources/img/system/telegram-24.png | Bin 0 -> 957 bytes .../app/resources/img/system/telegram-40.png | Bin 0 -> 1580 bytes .../resources/img/system/teleport-16-dark.png | Bin 0 -> 483 bytes .../app/resources/img/system/teleport-16.png | Bin 0 -> 721 bytes .../resources/img/system/teleport-24-dark.png | Bin 0 -> 628 bytes .../app/resources/img/system/teleport-24.png | Bin 0 -> 1063 bytes .../resources/img/system/teleport-40-dark.png | Bin 0 -> 1135 bytes .../app/resources/img/system/teleport-40.png | Bin 0 -> 1860 bytes .../resources/img/system/threads-16-dark.png | Bin 0 -> 495 bytes .../app/resources/img/system/threads-16.png | Bin 0 -> 470 bytes .../resources/img/system/threads-24-dark.png | Bin 0 -> 779 bytes .../app/resources/img/system/threads-24.png | Bin 0 -> 716 bytes .../resources/img/system/threads-40-dark.png | Bin 0 -> 1273 bytes .../app/resources/img/system/threads-40.png | Bin 0 -> 1180 bytes .../img/system/thunderbird-16-dark.png | Bin 0 -> 528 bytes .../resources/img/system/thunderbird-16.png | Bin 0 -> 854 bytes .../img/system/thunderbird-24-dark.png | Bin 0 -> 874 bytes .../resources/img/system/thunderbird-24.png | Bin 0 -> 1452 bytes .../img/system/thunderbird-40-dark.png | Bin 0 -> 1609 bytes .../resources/img/system/thunderbird-40.png | Bin 0 -> 2824 bytes .../img/system/tiddlywiki-16-dark.png | Bin 0 -> 350 bytes .../resources/img/system/tiddlywiki-16.png | Bin 0 -> 330 bytes .../img/system/tiddlywiki-24-dark.png | Bin 0 -> 484 bytes .../resources/img/system/tiddlywiki-24.png | Bin 0 -> 458 bytes .../img/system/tiddlywiki-40-dark.png | Bin 0 -> 785 bytes .../resources/img/system/tiddlywiki-40.png | Bin 0 -> 722 bytes .../app/resources/img/system/tmdb-16-dark.png | Bin 0 -> 468 bytes .../app/resources/img/system/tmdb-16.png | Bin 0 -> 714 bytes .../app/resources/img/system/tmdb-24-dark.png | Bin 0 -> 722 bytes .../app/resources/img/system/tmdb-24.png | Bin 0 -> 1113 bytes .../app/resources/img/system/tmdb-40-dark.png | Bin 0 -> 1225 bytes .../app/resources/img/system/tmdb-40.png | Bin 0 -> 1888 bytes .../app/resources/img/system/tooljet-16.png | Bin 0 -> 496 bytes .../app/resources/img/system/tooljet-24.png | Bin 0 -> 691 bytes .../app/resources/img/system/tooljet-40.png | Bin 0 -> 1053 bytes .../resources/img/system/touitomamout-16.png | Bin 0 -> 685 bytes .../resources/img/system/touitomamout-24.png | Bin 0 -> 1076 bytes .../resources/img/system/touitomamout-40.png | Bin 0 -> 1864 bytes .../resources/img/system/tp-link-16-dark.png | Bin 0 -> 374 bytes .../app/resources/img/system/tp-link-16.png | Bin 0 -> 493 bytes .../resources/img/system/tp-link-24-dark.png | Bin 0 -> 475 bytes .../app/resources/img/system/tp-link-24.png | Bin 0 -> 635 bytes .../resources/img/system/tp-link-40-dark.png | Bin 0 -> 680 bytes .../app/resources/img/system/tp-link-40.png | Bin 0 -> 951 bytes .../app/resources/img/system/tpdb-16-dark.png | Bin 0 -> 735 bytes .../app/resources/img/system/tpdb-16.png | Bin 0 -> 733 bytes .../app/resources/img/system/tpdb-24-dark.png | Bin 0 -> 1106 bytes .../app/resources/img/system/tpdb-24.png | Bin 0 -> 1135 bytes .../app/resources/img/system/tpdb-40-dark.png | Bin 0 -> 1906 bytes .../app/resources/img/system/tpdb-40.png | Bin 0 -> 1993 bytes .../app/resources/img/system/traccar-16.png | Bin 0 -> 651 bytes .../app/resources/img/system/traccar-24.png | Bin 0 -> 1076 bytes .../app/resources/img/system/traccar-40.png | Bin 0 -> 1709 bytes .../app/resources/img/system/traefik-16.png | Bin 0 -> 651 bytes .../app/resources/img/system/traefik-24.png | Bin 0 -> 882 bytes .../app/resources/img/system/traefik-40.png | Bin 0 -> 1465 bytes .../resources/img/system/transmission-16.png | Bin 0 -> 728 bytes .../resources/img/system/transmission-24.png | Bin 0 -> 1092 bytes .../resources/img/system/transmission-40.png | Bin 0 -> 2075 bytes .../app/resources/img/system/trilium-16.png | Bin 0 -> 552 bytes .../app/resources/img/system/trilium-24.png | Bin 0 -> 848 bytes .../app/resources/img/system/trilium-40.png | Bin 0 -> 1627 bytes .../resources/img/system/triliumnext-16.png | Bin 0 -> 623 bytes .../resources/img/system/triliumnext-24.png | Bin 0 -> 964 bytes .../resources/img/system/triliumnext-40.png | Bin 0 -> 1737 bytes .../img/system/truenas-core-16-dark.png | Bin 0 -> 373 bytes .../resources/img/system/truenas-core-16.png | Bin 0 -> 635 bytes .../img/system/truenas-core-24-dark.png | Bin 0 -> 483 bytes .../resources/img/system/truenas-core-24.png | Bin 0 -> 897 bytes .../img/system/truenas-core-40-dark.png | Bin 0 -> 737 bytes .../resources/img/system/truenas-core-40.png | Bin 0 -> 1465 bytes .../img/system/truenas-scale-16-dark.png | Bin 0 -> 437 bytes .../resources/img/system/truenas-scale-16.png | Bin 0 -> 649 bytes .../img/system/truenas-scale-24-dark.png | Bin 0 -> 682 bytes .../resources/img/system/truenas-scale-24.png | Bin 0 -> 1125 bytes .../img/system/truenas-scale-40-dark.png | Bin 0 -> 1237 bytes .../resources/img/system/truenas-scale-40.png | Bin 0 -> 2096 bytes .../resources/img/system/tubesync-16-dark.png | Bin 0 -> 464 bytes .../app/resources/img/system/tubesync-16.png | Bin 0 -> 673 bytes .../resources/img/system/tubesync-24-dark.png | Bin 0 -> 714 bytes .../app/resources/img/system/tubesync-24.png | Bin 0 -> 997 bytes .../resources/img/system/tubesync-40-dark.png | Bin 0 -> 1198 bytes .../app/resources/img/system/tubesync-40.png | Bin 0 -> 1714 bytes .../resources/img/system/tumblr-16-dark.png | Bin 0 -> 368 bytes .../app/resources/img/system/tumblr-16.png | Bin 0 -> 644 bytes .../resources/img/system/tumblr-24-dark.png | Bin 0 -> 562 bytes .../app/resources/img/system/tumblr-24.png | Bin 0 -> 881 bytes .../resources/img/system/tumblr-40-dark.png | Bin 0 -> 870 bytes .../app/resources/img/system/tumblr-40.png | Bin 0 -> 1298 bytes .../app/resources/img/system/tvdb-16-dark.png | Bin 0 -> 403 bytes .../app/resources/img/system/tvdb-16.png | Bin 0 -> 567 bytes .../app/resources/img/system/tvdb-24-dark.png | Bin 0 -> 623 bytes .../app/resources/img/system/tvdb-24.png | Bin 0 -> 870 bytes .../app/resources/img/system/tvdb-40-dark.png | Bin 0 -> 996 bytes .../app/resources/img/system/tvdb-40.png | Bin 0 -> 1442 bytes .../img/system/ubiquiti-unifi-16-dark.png | Bin 0 -> 358 bytes .../img/system/ubiquiti-unifi-16.png | Bin 0 -> 490 bytes .../img/system/ubiquiti-unifi-24-dark.png | Bin 0 -> 516 bytes .../img/system/ubiquiti-unifi-24.png | Bin 0 -> 664 bytes .../img/system/ubiquiti-unifi-40-dark.png | Bin 0 -> 739 bytes .../img/system/ubiquiti-unifi-40.png | Bin 0 -> 975 bytes .../resources/img/system/umami-16-dark.png | Bin 0 -> 351 bytes .../app/resources/img/system/umami-16.png | Bin 0 -> 335 bytes .../resources/img/system/umami-24-dark.png | Bin 0 -> 500 bytes .../app/resources/img/system/umami-24.png | Bin 0 -> 457 bytes .../resources/img/system/umami-40-dark.png | Bin 0 -> 785 bytes .../app/resources/img/system/umami-40.png | Bin 0 -> 709 bytes .../app/resources/img/system/umbrel-16.png | Bin 0 -> 545 bytes .../app/resources/img/system/umbrel-24.png | Bin 0 -> 890 bytes .../app/resources/img/system/umbrel-40.png | Bin 0 -> 1430 bytes .../app/resources/img/system/unbound-16.png | Bin 0 -> 540 bytes .../app/resources/img/system/unbound-24.png | Bin 0 -> 791 bytes .../app/resources/img/system/unbound-40.png | Bin 0 -> 1236 bytes .../app/resources/img/system/undb-16.png | Bin 0 -> 762 bytes .../app/resources/img/system/undb-24.png | Bin 0 -> 1248 bytes .../app/resources/img/system/undb-40.png | Bin 0 -> 2035 bytes .../img/system/unifi-voucher-site-16.png | Bin 0 -> 585 bytes .../img/system/unifi-voucher-site-24.png | Bin 0 -> 927 bytes .../img/system/unifi-voucher-site-40.png | Bin 0 -> 1686 bytes .../app/resources/img/system/unraid-16.png | Bin 0 -> 449 bytes .../app/resources/img/system/unraid-24.png | Bin 0 -> 561 bytes .../app/resources/img/system/unraid-40.png | Bin 0 -> 791 bytes .../app/resources/img/system/upsnap-16.png | Bin 0 -> 831 bytes .../app/resources/img/system/upsnap-24.png | Bin 0 -> 1365 bytes .../app/resources/img/system/upsnap-40.png | Bin 0 -> 2668 bytes .../resources/img/system/uptime-kuma-16.png | Bin 0 -> 719 bytes .../resources/img/system/uptime-kuma-24.png | Bin 0 -> 1063 bytes .../resources/img/system/uptime-kuma-40.png | Bin 0 -> 1742 bytes .../resources/img/system/valkey-16-dark.png | Bin 0 -> 454 bytes .../app/resources/img/system/valkey-16.png | Bin 0 -> 678 bytes .../resources/img/system/valkey-24-dark.png | Bin 0 -> 664 bytes .../app/resources/img/system/valkey-24.png | Bin 0 -> 1052 bytes .../resources/img/system/valkey-40-dark.png | Bin 0 -> 1042 bytes .../app/resources/img/system/valkey-40.png | Bin 0 -> 1736 bytes .../img/system/vaultwarden-16-dark.png | Bin 0 -> 600 bytes .../resources/img/system/vaultwarden-16.png | Bin 0 -> 570 bytes .../img/system/vaultwarden-24-dark.png | Bin 0 -> 930 bytes .../resources/img/system/vaultwarden-24.png | Bin 0 -> 871 bytes .../img/system/vaultwarden-40-dark.png | Bin 0 -> 1425 bytes .../resources/img/system/vaultwarden-40.png | Bin 0 -> 1353 bytes .../app/resources/img/system/vector-16.png | Bin 0 -> 746 bytes .../app/resources/img/system/vector-24.png | Bin 0 -> 1193 bytes .../app/resources/img/system/vector-40.png | Bin 0 -> 2068 bytes .../img/system/victoriametrics-16-dark.png | Bin 0 -> 454 bytes .../img/system/victoriametrics-16.png | Bin 0 -> 444 bytes .../img/system/victoriametrics-24-dark.png | Bin 0 -> 659 bytes .../img/system/victoriametrics-24.png | Bin 0 -> 643 bytes .../img/system/victoriametrics-40-dark.png | Bin 0 -> 1084 bytes .../img/system/victoriametrics-40.png | Bin 0 -> 1007 bytes .../app/resources/img/system/vidzy-16.png | Bin 0 -> 431 bytes .../app/resources/img/system/vidzy-24.png | Bin 0 -> 548 bytes .../app/resources/img/system/vidzy-40.png | Bin 0 -> 931 bytes .../app/resources/img/system/vikunja-16.png | Bin 0 -> 675 bytes .../app/resources/img/system/vikunja-24.png | Bin 0 -> 1049 bytes .../app/resources/img/system/vikunja-40.png | Bin 0 -> 1843 bytes .../app/resources/img/system/viseron-16.png | Bin 0 -> 785 bytes .../app/resources/img/system/viseron-24.png | Bin 0 -> 1376 bytes .../app/resources/img/system/viseron-40.png | Bin 0 -> 3275 bytes .../resources/img/system/voilib-16-dark.png | Bin 0 -> 419 bytes .../app/resources/img/system/voilib-16.png | Bin 0 -> 798 bytes .../resources/img/system/voilib-24-dark.png | Bin 0 -> 619 bytes .../app/resources/img/system/voilib-24.png | Bin 0 -> 1171 bytes .../resources/img/system/voilib-40-dark.png | Bin 0 -> 931 bytes .../app/resources/img/system/voilib-40.png | Bin 0 -> 1854 bytes .../img/system/voltaserve-16-dark.png | Bin 0 -> 396 bytes .../resources/img/system/voltaserve-16.png | Bin 0 -> 404 bytes .../img/system/voltaserve-24-dark.png | Bin 0 -> 626 bytes .../resources/img/system/voltaserve-24.png | Bin 0 -> 604 bytes .../img/system/voltaserve-40-dark.png | Bin 0 -> 978 bytes .../resources/img/system/voltaserve-40.png | Bin 0 -> 941 bytes .../resources/img/system/wallabag-16-dark.png | Bin 0 -> 415 bytes .../app/resources/img/system/wallabag-16.png | Bin 0 -> 391 bytes .../resources/img/system/wallabag-24-dark.png | Bin 0 -> 613 bytes .../app/resources/img/system/wallabag-24.png | Bin 0 -> 570 bytes .../resources/img/system/wallabag-40-dark.png | Bin 0 -> 1020 bytes .../app/resources/img/system/wallabag-40.png | Bin 0 -> 959 bytes .../resources/img/system/wanderer-16-dark.png | Bin 0 -> 618 bytes .../app/resources/img/system/wanderer-16.png | Bin 0 -> 781 bytes .../resources/img/system/wanderer-24-dark.png | Bin 0 -> 954 bytes .../app/resources/img/system/wanderer-24.png | Bin 0 -> 1189 bytes .../resources/img/system/wanderer-40-dark.png | Bin 0 -> 1643 bytes .../app/resources/img/system/wanderer-40.png | Bin 0 -> 1989 bytes .../app/resources/img/system/webtrees-16.png | Bin 0 -> 581 bytes .../app/resources/img/system/webtrees-24.png | Bin 0 -> 827 bytes .../app/resources/img/system/webtrees-40.png | Bin 0 -> 1349 bytes .../app/resources/img/system/wekan-16.png | Bin 0 -> 527 bytes .../app/resources/img/system/wekan-24.png | Bin 0 -> 829 bytes .../app/resources/img/system/wekan-40.png | Bin 0 -> 1401 bytes .../app/resources/img/system/wger-16.png | Bin 0 -> 595 bytes .../app/resources/img/system/wger-24.png | Bin 0 -> 910 bytes .../app/resources/img/system/wger-40.png | Bin 0 -> 1459 bytes .../img/system/whats-up-docker-16-dark.png | Bin 0 -> 351 bytes .../img/system/whats-up-docker-16.png | Bin 0 -> 341 bytes .../img/system/whats-up-docker-24-dark.png | Bin 0 -> 514 bytes .../img/system/whats-up-docker-24.png | Bin 0 -> 489 bytes .../img/system/whats-up-docker-40-dark.png | Bin 0 -> 766 bytes .../img/system/whats-up-docker-40.png | Bin 0 -> 713 bytes .../app/resources/img/system/wiki-js-16.png | Bin 0 -> 786 bytes .../app/resources/img/system/wiki-js-24.png | Bin 0 -> 1317 bytes .../app/resources/img/system/wiki-js-40.png | Bin 0 -> 2714 bytes .../app/resources/img/system/wikidocs-16.png | Bin 0 -> 432 bytes .../app/resources/img/system/wikidocs-24.png | Bin 0 -> 529 bytes .../app/resources/img/system/wikidocs-40.png | Bin 0 -> 730 bytes .../img/system/wikipedia-16-dark.png | Bin 0 -> 588 bytes .../app/resources/img/system/wikipedia-16.png | Bin 0 -> 529 bytes .../img/system/wikipedia-24-dark.png | Bin 0 -> 952 bytes .../app/resources/img/system/wikipedia-24.png | Bin 0 -> 849 bytes .../img/system/wikipedia-40-dark.png | Bin 0 -> 1502 bytes .../app/resources/img/system/wikipedia-40.png | Bin 0 -> 1397 bytes .../app/resources/img/system/willow-16.png | Bin 0 -> 718 bytes .../app/resources/img/system/willow-24.png | Bin 0 -> 1113 bytes .../app/resources/img/system/willow-40.png | Bin 0 -> 2084 bytes .../img/system/windows-retro-16-dark.png | Bin 0 -> 635 bytes .../resources/img/system/windows-retro-16.png | Bin 0 -> 555 bytes .../img/system/windows-retro-24-dark.png | Bin 0 -> 934 bytes .../resources/img/system/windows-retro-24.png | Bin 0 -> 836 bytes .../img/system/windows-retro-40-dark.png | Bin 0 -> 1667 bytes .../resources/img/system/windows-retro-40.png | Bin 0 -> 1484 bytes .../app/resources/img/system/wireguard-16.png | Bin 0 -> 814 bytes .../app/resources/img/system/wireguard-24.png | Bin 0 -> 1268 bytes .../app/resources/img/system/wireguard-40.png | Bin 0 -> 2207 bytes .../app/resources/img/system/wizarr-16.png | Bin 0 -> 711 bytes .../app/resources/img/system/wizarr-24.png | Bin 0 -> 1044 bytes .../app/resources/img/system/wizarr-40.png | Bin 0 -> 1817 bytes .../resources/img/system/woocommerce-16.png | Bin 0 -> 583 bytes .../resources/img/system/woocommerce-24.png | Bin 0 -> 946 bytes .../resources/img/system/woocommerce-40.png | Bin 0 -> 1562 bytes .../resources/img/system/worklenz-16-dark.png | Bin 0 -> 473 bytes .../app/resources/img/system/worklenz-16.png | Bin 0 -> 556 bytes .../resources/img/system/worklenz-24-dark.png | Bin 0 -> 697 bytes .../app/resources/img/system/worklenz-24.png | Bin 0 -> 853 bytes .../resources/img/system/worklenz-40-dark.png | Bin 0 -> 1121 bytes .../app/resources/img/system/worklenz-40.png | Bin 0 -> 1345 bytes .../img/system/writefreely-16-dark.png | Bin 0 -> 555 bytes .../resources/img/system/writefreely-16.png | Bin 0 -> 595 bytes .../img/system/writefreely-24-dark.png | Bin 0 -> 856 bytes .../resources/img/system/writefreely-24.png | Bin 0 -> 892 bytes .../img/system/writefreely-40-dark.png | Bin 0 -> 1397 bytes .../resources/img/system/writefreely-40.png | Bin 0 -> 1467 bytes .../app/resources/img/system/xbackbone-16.png | Bin 0 -> 499 bytes .../app/resources/img/system/xbackbone-24.png | Bin 0 -> 780 bytes .../app/resources/img/system/xbackbone-40.png | Bin 0 -> 1227 bytes .../resources/img/system/xwiki-16-dark.png | Bin 0 -> 409 bytes .../app/resources/img/system/xwiki-16.png | Bin 0 -> 594 bytes .../resources/img/system/xwiki-24-dark.png | Bin 0 -> 562 bytes .../app/resources/img/system/xwiki-24.png | Bin 0 -> 786 bytes .../resources/img/system/xwiki-40-dark.png | Bin 0 -> 894 bytes .../app/resources/img/system/xwiki-40.png | Bin 0 -> 1333 bytes .../resources/img/system/yacht-16-dark.png | Bin 0 -> 556 bytes .../app/resources/img/system/yacht-16.png | Bin 0 -> 634 bytes .../resources/img/system/yacht-24-dark.png | Bin 0 -> 859 bytes .../app/resources/img/system/yacht-24.png | Bin 0 -> 993 bytes .../resources/img/system/yacht-40-dark.png | Bin 0 -> 1438 bytes .../app/resources/img/system/yacht-40.png | Bin 0 -> 1661 bytes .../resources/img/system/yamtrack-16-dark.png | Bin 0 -> 472 bytes .../app/resources/img/system/yamtrack-16.png | Bin 0 -> 618 bytes .../resources/img/system/yamtrack-24-dark.png | Bin 0 -> 738 bytes .../app/resources/img/system/yamtrack-24.png | Bin 0 -> 930 bytes .../resources/img/system/yamtrack-40-dark.png | Bin 0 -> 1253 bytes .../app/resources/img/system/yamtrack-40.png | Bin 0 -> 1566 bytes .../app/resources/img/system/yarr-16-dark.png | Bin 0 -> 567 bytes .../app/resources/img/system/yarr-16.png | Bin 0 -> 618 bytes .../app/resources/img/system/yarr-24-dark.png | Bin 0 -> 891 bytes .../app/resources/img/system/yarr-24.png | Bin 0 -> 966 bytes .../app/resources/img/system/yarr-40-dark.png | Bin 0 -> 1377 bytes .../app/resources/img/system/yarr-40.png | Bin 0 -> 1463 bytes .../resources/img/system/your-spotify-16.png | Bin 0 -> 687 bytes .../resources/img/system/your-spotify-24.png | Bin 0 -> 951 bytes .../resources/img/system/your-spotify-40.png | Bin 0 -> 1636 bytes .../app/resources/img/system/yourls-16.png | Bin 0 -> 454 bytes .../app/resources/img/system/yourls-24.png | Bin 0 -> 790 bytes .../app/resources/img/system/yourls-40.png | Bin 0 -> 1201 bytes .../resources/img/system/youtube-dl-16.png | Bin 0 -> 537 bytes .../resources/img/system/youtube-dl-24.png | Bin 0 -> 777 bytes .../resources/img/system/youtube-dl-40.png | Bin 0 -> 1230 bytes .../app/resources/img/system/zabbix-16.png | Bin 0 -> 494 bytes .../app/resources/img/system/zabbix-24.png | Bin 0 -> 721 bytes .../app/resources/img/system/zabbix-40.png | Bin 0 -> 1101 bytes .../app/resources/img/system/zammad-16.png | Bin 0 -> 660 bytes .../app/resources/img/system/zammad-24.png | Bin 0 -> 1019 bytes .../app/resources/img/system/zammad-40.png | Bin 0 -> 1775 bytes .../resources/img/system/zigbee2mqtt-16.png | Bin 0 -> 652 bytes .../resources/img/system/zigbee2mqtt-24.png | Bin 0 -> 1111 bytes .../resources/img/system/zigbee2mqtt-40.png | Bin 0 -> 1610 bytes .../img/system/zipcaptions-16-dark.png | Bin 0 -> 394 bytes .../resources/img/system/zipcaptions-16.png | Bin 0 -> 500 bytes .../img/system/zipcaptions-24-dark.png | Bin 0 -> 542 bytes .../resources/img/system/zipcaptions-24.png | Bin 0 -> 705 bytes .../img/system/zipcaptions-40-dark.png | Bin 0 -> 860 bytes .../resources/img/system/zipcaptions-40.png | Bin 0 -> 1238 bytes .../resources/img/system/zitadel-16-dark.png | Bin 0 -> 545 bytes .../app/resources/img/system/zitadel-16.png | Bin 0 -> 592 bytes .../resources/img/system/zitadel-24-dark.png | Bin 0 -> 798 bytes .../app/resources/img/system/zitadel-24.png | Bin 0 -> 901 bytes .../resources/img/system/zitadel-40-dark.png | Bin 0 -> 1369 bytes .../app/resources/img/system/zitadel-40.png | Bin 0 -> 1528 bytes .../resources/img/system/zoraxy-16-dark.png | Bin 0 -> 539 bytes .../app/resources/img/system/zoraxy-16.png | Bin 0 -> 660 bytes .../resources/img/system/zoraxy-24-dark.png | Bin 0 -> 753 bytes .../app/resources/img/system/zoraxy-24.png | Bin 0 -> 930 bytes .../resources/img/system/zoraxy-40-dark.png | Bin 0 -> 1156 bytes .../app/resources/img/system/zoraxy-40.png | Bin 0 -> 1571 bytes .../img/system/zwave-js-ui-16-dark.png | Bin 0 -> 492 bytes .../resources/img/system/zwave-js-ui-16.png | Bin 0 -> 622 bytes .../img/system/zwave-js-ui-24-dark.png | Bin 0 -> 715 bytes .../resources/img/system/zwave-js-ui-24.png | Bin 0 -> 987 bytes .../img/system/zwave-js-ui-40-dark.png | Bin 0 -> 1175 bytes .../resources/img/system/zwave-js-ui-40.png | Bin 0 -> 1664 bytes .../xpipe/app/resources/misc/vault_empty.md | 2 +- .../xpipe/app/resources/style/color-box.css | 36 +- .../xpipe/app/resources/style/popup-menu.css | 6 + .../io/xpipe/app/resources/style/prefs.css | 1 + .../app/resources/style/store-entry-comp.css | 34 +- .../io/xpipe/app/resources/style/style.css | 26 +- .../io/xpipe/core/process/CommandBuilder.java | 17 +- .../io/xpipe/core/process/ProcessControl.java | 2 + .../core/process/ProcessOutputException.java | 6 + .../io/xpipe/core/process/ShellDumbMode.java | 2 + .../process/ShellEnvironmentStoreState.java | 4 +- .../xpipe/core/process/ShellOpenFunction.java | 18 +- .../java/io/xpipe/core/store/FileSystem.java | 2 +- .../java/io/xpipe/core/store/ShellStore.java | 23 +- .../core/store/ShellValidationContext.java | 24 + .../io/xpipe/core/store/ValidatableStore.java | 6 +- .../xpipe/core/store/ValidationContext.java | 8 + .../io/xpipe/core/util/CoreJacksonModule.java | 17 +- dist/build.gradle | 2 +- dist/changelogs/12.0.md | 43 + dist/licenses/commons-lang.properties | 2 +- dist/licenses/github-api.properties | 2 +- dist/licenses/graalvm.properties | 2 +- .../ext/base/action/BrowseStoreAction.java | 3 +- .../base/action/ChangeStoreIconAction.java | 60 + .../ext/base/action/CloneStoreAction.java | 2 + .../action/RefreshChildrenStoreAction.java | 2 +- .../ext/base/action/SampleStoreAction.java | 2 +- .../ext/base/action/ScanStoreAction.java | 2 +- .../browser/OpenNativeFileDetailsAction.java | 10 +- .../base/script/PredefinedScriptStore.java | 2 +- .../script/SimpleScriptQuickEditAction.java | 28 +- .../script/SimpleScriptStoreProvider.java | 35 +- .../service/CustomServiceStoreProvider.java | 1 + .../base/service/FixedServiceGroupStore.java | 11 +- .../ext/base/store/ShellStoreProvider.java | 14 +- .../ext/base/store/StorePauseAction.java | 5 + .../ext/base/store/StoreStartAction.java | 5 + .../xpipe/ext/base/store/StoreStopAction.java | 5 + ext/base/src/main/java/module-info.java | 3 +- .../img/desktopApplication_icon-80-dark.png | Bin 0 -> 1620 bytes .../img/desktopApplication_icon-80.png | Bin 0 -> 1620 bytes .../img/desktopCommand_icon-80-dark.png | Bin 0 -> 1402 bytes .../resources/img/desktopCommand_icon-80.png | Bin 0 -> 1402 bytes .../img/desktopEnvironment_icon-80-dark.png | Bin 0 -> 2177 bytes .../img/desktopEnvironment_icon-80.png | Bin 0 -> 2177 bytes .../img/serviceGroup_icon-80-dark.png | Bin 0 -> 5077 bytes .../resources/img/serviceGroup_icon-80.png | Bin 0 -> 5109 bytes .../resources/img/service_icon-80-dark.png | Bin 0 -> 5192 bytes .../base/resources/img/service_icon-80.png | Bin 0 -> 5192 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../base}/desktopApplication_icon-dark.svg | 0 .../base}/desktopApplication_icon.svg | 0 .../base}/desktopCommand_icon-dark.svg | 0 .../img => img/base}/desktopCommand_icon.svg | 0 .../base}/desktopEnvironment_icon-dark.svg | 0 .../base}/desktopEnvironment_icon.svg | 0 .../base}/serviceGroup_icon-dark.svg | 0 .../img => img/base}/serviceGroup_icon.svg | 0 .../img => img/base}/service_icon-dark.svg | 0 .../img => img/base}/service_icon.svg | 0 .../browser}/default_file.svg | 0 .../browser}/default_folder.svg | 0 .../browser}/default_folder_opened.svg | 0 .../browser}/default_root_folder.svg | 0 .../browser}/default_root_folder_opened.svg | 0 .../browser}/file_type_access.svg | 0 .../browser}/file_type_access2.svg | 0 .../browser}/file_type_actionscript.svg | 0 .../browser}/file_type_actionscript2.svg | 0 .../browser}/file_type_ada.svg | 0 .../browser}/file_type_advpl.svg | 0 .../browser}/file_type_affectscript.svg | 0 .../browser}/file_type_affinitydesigner.svg | 0 .../browser}/file_type_affinityphoto.svg | 0 .../browser}/file_type_affinitypublisher.svg | 0 .../browser}/file_type_ai.svg | 0 .../browser}/file_type_ai2.svg | 0 .../browser}/file_type_al.svg | 0 .../browser}/file_type_al_dal.svg | 0 .../browser}/file_type_allcontributors.svg | 0 .../browser}/file_type_angular.svg | 0 .../browser}/file_type_ansible.svg | 0 .../browser}/file_type_antlr.svg | 0 .../browser}/file_type_anyscript.svg | 0 .../browser}/file_type_apache.svg | 0 .../browser}/file_type_apex.svg | 0 .../browser}/file_type_api_extractor.svg | 0 .../browser}/file_type_apib.svg | 0 .../browser}/file_type_apib2.svg | 0 .../browser}/file_type_apl.svg | 0 .../browser}/file_type_applescript.svg | 0 .../browser}/file_type_appscript.svg | 0 .../browser}/file_type_appsemble.svg | 0 .../browser}/file_type_appveyor.svg | 0 .../browser}/file_type_arduino.svg | 0 .../browser}/file_type_asciidoc.svg | 0 .../browser}/file_type_asp.svg | 0 .../browser}/file_type_aspx.svg | 0 .../browser}/file_type_assembly.svg | 0 .../browser}/file_type_astro.svg | 0 .../browser}/file_type_astroconfig.svg | 0 .../browser}/file_type_ats.svg | 0 .../browser}/file_type_audio.svg | 0 .../browser}/file_type_aurelia.svg | 0 .../browser}/file_type_autohotkey.svg | 0 .../browser}/file_type_autoit.svg | 0 .../browser}/file_type_avif.svg | 0 .../browser}/file_type_avro.svg | 0 .../browser}/file_type_awk.svg | 0 .../browser}/file_type_aws.svg | 0 .../browser}/file_type_azure.svg | 0 .../browser}/file_type_azurepipelines.svg | 0 .../browser}/file_type_babel.svg | 0 .../browser}/file_type_babel2.svg | 0 .../browser}/file_type_ballerina.svg | 0 .../browser}/file_type_bat.svg | 0 .../browser}/file_type_bats.svg | 0 .../browser}/file_type_bazaar.svg | 0 .../browser}/file_type_bazel.svg | 0 .../browser}/file_type_bazel_ignore.svg | 0 .../browser}/file_type_bazel_version.svg | 0 .../browser}/file_type_befunge.svg | 0 .../browser}/file_type_bicep.svg | 0 .../browser}/file_type_biml.svg | 0 .../browser}/file_type_binary.svg | 0 .../browser}/file_type_bitbucketpipeline.svg | 0 .../browser}/file_type_bithound.svg | 0 .../browser}/file_type_blade.svg | 0 .../browser}/file_type_blitzbasic.svg | 0 .../browser}/file_type_bolt.svg | 0 .../browser}/file_type_bosque.svg | 0 .../browser}/file_type_bower.svg | 0 .../browser}/file_type_bower2.svg | 0 .../browser}/file_type_browserslist.svg | 0 .../browser}/file_type_buckbuild.svg | 0 .../browser}/file_type_bun.svg | 0 .../browser}/file_type_bundler.svg | 0 .../browser}/file_type_bunfig.svg | 0 .../browser}/file_type_c.svg | 0 .../browser}/file_type_c2.svg | 0 .../browser}/file_type_c3.svg | 0 .../browser}/file_type_c_al.svg | 0 .../browser}/file_type_cabal.svg | 0 .../browser}/file_type_caddy.svg | 0 .../browser}/file_type_cake.svg | 0 .../browser}/file_type_cakephp.svg | 0 .../browser}/file_type_capacitor.svg | 0 .../browser}/file_type_cargo.svg | 0 .../browser}/file_type_casc.svg | 0 .../browser}/file_type_cddl.svg | 0 .../browser}/file_type_cert.svg | 0 .../browser}/file_type_ceylon.svg | 0 .../browser}/file_type_cf.svg | 0 .../browser}/file_type_cf2.svg | 0 .../browser}/file_type_cfc.svg | 0 .../browser}/file_type_cfc2.svg | 0 .../browser}/file_type_cfm.svg | 0 .../browser}/file_type_cfm2.svg | 0 .../browser}/file_type_cheader.svg | 0 .../browser}/file_type_chef.svg | 0 .../browser}/file_type_chef_cookbook.svg | 0 .../browser}/file_type_circleci.svg | 0 .../browser}/file_type_class.svg | 0 .../browser}/file_type_clojure.svg | 0 .../browser}/file_type_clojurescript.svg | 0 .../browser}/file_type_cloudfoundry.svg | 0 .../browser}/file_type_cmake.svg | 0 .../browser}/file_type_cobol.svg | 0 .../browser}/file_type_codacy.svg | 0 .../browser}/file_type_codeclimate.svg | 0 .../browser}/file_type_codecov.svg | 0 .../browser}/file_type_codekit.svg | 0 .../browser}/file_type_codeowners.svg | 0 .../browser}/file_type_codeql.svg | 0 .../browser}/file_type_coffeelint.svg | 0 .../browser}/file_type_coffeescript.svg | 0 .../browser}/file_type_commitizen.svg | 0 .../browser}/file_type_commitlint.svg | 0 .../browser}/file_type_compass.svg | 0 .../browser}/file_type_composer.svg | 0 .../browser}/file_type_conan.svg | 0 .../browser}/file_type_conda.svg | 0 .../browser}/file_type_config.svg | 0 .../browser}/file_type_confluence.svg | 0 .../browser}/file_type_coveralls.svg | 0 .../browser}/file_type_cpp.svg | 0 .../browser}/file_type_cpp2.svg | 0 .../browser}/file_type_cpp3.svg | 0 .../browser}/file_type_cppheader.svg | 0 .../browser}/file_type_crowdin.svg | 0 .../browser}/file_type_crystal.svg | 0 .../browser}/file_type_csharp.svg | 0 .../browser}/file_type_csharp2.svg | 0 .../browser}/file_type_cspell.svg | 0 .../browser}/file_type_csproj.svg | 0 .../browser}/file_type_css.svg | 0 .../browser}/file_type_csscomb.svg | 0 .../browser}/file_type_csslint.svg | 0 .../browser}/file_type_cssmap.svg | 0 .../browser}/file_type_cucumber.svg | 0 .../browser}/file_type_cuda.svg | 0 .../browser}/file_type_cvs.svg | 0 .../browser}/file_type_cypress.svg | 0 .../browser}/file_type_cypress_spec.svg | 0 .../browser}/file_type_cython.svg | 0 .../browser}/file_type_dal.svg | 0 .../browser}/file_type_darcs.svg | 0 .../browser}/file_type_dartlang.svg | 0 .../browser}/file_type_dartlang_generated.svg | 0 .../browser}/file_type_dartlang_ignore.svg | 0 .../browser}/file_type_datadog.svg | 0 .../browser}/file_type_db.svg | 0 .../browser}/file_type_delphi.svg | 0 .../browser}/file_type_deno.svg | 0 .../browser}/file_type_dependabot.svg | 0 .../browser}/file_type_dependencies.svg | 0 .../browser}/file_type_devcontainer.svg | 0 .../browser}/file_type_dhall.svg | 0 .../browser}/file_type_diff.svg | 0 .../browser}/file_type_django.svg | 0 .../browser}/file_type_dlang.svg | 0 .../browser}/file_type_docker.svg | 0 .../browser}/file_type_docker2.svg | 0 .../browser}/file_type_dockertest.svg | 0 .../browser}/file_type_dockertest2.svg | 0 .../browser}/file_type_docpad.svg | 0 .../browser}/file_type_docz.svg | 0 .../browser}/file_type_dojo.svg | 0 .../browser}/file_type_doppler.svg | 0 .../browser}/file_type_dotjs.svg | 0 .../browser}/file_type_doxygen.svg | 0 .../browser}/file_type_drawio.svg | 0 .../browser}/file_type_drone.svg | 0 .../browser}/file_type_drools.svg | 0 .../browser}/file_type_dustjs.svg | 0 .../browser}/file_type_dvc.svg | 0 .../browser}/file_type_dylan.svg | 0 .../browser}/file_type_earthly.svg | 0 .../browser}/file_type_eas-metadata.svg | 0 .../browser}/file_type_edge.svg | 0 .../browser}/file_type_edge2.svg | 0 .../browser}/file_type_editorconfig.svg | 0 .../browser}/file_type_eex.svg | 0 .../browser}/file_type_ejs.svg | 0 .../browser}/file_type_elastic.svg | 0 .../browser}/file_type_elasticbeanstalk.svg | 0 .../browser}/file_type_eleventy.svg | 0 .../browser}/file_type_eleventy2.svg | 0 .../browser}/file_type_elixir.svg | 0 .../browser}/file_type_elm.svg | 0 .../browser}/file_type_elm2.svg | 0 .../browser}/file_type_emacs.svg | 0 .../browser}/file_type_ember.svg | 0 .../browser}/file_type_ensime.svg | 0 .../browser}/file_type_eps.svg | 0 .../browser}/file_type_erb.svg | 0 .../browser}/file_type_erlang.svg | 0 .../browser}/file_type_erlang2.svg | 0 .../browser}/file_type_esbuild.svg | 0 .../browser}/file_type_eslint.svg | 0 .../browser}/file_type_eslint2.svg | 0 .../browser}/file_type_esphome.svg | 0 .../browser}/file_type_excel.svg | 0 .../browser}/file_type_excel2.svg | 0 .../browser}/file_type_expo.svg | 0 .../browser}/file_type_falcon.svg | 0 .../browser}/file_type_fantasticon.svg | 0 .../browser}/file_type_fauna.svg | 0 .../browser}/file_type_favicon.svg | 0 .../browser}/file_type_fbx.svg | 0 .../browser}/file_type_firebase.svg | 0 .../browser}/file_type_firebasehosting.svg | 0 .../browser}/file_type_firestore.svg | 0 .../browser}/file_type_fitbit.svg | 0 .../browser}/file_type_fla.svg | 0 .../browser}/file_type_flareact.svg | 0 .../browser}/file_type_flash.svg | 0 .../browser}/file_type_floobits.svg | 0 .../browser}/file_type_flow.svg | 0 .../browser}/file_type_flutter.svg | 0 .../browser}/file_type_flutter_package.svg | 0 .../browser}/file_type_font.svg | 0 .../browser}/file_type_formkit.svg | 0 .../browser}/file_type_fortran.svg | 0 .../browser}/file_type_fossa.svg | 0 .../browser}/file_type_fossil.svg | 0 .../browser}/file_type_freemarker.svg | 0 .../browser}/file_type_fsharp.svg | 0 .../browser}/file_type_fsharp2.svg | 0 .../browser}/file_type_fsproj.svg | 0 .../browser}/file_type_fthtml.svg | 0 .../browser}/file_type_funding.svg | 0 .../browser}/file_type_fusebox.svg | 0 .../browser}/file_type_galen.svg | 0 .../browser}/file_type_galen2.svg | 0 .../browser}/file_type_gamemaker.svg | 0 .../browser}/file_type_gamemaker2.svg | 0 .../browser}/file_type_gamemaker81.svg | 0 .../browser}/file_type_gatsby.svg | 0 .../browser}/file_type_gcloud.svg | 0 .../browser}/file_type_gcode.svg | 0 .../browser}/file_type_gdscript.svg | 0 .../browser}/file_type_genstat.svg | 0 .../browser}/file_type_git.svg | 0 .../browser}/file_type_git2.svg | 0 .../browser}/file_type_gitlab.svg | 0 .../browser}/file_type_gitpod.svg | 0 .../browser}/file_type_glide.svg | 0 .../browser}/file_type_glitter.svg | 0 .../browser}/file_type_glsl.svg | 0 .../browser}/file_type_glyphs.svg | 0 .../browser}/file_type_gnu.svg | 0 .../browser}/file_type_gnuplot.svg | 0 .../browser}/file_type_go.svg | 0 .../browser}/file_type_go_aqua.svg | 0 .../browser}/file_type_go_black.svg | 0 .../browser}/file_type_go_fuchsia.svg | 0 .../browser}/file_type_go_gopher.svg | 0 .../browser}/file_type_go_lightblue.svg | 0 .../browser}/file_type_go_package.svg | 0 .../browser}/file_type_go_white.svg | 0 .../browser}/file_type_go_work.svg | 0 .../browser}/file_type_go_yellow.svg | 0 .../browser}/file_type_goctl.svg | 0 .../browser}/file_type_godot.svg | 0 .../browser}/file_type_gradle.svg | 0 .../browser}/file_type_gradle2.svg | 0 .../browser}/file_type_graphql.svg | 0 .../browser}/file_type_graphql_config.svg | 0 .../browser}/file_type_graphviz.svg | 0 .../browser}/file_type_greenkeeper.svg | 0 .../browser}/file_type_gridsome.svg | 0 .../browser}/file_type_groovy.svg | 0 .../browser}/file_type_groovy2.svg | 0 .../browser}/file_type_grunt.svg | 0 .../browser}/file_type_gulp.svg | 0 .../browser}/file_type_haml.svg | 0 .../browser}/file_type_handlebars.svg | 0 .../browser}/file_type_handlebars2.svg | 0 .../browser}/file_type_harbour.svg | 0 .../browser}/file_type_hardhat.svg | 0 .../browser}/file_type_hashicorp.svg | 0 .../browser}/file_type_haskell.svg | 0 .../browser}/file_type_haskell2.svg | 0 .../browser}/file_type_haxe.svg | 0 .../browser}/file_type_haxecheckstyle.svg | 0 .../browser}/file_type_haxedevelop.svg | 0 .../browser}/file_type_helix.svg | 0 .../browser}/file_type_helm.svg | 0 .../browser}/file_type_hjson.svg | 0 .../browser}/file_type_hlsl.svg | 0 .../browser}/file_type_homeassistant.svg | 0 .../browser}/file_type_horusec.svg | 0 .../browser}/file_type_host.svg | 0 .../browser}/file_type_html.svg | 0 .../browser}/file_type_htmlhint.svg | 0 .../browser}/file_type_http.svg | 0 .../browser}/file_type_hunspell.svg | 0 .../browser}/file_type_husky.svg | 0 .../browser}/file_type_hy.svg | 0 .../browser}/file_type_hygen.svg | 0 .../browser}/file_type_hypr.svg | 0 .../browser}/file_type_icl.svg | 0 .../browser}/file_type_idris.svg | 0 .../browser}/file_type_idrisbin.svg | 0 .../browser}/file_type_idrispkg.svg | 0 .../browser}/file_type_image.svg | 0 .../browser}/file_type_imba.svg | 0 .../browser}/file_type_inc.svg | 0 .../browser}/file_type_infopath.svg | 0 .../browser}/file_type_informix.svg | 0 .../browser}/file_type_ini.svg | 0 .../browser}/file_type_ink.svg | 0 .../browser}/file_type_innosetup.svg | 0 .../browser}/file_type_io.svg | 0 .../browser}/file_type_iodine.svg | 0 .../browser}/file_type_ionic.svg | 0 .../browser}/file_type_jake.svg | 0 .../browser}/file_type_janet.svg | 0 .../browser}/file_type_jar.svg | 0 .../browser}/file_type_jasmine.svg | 0 .../browser}/file_type_java.svg | 0 .../browser}/file_type_jbuilder.svg | 0 .../browser}/file_type_jekyll.svg | 0 .../browser}/file_type_jenkins.svg | 0 .../browser}/file_type_jest.svg | 0 .../browser}/file_type_jest_snapshot.svg | 0 .../browser}/file_type_jinja.svg | 0 .../browser}/file_type_jpm.svg | 0 .../browser}/file_type_js.svg | 0 .../browser}/file_type_js_official.svg | 0 .../browser}/file_type_jsbeautify.svg | 0 .../browser}/file_type_jsconfig.svg | 0 .../browser}/file_type_jscpd.svg | 0 .../browser}/file_type_jshint.svg | 0 .../browser}/file_type_jsmap.svg | 0 .../browser}/file_type_json.svg | 0 .../browser}/file_type_json2.svg | 0 .../browser}/file_type_json5.svg | 0 .../browser}/file_type_json_official.svg | 0 .../browser}/file_type_jsonld.svg | 0 .../browser}/file_type_jsonnet.svg | 0 .../browser}/file_type_jsp.svg | 0 .../browser}/file_type_jss.svg | 0 .../browser}/file_type_julia.svg | 0 .../browser}/file_type_julia2.svg | 0 .../browser}/file_type_jupyter.svg | 0 .../browser}/file_type_k.svg | 0 .../browser}/file_type_karma.svg | 0 .../browser}/file_type_key.svg | 0 .../browser}/file_type_kitchenci.svg | 0 .../browser}/file_type_kite.svg | 0 .../browser}/file_type_kivy.svg | 0 .../browser}/file_type_kos.svg | 0 .../browser}/file_type_kotlin.svg | 0 .../browser}/file_type_kusto.svg | 0 .../browser}/file_type_latino.svg | 0 .../browser}/file_type_layout.svg | 0 .../browser}/file_type_lerna.svg | 0 .../browser}/file_type_less.svg | 0 .../browser}/file_type_lex.svg | 0 .../browser}/file_type_license.svg | 0 .../browser}/file_type_licensebat.svg | 0 .../file_type_light_actionscript2.svg | 0 .../browser}/file_type_light_ada.svg | 0 .../browser}/file_type_light_apl.svg | 0 .../browser}/file_type_light_babel.svg | 0 .../browser}/file_type_light_babel2.svg | 0 .../browser}/file_type_light_cabal.svg | 0 .../browser}/file_type_light_circleci.svg | 0 .../browser}/file_type_light_cloudfoundry.svg | 0 .../browser}/file_type_light_codacy.svg | 0 .../browser}/file_type_light_codeclimate.svg | 0 .../browser}/file_type_light_codeowners.svg | 0 .../browser}/file_type_light_config.svg | 0 .../browser}/file_type_light_crystal.svg | 0 .../browser}/file_type_light_cypress.svg | 0 .../browser}/file_type_light_cypress_spec.svg | 0 .../browser}/file_type_light_db.svg | 0 .../browser}/file_type_light_deno.svg | 0 .../browser}/file_type_light_dhall.svg | 0 .../browser}/file_type_light_docpad.svg | 0 .../browser}/file_type_light_drone.svg | 0 .../browser}/file_type_light_eas-metadata.svg | 0 .../browser}/file_type_light_eleventy.svg | 0 .../browser}/file_type_light_eleventy2.svg | 0 .../browser}/file_type_light_esphome.svg | 0 .../browser}/file_type_light_expo.svg | 0 .../file_type_light_firebasehosting.svg | 0 .../browser}/file_type_light_fla.svg | 0 .../browser}/file_type_light_font.svg | 0 .../browser}/file_type_light_gamemaker2.svg | 0 .../browser}/file_type_light_gradle.svg | 0 .../browser}/file_type_light_hashicorp.svg | 0 .../browser}/file_type_light_hjson.svg | 0 .../browser}/file_type_light_ini.svg | 0 .../browser}/file_type_light_io.svg | 0 .../browser}/file_type_light_js.svg | 0 .../browser}/file_type_light_jsconfig.svg | 0 .../browser}/file_type_light_jsmap.svg | 0 .../browser}/file_type_light_json.svg | 0 .../browser}/file_type_light_json5.svg | 0 .../browser}/file_type_light_jsonld.svg | 0 .../browser}/file_type_light_kite.svg | 0 .../browser}/file_type_light_lerna.svg | 0 .../browser}/file_type_light_mailing.svg | 0 .../browser}/file_type_light_mdx.svg | 0 .../browser}/file_type_light_mlang.svg | 0 .../browser}/file_type_light_mustache.svg | 0 .../browser}/file_type_light_next.svg | 0 .../browser}/file_type_light_nim.svg | 0 .../browser}/file_type_light_nx.svg | 0 .../browser}/file_type_light_objidconfig.svg | 0 .../browser}/file_type_light_openHAB.svg | 0 .../browser}/file_type_light_pcl.svg | 0 .../browser}/file_type_light_pnpm.svg | 0 .../browser}/file_type_light_prettier.svg | 0 .../browser}/file_type_light_prisma.svg | 0 .../browser}/file_type_light_purescript.svg | 0 .../browser}/file_type_light_quasar.svg | 0 .../browser}/file_type_light_razzle.svg | 0 .../browser}/file_type_light_rehype.svg | 0 .../browser}/file_type_light_remark.svg | 0 .../browser}/file_type_light_replit.svg | 0 .../browser}/file_type_light_retext.svg | 0 .../browser}/file_type_light_rome.svg | 0 .../browser}/file_type_light_rubocop.svg | 0 .../browser}/file_type_light_rust.svg | 0 .../file_type_light_rust_toolchain.svg | 0 .../browser}/file_type_light_shaderlab.svg | 0 .../browser}/file_type_light_solidity.svg | 0 .../browser}/file_type_light_stylelint.svg | 0 .../browser}/file_type_light_stylus.svg | 0 .../browser}/file_type_light_symfony.svg | 0 .../browser}/file_type_light_systemd.svg | 0 .../file_type_light_systemverilog.svg | 0 .../browser}/file_type_light_testcafe.svg | 0 .../browser}/file_type_light_testjs.svg | 0 .../browser}/file_type_light_tex.svg | 0 .../browser}/file_type_light_todo.svg | 0 .../browser}/file_type_light_toit.svg | 0 .../browser}/file_type_light_toml.svg | 0 .../browser}/file_type_light_tree.svg | 0 .../browser}/file_type_light_turbo.svg | 0 .../browser}/file_type_light_unibeautify.svg | 0 .../browser}/file_type_light_vash.svg | 0 .../browser}/file_type_light_vsix.svg | 0 .../browser}/file_type_light_vsixmanifest.svg | 0 .../browser}/file_type_light_xfl.svg | 0 .../browser}/file_type_light_yaml.svg | 0 .../browser}/file_type_light_zeit.svg | 0 .../browser}/file_type_lighthouse.svg | 0 .../browser}/file_type_lilypond.svg | 0 .../browser}/file_type_lime.svg | 0 .../browser}/file_type_lintstagedrc.svg | 0 .../browser}/file_type_liquid.svg | 0 .../browser}/file_type_lisp.svg | 0 .../browser}/file_type_livescript.svg | 0 .../browser}/file_type_lnk.svg | 0 .../browser}/file_type_locale.svg | 0 .../browser}/file_type_log.svg | 0 .../browser}/file_type_lolcode.svg | 0 .../browser}/file_type_lsl.svg | 0 .../browser}/file_type_lua.svg | 0 .../browser}/file_type_luau.svg | 0 .../browser}/file_type_lync.svg | 0 .../browser}/file_type_mailing.svg | 0 .../browser}/file_type_manifest.svg | 0 .../browser}/file_type_manifest_bak.svg | 0 .../browser}/file_type_manifest_skip.svg | 0 .../browser}/file_type_map.svg | 0 .../browser}/file_type_mariadb.svg | 0 .../browser}/file_type_markdown.svg | 0 .../browser}/file_type_markdownlint.svg | 0 .../file_type_markdownlint_ignore.svg | 0 .../browser}/file_type_marko.svg | 0 .../browser}/file_type_markojs.svg | 0 .../browser}/file_type_master-co.svg | 0 .../browser}/file_type_matlab.svg | 0 .../browser}/file_type_maven.svg | 0 .../browser}/file_type_maxscript.svg | 0 .../browser}/file_type_maya.svg | 0 .../browser}/file_type_mdx.svg | 0 .../browser}/file_type_mediawiki.svg | 0 .../browser}/file_type_mercurial.svg | 0 .../browser}/file_type_meson.svg | 0 .../browser}/file_type_meteor.svg | 0 .../browser}/file_type_mjml.svg | 0 .../browser}/file_type_mlang.svg | 0 .../browser}/file_type_mocha.svg | 0 .../browser}/file_type_modernizr.svg | 0 .../browser}/file_type_mojolicious.svg | 0 .../browser}/file_type_moleculer.svg | 0 .../browser}/file_type_mondoo.svg | 0 .../browser}/file_type_mongo.svg | 0 .../browser}/file_type_monotone.svg | 0 .../browser}/file_type_motif.svg | 0 .../browser}/file_type_mson.svg | 0 .../browser}/file_type_mustache.svg | 0 .../browser}/file_type_mysql.svg | 0 .../browser}/file_type_ndst.svg | 0 .../browser}/file_type_nearly.svg | 0 .../browser}/file_type_nest_adapter_js.svg | 0 .../browser}/file_type_nest_adapter_ts.svg | 0 .../browser}/file_type_nest_controller_js.svg | 0 .../browser}/file_type_nest_controller_ts.svg | 0 .../browser}/file_type_nest_decorator_js.svg | 0 .../browser}/file_type_nest_decorator_ts.svg | 0 .../browser}/file_type_nest_filter_js.svg | 0 .../browser}/file_type_nest_filter_ts.svg | 0 .../browser}/file_type_nest_gateway_js.svg | 0 .../browser}/file_type_nest_gateway_ts.svg | 0 .../browser}/file_type_nest_guard_js.svg | 0 .../browser}/file_type_nest_guard_ts.svg | 0 .../file_type_nest_interceptor_js.svg | 0 .../file_type_nest_interceptor_ts.svg | 0 .../browser}/file_type_nest_middleware_js.svg | 0 .../browser}/file_type_nest_middleware_ts.svg | 0 .../browser}/file_type_nest_module_js.svg | 0 .../browser}/file_type_nest_module_ts.svg | 0 .../browser}/file_type_nest_pipe_js.svg | 0 .../browser}/file_type_nest_pipe_ts.svg | 0 .../browser}/file_type_nest_service_js.svg | 0 .../browser}/file_type_nest_service_ts.svg | 0 .../browser}/file_type_nestjs.svg | 0 .../browser}/file_type_netlify.svg | 0 .../browser}/file_type_next.svg | 0 .../browser}/file_type_ng_component_css.svg | 0 .../browser}/file_type_ng_component_dart.svg | 0 .../browser}/file_type_ng_component_html.svg | 0 .../browser}/file_type_ng_component_js.svg | 0 .../browser}/file_type_ng_component_js2.svg | 0 .../browser}/file_type_ng_component_less.svg | 0 .../browser}/file_type_ng_component_sass.svg | 0 .../browser}/file_type_ng_component_scss.svg | 0 .../browser}/file_type_ng_component_ts.svg | 0 .../browser}/file_type_ng_component_ts2.svg | 0 .../browser}/file_type_ng_controller_js.svg | 0 .../browser}/file_type_ng_controller_ts.svg | 0 .../browser}/file_type_ng_directive_dart.svg | 0 .../browser}/file_type_ng_directive_js.svg | 0 .../browser}/file_type_ng_directive_js2.svg | 0 .../browser}/file_type_ng_directive_ts.svg | 0 .../browser}/file_type_ng_directive_ts2.svg | 0 .../browser}/file_type_ng_guard_dart.svg | 0 .../browser}/file_type_ng_guard_js.svg | 0 .../browser}/file_type_ng_guard_ts.svg | 0 .../file_type_ng_interceptor_dart.svg | 0 .../browser}/file_type_ng_interceptor_js.svg | 0 .../browser}/file_type_ng_interceptor_ts.svg | 0 .../browser}/file_type_ng_module_dart.svg | 0 .../browser}/file_type_ng_module_js.svg | 0 .../browser}/file_type_ng_module_js2.svg | 0 .../browser}/file_type_ng_module_ts.svg | 0 .../browser}/file_type_ng_module_ts2.svg | 0 .../browser}/file_type_ng_pipe_dart.svg | 0 .../browser}/file_type_ng_pipe_js.svg | 0 .../browser}/file_type_ng_pipe_js2.svg | 0 .../browser}/file_type_ng_pipe_ts.svg | 0 .../browser}/file_type_ng_pipe_ts2.svg | 0 .../browser}/file_type_ng_routing_dart.svg | 0 .../browser}/file_type_ng_routing_js.svg | 0 .../browser}/file_type_ng_routing_js2.svg | 0 .../browser}/file_type_ng_routing_ts.svg | 0 .../browser}/file_type_ng_routing_ts2.svg | 0 .../browser}/file_type_ng_service_dart.svg | 0 .../browser}/file_type_ng_service_js.svg | 0 .../browser}/file_type_ng_service_js2.svg | 0 .../browser}/file_type_ng_service_ts.svg | 0 .../browser}/file_type_ng_service_ts2.svg | 0 .../file_type_ng_smart_component_dart.svg | 0 .../file_type_ng_smart_component_js.svg | 0 .../file_type_ng_smart_component_js2.svg | 0 .../file_type_ng_smart_component_ts.svg | 0 .../file_type_ng_smart_component_ts2.svg | 0 .../browser}/file_type_ng_tailwind.svg | 0 .../browser}/file_type_nginx.svg | 0 .../browser}/file_type_nim.svg | 0 .../browser}/file_type_nimble.svg | 0 .../browser}/file_type_ninja.svg | 0 .../browser}/file_type_nix.svg | 0 .../browser}/file_type_njsproj.svg | 0 .../browser}/file_type_noc.svg | 0 .../browser}/file_type_node.svg | 0 .../browser}/file_type_node2.svg | 0 .../browser}/file_type_nodemon.svg | 0 .../browser}/file_type_npm.svg | 0 .../browser}/file_type_nsi.svg | 0 .../browser}/file_type_nsri-integrity.svg | 0 .../browser}/file_type_nsri.svg | 0 .../browser}/file_type_nuget.svg | 0 .../browser}/file_type_numpy.svg | 0 .../browser}/file_type_nunjucks.svg | 0 .../browser}/file_type_nuxt.svg | 0 .../browser}/file_type_nx.svg | 0 .../browser}/file_type_nyc.svg | 0 .../browser}/file_type_objectivec.svg | 0 .../browser}/file_type_objectivecpp.svg | 0 .../browser}/file_type_objidconfig.svg | 0 .../browser}/file_type_ocaml.svg | 0 .../browser}/file_type_ogone.svg | 0 .../browser}/file_type_onenote.svg | 0 .../browser}/file_type_openHAB.svg | 0 .../browser}/file_type_opencl.svg | 0 .../browser}/file_type_openscad.svg | 0 .../browser}/file_type_org.svg | 0 .../browser}/file_type_outlook.svg | 0 .../browser}/file_type_ovpn.svg | 0 .../browser}/file_type_package.svg | 0 .../browser}/file_type_paket.svg | 0 .../browser}/file_type_patch.svg | 0 .../browser}/file_type_pcl.svg | 0 .../browser}/file_type_pddl.svg | 0 .../browser}/file_type_pddl_happenings.svg | 0 .../browser}/file_type_pddl_plan.svg | 0 .../browser}/file_type_pdf.svg | 0 .../browser}/file_type_pdf2.svg | 0 .../browser}/file_type_peeky.svg | 0 .../browser}/file_type_perl.svg | 0 .../browser}/file_type_perl2.svg | 0 .../browser}/file_type_perl6.svg | 0 .../browser}/file_type_pgsql.svg | 0 .../browser}/file_type_photoshop.svg | 0 .../browser}/file_type_photoshop2.svg | 0 .../browser}/file_type_php.svg | 0 .../browser}/file_type_php2.svg | 0 .../browser}/file_type_php3.svg | 0 .../browser}/file_type_phpcsfixer.svg | 0 .../browser}/file_type_phpstan.svg | 0 .../browser}/file_type_phpunit.svg | 0 .../browser}/file_type_phraseapp.svg | 0 .../browser}/file_type_pine.svg | 0 .../browser}/file_type_pip.svg | 0 .../browser}/file_type_pipeline.svg | 0 .../browser}/file_type_plantuml.svg | 0 .../browser}/file_type_platformio.svg | 0 .../browser}/file_type_playwright.svg | 0 .../browser}/file_type_plsql.svg | 0 .../browser}/file_type_plsql_package.svg | 0 .../browser}/file_type_plsql_package_body.svg | 0 .../file_type_plsql_package_header.svg | 0 .../browser}/file_type_plsql_package_spec.svg | 0 .../browser}/file_type_pm2.svg | 0 .../browser}/file_type_pnpm.svg | 0 .../browser}/file_type_poedit.svg | 0 .../browser}/file_type_poetry.svg | 0 .../browser}/file_type_polymer.svg | 0 .../browser}/file_type_pony.svg | 0 .../browser}/file_type_postcss.svg | 0 .../browser}/file_type_postcssconfig.svg | 0 .../browser}/file_type_powerpoint.svg | 0 .../browser}/file_type_powerpoint2.svg | 0 .../browser}/file_type_powershell.svg | 0 .../browser}/file_type_powershell2.svg | 0 .../browser}/file_type_powershell_format.svg | 0 .../browser}/file_type_powershell_psd.svg | 0 .../browser}/file_type_powershell_psd2.svg | 0 .../browser}/file_type_powershell_psm.svg | 0 .../browser}/file_type_powershell_psm2.svg | 0 .../browser}/file_type_powershell_types.svg | 0 .../browser}/file_type_preact.svg | 0 .../browser}/file_type_precommit.svg | 0 .../browser}/file_type_prettier.svg | 0 .../browser}/file_type_prisma.svg | 0 .../browser}/file_type_processinglang.svg | 0 .../browser}/file_type_procfile.svg | 0 .../browser}/file_type_progress.svg | 0 .../browser}/file_type_prolog.svg | 0 .../browser}/file_type_prometheus.svg | 0 .../browser}/file_type_protobuf.svg | 0 .../browser}/file_type_protractor.svg | 0 .../browser}/file_type_publisher.svg | 0 .../browser}/file_type_pug.svg | 0 .../browser}/file_type_pulumi.svg | 0 .../browser}/file_type_puppet.svg | 0 .../browser}/file_type_purescript.svg | 0 .../browser}/file_type_pyret.svg | 0 .../browser}/file_type_python.svg | 0 .../browser}/file_type_pythowo.svg | 0 .../browser}/file_type_pytyped.svg | 0 .../browser}/file_type_pyup.svg | 0 .../browser}/file_type_q.svg | 0 .../browser}/file_type_qbs.svg | 0 .../browser}/file_type_qlikview.svg | 0 .../browser}/file_type_qml.svg | 0 .../browser}/file_type_qmldir.svg | 0 .../browser}/file_type_qsharp.svg | 0 .../browser}/file_type_quasar.svg | 0 .../browser}/file_type_r.svg | 0 .../browser}/file_type_racket.svg | 0 .../browser}/file_type_rails.svg | 0 .../browser}/file_type_rake.svg | 0 .../browser}/file_type_raml.svg | 0 .../browser}/file_type_razor.svg | 0 .../browser}/file_type_razzle.svg | 0 .../browser}/file_type_reactjs.svg | 0 .../browser}/file_type_reacttemplate.svg | 0 .../browser}/file_type_reactts.svg | 0 .../browser}/file_type_reason.svg | 0 .../browser}/file_type_red.svg | 0 .../browser}/file_type_registry.svg | 0 .../browser}/file_type_rego.svg | 0 .../browser}/file_type_rehype.svg | 0 .../browser}/file_type_remark.svg | 0 .../browser}/file_type_renovate.svg | 0 .../browser}/file_type_replit.svg | 0 .../browser}/file_type_rescript.svg | 0 .../browser}/file_type_rest.svg | 0 .../browser}/file_type_retext.svg | 0 .../browser}/file_type_rexx.svg | 0 .../browser}/file_type_riot.svg | 0 .../browser}/file_type_rmd.svg | 0 .../browser}/file_type_robotframework.svg | 0 .../browser}/file_type_robots.svg | 0 .../browser}/file_type_rollup.svg | 0 .../browser}/file_type_rome.svg | 0 .../browser}/file_type_ron.svg | 0 .../browser}/file_type_rproj.svg | 0 .../browser}/file_type_rspec.svg | 0 .../browser}/file_type_rubocop.svg | 0 .../browser}/file_type_ruby.svg | 0 .../browser}/file_type_rust.svg | 0 .../browser}/file_type_rust_toolchain.svg | 0 .../browser}/file_type_sails.svg | 0 .../browser}/file_type_saltstack.svg | 0 .../browser}/file_type_san.svg | 0 .../file_type_sapphire_framework_cli.svg | 0 .../browser}/file_type_sas.svg | 0 .../browser}/file_type_sass.svg | 0 .../browser}/file_type_sbt.svg | 0 .../browser}/file_type_scala.svg | 0 .../browser}/file_type_scilab.svg | 0 .../browser}/file_type_script.svg | 0 .../browser}/file_type_scss.svg | 0 .../browser}/file_type_scss2.svg | 0 .../browser}/file_type_sdlang.svg | 0 .../browser}/file_type_sentry.svg | 0 .../browser}/file_type_sequelize.svg | 0 .../browser}/file_type_serverless.svg | 0 .../browser}/file_type_shaderlab.svg | 0 .../browser}/file_type_shell.svg | 0 .../browser}/file_type_shellcheck.svg | 0 .../browser}/file_type_shuttle.svg | 0 .../browser}/file_type_silverstripe.svg | 0 .../browser}/file_type_siyuan.svg | 0 .../browser}/file_type_sketch.svg | 0 .../browser}/file_type_skipper.svg | 0 .../browser}/file_type_slang.svg | 0 .../browser}/file_type_slashup.svg | 0 .../browser}/file_type_slice.svg | 0 .../browser}/file_type_slim.svg | 0 .../browser}/file_type_sln.svg | 0 .../browser}/file_type_sln2.svg | 0 .../browser}/file_type_smarty.svg | 0 .../browser}/file_type_snapcraft.svg | 0 .../browser}/file_type_snort.svg | 0 .../browser}/file_type_snyk.svg | 0 .../browser}/file_type_solidarity.svg | 0 .../browser}/file_type_solidity.svg | 0 .../browser}/file_type_source.svg | 0 .../browser}/file_type_spacengine.svg | 0 .../browser}/file_type_sparql.svg | 0 .../browser}/file_type_sqf.svg | 0 .../browser}/file_type_sql.svg | 0 .../browser}/file_type_sqlite.svg | 0 .../browser}/file_type_squirrel.svg | 0 .../browser}/file_type_sss.svg | 0 .../browser}/file_type_stan.svg | 0 .../browser}/file_type_stata.svg | 0 .../browser}/file_type_stencil.svg | 0 .../browser}/file_type_storyboard.svg | 0 .../browser}/file_type_storybook.svg | 0 .../browser}/file_type_stryker.svg | 0 .../browser}/file_type_stylable.svg | 0 .../browser}/file_type_style.svg | 0 .../browser}/file_type_styled.svg | 0 .../browser}/file_type_stylelint.svg | 0 .../browser}/file_type_stylish_haskell.svg | 0 .../browser}/file_type_stylus.svg | 0 .../browser}/file_type_subversion.svg | 0 .../browser}/file_type_svelte.svg | 0 .../browser}/file_type_svg.svg | 0 .../browser}/file_type_swagger.svg | 0 .../browser}/file_type_swift.svg | 0 .../browser}/file_type_swig.svg | 0 .../browser}/file_type_symfony.svg | 0 .../browser}/file_type_systemd.svg | 0 .../browser}/file_type_systemverilog.svg | 0 .../browser}/file_type_t4tt.svg | 0 .../browser}/file_type_tailwind.svg | 0 .../browser}/file_type_tauri.svg | 0 .../browser}/file_type_tcl.svg | 0 .../browser}/file_type_teal.svg | 0 .../browser}/file_type_tera.svg | 0 .../browser}/file_type_terraform.svg | 0 .../browser}/file_type_test.svg | 0 .../browser}/file_type_testcafe.svg | 0 .../browser}/file_type_testjs.svg | 0 .../browser}/file_type_testts.svg | 0 .../browser}/file_type_tex.svg | 0 .../browser}/file_type_text.svg | 0 .../browser}/file_type_textile.svg | 0 .../browser}/file_type_tfs.svg | 0 .../browser}/file_type_tiltfile.svg | 0 .../browser}/file_type_todo.svg | 0 .../browser}/file_type_toit.svg | 0 .../browser}/file_type_toml.svg | 0 .../browser}/file_type_tox.svg | 0 .../browser}/file_type_travis.svg | 0 .../browser}/file_type_tree.svg | 0 .../browser}/file_type_tres.svg | 0 .../browser}/file_type_truffle.svg | 0 .../browser}/file_type_trunk.svg | 0 .../browser}/file_type_tscn.svg | 0 .../browser}/file_type_tsconfig.svg | 0 .../browser}/file_type_tsconfig_official.svg | 0 .../browser}/file_type_tslint.svg | 0 .../browser}/file_type_tt.svg | 0 .../browser}/file_type_ttcn.svg | 0 .../browser}/file_type_tuc.svg | 0 .../browser}/file_type_turbo.svg | 0 .../browser}/file_type_twig.svg | 0 .../browser}/file_type_typedoc.svg | 0 .../browser}/file_type_typescript.svg | 0 .../file_type_typescript_official.svg | 0 .../browser}/file_type_typescriptdef.svg | 0 .../file_type_typescriptdef_official.svg | 0 .../browser}/file_type_typo3.svg | 0 .../browser}/file_type_unibeautify.svg | 0 .../browser}/file_type_unison.svg | 0 .../browser}/file_type_unlicense.svg | 0 .../browser}/file_type_vagrant.svg | 0 .../browser}/file_type_vala.svg | 0 .../browser}/file_type_vanilla_extract.svg | 0 .../browser}/file_type_vapi.svg | 0 .../browser}/file_type_vapor.svg | 0 .../browser}/file_type_vash.svg | 0 .../browser}/file_type_vb.svg | 0 .../browser}/file_type_vba.svg | 0 .../browser}/file_type_vbhtml.svg | 0 .../browser}/file_type_vbproj.svg | 0 .../browser}/file_type_vcxproj.svg | 0 .../browser}/file_type_velocity.svg | 0 .../browser}/file_type_verilog.svg | 0 .../browser}/file_type_vhdl.svg | 0 .../browser}/file_type_video.svg | 0 .../browser}/file_type_view.svg | 0 .../browser}/file_type_vim.svg | 0 .../browser}/file_type_vite.svg | 0 .../browser}/file_type_vitest.svg | 0 .../browser}/file_type_vlang.svg | 0 .../browser}/file_type_volt.svg | 0 .../browser}/file_type_vscode-insiders.svg | 0 .../browser}/file_type_vscode.svg | 0 .../browser}/file_type_vscode2.svg | 0 .../browser}/file_type_vscode3.svg | 0 .../browser}/file_type_vsix.svg | 0 .../browser}/file_type_vsixmanifest.svg | 0 .../browser}/file_type_vue.svg | 0 .../browser}/file_type_vueconfig.svg | 0 .../browser}/file_type_wallaby.svg | 0 .../browser}/file_type_wally.svg | 0 .../browser}/file_type_wasm.svg | 0 .../browser}/file_type_watchmanconfig.svg | 0 .../browser}/file_type_webpack.svg | 0 .../browser}/file_type_wenyan.svg | 0 .../browser}/file_type_wercker.svg | 0 .../browser}/file_type_wgsl.svg | 0 .../browser}/file_type_wikitext.svg | 0 .../browser}/file_type_windi.svg | 0 .../browser}/file_type_wolfram.svg | 0 .../browser}/file_type_word.svg | 0 .../browser}/file_type_word2.svg | 0 .../browser}/file_type_wpml.svg | 0 .../browser}/file_type_wurst.svg | 0 .../browser}/file_type_wxml.svg | 0 .../browser}/file_type_wxss.svg | 0 .../browser}/file_type_xcode.svg | 0 .../browser}/file_type_xfl.svg | 0 .../browser}/file_type_xib.svg | 0 .../browser}/file_type_xliff.svg | 0 .../browser}/file_type_xmake.svg | 0 .../browser}/file_type_xml.svg | 0 .../browser}/file_type_xquery.svg | 0 .../browser}/file_type_xsl.svg | 0 .../browser}/file_type_yacc.svg | 0 .../browser}/file_type_yaml.svg | 0 .../browser}/file_type_yamllint.svg | 0 .../browser}/file_type_yandex.svg | 0 .../browser}/file_type_yang.svg | 0 .../browser}/file_type_yarn.svg | 0 .../browser}/file_type_yeoman.svg | 0 .../browser}/file_type_zeit.svg | 0 .../browser}/file_type_zig.svg | 0 .../browser}/file_type_zip.svg | 0 .../browser}/file_type_zip2.svg | 0 .../browser}/folder_type_android.svg | 0 .../browser}/folder_type_android_opened.svg | 0 .../browser}/folder_type_api.svg | 0 .../browser}/folder_type_api_opened.svg | 0 .../browser}/folder_type_app.svg | 0 .../browser}/folder_type_app_opened.svg | 0 .../browser}/folder_type_arangodb.svg | 0 .../browser}/folder_type_arangodb_opened.svg | 0 .../browser}/folder_type_asset.svg | 0 .../browser}/folder_type_asset_opened.svg | 0 .../browser}/folder_type_audio.svg | 0 .../browser}/folder_type_audio_opened.svg | 0 .../browser}/folder_type_aurelia.svg | 0 .../browser}/folder_type_aurelia_opened.svg | 0 .../browser}/folder_type_aws.svg | 0 .../browser}/folder_type_aws_opened.svg | 0 .../browser}/folder_type_azure.svg | 0 .../browser}/folder_type_azure_opened.svg | 0 .../browser}/folder_type_azurepipelines.svg | 0 .../folder_type_azurepipelines_opened.svg | 0 .../browser}/folder_type_binary.svg | 0 .../browser}/folder_type_binary_opened.svg | 0 .../browser}/folder_type_bloc.svg | 0 .../browser}/folder_type_bloc_opened.svg | 0 .../browser}/folder_type_blueprint.svg | 0 .../browser}/folder_type_blueprint_opened.svg | 0 .../browser}/folder_type_bot.svg | 0 .../browser}/folder_type_bot_opened.svg | 0 .../browser}/folder_type_bower.svg | 0 .../browser}/folder_type_bower_opened.svg | 0 .../browser}/folder_type_buildkite.svg | 0 .../browser}/folder_type_buildkite_opened.svg | 0 .../browser}/folder_type_cake.svg | 0 .../browser}/folder_type_cake_opened.svg | 0 .../browser}/folder_type_certificate.svg | 0 .../folder_type_certificate_opened.svg | 0 .../browser}/folder_type_chef.svg | 0 .../browser}/folder_type_chef_opened.svg | 0 .../browser}/folder_type_circleci.svg | 0 .../browser}/folder_type_circleci_opened.svg | 0 .../browser}/folder_type_cli.svg | 0 .../browser}/folder_type_cli_opened.svg | 0 .../browser}/folder_type_client.svg | 0 .../browser}/folder_type_client_opened.svg | 0 .../browser}/folder_type_cmake.svg | 0 .../browser}/folder_type_cmake_opened.svg | 0 .../browser}/folder_type_common.svg | 0 .../browser}/folder_type_common_opened.svg | 0 .../browser}/folder_type_component.svg | 0 .../browser}/folder_type_component_opened.svg | 0 .../browser}/folder_type_composer.svg | 0 .../browser}/folder_type_composer_opened.svg | 0 .../browser}/folder_type_config.svg | 0 .../browser}/folder_type_config_opened.svg | 0 .../browser}/folder_type_controller.svg | 0 .../folder_type_controller_opened.svg | 0 .../browser}/folder_type_coverage.svg | 0 .../browser}/folder_type_coverage_opened.svg | 0 .../browser}/folder_type_css.svg | 0 .../browser}/folder_type_css_opened.svg | 0 .../browser}/folder_type_cubit.svg | 0 .../browser}/folder_type_cubit_opened.svg | 0 .../browser}/folder_type_cypress.svg | 0 .../browser}/folder_type_cypress_opened.svg | 0 .../browser}/folder_type_dapr.svg | 0 .../browser}/folder_type_dapr_opened.svg | 0 .../browser}/folder_type_datadog.svg | 0 .../browser}/folder_type_datadog_opened.svg | 0 .../browser}/folder_type_db.svg | 0 .../browser}/folder_type_db_opened.svg | 0 .../browser}/folder_type_debian.svg | 0 .../browser}/folder_type_debian_opened.svg | 0 .../browser}/folder_type_dependabot.svg | 0 .../folder_type_dependabot_opened.svg | 0 .../browser}/folder_type_devcontainer.svg | 0 .../folder_type_devcontainer_opened.svg | 0 .../browser}/folder_type_dist.svg | 0 .../browser}/folder_type_dist_opened.svg | 0 .../browser}/folder_type_docker.svg | 0 .../browser}/folder_type_docker_opened.svg | 0 .../browser}/folder_type_docs.svg | 0 .../browser}/folder_type_docs_opened.svg | 0 .../browser}/folder_type_e2e.svg | 0 .../browser}/folder_type_e2e_opened.svg | 0 .../browser}/folder_type_elasticbeanstalk.svg | 0 .../folder_type_elasticbeanstalk_opened.svg | 0 .../browser}/folder_type_electron.svg | 0 .../browser}/folder_type_electron_opened.svg | 0 .../browser}/folder_type_expo.svg | 0 .../browser}/folder_type_expo_opened.svg | 0 .../browser}/folder_type_favicon.svg | 0 .../browser}/folder_type_favicon_opened.svg | 0 .../browser}/folder_type_flow.svg | 0 .../browser}/folder_type_flow_opened.svg | 0 .../browser}/folder_type_fonts.svg | 0 .../browser}/folder_type_fonts_opened.svg | 0 .../browser}/folder_type_gcp.svg | 0 .../browser}/folder_type_gcp_opened.svg | 0 .../browser}/folder_type_git.svg | 0 .../browser}/folder_type_git_opened.svg | 0 .../browser}/folder_type_github.svg | 0 .../browser}/folder_type_github_opened.svg | 0 .../browser}/folder_type_gitlab.svg | 0 .../browser}/folder_type_gitlab_opened.svg | 0 .../browser}/folder_type_gradle.svg | 0 .../browser}/folder_type_gradle_opened.svg | 0 .../browser}/folder_type_graphql.svg | 0 .../browser}/folder_type_graphql_opened.svg | 0 .../browser}/folder_type_grunt.svg | 0 .../browser}/folder_type_grunt_opened.svg | 0 .../browser}/folder_type_gulp.svg | 0 .../browser}/folder_type_gulp_opened.svg | 0 .../browser}/folder_type_haxelib.svg | 0 .../browser}/folder_type_haxelib_opened.svg | 0 .../browser}/folder_type_helper.svg | 0 .../browser}/folder_type_helper_opened.svg | 0 .../browser}/folder_type_hook.svg | 0 .../browser}/folder_type_hook_opened.svg | 0 .../browser}/folder_type_husky.svg | 0 .../browser}/folder_type_husky_opened.svg | 0 .../browser}/folder_type_idea.svg | 0 .../browser}/folder_type_idea_opened.svg | 0 .../browser}/folder_type_images.svg | 0 .../browser}/folder_type_images_opened.svg | 0 .../browser}/folder_type_include.svg | 0 .../browser}/folder_type_include_opened.svg | 0 .../browser}/folder_type_interfaces.svg | 0 .../folder_type_interfaces_opened.svg | 0 .../browser}/folder_type_ios.svg | 0 .../browser}/folder_type_ios_opened.svg | 0 .../browser}/folder_type_js.svg | 0 .../browser}/folder_type_js_opened.svg | 0 .../browser}/folder_type_json.svg | 0 .../browser}/folder_type_json_official.svg | 0 .../folder_type_json_official_opened.svg | 0 .../browser}/folder_type_json_opened.svg | 0 .../browser}/folder_type_kubernetes.svg | 0 .../folder_type_kubernetes_opened.svg | 0 .../browser}/folder_type_less.svg | 0 .../browser}/folder_type_less_opened.svg | 0 .../browser}/folder_type_library.svg | 0 .../browser}/folder_type_library_opened.svg | 0 .../browser}/folder_type_light_cypress.svg | 0 .../folder_type_light_cypress_opened.svg | 0 .../browser}/folder_type_light_electron.svg | 0 .../folder_type_light_electron_opened.svg | 0 .../browser}/folder_type_light_expo.svg | 0 .../folder_type_light_expo_opened.svg | 0 .../browser}/folder_type_light_fonts.svg | 0 .../folder_type_light_fonts_opened.svg | 0 .../browser}/folder_type_light_gradle.svg | 0 .../folder_type_light_gradle_opened.svg | 0 .../browser}/folder_type_light_meteor.svg | 0 .../folder_type_light_meteor_opened.svg | 0 .../browser}/folder_type_light_mysql.svg | 0 .../folder_type_light_mysql_opened.svg | 0 .../browser}/folder_type_light_node.svg | 0 .../folder_type_light_node_opened.svg | 0 .../browser}/folder_type_light_redux.svg | 0 .../folder_type_light_redux_opened.svg | 0 .../browser}/folder_type_light_sass.svg | 0 .../folder_type_light_sass_opened.svg | 0 .../browser}/folder_type_linux.svg | 0 .../browser}/folder_type_linux_opened.svg | 0 .../browser}/folder_type_locale.svg | 0 .../browser}/folder_type_locale_opened.svg | 0 .../browser}/folder_type_log.svg | 0 .../browser}/folder_type_log_opened.svg | 0 .../browser}/folder_type_macos.svg | 0 .../browser}/folder_type_macos_opened.svg | 0 .../browser}/folder_type_mariadb.svg | 0 .../browser}/folder_type_mariadb_opened.svg | 0 .../browser}/folder_type_maven.svg | 0 .../browser}/folder_type_maven_opened.svg | 0 .../browser}/folder_type_memcached.svg | 0 .../browser}/folder_type_memcached_opened.svg | 0 .../browser}/folder_type_meteor.svg | 0 .../browser}/folder_type_meteor_opened.svg | 0 .../browser}/folder_type_middleware.svg | 0 .../folder_type_middleware_opened.svg | 0 .../browser}/folder_type_minikube.svg | 0 .../browser}/folder_type_minikube_opened.svg | 0 .../browser}/folder_type_mjml.svg | 0 .../browser}/folder_type_mjml_opened.svg | 0 .../browser}/folder_type_mock.svg | 0 .../browser}/folder_type_mock_opened.svg | 0 .../browser}/folder_type_model.svg | 0 .../browser}/folder_type_model_opened.svg | 0 .../browser}/folder_type_module.svg | 0 .../browser}/folder_type_module_opened.svg | 0 .../browser}/folder_type_mongodb.svg | 0 .../browser}/folder_type_mongodb_opened.svg | 0 .../browser}/folder_type_mysql.svg | 0 .../browser}/folder_type_mysql_opened.svg | 0 .../browser}/folder_type_next.svg | 0 .../browser}/folder_type_next_opened.svg | 0 .../browser}/folder_type_nginx.svg | 0 .../browser}/folder_type_nginx_opened.svg | 0 .../browser}/folder_type_nix.svg | 0 .../browser}/folder_type_nix_opened.svg | 0 .../browser}/folder_type_node.svg | 0 .../browser}/folder_type_node_opened.svg | 0 .../browser}/folder_type_notification.svg | 0 .../folder_type_notification_opened.svg | 0 .../browser}/folder_type_nuget.svg | 0 .../browser}/folder_type_nuget_opened.svg | 0 .../browser}/folder_type_nuxt.svg | 0 .../browser}/folder_type_nuxt_opened.svg | 0 .../browser}/folder_type_package.svg | 0 .../browser}/folder_type_package_opened.svg | 0 .../browser}/folder_type_paket.svg | 0 .../browser}/folder_type_paket_opened.svg | 0 .../browser}/folder_type_php.svg | 0 .../browser}/folder_type_php_opened.svg | 0 .../browser}/folder_type_platformio.svg | 0 .../folder_type_platformio_opened.svg | 0 .../browser}/folder_type_plugin.svg | 0 .../browser}/folder_type_plugin_opened.svg | 0 .../browser}/folder_type_prisma.svg | 0 .../browser}/folder_type_prisma_opened.svg | 0 .../browser}/folder_type_private.svg | 0 .../browser}/folder_type_private_opened.svg | 0 .../browser}/folder_type_public.svg | 0 .../browser}/folder_type_public_opened.svg | 0 .../browser}/folder_type_python.svg | 0 .../browser}/folder_type_python_opened.svg | 0 .../browser}/folder_type_ravendb.svg | 0 .../browser}/folder_type_ravendb_opened.svg | 0 .../browser}/folder_type_redis.svg | 0 .../browser}/folder_type_redis_opened.svg | 0 .../browser}/folder_type_redux.svg | 0 .../browser}/folder_type_redux_opened.svg | 0 .../browser}/folder_type_route.svg | 0 .../browser}/folder_type_route_opened.svg | 0 .../browser}/folder_type_sass.svg | 0 .../browser}/folder_type_sass_opened.svg | 0 .../browser}/folder_type_script.svg | 0 .../browser}/folder_type_script_opened.svg | 0 .../browser}/folder_type_server.svg | 0 .../browser}/folder_type_server_opened.svg | 0 .../browser}/folder_type_services.svg | 0 .../browser}/folder_type_services_opened.svg | 0 .../browser}/folder_type_shared.svg | 0 .../browser}/folder_type_shared_opened.svg | 0 .../browser}/folder_type_src.svg | 0 .../browser}/folder_type_src_opened.svg | 0 .../browser}/folder_type_sso.svg | 0 .../browser}/folder_type_sso_opened.svg | 0 .../browser}/folder_type_story.svg | 0 .../browser}/folder_type_story_opened.svg | 0 .../browser}/folder_type_style.svg | 0 .../browser}/folder_type_style_opened.svg | 0 .../browser}/folder_type_tauri.svg | 0 .../browser}/folder_type_tauri_opened.svg | 0 .../browser}/folder_type_temp.svg | 0 .../browser}/folder_type_temp_opened.svg | 0 .../browser}/folder_type_template.svg | 0 .../browser}/folder_type_template_opened.svg | 0 .../browser}/folder_type_test.svg | 0 .../browser}/folder_type_test_opened.svg | 0 .../browser}/folder_type_theme.svg | 0 .../browser}/folder_type_theme_opened.svg | 0 .../browser}/folder_type_tools.svg | 0 .../browser}/folder_type_tools_opened.svg | 0 .../browser}/folder_type_travis.svg | 0 .../browser}/folder_type_travis_opened.svg | 0 .../browser}/folder_type_trunk.svg | 0 .../browser}/folder_type_trunk_opened.svg | 0 .../browser}/folder_type_typescript.svg | 0 .../folder_type_typescript_opened.svg | 0 .../browser}/folder_type_typings.svg | 0 .../browser}/folder_type_typings2.svg | 0 .../browser}/folder_type_typings2_opened.svg | 0 .../browser}/folder_type_typings_opened.svg | 0 .../browser}/folder_type_vagrant.svg | 0 .../browser}/folder_type_vagrant_opened.svg | 0 .../browser}/folder_type_video.svg | 0 .../browser}/folder_type_video_opened.svg | 0 .../browser}/folder_type_view.svg | 0 .../browser}/folder_type_view_opened.svg | 0 .../browser}/folder_type_vs.svg | 0 .../browser}/folder_type_vs2.svg | 0 .../browser}/folder_type_vs2_opened.svg | 0 .../browser}/folder_type_vs_opened.svg | 0 .../browser}/folder_type_vscode.svg | 0 .../browser}/folder_type_vscode2.svg | 0 .../browser}/folder_type_vscode2_opened.svg | 0 .../browser}/folder_type_vscode3.svg | 0 .../browser}/folder_type_vscode3_opened.svg | 0 .../browser}/folder_type_vscode_opened.svg | 0 .../browser}/folder_type_vscode_test.svg | 0 .../browser}/folder_type_vscode_test2.svg | 0 .../folder_type_vscode_test2_opened.svg | 0 .../browser}/folder_type_vscode_test3.svg | 0 .../folder_type_vscode_test3_opened.svg | 0 .../folder_type_vscode_test_opened.svg | 0 .../browser}/folder_type_webpack.svg | 0 .../browser}/folder_type_webpack_opened.svg | 0 .../browser}/folder_type_windows.svg | 0 .../browser}/folder_type_windows_opened.svg | 0 .../browser}/folder_type_www.svg | 0 .../browser}/folder_type_www_opened.svg | 0 .../browser}/folder_type_yarn.svg | 0 .../browser}/folder_type_yarn_opened.svg | 0 .../app/resources/img => img}/os/alma.svg | 0 .../app/resources/img => img}/os/alpine.svg | 0 .../app/resources/img => img}/os/amazon.svg | 0 .../app/resources/img => img}/os/arch.svg | 0 .../app/resources/img => img}/os/centos.svg | 0 .../app/resources/img => img}/os/debian.svg | 0 .../img => img}/os/elementary-dark.svg | 0 .../resources/img => img}/os/elementary.svg | 0 .../img => img}/os/endeavour-dark.svg | 0 .../resources/img => img}/os/endeavour.svg | 0 .../app/resources/img => img}/os/fedora.svg | 0 .../app/resources/img => img}/os/freebsd.svg | 0 .../app/resources/img => img}/os/garuda.svg | 0 .../app/resources/img => img}/os/gentoo.svg | 0 .../app/resources/img => img}/os/kali.svg | 0 .../app/resources/img => img}/os/kubuntu.svg | 0 .../app/resources/img => img}/os/linux.svg | 0 .../resources/img => img}/os/macos-dark.svg | 0 .../app/resources/img => img}/os/macos.svg | 0 .../app/resources/img => img}/os/manjaro.svg | 0 .../app/resources/img => img}/os/mint.svg | 0 .../app/resources/img => img}/os/netbsd.svg | 0 .../app/resources/img => img}/os/nixos.svg | 0 .../app/resources/img => img}/os/openbsd.svg | 0 .../app/resources/img => img}/os/pop.svg | 0 .../app/resources/img => img}/os/redhat.svg | 0 .../app/resources/img => img}/os/rocky.svg | 0 .../app/resources/img => img}/os/suse.svg | 0 .../app/resources/img => img}/os/ubuntu.svg | 0 .../app/resources/img => img}/os/windows.svg | 0 .../app/resources/img => img}/os/zorin.svg | 0 img/proc/bash_icon.svg | 58 + img/proc/cmd_icon-dark.svg | 84 + img/proc/cmd_icon.svg | 80 + img/proc/command_icon-dark.svg | 75 + img/proc/command_icon.svg | 75 + img/proc/cygwin_icon-dark.svg | 48 + img/proc/cygwin_icon.svg | 6 + img/proc/defaultShell_icon-dark.svg | 97 + img/proc/defaultShell_icon.svg | 97 + img/proc/docker_icon.svg | 1 + img/proc/fish_icon-dark.svg | 84 + img/proc/fish_icon.svg | 84 + img/proc/gitForWindows_icon.svg | 1 + img/proc/hyperv_icon.svg | 43 + img/proc/k8sCluster_icon.svg | 1 + img/proc/k8sContainer_icon.svg | 85 + img/proc/k8sNode_icon.svg | 97 + img/proc/k8sPod_icon.svg | 103 + img/proc/lxd_icon.svg | 21 + img/proc/msys2_icon-dark.svg | 105 + img/proc/msys2_icon.svg | 105 + img/proc/podman_icon.svg | 1 + img/proc/powershell_logo.svg | 29 + img/proc/proxmoxContainer_icon-dark.svg | 137 + img/proc/proxmoxContainer_icon.svg | 141 + img/proc/proxmoxVm_icon-dark.svg | 137 + img/proc/proxmoxVm_icon.svg | 141 + img/proc/proxmox_icon-dark.svg | 137 + img/proc/proxmox_icon.svg | 141 + img/proc/pwsh_logo.png | Bin 0 -> 21502 bytes img/proc/rdpFile_icon-dark.svg | 84 + img/proc/rdpFile_icon.svg | 84 + img/proc/rdp_icon-dark.svg | 71 + img/proc/rdp_icon.svg | 71 + img/proc/serial_icon-dark.svg | 63 + img/proc/serial_icon.svg | 62 + img/proc/shBsd_icon-dark.svg | 74 + img/proc/shBsd_icon.svg | 74 + img/proc/sh_icon-dark.svg | 74 + img/proc/sh_icon.svg | 74 + img/proc/shellCommand_icon-dark.svg | 97 + img/proc/shellCommand_icon.svg | 97 + img/proc/shellEnvironmentGroup_icon-dark.svg | 87 + img/proc/shellEnvironmentGroup_icon.svg | 68 + img/proc/shellEnvironment_icon-dark.svg | 87 + img/proc/shellEnvironment_icon.svg | 68 + img/proc/sshConfig_icon-dark.svg | 98 + img/proc/sshConfig_icon.svg | 98 + img/proc/sshDynamicTunnel_icon-dark.svg | 73 + img/proc/sshDynamicTunnel_icon.svg | 73 + img/proc/sshLocalTunnel_icon-dark.svg | 63 + img/proc/sshLocalTunnel_icon.svg | 63 + img/proc/sshRemoteTunnel_icon-dark.svg | 63 + img/proc/sshRemoteTunnel_icon.svg | 63 + img/proc/sshTunnelGroup_icon-dark.svg | 57 + img/proc/sshTunnelGroup_icon.svg | 57 + img/proc/ssh_icon-dark.svg | 89 + img/proc/ssh_icon.svg | 89 + img/proc/teleport_icon.png | Bin 0 -> 11895 bytes img/proc/vmware_fusion_icon.png | Bin 0 -> 58685 bytes img/proc/vmware_player_icon.png | Bin 0 -> 17281 bytes img/proc/vmware_workstation_icon.svg | 53 + img/proc/vnc_icon-dark.svg | 66 + img/proc/vnc_icon.svg | 63 + img/proc/wsl_icon.svg | 3409 ++++++++++ img/proc/zsh_icon-dark.svg | 111 + img/proc/zsh_icon.svg | 106 + img/system/2fauth-light.svg | 17 + img/system/2fauth.svg | 20 + img/system/activepieces.svg | 12 + img/system/actual-budget.svg | 18 + img/system/adguard-home.svg | 26 + img/system/adminer-light.svg | 33 + img/system/adminer.svg | 33 + img/system/affine-light.svg | 26 + img/system/affine.svg | 22 + img/system/airtable.svg | 22 + img/system/akkoma-light.svg | 17 + img/system/akkoma.svg | 8 + img/system/alist.svg | 33 + img/system/anonaddy.svg | 55 + img/system/ansible-light.svg | 15 + img/system/ansible.svg | 16 + img/system/apache-answer.svg | 12 + img/system/appflowy.svg | 37 + img/system/appwrite.svg | 15 + img/system/ara-records-ansible.svg | 57 + img/system/argo-cd.svg | 123 + img/system/asciinema.svg | 24 + img/system/atuin-light.svg | 116 + img/system/atuin.svg | 119 + img/system/audacity-light.svg | 34 + img/system/audacity.svg | 81 + img/system/audiobookshelf.svg | 38 + img/system/authelia-light.svg | 35 + img/system/authelia.svg | 68 + img/system/authentik.svg | 35 + img/system/authman.svg | 113 + img/system/autobrr.svg | 25 + img/system/automad-light.svg | 14 + img/system/automad.svg | 11 + img/system/azuracast.svg | 65 + img/system/backblaze-light.svg | 14 + img/system/backblaze.svg | 18 + img/system/backrest-light.svg | 37 + img/system/backrest.svg | 32 + img/system/bar-assistant.svg | 20 + img/system/baserow-light.svg | 20 + img/system/baserow.svg | 22 + img/system/bigbluebutton.svg | 47 + img/system/bigcapital.svg | 13 + img/system/bitwarden.svg | 13 + img/system/blocky.svg | 233 + img/system/bluesky-light.svg | 14 + img/system/bluesky.svg | 14 + img/system/booklogr.svg | 37 + img/system/bookstack.svg | 22 + img/system/borg.svg | 10 + img/system/borgmatic-light.svg | 21 + img/system/borgmatic.svg | 18 + img/system/budgetbee.svg | 57 + img/system/budibase.svg | 30 + img/system/bunkerweb-light.svg | 13 + img/system/bunkerweb.svg | 13 + img/system/caddy.svg | 58 + img/system/cal-com-light.svg | 20 + img/system/cal-com.svg | 22 + img/system/calibre-web.svg | 15 + img/system/calibre.svg | 225 + img/system/castopod.svg | 30 + img/system/changedetection-light.svg | 37 + img/system/changedetection.svg | 38 + img/system/channels-dvr.svg | 45 + img/system/chevereto.svg | 18 + img/system/chirpy.svg | 14 + img/system/chromium.svg | 44 + img/system/clickhouse.svg | 17 + img/system/cloudbeaver.svg | 44 + img/system/cloudflare.svg | 22 + img/system/cockpit-light.svg | 16 + img/system/cockpit.svg | 13 + img/system/codeberg.svg | 26 + img/system/coder-light.svg | 31 + img/system/coder.svg | 28 + img/system/commafeed-light.svg | 15 + img/system/commafeed.svg | 15 + img/system/commento-light.svg | 91 + img/system/commento.svg | 91 + img/system/compreface.svg | 34 + img/system/confluence.svg | 29 + img/system/converse-light.svg | 22 + img/system/converse.svg | 18 + img/system/couchdb-light.svg | 18 + img/system/couchdb.svg | 18 + img/system/counter-analytics.svg | 14 + img/system/crowdsec.svg | 96 + img/system/cryptpad.svg | 37 + img/system/ctfreak.svg | 19 + img/system/cyberchef.svg | 47 + img/system/czkawka.svg | 180 + img/system/dalibo-light.svg | 29 + img/system/dalibo.svg | 36 + img/system/davical.svg | 23 + img/system/ddclient.svg | 36 + img/system/ddns-updater.svg | 113 + img/system/defguard.svg | 22 + img/system/deluge.svg | 18 + img/system/digitalocean-light.svg | 25 + img/system/digitalocean.svg | 25 + img/system/dillinger-light.svg | 11 + img/system/dillinger.svg | 11 + img/system/docassemble-light.svg | 22 + img/system/docassemble.svg | 19 + img/system/docker-light.svg | 14 + img/system/docker-volume-backup.svg | 23 + img/system/docker.svg | 14 + img/system/dockge.svg | 14 + img/system/docspell.svg | 36 + img/system/docusaurus.svg | 76 + img/system/docuseal.svg | 40 + img/system/dokemon.svg | 19 + img/system/dokuwiki.svg | 167 + img/system/double-take.svg | 35 + img/system/dovecot.svg | 14 + img/system/dozzle-light.svg | 15 + img/system/dozzle.svg | 15 + img/system/draw-io.svg | 33 + img/system/dropbox-light.svg | 14 + img/system/dropbox.svg | 14 + img/system/dropout.svg | 17 + img/system/dub-light.svg | 11 + img/system/dub.svg | 11 + img/system/duckdns.svg | 24 + img/system/duplicati.svg | 25 + img/system/element.svg | 18 + img/system/eleventy-light.svg | 22 + img/system/eleventy.svg | 22 + img/system/emby.svg | 16 + img/system/endless-light.svg | 51 + img/system/endless.svg | 48 + img/system/endurain.svg | 157 + img/system/esphome-light.svg | 19 + img/system/esphome.svg | 19 + img/system/etesync.svg | 45 + img/system/excalidraw.svg | 52 + img/system/fasten-health.svg | 20 + img/system/fastmail.svg | 20 + img/system/feedbase-light.svg | 16 + img/system/feedbase.svg | 13 + img/system/feedbin-light.svg | 31 + img/system/feedbin.svg | 28 + img/system/feedly-light.svg | 18 + img/system/feedly.svg | 18 + img/system/feedlynx.svg | 84 + img/system/fenrus.svg | 115 + img/system/ferdium-light.svg | 11 + img/system/ferdium.svg | 20 + img/system/ferretdb-light.svg | 30 + img/system/ferretdb.svg | 30 + img/system/file-browser.svg | 56 + img/system/fileflows.svg | 19 + img/system/filerun-light.svg | 11 + img/system/filerun.svg | 11 + img/system/filestash.svg | 13 + img/system/firefly-iii.svg | 34 + img/system/fittrackee.svg | 47 + img/system/flaresolverr.svg | 122 + img/system/flarum.svg | 32 + img/system/fluffychat-light.svg | 33 + img/system/fluffychat.svg | 43 + img/system/forgejo.svg | 18 + img/system/forte-light.svg | 26 + img/system/forte.svg | 27 + img/system/freeipa.svg | 24 + img/system/freshrss.svg | 21 + img/system/friendica.svg | 20 + img/system/frigate-light.svg | 15 + img/system/frigate.svg | 11 + img/system/funkwhale-light.svg | 37 + img/system/funkwhale.svg | 37 + img/system/fusionauth-light.svg | 33 + img/system/fusionauth.svg | 33 + img/system/garage.svg | 53 + img/system/gatsby.svg | 19 + img/system/gatus.svg | 31 + img/system/ghostfolio.svg | 19 + img/system/gitea.svg | 35 + img/system/gitlab.svg | 44 + img/system/glance-light.svg | 14 + img/system/glance.svg | 21 + img/system/glpi.svg | 31 + img/system/gotify.svg | 5928 +++++++++++++++++ img/system/gotosocial.svg | 133 + img/system/grafana.svg | 55 + img/system/grav-light.svg | 36 + img/system/grav.svg | 36 + img/system/grimoire.svg | 4489 +++++++++++++ img/system/grist.svg | 58 + img/system/grocy.svg | 17 + img/system/haproxy.svg | 189 + img/system/haptic-light.svg | 27 + img/system/haptic.svg | 39 + img/system/headscale.svg | 22 + img/system/healthchecks-light.svg | 18 + img/system/healthchecks.svg | 19 + img/system/hedgedoc.svg | 40 + img/system/heimdall-light.svg | 25 + img/system/heimdall.svg | 24 + img/system/heyform.svg | 22 + img/system/hivedav.svg | 228 + img/system/hoarder-light.svg | 16 + img/system/hoarder.svg | 13 + img/system/hollo-light.svg | 36 + img/system/hollo.svg | 35 + img/system/homarr.svg | 25 + img/system/home-assistant.svg | 19 + img/system/homebox.svg | 40 + img/system/homebridge-light.svg | 20 + img/system/homebridge.svg | 36 + img/system/homer.svg | 52 + img/system/hoppscotch-light.svg | 20 + img/system/hoppscotch.svg | 92 + img/system/hubzilla-light.svg | 18 + img/system/hubzilla.svg | 18 + img/system/huginn.svg | 62 + img/system/hugo.svg | 247 + img/system/humhub.svg | 16 + img/system/icon.svg | 60 + img/system/immich-frame-light.svg | 68 + img/system/immich-frame.svg | 68 + img/system/immich-kiosk.svg | 98 + img/system/immich.svg | 24 + img/system/influxdb.svg | 22 + img/system/inoreader-light.svg | 12 + img/system/inoreader.svg | 12 + img/system/invidious.svg | 41 + img/system/invoice-ninja-light.svg | 25 + img/system/invoice-ninja.svg | 22 + img/system/it-tools-light.svg | 74 + img/system/it-tools.svg | 74 + img/system/jackett-light.svg | 16 + img/system/jackett.svg | 13 + img/system/jekyll.svg | 44 + img/system/jellyfin-light.svg | 14 + img/system/jellyfin.svg | 26 + img/system/jellyseerr.svg | 135 + img/system/jira.svg | 30 + img/system/jitsi-meet.svg | 255 + img/system/jwt-io-light.svg | 18 + img/system/jwt-io.svg | 36 + img/system/kanboard-light.svg | 20 + img/system/kanboard.svg | 20 + img/system/kanidm.svg | 229 + img/system/kapowarr.svg | 108 + img/system/kavita.svg | 131 + img/system/kbin.svg | 25 + img/system/keepassxc.svg | 102 + img/system/keila.svg | 16 + img/system/kestra.svg | 27 + img/system/keycloak.svg | 81 + img/system/komga.svg | 39 + img/system/kontoj.svg | 25 + img/system/krakend.svg | 49 + img/system/kyoo-light.svg | 27 + img/system/kyoo.svg | 27 + img/system/lancommander-light.svg | 17 + img/system/lancommander.svg | 17 + img/system/leantime.svg | 15 + img/system/lets-encrypt-light.svg | 27 + img/system/lets-encrypt.svg | 27 + img/system/librespeed.svg | 63 + img/system/librum.svg | 13 + img/system/lidarr.svg | 441 ++ img/system/limesurvey.svg | 40 + img/system/linkace-light.svg | 18 + img/system/linkace.svg | 18 + img/system/linkding.svg | 16 + img/system/linkstack.svg | 69 + img/system/linuxserver-io.svg | 133 + img/system/listmonk.svg | 12 + img/system/lodestone.svg | 100 + img/system/logseq.svg | 24 + img/system/logto.svg | 23 + img/system/loki.svg | 122 + img/system/mail-in-a-box.svg | 40 + img/system/mailcow.svg | 126 + img/system/mailjet-light.svg | 12 + img/system/mailjet.svg | 12 + img/system/manyfold.svg | 167 + img/system/mariadb.svg | 54 + img/system/mastodon.svg | 28 + img/system/matomo.svg | 67 + img/system/matrix-light.svg | 21 + img/system/matrix.svg | 21 + img/system/mattermost-light.svg | 20 + img/system/mattermost.svg | 20 + img/system/mautic-light.svg | 24 + img/system/mautic.svg | 22 + img/system/maybe.svg | 31 + img/system/mbin.svg | 36 + img/system/mealie-light.svg | 21 + img/system/mealie.svg | 21 + img/system/medama.svg | 30 + img/system/mediux-light.svg | 16 + img/system/mediux.svg | 25 + img/system/medusa-light.svg | 16 + img/system/medusa.svg | 16 + img/system/meilisearch-light.svg | 15 + img/system/meilisearch.svg | 32 + img/system/memories-light.svg | 67 + img/system/memories.svg | 58 + img/system/mergeable.svg | 19 + img/system/meshping-light.svg | 19 + img/system/meshping.svg | 16 + img/system/metabase.svg | 33 + img/system/metube.svg | 18 + img/system/minecraft.svg | 946 +++ img/system/miniflux-light.svg | 16 + img/system/miniflux.svg | 13 + img/system/minio-light.svg | 24 + img/system/minio.svg | 24 + img/system/mirotalk.svg | 34 + img/system/misskey-light.svg | 22 + img/system/misskey.svg | 19 + img/system/mitra-light.svg | 19 + img/system/mitra.svg | 35 + img/system/mixpost.svg | 18 + img/system/mobilizon.svg | 25 + img/system/mongodb.svg | 19 + img/system/monica-light.svg | 29 + img/system/monica.svg | 30 + img/system/mosquitto.svg | 30 + img/system/motioneye.svg | 89 + img/system/mqtt-light.svg | 15 + img/system/mqtt.svg | 15 + img/system/mullvad-vpn.svg | 43 + img/system/mumble.svg | 61 + img/system/music-assistant-light.svg | 18 + img/system/music-assistant.svg | 18 + img/system/myheats-light.svg | 53 + img/system/myheats.svg | 54 + img/system/mysql-light.svg | 30 + img/system/mysql.svg | 30 + img/system/n8n.svg | 20 + img/system/navidrome.svg | 20 + img/system/neko-light.svg | 44 + img/system/neko.svg | 44 + img/system/neodb.svg | 34 + img/system/netalertx.svg | 61 + img/system/netbird.svg | 27 + img/system/netboot-xyz-light.svg | 31 + img/system/netboot-xyz.svg | 31 + img/system/netdata-light.svg | 12 + img/system/netdata.svg | 12 + img/system/netlify.svg | 45 + img/system/newsblur.svg | 356 + img/system/nextcloud-light.svg | 18 + img/system/nextcloud-news-light.svg | 17 + img/system/nextcloud-news.svg | 17 + img/system/nextcloud-social-light.svg | 19 + img/system/nextcloud-social.svg | 19 + img/system/nextcloud-tables-light.svg | 16 + img/system/nextcloud-tables.svg | 1 + img/system/nextcloud.svg | 18 + img/system/nginx-proxy-manager.svg | 151 + img/system/nocodb-light.svg | 15 + img/system/nocodb.svg | 26 + img/system/node-red.svg | 25 + img/system/nodebb.svg | 26 + img/system/nordvpn-light.svg | 12 + img/system/nordvpn.svg | 12 + img/system/note-mark.svg | 31 + img/system/notesnook-light.svg | 32 + img/system/notesnook.svg | 32 + img/system/notion-light.svg | 18 + img/system/notion.svg | 22 + img/system/ntfy-light.svg | 25 + img/system/ntfy.svg | 33 + img/system/obsidian.svg | 26 + img/system/obtainium.svg | 35 + img/system/octoprint.svg | 29 + img/system/olivetin.svg | 37 + img/system/omada.svg | 113 + img/system/ombi.svg | 74 + img/system/omnivore.svg | 18 + img/system/onedev-light.svg | 37 + img/system/onedev.svg | 33 + img/system/oneuptime-light.svg | 41 + img/system/oneuptime.svg | 40 + img/system/open-source-initiative.svg | 15 + img/system/openchangelog-light.svg | 21 + img/system/openchangelog.svg | 21 + img/system/openemr-light.svg | 20 + img/system/openemr.svg | 16 + img/system/openldap.svg | 57 + img/system/openpanel-light.svg | 17 + img/system/openpanel.svg | 14 + img/system/openreads.svg | 50 + img/system/openspeedtest-light.svg | 97 + img/system/openspeedtest.svg | 97 + img/system/opentalk.svg | 16 + img/system/opentofu-light.svg | 25 + img/system/opentofu.svg | 35 + img/system/openvpn-light.svg | 16 + img/system/openvpn.svg | 16 + img/system/openwrt-light.svg | 23 + img/system/openwrt.svg | 23 + img/system/opnsense.svg | 272 + img/system/outline.svg | 19 + img/system/overleaf.svg | 15 + img/system/overseerr.svg | 30 + img/system/owncast.svg | 86 + img/system/owncloud-light.svg | 66 + img/system/owncloud.svg | 66 + img/system/owntone.svg | 33 + img/system/oxker.svg | 96 + img/system/paperless-ngx-light.svg | 26 + img/system/paperless-ngx.svg | 26 + img/system/papermark-light.svg | 15 + img/system/papermark.svg | 18 + img/system/papermerge.svg | 159 + img/system/parseable.svg | 25 + img/system/passbolt.svg | 18 + img/system/payload-light.svg | 13 + img/system/payload.svg | 13 + img/system/pdfding-light.svg | 16 + img/system/pdfding.svg | 16 + img/system/peanut.svg | 72 + img/system/peertube.svg | 16 + img/system/pelican-panel.svg | 134 + img/system/penpot-light.svg | 17 + img/system/penpot.svg | 14 + img/system/peppermint.svg | 84 + img/system/pepperminty-wiki.svg | 219 + img/system/pfsense-light.svg | 24 + img/system/pfsense.svg | 26 + img/system/pg-back-web.svg | 60 + img/system/photopea-light.svg | 15 + img/system/photopea.svg | 15 + img/system/photoprism.svg | 27 + img/system/photoview.svg | 40 + img/system/pi-hole.svg | 28 + img/system/pikapods-light.svg | 20 + img/system/pikapods.svg | 20 + img/system/pingvin-share.svg | 23 + img/system/pinkary.svg | 27 + img/system/piwigo.svg | 19 + img/system/pixelfed.svg | 143 + img/system/plane.svg | 17 + img/system/plausible.svg | 29 + img/system/pleroma.svg | 19 + img/system/plex-rewind.svg | 32 + img/system/plex.svg | 1 + img/system/pocket-casts-light.svg | 14 + img/system/pocket-casts.svg | 16 + img/system/pocket-id-light.svg | 12 + img/system/pocket-id.svg | 12 + img/system/podfetch-light.svg | 14 + img/system/podfetch.svg | 14 + img/system/podman.svg | 160 + img/system/portainer.svg | 27 + img/system/postal.svg | 30 + img/system/postgresql.svg | 47 + img/system/posthog.svg | 31 + img/system/private-internet-access.svg | 67 + img/system/privatebin.svg | 20 + img/system/projectsend.svg | 25 + img/system/prometheus.svg | 23 + img/system/prowlarr.svg | 177 + img/system/proxmox-light.svg | 22 + img/system/proxmox.svg | 22 + img/system/pterodactyl.svg | 173 + img/system/pushover-light.svg | 17 + img/system/pushover.svg | 23 + img/system/pyload.svg | 101 + img/system/python-light.svg | 22 + img/system/python.svg | 35 + img/system/qbittorrent.svg | 28 + img/system/quickwit.svg | 17 + img/system/radarr-light.svg | 19 + img/system/radarr.svg | 19 + img/system/radicale.svg | 19 + img/system/rallly-light.svg | 21 + img/system/rallly.svg | 21 + img/system/rancher-light.svg | 21 + img/system/rancher.svg | 21 + img/system/raspberry-pi.svg | 55 + img/system/rclone.svg | 28 + img/system/reactive-resume-light.svg | 20 + img/system/reactive-resume.svg | 18 + img/system/readarr.svg | 32 + img/system/readeck.svg | 18 + img/system/receipt-wrangler.svg | 17 + img/system/recipesage.svg | 25 + img/system/redict.svg | 66 + img/system/redlib.svg | 15 + img/system/reolink-light.svg | 16 + img/system/reolink.svg | 16 + img/system/requestly.svg | 60 + img/system/restreamer.svg | 14 + img/system/rhasspy.svg | 43 + img/system/richy.svg | 32 + img/system/rocket-chat.svg | 24 + img/system/romm.svg | 300 + img/system/roundcube.svg | 20 + img/system/rss-bridge.svg | 54 + img/system/rss-translator.svg | 35 + img/system/rundeck.svg | 20 + img/system/runson-light.svg | 110 + img/system/runson.svg | 96 + img/system/sabnzbd.svg | 1 + img/system/saltcorn.svg | 29 + img/system/scrutiny-light.svg | 42 + img/system/scrutiny.svg | 41 + img/system/seafile.svg | 26 + img/system/secureai-tools-light.svg | 31 + img/system/secureai-tools.svg | 31 + img/system/seelf.svg | 23 + img/system/self-hosted-gateway.svg | 18 + img/system/shaarli.svg | 36 + img/system/shellhub-light.svg | 25 + img/system/shellhub.svg | 25 + img/system/shlink.svg | 25 + img/system/shoko-server-light.svg | 249 + img/system/shoko-server.svg | 309 + img/system/signal-light.svg | 26 + img/system/signal.svg | 26 + img/system/simplex-chat-light.svg | 16 + img/system/simplex-chat.svg | 16 + img/system/siyuan-light.svg | 17 + img/system/siyuan.svg | 17 + img/system/slash-light.svg | 12 + img/system/slash.svg | 12 + img/system/snikket.svg | 96 + img/system/socialhome-light.svg | 24 + img/system/socialhome.svg | 24 + img/system/solidtime-light.svg | 24 + img/system/solidtime.svg | 21 + img/system/sonarqube.svg | 13 + img/system/sonarr.svg | 33 + img/system/specifically-clementines.svg | 959 +++ img/system/squirrel-servers-manager.svg | 8 + img/system/sshwifty.svg | 73 + img/system/stalwart-mail-server.svg | 17 + img/system/standard-notes.svg | 14 + img/system/step-ca.svg | 18 + img/system/stirling-pdf.svg | 34 + img/system/stormkit.svg | 18 + img/system/subatic.svg | 28 + img/system/supabase.svg | 26 + img/system/synapse-light.svg | 32 + img/system/synapse.svg | 29 + img/system/syncthing.svg | 37 + img/system/tailscale-light.svg | 25 + img/system/tailscale.svg | 24 + img/system/tangerine-ui.svg | 48 + img/system/tautulli.svg | 30 + img/system/telegram.svg | 25 + img/system/teleport-light.svg | 24 + img/system/teleport.svg | 24 + img/system/threads-light.svg | 20 + img/system/threads.svg | 17 + img/system/thunderbird-light.svg | 34 + img/system/thunderbird.svg | 118 + img/system/tiddlywiki-light.svg | 26 + img/system/tiddlywiki.svg | 23 + img/system/tmdb-light.svg | 32 + img/system/tmdb.svg | 38 + img/system/tooljet.svg | 31 + img/system/touitomamout.svg | 67 + img/system/tp-link-light.svg | 13 + img/system/tp-link.svg | 13 + img/system/tpdb-light.svg | 49 + img/system/tpdb.svg | 49 + img/system/traccar.svg | 21 + img/system/traefik.svg | 31 + img/system/transmission.svg | 150 + img/system/trilium.svg | 33 + img/system/triliumnext.svg | 42 + img/system/truenas-core-light.svg | 27 + img/system/truenas-core.svg | 29 + img/system/truenas-scale-light.svg | 45 + img/system/truenas-scale.svg | 47 + img/system/tubesync-light.svg | 20 + img/system/tubesync.svg | 20 + img/system/tumblr-light.svg | 14 + img/system/tumblr.svg | 18 + img/system/tvdb-light.svg | 24 + img/system/tvdb.svg | 24 + img/system/ubiquiti-unifi-light.svg | 14 + img/system/ubiquiti-unifi.svg | 14 + img/system/umami-light.svg | 14 + img/system/umami.svg | 13 + img/system/umbrel.svg | 28 + img/system/unbound.svg | 41 + img/system/undb.svg | 70 + img/system/unifi-voucher-site.svg | 65 + img/system/unraid.svg | 19 + img/system/upsnap.svg | 190 + img/system/uptime-kuma.svg | 17 + img/system/valkey-light.svg | 15 + img/system/valkey.svg | 15 + img/system/vaultwarden-light.svg | 78 + img/system/vaultwarden.svg | 74 + img/system/vector.svg | 40 + img/system/victoriametrics-light.svg | 14 + img/system/victoriametrics.svg | 11 + img/system/vidzy.svg | 14 + img/system/vikunja.svg | 57 + img/system/viseron.svg | 1393 ++++ img/system/voilib-light.svg | 16 + img/system/voilib.svg | 16 + img/system/voltaserve-light.svg | 27 + img/system/voltaserve.svg | 27 + img/system/wallabag-light.svg | 34 + img/system/wallabag.svg | 31 + img/system/wanderer-light.svg | 38 + img/system/wanderer.svg | 38 + img/system/webtrees.svg | 23 + img/system/wekan.svg | 59 + img/system/wger.svg | 27 + img/system/whats-up-docker-light.svg | 39 + img/system/whats-up-docker.svg | 36 + img/system/wiki-js.svg | 490 ++ img/system/wikidocs.svg | 12 + img/system/wikipedia-light.svg | 25 + img/system/wikipedia.svg | 18 + img/system/willow.svg | 18 + img/system/windows-retro-light.svg | 75 + img/system/windows-retro.svg | 74 + img/system/wireguard.svg | 39 + img/system/wizarr.svg | 55 + img/system/woocommerce.svg | 29 + img/system/worklenz-light.svg | 25 + img/system/worklenz.svg | 25 + img/system/writefreely-light.svg | 40 + img/system/writefreely.svg | 40 + img/system/xbackbone.svg | 25 + img/system/xwiki-light.svg | 28 + img/system/xwiki.svg | 28 + img/system/yacht-light.svg | 29 + img/system/yacht.svg | 27 + img/system/yamtrack-light.svg | 23 + img/system/yamtrack.svg | 23 + img/system/yarr-light.svg | 36 + img/system/yarr.svg | 36 + img/system/your-spotify.svg | 23 + img/system/yourls.svg | 42 + img/system/youtube-dl.svg | 24 + img/system/zabbix.svg | 12 + img/system/zammad.svg | 43 + img/system/zigbee2mqtt.svg | 129 + img/system/zipcaptions-light.svg | 24 + img/system/zipcaptions.svg | 26 + img/system/zitadel-light.svg | 127 + img/system/zitadel.svg | 127 + img/system/zoraxy-light.svg | 20 + img/system/zoraxy.svg | 20 + img/system/zwave-js-ui-light.svg | 28 + img/system/zwave-js-ui.svg | 28 + lang/app/strings/fixed_en.properties | 2 + lang/app/strings/translations_da.properties | 25 +- lang/app/strings/translations_de.properties | 23 +- lang/app/strings/translations_en.properties | 27 +- lang/app/strings/translations_es.properties | 23 +- lang/app/strings/translations_fr.properties | 25 +- lang/app/strings/translations_it.properties | 23 +- lang/app/strings/translations_ja.properties | 25 +- lang/app/strings/translations_nl.properties | 25 +- lang/app/strings/translations_pt.properties | 25 +- lang/app/strings/translations_ru.properties | 25 +- lang/app/strings/translations_tr.properties | 23 +- lang/app/strings/translations_zh.properties | 23 +- lang/app/texts/vault_da.md | 65 + lang/app/texts/vault_de.md | 65 + lang/app/texts/vault_en.md | 65 + lang/app/texts/vault_es.md | 65 + lang/app/texts/vault_fr.md | 65 + lang/app/texts/vault_it.md | 65 + lang/app/texts/vault_ja.md | 65 + lang/app/texts/vault_nl.md | 65 + lang/app/texts/vault_pt.md | 65 + lang/app/texts/vault_ru.md | 65 + lang/app/texts/vault_tr.md | 65 + lang/app/texts/vault_zh.md | 65 + lang/base/strings/translations_da.properties | 5 + lang/base/strings/translations_de.properties | 5 + lang/base/strings/translations_en.properties | 6 + lang/base/strings/translations_es.properties | 5 + lang/base/strings/translations_fr.properties | 5 + lang/base/strings/translations_it.properties | 5 + lang/base/strings/translations_ja.properties | 5 + lang/base/strings/translations_nl.properties | 5 + lang/base/strings/translations_pt.properties | 5 + lang/base/strings/translations_ru.properties | 5 + lang/base/strings/translations_tr.properties | 5 + lang/base/strings/translations_zh.properties | 5 + lang/proc/strings/translations_da.properties | 12 +- lang/proc/strings/translations_de.properties | 12 +- lang/proc/strings/translations_en.properties | 12 +- lang/proc/strings/translations_es.properties | 12 +- lang/proc/strings/translations_fr.properties | 12 +- lang/proc/strings/translations_it.properties | 12 +- lang/proc/strings/translations_ja.properties | 12 +- lang/proc/strings/translations_nl.properties | 12 +- lang/proc/strings/translations_pt.properties | 12 +- lang/proc/strings/translations_ru.properties | 12 +- lang/proc/strings/translations_tr.properties | 12 +- lang/proc/strings/translations_zh.properties | 12 +- version | 2 +- 5428 files changed, 52759 insertions(+), 1861 deletions(-) create mode 100644 app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceComp.java create mode 100644 app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceDialogComp.java create mode 100644 app/src/main/java/io/xpipe/app/comp/store/StoreIconComp.java delete mode 100644 app/src/main/java/io/xpipe/app/core/AppImages.java delete mode 100644 app/src/main/java/io/xpipe/app/core/AppResources.java create mode 100644 app/src/main/java/io/xpipe/app/core/check/AppGpuCheck.java create mode 100644 app/src/main/java/io/xpipe/app/core/check/AppJavaOptionsCheck.java create mode 100644 app/src/main/java/io/xpipe/app/ext/ContainerImageStore.java create mode 100644 app/src/main/java/io/xpipe/app/prefs/ExternalPasswordManagerTemplate.java create mode 100644 app/src/main/java/io/xpipe/app/prefs/LockChangeAlert.java create mode 100644 app/src/main/java/io/xpipe/app/resources/AppImages.java create mode 100644 app/src/main/java/io/xpipe/app/resources/AppResources.java create mode 100644 app/src/main/java/io/xpipe/app/resources/ContainerAutoSystemIcon.java create mode 100644 app/src/main/java/io/xpipe/app/resources/FileAutoSystemIcon.java create mode 100644 app/src/main/java/io/xpipe/app/resources/ShellAutoSystemIcon.java create mode 100644 app/src/main/java/io/xpipe/app/resources/SystemIcon.java create mode 100644 app/src/main/java/io/xpipe/app/resources/SystemIcons.java create mode 100644 app/src/main/java/io/xpipe/app/util/AsktextAlert.java delete mode 100644 app/src/main/java/io/xpipe/app/util/Indicator.java delete mode 100644 app/src/main/java/io/xpipe/app/util/LockChangeAlert.java delete mode 100644 app/src/main/java/io/xpipe/app/util/NamedCharacter.java delete mode 100644 app/src/main/java/io/xpipe/app/util/PrettyListView.java delete mode 100644 app/src/main/java/io/xpipe/app/util/ProxyManagerProviderImpl.java create mode 100644 app/src/main/java/io/xpipe/app/util/ScanDialog.java create mode 100644 app/src/main/java/io/xpipe/app/util/TerminalLaunchRequest.java create mode 100644 app/src/main/java/io/xpipe/app/util/TerminalLaunchResult.java delete mode 100644 app/src/main/java/io/xpipe/app/util/UserConfig.java delete mode 100644 app/src/main/java/io/xpipe/app/util/Validatable.java delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/default_folder_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/default_root_folder_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_android_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_api_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_app_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_arangodb_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_asset_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_audio_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_aurelia_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_aws_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_azure_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_azurepipelines_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_binary_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_bloc_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_blueprint_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_bot_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_bower_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_buildkite_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_cake_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_certificate_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_chef_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_circleci_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_cli_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_client_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_cmake_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_common_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_component_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_composer_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_config_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_controller_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_coverage_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_css_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_cubit_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_cypress_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_dapr_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_datadog_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_db_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_debian_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_dependabot_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_devcontainer_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_dist_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_docker_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_docs_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_e2e_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_elasticbeanstalk_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_electron_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_expo_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_favicon_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_flow_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_fonts_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_gcp_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_git_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_github_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_gitlab_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_gradle_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_graphql_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_grunt_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_gulp_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_haxelib_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_helper_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_hook_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_husky_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_idea_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_images_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_include_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_interfaces_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_ios_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_js_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_json_official_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_json_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_kubernetes_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_less_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_library_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_cypress_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_electron_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_expo_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_fonts_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_gradle_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_meteor_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_mysql_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_node_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_redux_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_light_sass_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_linux_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_locale_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_log_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_macos_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_mariadb_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_maven_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_memcached_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_meteor_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_middleware_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_minikube_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_mjml_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_mock_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_model_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_module_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_mongodb_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_mysql_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_next_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_nginx_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_nix_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_node_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_notification_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_nuget_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_nuxt_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_package_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_paket_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_php_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_platformio_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_plugin_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_prisma_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_private_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_public_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_python_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_ravendb_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_redis_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_redux_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_route_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_sass_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_script_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_server_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_services_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_shared_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_src_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_sso_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_story_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_style_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_tauri_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_temp_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_template_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_test_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_theme_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_tools_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_travis_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_trunk_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_typescript_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_typings2_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_typings_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vagrant_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_video_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_view_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vs2_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vs_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode2_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode3_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode_test2_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode_test3_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_vscode_test_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_webpack_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_windows_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_www_opened-24.png delete mode 100644 app/src/main/resources/io/xpipe/app/resources/browser_icons/folder_type_yarn_opened-24.png rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/default_file-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/default_folder-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/default_root_folder-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_access-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_access2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_actionscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_actionscript2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ada-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_advpl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_affectscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_affinitydesigner-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_affinityphoto-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_affinitypublisher-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ai-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ai2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_al-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_al_dal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_allcontributors-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_angular-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ansible-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_antlr-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_anyscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_apache-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_apex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_api_extractor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_apib-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_apib2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_apl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_applescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_appscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_appsemble-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_appveyor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_arduino-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_asciidoc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_asp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_aspx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_assembly-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_astro-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_astroconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ats-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_audio-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_aurelia-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_autohotkey-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_autoit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_avif-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_avro-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_awk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_aws-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_azure-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_azurepipelines-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_babel-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_babel2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ballerina-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bat-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bats-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bazaar-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bazel-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bazel_ignore-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bazel_version-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_befunge-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bicep-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_biml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_binary-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bitbucketpipeline-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bithound-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_blade-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_blitzbasic-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bolt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bosque-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bower-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bower2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_browserslist-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_buckbuild-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bun-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bundler-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_bunfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_c-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_c2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_c3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_c_al-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cabal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_caddy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cakephp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_capacitor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cargo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_casc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cddl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cert-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ceylon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cf-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cf2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cfc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cfc2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cfm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cfm2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cheader-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_chef-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_chef_cookbook-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_circleci-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_class-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_clojure-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_clojurescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cloudfoundry-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cmake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cobol-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codacy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codeclimate-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codecov-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codekit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codeowners-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_codeql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_coffeelint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_coffeescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_commitizen-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_commitlint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_compass-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_composer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_conan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_conda-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_config-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_confluence-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_coveralls-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cpp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cpp2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cpp3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cppheader-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_crowdin-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_crystal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_csharp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_csharp2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cspell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_csproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_css-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_csscomb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_csslint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cssmap-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cucumber-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cuda-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cvs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cypress-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cypress_spec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_cython-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_darcs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dartlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dartlang_generated-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dartlang_ignore-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_datadog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_db-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_delphi-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_deno-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dependabot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dependencies-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_devcontainer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dhall-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_diff-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_django-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_docker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_docker2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dockertest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dockertest2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_docpad-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_docz-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dojo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_doppler-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dotjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_doxygen-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_drawio-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_drone-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_drools-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dustjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dvc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_dylan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_earthly-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eas-metadata-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_edge-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_edge2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_editorconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ejs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_elastic-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_elasticbeanstalk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eleventy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eleventy2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_elixir-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_elm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_elm2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_emacs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ember-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ensime-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eps-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_erb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_erlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_erlang2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_esbuild-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eslint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_eslint2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_esphome-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_excel-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_excel2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_expo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_falcon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fantasticon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fauna-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_favicon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fbx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_firebase-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_firebasehosting-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_firestore-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fitbit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fla-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_flareact-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_flash-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_floobits-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_flow-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_flutter-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_flutter_package-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_font-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_formkit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fortran-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fossa-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fossil-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_freemarker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fsharp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fsharp2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fsproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fthtml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_funding-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_fusebox-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_galen-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_galen2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gamemaker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gamemaker2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gamemaker81-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gatsby-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gcloud-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gcode-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gdscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_genstat-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_git-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_git2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gitlab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gitpod-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_glide-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_glitter-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_glsl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_glyphs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gnu-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gnuplot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_aqua-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_black-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_fuchsia-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_gopher-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_lightblue-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_package-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_white-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_work-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_go_yellow-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_goctl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_godot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gradle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gradle2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_graphql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_graphql_config-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_graphviz-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_greenkeeper-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gridsome-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_groovy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_groovy2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_grunt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_gulp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_handlebars-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_handlebars2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_harbour-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hardhat-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hashicorp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haskell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haskell2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haxe-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haxecheckstyle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_haxedevelop-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_helix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_helm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hjson-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hlsl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_homeassistant-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_horusec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_host-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_html-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_htmlhint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_http-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hunspell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_husky-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hygen-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_hypr-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_icl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_idris-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_idrisbin-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_idrispkg-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_image-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_imba-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_inc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_infopath-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_informix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ini-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ink-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_innosetup-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_io-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_iodine-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ionic-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_janet-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jar-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jasmine-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_java-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jbuilder-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jekyll-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jenkins-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jest_snapshot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jinja-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jpm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_js_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsbeautify-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jscpd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jshint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsmap-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_json-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_json2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_json5-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_json_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsonld-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsonnet-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jsp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_julia-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_julia2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_jupyter-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_k-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_karma-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_key-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kitchenci-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kite-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kivy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kotlin-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_kusto-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_latino-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_layout-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lerna-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_less-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_license-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_licensebat-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_actionscript2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_ada-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_apl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_babel-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_babel2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_cabal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_circleci-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_cloudfoundry-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_codacy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_codeclimate-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_codeowners-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_config-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_crystal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_cypress-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_cypress_spec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_db-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_deno-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_dhall-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_docpad-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_drone-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_eas-metadata-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_eleventy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_eleventy2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_esphome-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_expo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_firebasehosting-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_fla-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_font-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_gamemaker2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_gradle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_hashicorp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_hjson-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_ini-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_io-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_jsconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_jsmap-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_json-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_json5-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_jsonld-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_kite-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_lerna-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_mailing-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_mdx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_mlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_mustache-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_next-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_nim-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_nx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_objidconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_openHAB-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_pcl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_pnpm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_prettier-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_prisma-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_purescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_quasar-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_razzle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_rehype-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_remark-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_replit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_retext-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_rome-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_rubocop-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_rust-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_rust_toolchain-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_shaderlab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_solidity-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_stylelint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_stylus-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_symfony-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_systemd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_systemverilog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_testcafe-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_testjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_tex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_todo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_toit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_toml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_tree-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_turbo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_unibeautify-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_vash-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_vsix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_vsixmanifest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_xfl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_yaml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_light_zeit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lighthouse-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lilypond-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lime-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lintstagedrc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_liquid-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lisp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_livescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lnk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_locale-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_log-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lolcode-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lsl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lua-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_luau-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_lync-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mailing-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_manifest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_manifest_bak-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_manifest_skip-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_map-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mariadb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_markdown-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_markdownlint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_markdownlint_ignore-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_marko-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_markojs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_master-co-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_matlab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_maven-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_maxscript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_maya-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mdx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mediawiki-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mercurial-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_meson-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_meteor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mjml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mocha-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_modernizr-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mojolicious-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_moleculer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mondoo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mongo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_monotone-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_motif-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mson-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mustache-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_mysql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ndst-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nearly-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_adapter_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_adapter_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_controller_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_controller_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_decorator_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_decorator_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_filter_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_filter_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_gateway_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_gateway_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_guard_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_guard_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_interceptor_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_interceptor_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_middleware_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_middleware_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_module_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_module_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_pipe_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_pipe_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_service_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nest_service_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nestjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_netlify-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_next-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_css-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_html-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_less-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_sass-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_scss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_component_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_controller_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_controller_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_directive_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_directive_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_directive_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_directive_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_directive_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_guard_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_guard_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_guard_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_interceptor_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_interceptor_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_interceptor_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_module_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_module_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_module_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_module_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_module_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_pipe_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_pipe_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_pipe_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_pipe_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_pipe_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_routing_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_routing_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_routing_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_routing_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_routing_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_service_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_service_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_service_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_service_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_service_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_smart_component_dart-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_smart_component_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_smart_component_js2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_smart_component_ts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_smart_component_ts2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ng_tailwind-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nginx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nim-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nimble-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ninja-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_njsproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_noc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_node-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_node2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nodemon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_npm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nsi-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nsri-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nsri-integrity-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nuget-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_numpy-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nunjucks-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nuxt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_nyc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_objectivec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_objectivecpp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_objidconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ocaml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ogone-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_onenote-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_openHAB-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_opencl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_openscad-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_org-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_outlook-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ovpn-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_package-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_paket-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_patch-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pcl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pddl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pddl_happenings-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pddl_plan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pdf-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pdf2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_peeky-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_perl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_perl2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_perl6-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pgsql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_photoshop-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_photoshop2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_php-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_php2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_php3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_phpcsfixer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_phpstan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_phpunit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_phraseapp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pine-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pip-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pipeline-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plantuml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_platformio-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_playwright-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plsql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plsql_package-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plsql_package_body-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plsql_package_header-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_plsql_package_spec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pm2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pnpm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_poedit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_poetry-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_polymer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pony-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_postcss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_postcssconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powerpoint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powerpoint2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_format-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_psd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_psd2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_psm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_psm2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_powershell_types-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_preact-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_precommit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_prettier-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_prisma-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_processinglang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_procfile-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_progress-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_prolog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_prometheus-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_protobuf-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_protractor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_publisher-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pug-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pulumi-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_puppet-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_purescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pyret-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_python-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pythowo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pytyped-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_pyup-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_q-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_qbs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_qlikview-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_qml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_qmldir-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_qsharp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_quasar-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_r-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_racket-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rails-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_raml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_razor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_razzle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_reactjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_reacttemplate-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_reactts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_reason-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_red-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_registry-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rego-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rehype-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_remark-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_renovate-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_replit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_retext-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rexx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_riot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rmd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_robotframework-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_robots-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rollup-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rome-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ron-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rspec-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rubocop-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ruby-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rust-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_rust_toolchain-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sails-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_saltstack-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_san-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sapphire_framework_cli-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sas-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sass-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sbt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_scala-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_scilab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_script-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_scss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_scss2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sdlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sentry-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sequelize-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_serverless-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_shaderlab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_shell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_shellcheck-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_shuttle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_silverstripe-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_siyuan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sketch-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_skipper-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_slang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_slashup-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_slice-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_slim-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sln-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sln2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_smarty-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_snapcraft-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_snort-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_snyk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_solidarity-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_solidity-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_source-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_spacengine-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sparql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sqf-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sqlite-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_squirrel-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_sss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stata-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stencil-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_storyboard-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_storybook-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stryker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stylable-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_style-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_styled-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stylelint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stylish_haskell-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_stylus-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_subversion-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_svelte-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_svg-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_swagger-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_swift-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_swig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_symfony-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_systemd-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_systemverilog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_t4tt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tailwind-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tauri-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tcl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_teal-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tera-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_terraform-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_test-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_testcafe-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_testjs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_testts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_text-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_textile-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tfs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tiltfile-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_todo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_toit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_toml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tox-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_travis-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tree-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tres-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_truffle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_trunk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tscn-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tsconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tsconfig_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tslint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_ttcn-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_tuc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_turbo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_twig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typedoc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typescript_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typescriptdef-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typescriptdef_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_typo3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_unibeautify-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_unison-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_unlicense-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vagrant-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vala-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vanilla_extract-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vapi-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vapor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vash-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vba-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vbhtml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vbproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vcxproj-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_velocity-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_verilog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vhdl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_video-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_view-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vim-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vite-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vitest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vlang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_volt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vscode-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vscode-insiders-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vscode2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vscode3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vsix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vsixmanifest-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vue-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_vueconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wallaby-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wally-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wasm-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_watchmanconfig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_webpack-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wenyan-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wercker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wgsl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wikitext-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_windi-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wolfram-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_word-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_word2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wpml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wurst-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wxml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_wxss-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xcode-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xfl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xib-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xliff-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xmake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xquery-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_xsl-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yacc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yaml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yamllint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yandex-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yang-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yarn-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_yeoman-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_zeit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_zig-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_zip-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/file_type_zip2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_android-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_api-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_app-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_arangodb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_asset-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_audio-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_aurelia-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_aws-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_azure-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_azurepipelines-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_binary-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_bloc-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_blueprint-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_bot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_bower-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_buildkite-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_cake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_certificate-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_chef-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_circleci-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_cli-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_client-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_cmake-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_common-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_component-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_composer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_config-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_controller-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_coverage-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_css-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_cubit-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_cypress-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_dapr-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_datadog-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_db-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_debian-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_dependabot-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_devcontainer-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_dist-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_docker-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_docs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_e2e-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_elasticbeanstalk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_electron-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_expo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_favicon-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_flow-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_fonts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_gcp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_git-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_github-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_gitlab-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_gradle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_graphql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_grunt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_gulp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_haxelib-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_helper-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_hook-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_husky-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_idea-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_images-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_include-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_interfaces-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_ios-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_js-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_json-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_json_official-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_kubernetes-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_less-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_library-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_cypress-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_electron-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_expo-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_fonts-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_gradle-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_meteor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_mysql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_node-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_redux-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_light_sass-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_linux-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_locale-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_log-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_macos-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_mariadb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_maven-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_memcached-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_meteor-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_middleware-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_minikube-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_mjml-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_mock-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_model-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_module-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_mongodb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_mysql-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_next-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_nginx-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_nix-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_node-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_notification-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_nuget-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_nuxt-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_package-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_paket-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_php-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_platformio-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_plugin-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_prisma-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_private-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_public-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_python-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_ravendb-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_redis-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_redux-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_route-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_sass-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_script-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_server-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_services-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_shared-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_src-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_sso-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_story-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_style-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_tauri-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_temp-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_template-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_test-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_theme-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_tools-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_travis-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_trunk-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_typescript-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_typings-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_typings2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vagrant-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_video-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_view-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vs-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vs2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode_test-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode_test2-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_vscode_test3-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_webpack-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_windows-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_www-24.png (100%) rename app/src/main/resources/io/xpipe/app/resources/{browser_icons => img/browser}/folder_type_yarn-24.png (100%) delete mode 100644 app/src/main/resources/io/xpipe/app/resources/img/file_drag_icon.png rename app/src/main/resources/io/xpipe/app/resources/img/{ => graphics}/Hips-dark.svg (100%) rename app/src/main/resources/io/xpipe/app/resources/img/{ => graphics}/Hips.svg (100%) rename app/src/main/resources/io/xpipe/app/resources/img/{ => graphics}/Wave-dark.svg (100%) rename app/src/main/resources/io/xpipe/app/resources/img/{ => graphics}/Wave.svg (100%) rename app/src/main/resources/io/xpipe/app/resources/img/{ => logo}/logo.png (100%) create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/alma-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/alpine-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/amazon-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/arch-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/centos-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/debian-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/elementary-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/endeavour-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/fedora-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/freebsd-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/garuda-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/gentoo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/kali-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/kubuntu-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/linux-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/macos-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/macos-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/manjaro-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/mint-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/netbsd-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/nixos-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/openbsd-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/pop-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/redhat-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/rocky-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/suse-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/ubuntu-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/windows-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/os/zorin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/producthunt-color.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/2fauth-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/activepieces-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/activepieces-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/activepieces-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/actual-budget-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/actual-budget-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/actual-budget-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adguard-home-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adguard-home-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adguard-home-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/adminer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/affine-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/airtable-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/airtable-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/airtable-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/akkoma-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/alist-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/alist-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/alist-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/anonaddy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/anonaddy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/anonaddy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ansible-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/apache-answer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/apache-answer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/apache-answer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appflowy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appflowy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appflowy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appwrite-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appwrite-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/appwrite-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ara-records-ansible-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ara-records-ansible-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ara-records-ansible-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/argo-cd-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/argo-cd-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/argo-cd-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/asciinema-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/asciinema-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/asciinema-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/atuin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audacity-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audiobookshelf-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audiobookshelf-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/audiobookshelf-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authelia-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authentik-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authentik-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authentik-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authman-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authman-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/authman-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/autobrr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/autobrr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/autobrr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/automad-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/azuracast-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/azuracast-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/azuracast-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backblaze-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/backrest-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bar-assistant-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bar-assistant-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bar-assistant-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/baserow-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigbluebutton-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigbluebutton-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigbluebutton-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigcapital-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigcapital-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bigcapital-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bitwarden-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bitwarden-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bitwarden-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/blocky-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/blocky-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/blocky-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bluesky-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/booklogr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/booklogr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/booklogr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bookstack-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bookstack-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bookstack-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borg-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borg-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borg-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/borgmatic-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budgetbee-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budgetbee-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budgetbee-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budibase-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budibase-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/budibase-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/bunkerweb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/caddy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/caddy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/caddy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cal-com-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-web-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-web-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/calibre-web-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/castopod-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/castopod-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/castopod-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/changedetection-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/channels-dvr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/channels-dvr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/channels-dvr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chevereto-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chevereto-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chevereto-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chirpy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chirpy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chirpy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chromium-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chromium-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/chromium-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/clickhouse-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/clickhouse-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/clickhouse-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudbeaver-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudbeaver-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudbeaver-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudflare-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudflare-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cloudflare-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cockpit-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/codeberg-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/codeberg-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/codeberg-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/coder-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commafeed-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/commento-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/compreface-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/compreface-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/compreface-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/confluence-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/confluence-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/confluence-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/converse-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/couchdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/counter-analytics-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/counter-analytics-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/counter-analytics-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/crowdsec-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/crowdsec-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/crowdsec-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cryptpad-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cryptpad-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cryptpad-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ctfreak-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ctfreak-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ctfreak-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cyberchef-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cyberchef-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/cyberchef-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/czkawka-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/czkawka-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/czkawka-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dalibo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/davical-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/davical-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/davical-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddclient-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddclient-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddclient-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddns-updater-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddns-updater-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ddns-updater-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/defguard-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/defguard-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/defguard-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/deluge-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/deluge-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/deluge-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/digitalocean-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dillinger-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docassemble-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-volume-backup-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-volume-backup-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docker-volume-backup-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dockge-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dockge-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dockge-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docspell-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docspell-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docspell-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docusaurus-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docusaurus-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docusaurus-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docuseal-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docuseal-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/docuseal-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokemon-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokemon-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokemon-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokuwiki-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokuwiki-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dokuwiki-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/double-take-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/double-take-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/double-take-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dovecot-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dovecot-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dovecot-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dozzle-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/draw-io-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/draw-io-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/draw-io-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropbox-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropout-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropout-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dropout-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/dub-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duckdns-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duckdns-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duckdns-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duplicati-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duplicati-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/duplicati-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/element-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/element-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/element-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/eleventy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/emby-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/emby-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/emby-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endless-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endurain-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endurain-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/endurain-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/esphome-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/etesync-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/etesync-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/etesync-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/excalidraw-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/excalidraw-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/excalidraw-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fasten-health-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fasten-health-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fasten-health-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fastmail-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fastmail-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fastmail-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbase-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedbin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedly-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedlynx-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedlynx-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/feedlynx-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fenrus-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fenrus-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fenrus-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferdium-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ferretdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/file-browser-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/file-browser-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/file-browser-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fileflows-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fileflows-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fileflows-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filerun-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filestash-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filestash-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/filestash-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/firefly-iii-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/firefly-iii-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/firefly-iii-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fittrackee-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fittrackee-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fittrackee-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flaresolverr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flaresolverr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flaresolverr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flarum-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flarum-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/flarum-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fluffychat-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forgejo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forgejo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forgejo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/forte-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freeipa-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freeipa-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freeipa-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freshrss-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freshrss-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/freshrss-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/friendica-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/friendica-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/friendica-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/frigate-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/funkwhale-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/fusionauth-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/garage-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/garage-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/garage-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatsby-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatsby-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatsby-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatus-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatus-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gatus-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ghostfolio-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ghostfolio-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ghostfolio-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitea-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitea-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitea-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitlab-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitlab-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gitlab-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glance-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glpi-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glpi-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/glpi-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotify-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotify-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotify-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotosocial-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotosocial-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/gotosocial-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grafana-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grafana-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grafana-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grav-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grimoire-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grimoire-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grimoire-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grist-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grist-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grist-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grocy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grocy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/grocy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haproxy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haproxy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haproxy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/haptic-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/headscale-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/headscale-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/headscale-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/healthchecks-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hedgedoc-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hedgedoc-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hedgedoc-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heimdall-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heyform-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heyform-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/heyform-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hivedav-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hivedav-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hivedav-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoarder-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hollo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/home-assistant-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/home-assistant-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/home-assistant-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebox-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebox-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebox-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homebridge-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/homer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hoppscotch-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hubzilla-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/huginn-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/huginn-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/huginn-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hugo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hugo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/hugo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/humhub-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/humhub-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/humhub-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/icon-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/icon-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/icon-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-frame-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-kiosk-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-kiosk-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/immich-kiosk-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/influxdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/influxdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/influxdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/inoreader-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invidious-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invidious-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invidious-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/invoice-ninja-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/it-tools-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jackett-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jekyll-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jekyll-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jekyll-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyfin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyseerr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyseerr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jellyseerr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jira-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jira-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jira-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jitsi-meet-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jitsi-meet-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jitsi-meet-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/jwt-io-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanboard-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanidm-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanidm-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kanidm-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kapowarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kapowarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kapowarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kavita-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kavita-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kavita-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kbin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kbin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kbin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keepassxc-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keepassxc-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keepassxc-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keila-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keila-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keila-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kestra-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kestra-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kestra-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keycloak-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keycloak-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/keycloak-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/komga-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/komga-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/komga-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kontoj-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kontoj-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kontoj-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/krakend-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/krakend-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/krakend-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/kyoo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lancommander-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/leantime-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/leantime-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/leantime-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lets-encrypt-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librespeed-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librespeed-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librespeed-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librum-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librum-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/librum-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lidarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lidarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lidarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/limesurvey-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/limesurvey-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/limesurvey-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkace-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkding-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkding-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkding-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkedin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkstack-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkstack-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linkstack-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linuxserver-io-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linuxserver-io-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/linuxserver-io-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/listmonk-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/listmonk-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/listmonk-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lodestone-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lodestone-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/lodestone-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logseq-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logseq-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logseq-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logto-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logto-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/logto-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/loki-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/loki-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/loki-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mail-in-a-box-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mail-in-a-box-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mail-in-a-box-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailcow-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailcow-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailcow-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mailjet-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/manyfold-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/manyfold-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/manyfold-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mariadb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mariadb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mariadb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mastodon-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mastodon-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mastodon-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matomo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matomo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matomo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/matrix-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mattermost-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mautic-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/maybe-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/maybe-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/maybe-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mbin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mbin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mbin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mealie-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medama-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medama-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medama-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mediux-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/medusa-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meilisearch-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/memories-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mergeable-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mergeable-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mergeable-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/meshping-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metabase-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metabase-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metabase-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metube-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metube-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/metube-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minecraft-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minecraft-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minecraft-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/miniflux-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/minio-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mirotalk-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mirotalk-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mirotalk-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/misskey-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mitra-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mixpost-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mixpost-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mixpost-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mobilizon-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mobilizon-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mobilizon-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mongodb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mongodb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mongodb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/monica-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mosquitto-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mosquitto-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mosquitto-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mqtt-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mullvad-vpn-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mullvad-vpn-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mullvad-vpn-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mumble-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mumble-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mumble-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/music-assistant-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/myheats-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/mysql-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/n8n-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/n8n-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/n8n-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/navidrome-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/navidrome-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/navidrome-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neko-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neodb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neodb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/neodb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netalertx-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netalertx-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netalertx-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netbird-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netbird-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netbird-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netboot-xyz-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netdata-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netlify-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netlify-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/netlify-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/newsblur-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/newsblur-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/newsblur-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-news-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-social-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nextcloud-tables-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nginx-proxy-manager-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nginx-proxy-manager-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nginx-proxy-manager-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nintendo-switch-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nocodb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/node-red-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/node-red-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/node-red-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nodebb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nodebb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nodebb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/nordvpn-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/note-mark-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/note-mark-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/note-mark-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notesnook-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/notion-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ntfy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obsidian-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obsidian-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obsidian-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obtainium-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obtainium-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/obtainium-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/octoprint-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/octoprint-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/octoprint-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/olivetin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/olivetin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/olivetin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omada-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omada-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omada-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ombi-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ombi-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ombi-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omnivore-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omnivore-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/omnivore-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/onedev-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oneuptime-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/open-source-initiative-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/open-source-initiative-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/open-source-initiative-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openchangelog-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openemr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openldap-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openldap-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openldap-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openpanel-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openreads-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openreads-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openreads-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openspeedtest-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentalk-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentalk-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentalk-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opentofu-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openvpn-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/openwrt-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opnsense-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opnsense-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/opnsense-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/outline-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/outline-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/outline-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overleaf-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overleaf-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overleaf-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overseerr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overseerr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/overseerr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncast-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncast-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncast-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owncloud-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owntone-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owntone-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/owntone-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oxker-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oxker-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/oxker-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/paperless-ngx-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermark-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermerge-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermerge-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/papermerge-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/parseable-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/parseable-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/parseable-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/passbolt-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/passbolt-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/passbolt-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/payload-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pdfding-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peanut-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peanut-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peanut-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peertube-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peertube-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peertube-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pelican-panel-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pelican-panel-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pelican-panel-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/penpot-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peppermint-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peppermint-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/peppermint-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pepperminty-wiki-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pepperminty-wiki-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pepperminty-wiki-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pfsense-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pg-back-web-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pg-back-web-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pg-back-web-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photopea-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoprism-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoprism-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoprism-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoview-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoview-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/photoview-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pi-hole-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pi-hole-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pi-hole-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pikapods-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pingvin-share-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pingvin-share-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pingvin-share-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pinkary-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pinkary-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pinkary-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/piwigo-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/piwigo-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/piwigo-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pixelfed-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pixelfed-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pixelfed-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plane-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plane-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plane-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plausible-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plausible-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plausible-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pleroma-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pleroma-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pleroma-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-rewind-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-rewind-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/plex-rewind-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-casts-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pocket-id-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podfetch-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podman-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podman-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/podman-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/portainer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/portainer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/portainer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postal-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postal-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postal-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postgresql-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postgresql-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/postgresql-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/posthog-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/posthog-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/posthog-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/private-internet-access-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/private-internet-access-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/private-internet-access-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/privatebin-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/privatebin-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/privatebin-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/projectsend-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/projectsend-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/projectsend-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prometheus-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prometheus-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prometheus-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prowlarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prowlarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/prowlarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/proxmox-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pterodactyl-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pterodactyl-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pterodactyl-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pushover-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pyload-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pyload-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/pyload-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/python-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/qbittorrent-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/qbittorrent-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/qbittorrent-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/quickwit-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/quickwit-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/quickwit-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radicale-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radicale-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/radicale-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rallly-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rancher-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/raspberry-pi-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/raspberry-pi-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/raspberry-pi-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rclone-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rclone-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rclone-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reactive-resume-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readeck-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readeck-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/readeck-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/receipt-wrangler-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/receipt-wrangler-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/receipt-wrangler-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/recipesage-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/recipesage-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/recipesage-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redict-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redict-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redict-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redlib-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redlib-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/redlib-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/reolink-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/requestly-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/requestly-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/requestly-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/restreamer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/restreamer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/restreamer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rhasspy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rhasspy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rhasspy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/richy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/richy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/richy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rocket-chat-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rocket-chat-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rocket-chat-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/romm-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/romm-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/romm-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/roundcube-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/roundcube-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/roundcube-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-bridge-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-bridge-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-bridge-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-translator-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-translator-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rss-translator-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rundeck-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rundeck-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/rundeck-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/runson-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sabnzbd-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sabnzbd-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sabnzbd-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/saltcorn-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/saltcorn-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/saltcorn-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/scrutiny-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seafile-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seafile-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seafile-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/secureai-tools-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seelf-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seelf-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/seelf-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/self-hosted-gateway-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/self-hosted-gateway-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/self-hosted-gateway-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shaarli-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shaarli-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shaarli-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shellhub-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shlink-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shlink-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shlink-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/shoko-server-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/signal-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/simplex-chat-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/siyuan-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/slash-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/snikket-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/snikket-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/snikket-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/socialhome-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/solidtime-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarqube-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarqube-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarqube-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sonarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/specifically-clementines-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/specifically-clementines-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/specifically-clementines-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/squirrel-servers-manager-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/squirrel-servers-manager-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/squirrel-servers-manager-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sshwifty-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sshwifty-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/sshwifty-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stalwart-mail-server-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stalwart-mail-server-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stalwart-mail-server-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/standard-notes-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/standard-notes-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/standard-notes-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/step-ca-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/step-ca-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/step-ca-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stirling-pdf-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stirling-pdf-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stirling-pdf-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stormkit-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stormkit-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/stormkit-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/subatic-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/subatic-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/subatic-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/supabase-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/supabase-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/supabase-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/synapse-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/syncthing-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/syncthing-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/syncthing-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tailscale-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tangerine-ui-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tangerine-ui-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tangerine-ui-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tautulli-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tautulli-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tautulli-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/telegram-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/telegram-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/telegram-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/teleport-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/threads-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/thunderbird-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tiddlywiki-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tmdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tooljet-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tooljet-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tooljet-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/touitomamout-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/touitomamout-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/touitomamout-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tp-link-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tpdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traccar-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traccar-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traccar-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traefik-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traefik-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/traefik-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/transmission-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/transmission-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/transmission-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/trilium-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/trilium-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/trilium-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/triliumnext-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/triliumnext-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/triliumnext-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-core-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/truenas-scale-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tubesync-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tumblr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/tvdb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/ubiquiti-unifi-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umami-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umbrel-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umbrel-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/umbrel-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unbound-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unbound-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unbound-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/undb-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/undb-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/undb-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unifi-voucher-site-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unifi-voucher-site-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unifi-voucher-site-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unraid-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unraid-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/unraid-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/upsnap-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/upsnap-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/upsnap-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/uptime-kuma-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/uptime-kuma-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/uptime-kuma-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/valkey-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vaultwarden-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vector-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vector-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vector-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/victoriametrics-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vidzy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vidzy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vidzy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vikunja-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vikunja-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/vikunja-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/viseron-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/viseron-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/viseron-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voilib-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/voltaserve-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wallabag-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wanderer-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/webtrees-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/webtrees-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/webtrees-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wekan-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wekan-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wekan-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wger-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wger-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wger-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/whats-up-docker-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wiki-js-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wiki-js-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wiki-js-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikidocs-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikidocs-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikidocs-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wikipedia-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/willow-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/willow-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/willow-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/windows-retro-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wireguard-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wireguard-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wireguard-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wizarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wizarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/wizarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/woocommerce-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/woocommerce-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/woocommerce-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/worklenz-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/writefreely-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xbackbone-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xbackbone-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xbackbone-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/xwiki-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yacht-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yamtrack-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yarr-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/your-spotify-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/your-spotify-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/your-spotify-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yourls-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yourls-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/yourls-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/youtube-dl-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/youtube-dl-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/youtube-dl-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zabbix-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zabbix-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zabbix-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zammad-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zammad-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zammad-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zigbee2mqtt-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zigbee2mqtt-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zigbee2mqtt-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zipcaptions-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zitadel-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zoraxy-40.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-16-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-16.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-24-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-24.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-40-dark.png create mode 100644 app/src/main/resources/io/xpipe/app/resources/img/system/zwave-js-ui-40.png create mode 100644 core/src/main/java/io/xpipe/core/store/ShellValidationContext.java create mode 100644 core/src/main/java/io/xpipe/core/store/ValidationContext.java create mode 100644 dist/changelogs/12.0.md create mode 100644 ext/base/src/main/java/io/xpipe/ext/base/action/ChangeStoreIconAction.java create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopApplication_icon-80-dark.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopApplication_icon-80.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopCommand_icon-80-dark.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopCommand_icon-80.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopEnvironment_icon-80-dark.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/desktopEnvironment_icon-80.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/serviceGroup_icon-80-dark.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/serviceGroup_icon-80.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/service_icon-80-dark.png create mode 100644 ext/base/src/main/resources/io/xpipe/ext/base/resources/img/service_icon-80.png rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopApplication_icon-dark.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopApplication_icon.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopCommand_icon-dark.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopCommand_icon.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopEnvironment_icon-dark.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/desktopEnvironment_icon.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/serviceGroup_icon-dark.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/serviceGroup_icon.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/service_icon-dark.svg (100%) rename {ext/base/src/main/resources/io/xpipe/ext/base/resources/img => img/base}/service_icon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/default_file.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/default_folder.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/default_folder_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/default_root_folder.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/default_root_folder_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_access.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_access2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_actionscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_actionscript2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ada.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_advpl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_affectscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_affinitydesigner.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_affinityphoto.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_affinitypublisher.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ai.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ai2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_al.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_al_dal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_allcontributors.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_angular.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ansible.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_antlr.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_anyscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_apache.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_apex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_api_extractor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_apib.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_apib2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_apl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_applescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_appscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_appsemble.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_appveyor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_arduino.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_asciidoc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_asp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_aspx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_assembly.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_astro.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_astroconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ats.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_audio.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_aurelia.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_autohotkey.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_autoit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_avif.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_avro.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_awk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_aws.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_azure.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_azurepipelines.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_babel.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_babel2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ballerina.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bat.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bats.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bazaar.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bazel.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bazel_ignore.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bazel_version.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_befunge.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bicep.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_biml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_binary.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bitbucketpipeline.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bithound.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_blade.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_blitzbasic.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bolt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bosque.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bower.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bower2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_browserslist.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_buckbuild.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bun.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bundler.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_bunfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_c.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_c2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_c3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_c_al.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cabal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_caddy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cakephp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_capacitor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cargo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_casc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cddl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cert.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ceylon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cf.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cf2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cfc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cfc2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cfm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cfm2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cheader.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_chef.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_chef_cookbook.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_circleci.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_class.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_clojure.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_clojurescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cloudfoundry.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cmake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cobol.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codacy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codeclimate.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codecov.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codekit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codeowners.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_codeql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_coffeelint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_coffeescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_commitizen.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_commitlint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_compass.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_composer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_conan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_conda.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_config.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_confluence.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_coveralls.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cpp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cpp2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cpp3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cppheader.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_crowdin.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_crystal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_csharp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_csharp2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cspell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_csproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_css.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_csscomb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_csslint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cssmap.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cucumber.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cuda.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cvs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cypress.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cypress_spec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_cython.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_darcs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dartlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dartlang_generated.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dartlang_ignore.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_datadog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_db.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_delphi.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_deno.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dependabot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dependencies.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_devcontainer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dhall.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_diff.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_django.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_docker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_docker2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dockertest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dockertest2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_docpad.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_docz.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dojo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_doppler.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dotjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_doxygen.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_drawio.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_drone.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_drools.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dustjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dvc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_dylan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_earthly.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eas-metadata.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_edge.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_edge2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_editorconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ejs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_elastic.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_elasticbeanstalk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eleventy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eleventy2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_elixir.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_elm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_elm2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_emacs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ember.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ensime.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eps.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_erb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_erlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_erlang2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_esbuild.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eslint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_eslint2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_esphome.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_excel.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_excel2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_expo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_falcon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fantasticon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fauna.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_favicon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fbx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_firebase.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_firebasehosting.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_firestore.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fitbit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fla.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_flareact.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_flash.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_floobits.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_flow.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_flutter.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_flutter_package.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_font.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_formkit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fortran.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fossa.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fossil.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_freemarker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fsharp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fsharp2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fsproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fthtml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_funding.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_fusebox.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_galen.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_galen2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gamemaker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gamemaker2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gamemaker81.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gatsby.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gcloud.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gcode.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gdscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_genstat.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_git.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_git2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gitlab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gitpod.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_glide.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_glitter.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_glsl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_glyphs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gnu.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gnuplot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_aqua.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_black.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_fuchsia.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_gopher.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_lightblue.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_package.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_white.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_work.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_go_yellow.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_goctl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_godot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gradle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gradle2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_graphql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_graphql_config.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_graphviz.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_greenkeeper.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gridsome.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_groovy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_groovy2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_grunt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_gulp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_handlebars.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_handlebars2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_harbour.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hardhat.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hashicorp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haskell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haskell2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haxe.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haxecheckstyle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_haxedevelop.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_helix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_helm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hjson.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hlsl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_homeassistant.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_horusec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_host.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_html.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_htmlhint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_http.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hunspell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_husky.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hygen.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_hypr.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_icl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_idris.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_idrisbin.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_idrispkg.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_image.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_imba.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_inc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_infopath.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_informix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ini.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ink.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_innosetup.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_io.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_iodine.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ionic.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_janet.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jar.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jasmine.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_java.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jbuilder.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jekyll.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jenkins.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jest_snapshot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jinja.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jpm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_js_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsbeautify.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jscpd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jshint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsmap.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_json.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_json2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_json5.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_json_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsonld.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsonnet.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jsp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_julia.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_julia2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_jupyter.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_k.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_karma.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_key.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kitchenci.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kite.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kivy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kos.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kotlin.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_kusto.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_latino.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_layout.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lerna.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_less.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_license.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_licensebat.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_actionscript2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_ada.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_apl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_babel.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_babel2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_cabal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_circleci.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_cloudfoundry.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_codacy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_codeclimate.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_codeowners.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_config.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_crystal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_cypress.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_cypress_spec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_db.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_deno.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_dhall.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_docpad.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_drone.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_eas-metadata.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_eleventy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_eleventy2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_esphome.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_expo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_firebasehosting.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_fla.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_font.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_gamemaker2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_gradle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_hashicorp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_hjson.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_ini.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_io.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_jsconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_jsmap.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_json.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_json5.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_jsonld.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_kite.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_lerna.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_mailing.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_mdx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_mlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_mustache.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_next.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_nim.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_nx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_objidconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_openHAB.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_pcl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_pnpm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_prettier.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_prisma.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_purescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_quasar.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_razzle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_rehype.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_remark.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_replit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_retext.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_rome.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_rubocop.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_rust.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_rust_toolchain.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_shaderlab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_solidity.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_stylelint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_stylus.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_symfony.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_systemd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_systemverilog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_testcafe.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_testjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_tex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_todo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_toit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_toml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_tree.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_turbo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_unibeautify.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_vash.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_vsix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_vsixmanifest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_xfl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_yaml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_light_zeit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lighthouse.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lilypond.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lime.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lintstagedrc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_liquid.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lisp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_livescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lnk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_locale.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_log.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lolcode.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lsl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lua.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_luau.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_lync.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mailing.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_manifest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_manifest_bak.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_manifest_skip.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_map.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mariadb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_markdown.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_markdownlint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_markdownlint_ignore.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_marko.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_markojs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_master-co.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_matlab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_maven.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_maxscript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_maya.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mdx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mediawiki.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mercurial.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_meson.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_meteor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mjml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mocha.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_modernizr.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mojolicious.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_moleculer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mondoo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mongo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_monotone.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_motif.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mson.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mustache.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_mysql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ndst.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nearly.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_adapter_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_adapter_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_controller_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_controller_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_decorator_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_decorator_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_filter_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_filter_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_gateway_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_gateway_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_guard_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_guard_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_interceptor_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_interceptor_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_middleware_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_middleware_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_module_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_module_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_pipe_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_pipe_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_service_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nest_service_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nestjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_netlify.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_next.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_css.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_html.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_less.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_sass.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_scss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_component_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_controller_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_controller_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_directive_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_directive_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_directive_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_directive_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_directive_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_guard_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_guard_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_guard_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_interceptor_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_interceptor_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_interceptor_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_module_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_module_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_module_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_module_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_module_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_pipe_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_pipe_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_pipe_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_pipe_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_pipe_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_routing_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_routing_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_routing_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_routing_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_routing_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_service_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_service_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_service_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_service_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_service_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_smart_component_dart.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_smart_component_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_smart_component_js2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_smart_component_ts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_smart_component_ts2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ng_tailwind.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nginx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nim.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nimble.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ninja.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_njsproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_noc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_node.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_node2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nodemon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_npm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nsi.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nsri-integrity.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nsri.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nuget.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_numpy.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nunjucks.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nuxt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_nyc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_objectivec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_objectivecpp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_objidconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ocaml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ogone.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_onenote.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_openHAB.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_opencl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_openscad.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_org.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_outlook.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ovpn.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_package.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_paket.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_patch.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pcl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pddl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pddl_happenings.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pddl_plan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pdf.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pdf2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_peeky.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_perl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_perl2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_perl6.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pgsql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_photoshop.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_photoshop2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_php.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_php2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_php3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_phpcsfixer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_phpstan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_phpunit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_phraseapp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pine.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pip.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pipeline.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plantuml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_platformio.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_playwright.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plsql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plsql_package.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plsql_package_body.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plsql_package_header.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_plsql_package_spec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pm2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pnpm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_poedit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_poetry.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_polymer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pony.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_postcss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_postcssconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powerpoint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powerpoint2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_format.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_psd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_psd2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_psm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_psm2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_powershell_types.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_preact.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_precommit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_prettier.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_prisma.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_processinglang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_procfile.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_progress.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_prolog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_prometheus.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_protobuf.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_protractor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_publisher.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pug.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pulumi.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_puppet.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_purescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pyret.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_python.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pythowo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pytyped.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_pyup.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_q.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_qbs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_qlikview.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_qml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_qmldir.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_qsharp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_quasar.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_r.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_racket.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rails.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_raml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_razor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_razzle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_reactjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_reacttemplate.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_reactts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_reason.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_red.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_registry.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rego.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rehype.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_remark.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_renovate.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_replit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_retext.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rexx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_riot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rmd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_robotframework.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_robots.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rollup.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rome.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ron.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rspec.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rubocop.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ruby.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rust.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_rust_toolchain.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sails.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_saltstack.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_san.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sapphire_framework_cli.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sas.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sass.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sbt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_scala.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_scilab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_script.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_scss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_scss2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sdlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sentry.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sequelize.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_serverless.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_shaderlab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_shell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_shellcheck.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_shuttle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_silverstripe.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_siyuan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sketch.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_skipper.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_slang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_slashup.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_slice.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_slim.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sln.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sln2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_smarty.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_snapcraft.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_snort.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_snyk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_solidarity.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_solidity.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_source.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_spacengine.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sparql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sqf.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sqlite.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_squirrel.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_sss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stata.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stencil.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_storyboard.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_storybook.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stryker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stylable.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_style.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_styled.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stylelint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stylish_haskell.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_stylus.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_subversion.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_svelte.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_svg.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_swagger.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_swift.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_swig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_symfony.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_systemd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_systemverilog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_t4tt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tailwind.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tauri.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tcl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_teal.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tera.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_terraform.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_test.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_testcafe.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_testjs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_testts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_text.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_textile.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tfs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tiltfile.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_todo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_toit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_toml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tox.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_travis.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tree.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tres.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_truffle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_trunk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tscn.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tsconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tsconfig_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tslint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_ttcn.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_tuc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_turbo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_twig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typedoc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typescript_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typescriptdef.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typescriptdef_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_typo3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_unibeautify.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_unison.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_unlicense.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vagrant.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vala.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vanilla_extract.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vapi.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vapor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vash.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vba.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vbhtml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vbproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vcxproj.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_velocity.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_verilog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vhdl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_video.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_view.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vim.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vite.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vitest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vlang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_volt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vscode-insiders.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vscode.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vscode2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vscode3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vsix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vsixmanifest.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vue.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_vueconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wallaby.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wally.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wasm.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_watchmanconfig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_webpack.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wenyan.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wercker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wgsl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wikitext.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_windi.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wolfram.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_word.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_word2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wpml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wurst.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wxml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_wxss.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xcode.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xfl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xib.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xliff.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xmake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xquery.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_xsl.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yacc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yaml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yamllint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yandex.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yang.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yarn.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_yeoman.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_zeit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_zig.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_zip.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/file_type_zip2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_android.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_android_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_api.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_api_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_app.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_app_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_arangodb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_arangodb_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_asset.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_asset_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_audio.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_audio_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_aurelia.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_aurelia_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_aws.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_aws_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_azure.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_azure_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_azurepipelines.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_azurepipelines_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_binary.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_binary_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bloc.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bloc_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_blueprint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_blueprint_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bot_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bower.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_bower_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_buildkite.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_buildkite_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cake_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_certificate.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_certificate_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_chef.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_chef_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_circleci.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_circleci_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cli.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cli_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_client.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_client_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cmake.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cmake_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_common.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_common_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_component.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_component_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_composer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_composer_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_config.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_config_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_controller.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_controller_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_coverage.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_coverage_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_css.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_css_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cubit.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cubit_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cypress.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_cypress_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dapr.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dapr_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_datadog.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_datadog_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_db.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_db_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_debian.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_debian_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dependabot.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dependabot_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_devcontainer.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_devcontainer_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dist.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_dist_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_docker.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_docker_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_docs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_docs_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_e2e.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_e2e_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_elasticbeanstalk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_elasticbeanstalk_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_electron.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_electron_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_expo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_expo_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_favicon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_favicon_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_flow.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_flow_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_fonts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_fonts_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gcp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gcp_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_git.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_git_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_github.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_github_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gitlab.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gitlab_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gradle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gradle_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_graphql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_graphql_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_grunt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_grunt_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gulp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_gulp_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_haxelib.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_haxelib_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_helper.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_helper_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_hook.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_hook_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_husky.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_husky_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_idea.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_idea_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_images.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_images_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_include.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_include_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_interfaces.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_interfaces_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_ios.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_ios_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_js.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_js_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_json.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_json_official.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_json_official_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_json_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_kubernetes.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_kubernetes_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_less.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_less_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_library.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_library_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_cypress.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_cypress_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_electron.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_electron_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_expo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_expo_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_fonts.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_fonts_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_gradle.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_gradle_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_meteor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_meteor_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_mysql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_mysql_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_node.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_node_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_redux.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_redux_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_sass.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_light_sass_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_linux.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_linux_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_locale.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_locale_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_log.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_log_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_macos.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_macos_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mariadb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mariadb_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_maven.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_maven_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_memcached.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_memcached_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_meteor.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_meteor_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_middleware.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_middleware_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_minikube.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_minikube_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mjml.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mjml_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mock.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mock_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_model.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_model_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_module.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_module_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mongodb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mongodb_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mysql.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_mysql_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_next.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_next_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nginx.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nginx_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nix.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nix_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_node.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_node_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_notification.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_notification_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nuget.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nuget_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nuxt.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_nuxt_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_package.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_package_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_paket.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_paket_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_php.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_php_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_platformio.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_platformio_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_plugin.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_plugin_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_prisma.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_prisma_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_private.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_private_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_public.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_public_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_python.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_python_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_ravendb.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_ravendb_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_redis.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_redis_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_redux.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_redux_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_route.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_route_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_sass.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_sass_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_script.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_script_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_server.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_server_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_services.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_services_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_shared.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_shared_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_src.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_src_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_sso.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_sso_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_story.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_story_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_style.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_style_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_tauri.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_tauri_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_temp.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_temp_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_template.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_template_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_test.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_test_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_theme.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_theme_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_tools.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_tools_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_travis.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_travis_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_trunk.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_trunk_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typescript.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typescript_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typings.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typings2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typings2_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_typings_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vagrant.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vagrant_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_video.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_video_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_view.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_view_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vs.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vs2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vs2_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vs_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode2_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode3_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test2.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test2_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test3.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test3_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_vscode_test_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_webpack.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_webpack_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_windows.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_windows_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_www.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_www_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_yarn.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/browser_icons => img/browser}/folder_type_yarn_opened.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/alma.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/alpine.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/amazon.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/arch.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/centos.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/debian.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/elementary-dark.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/elementary.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/endeavour-dark.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/endeavour.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/fedora.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/freebsd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/garuda.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/gentoo.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/kali.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/kubuntu.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/linux.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/macos-dark.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/macos.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/manjaro.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/mint.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/netbsd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/nixos.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/openbsd.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/pop.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/redhat.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/rocky.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/suse.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/ubuntu.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/windows.svg (100%) rename {app/src/main/resources/io/xpipe/app/resources/img => img}/os/zorin.svg (100%) create mode 100644 img/proc/bash_icon.svg create mode 100644 img/proc/cmd_icon-dark.svg create mode 100644 img/proc/cmd_icon.svg create mode 100644 img/proc/command_icon-dark.svg create mode 100644 img/proc/command_icon.svg create mode 100644 img/proc/cygwin_icon-dark.svg create mode 100644 img/proc/cygwin_icon.svg create mode 100644 img/proc/defaultShell_icon-dark.svg create mode 100644 img/proc/defaultShell_icon.svg create mode 100644 img/proc/docker_icon.svg create mode 100644 img/proc/fish_icon-dark.svg create mode 100644 img/proc/fish_icon.svg create mode 100644 img/proc/gitForWindows_icon.svg create mode 100644 img/proc/hyperv_icon.svg create mode 100644 img/proc/k8sCluster_icon.svg create mode 100644 img/proc/k8sContainer_icon.svg create mode 100644 img/proc/k8sNode_icon.svg create mode 100644 img/proc/k8sPod_icon.svg create mode 100644 img/proc/lxd_icon.svg create mode 100644 img/proc/msys2_icon-dark.svg create mode 100644 img/proc/msys2_icon.svg create mode 100644 img/proc/podman_icon.svg create mode 100644 img/proc/powershell_logo.svg create mode 100644 img/proc/proxmoxContainer_icon-dark.svg create mode 100644 img/proc/proxmoxContainer_icon.svg create mode 100644 img/proc/proxmoxVm_icon-dark.svg create mode 100644 img/proc/proxmoxVm_icon.svg create mode 100644 img/proc/proxmox_icon-dark.svg create mode 100644 img/proc/proxmox_icon.svg create mode 100644 img/proc/pwsh_logo.png create mode 100644 img/proc/rdpFile_icon-dark.svg create mode 100644 img/proc/rdpFile_icon.svg create mode 100644 img/proc/rdp_icon-dark.svg create mode 100644 img/proc/rdp_icon.svg create mode 100644 img/proc/serial_icon-dark.svg create mode 100644 img/proc/serial_icon.svg create mode 100644 img/proc/shBsd_icon-dark.svg create mode 100644 img/proc/shBsd_icon.svg create mode 100644 img/proc/sh_icon-dark.svg create mode 100644 img/proc/sh_icon.svg create mode 100644 img/proc/shellCommand_icon-dark.svg create mode 100644 img/proc/shellCommand_icon.svg create mode 100644 img/proc/shellEnvironmentGroup_icon-dark.svg create mode 100644 img/proc/shellEnvironmentGroup_icon.svg create mode 100644 img/proc/shellEnvironment_icon-dark.svg create mode 100644 img/proc/shellEnvironment_icon.svg create mode 100644 img/proc/sshConfig_icon-dark.svg create mode 100644 img/proc/sshConfig_icon.svg create mode 100644 img/proc/sshDynamicTunnel_icon-dark.svg create mode 100644 img/proc/sshDynamicTunnel_icon.svg create mode 100644 img/proc/sshLocalTunnel_icon-dark.svg create mode 100644 img/proc/sshLocalTunnel_icon.svg create mode 100644 img/proc/sshRemoteTunnel_icon-dark.svg create mode 100644 img/proc/sshRemoteTunnel_icon.svg create mode 100644 img/proc/sshTunnelGroup_icon-dark.svg create mode 100644 img/proc/sshTunnelGroup_icon.svg create mode 100644 img/proc/ssh_icon-dark.svg create mode 100644 img/proc/ssh_icon.svg create mode 100644 img/proc/teleport_icon.png create mode 100644 img/proc/vmware_fusion_icon.png create mode 100644 img/proc/vmware_player_icon.png create mode 100644 img/proc/vmware_workstation_icon.svg create mode 100644 img/proc/vnc_icon-dark.svg create mode 100644 img/proc/vnc_icon.svg create mode 100644 img/proc/wsl_icon.svg create mode 100644 img/proc/zsh_icon-dark.svg create mode 100644 img/proc/zsh_icon.svg create mode 100644 img/system/2fauth-light.svg create mode 100644 img/system/2fauth.svg create mode 100644 img/system/activepieces.svg create mode 100644 img/system/actual-budget.svg create mode 100644 img/system/adguard-home.svg create mode 100644 img/system/adminer-light.svg create mode 100644 img/system/adminer.svg create mode 100644 img/system/affine-light.svg create mode 100644 img/system/affine.svg create mode 100644 img/system/airtable.svg create mode 100644 img/system/akkoma-light.svg create mode 100644 img/system/akkoma.svg create mode 100644 img/system/alist.svg create mode 100644 img/system/anonaddy.svg create mode 100644 img/system/ansible-light.svg create mode 100644 img/system/ansible.svg create mode 100644 img/system/apache-answer.svg create mode 100644 img/system/appflowy.svg create mode 100644 img/system/appwrite.svg create mode 100644 img/system/ara-records-ansible.svg create mode 100644 img/system/argo-cd.svg create mode 100644 img/system/asciinema.svg create mode 100644 img/system/atuin-light.svg create mode 100644 img/system/atuin.svg create mode 100644 img/system/audacity-light.svg create mode 100644 img/system/audacity.svg create mode 100644 img/system/audiobookshelf.svg create mode 100644 img/system/authelia-light.svg create mode 100644 img/system/authelia.svg create mode 100644 img/system/authentik.svg create mode 100644 img/system/authman.svg create mode 100644 img/system/autobrr.svg create mode 100644 img/system/automad-light.svg create mode 100644 img/system/automad.svg create mode 100644 img/system/azuracast.svg create mode 100644 img/system/backblaze-light.svg create mode 100644 img/system/backblaze.svg create mode 100644 img/system/backrest-light.svg create mode 100644 img/system/backrest.svg create mode 100644 img/system/bar-assistant.svg create mode 100644 img/system/baserow-light.svg create mode 100644 img/system/baserow.svg create mode 100644 img/system/bigbluebutton.svg create mode 100644 img/system/bigcapital.svg create mode 100644 img/system/bitwarden.svg create mode 100644 img/system/blocky.svg create mode 100644 img/system/bluesky-light.svg create mode 100644 img/system/bluesky.svg create mode 100644 img/system/booklogr.svg create mode 100644 img/system/bookstack.svg create mode 100644 img/system/borg.svg create mode 100644 img/system/borgmatic-light.svg create mode 100644 img/system/borgmatic.svg create mode 100644 img/system/budgetbee.svg create mode 100644 img/system/budibase.svg create mode 100644 img/system/bunkerweb-light.svg create mode 100644 img/system/bunkerweb.svg create mode 100644 img/system/caddy.svg create mode 100644 img/system/cal-com-light.svg create mode 100644 img/system/cal-com.svg create mode 100644 img/system/calibre-web.svg create mode 100644 img/system/calibre.svg create mode 100644 img/system/castopod.svg create mode 100644 img/system/changedetection-light.svg create mode 100644 img/system/changedetection.svg create mode 100644 img/system/channels-dvr.svg create mode 100644 img/system/chevereto.svg create mode 100644 img/system/chirpy.svg create mode 100644 img/system/chromium.svg create mode 100644 img/system/clickhouse.svg create mode 100644 img/system/cloudbeaver.svg create mode 100644 img/system/cloudflare.svg create mode 100644 img/system/cockpit-light.svg create mode 100644 img/system/cockpit.svg create mode 100644 img/system/codeberg.svg create mode 100644 img/system/coder-light.svg create mode 100644 img/system/coder.svg create mode 100644 img/system/commafeed-light.svg create mode 100644 img/system/commafeed.svg create mode 100644 img/system/commento-light.svg create mode 100644 img/system/commento.svg create mode 100644 img/system/compreface.svg create mode 100644 img/system/confluence.svg create mode 100644 img/system/converse-light.svg create mode 100644 img/system/converse.svg create mode 100644 img/system/couchdb-light.svg create mode 100644 img/system/couchdb.svg create mode 100644 img/system/counter-analytics.svg create mode 100644 img/system/crowdsec.svg create mode 100644 img/system/cryptpad.svg create mode 100644 img/system/ctfreak.svg create mode 100644 img/system/cyberchef.svg create mode 100644 img/system/czkawka.svg create mode 100644 img/system/dalibo-light.svg create mode 100644 img/system/dalibo.svg create mode 100644 img/system/davical.svg create mode 100644 img/system/ddclient.svg create mode 100644 img/system/ddns-updater.svg create mode 100644 img/system/defguard.svg create mode 100644 img/system/deluge.svg create mode 100644 img/system/digitalocean-light.svg create mode 100644 img/system/digitalocean.svg create mode 100644 img/system/dillinger-light.svg create mode 100644 img/system/dillinger.svg create mode 100644 img/system/docassemble-light.svg create mode 100644 img/system/docassemble.svg create mode 100644 img/system/docker-light.svg create mode 100644 img/system/docker-volume-backup.svg create mode 100644 img/system/docker.svg create mode 100644 img/system/dockge.svg create mode 100644 img/system/docspell.svg create mode 100644 img/system/docusaurus.svg create mode 100644 img/system/docuseal.svg create mode 100644 img/system/dokemon.svg create mode 100644 img/system/dokuwiki.svg create mode 100644 img/system/double-take.svg create mode 100644 img/system/dovecot.svg create mode 100644 img/system/dozzle-light.svg create mode 100644 img/system/dozzle.svg create mode 100644 img/system/draw-io.svg create mode 100644 img/system/dropbox-light.svg create mode 100644 img/system/dropbox.svg create mode 100644 img/system/dropout.svg create mode 100644 img/system/dub-light.svg create mode 100644 img/system/dub.svg create mode 100644 img/system/duckdns.svg create mode 100644 img/system/duplicati.svg create mode 100644 img/system/element.svg create mode 100644 img/system/eleventy-light.svg create mode 100644 img/system/eleventy.svg create mode 100644 img/system/emby.svg create mode 100644 img/system/endless-light.svg create mode 100644 img/system/endless.svg create mode 100644 img/system/endurain.svg create mode 100644 img/system/esphome-light.svg create mode 100644 img/system/esphome.svg create mode 100644 img/system/etesync.svg create mode 100644 img/system/excalidraw.svg create mode 100644 img/system/fasten-health.svg create mode 100644 img/system/fastmail.svg create mode 100644 img/system/feedbase-light.svg create mode 100644 img/system/feedbase.svg create mode 100644 img/system/feedbin-light.svg create mode 100644 img/system/feedbin.svg create mode 100644 img/system/feedly-light.svg create mode 100644 img/system/feedly.svg create mode 100644 img/system/feedlynx.svg create mode 100644 img/system/fenrus.svg create mode 100644 img/system/ferdium-light.svg create mode 100644 img/system/ferdium.svg create mode 100644 img/system/ferretdb-light.svg create mode 100644 img/system/ferretdb.svg create mode 100644 img/system/file-browser.svg create mode 100644 img/system/fileflows.svg create mode 100644 img/system/filerun-light.svg create mode 100644 img/system/filerun.svg create mode 100644 img/system/filestash.svg create mode 100644 img/system/firefly-iii.svg create mode 100644 img/system/fittrackee.svg create mode 100644 img/system/flaresolverr.svg create mode 100644 img/system/flarum.svg create mode 100644 img/system/fluffychat-light.svg create mode 100644 img/system/fluffychat.svg create mode 100644 img/system/forgejo.svg create mode 100644 img/system/forte-light.svg create mode 100644 img/system/forte.svg create mode 100644 img/system/freeipa.svg create mode 100644 img/system/freshrss.svg create mode 100644 img/system/friendica.svg create mode 100644 img/system/frigate-light.svg create mode 100644 img/system/frigate.svg create mode 100644 img/system/funkwhale-light.svg create mode 100644 img/system/funkwhale.svg create mode 100644 img/system/fusionauth-light.svg create mode 100644 img/system/fusionauth.svg create mode 100644 img/system/garage.svg create mode 100644 img/system/gatsby.svg create mode 100644 img/system/gatus.svg create mode 100644 img/system/ghostfolio.svg create mode 100644 img/system/gitea.svg create mode 100644 img/system/gitlab.svg create mode 100644 img/system/glance-light.svg create mode 100644 img/system/glance.svg create mode 100644 img/system/glpi.svg create mode 100644 img/system/gotify.svg create mode 100644 img/system/gotosocial.svg create mode 100644 img/system/grafana.svg create mode 100644 img/system/grav-light.svg create mode 100644 img/system/grav.svg create mode 100644 img/system/grimoire.svg create mode 100644 img/system/grist.svg create mode 100644 img/system/grocy.svg create mode 100644 img/system/haproxy.svg create mode 100644 img/system/haptic-light.svg create mode 100644 img/system/haptic.svg create mode 100644 img/system/headscale.svg create mode 100644 img/system/healthchecks-light.svg create mode 100644 img/system/healthchecks.svg create mode 100644 img/system/hedgedoc.svg create mode 100644 img/system/heimdall-light.svg create mode 100644 img/system/heimdall.svg create mode 100644 img/system/heyform.svg create mode 100644 img/system/hivedav.svg create mode 100644 img/system/hoarder-light.svg create mode 100644 img/system/hoarder.svg create mode 100644 img/system/hollo-light.svg create mode 100644 img/system/hollo.svg create mode 100644 img/system/homarr.svg create mode 100644 img/system/home-assistant.svg create mode 100644 img/system/homebox.svg create mode 100644 img/system/homebridge-light.svg create mode 100644 img/system/homebridge.svg create mode 100644 img/system/homer.svg create mode 100644 img/system/hoppscotch-light.svg create mode 100644 img/system/hoppscotch.svg create mode 100644 img/system/hubzilla-light.svg create mode 100644 img/system/hubzilla.svg create mode 100644 img/system/huginn.svg create mode 100644 img/system/hugo.svg create mode 100644 img/system/humhub.svg create mode 100644 img/system/icon.svg create mode 100644 img/system/immich-frame-light.svg create mode 100644 img/system/immich-frame.svg create mode 100644 img/system/immich-kiosk.svg create mode 100644 img/system/immich.svg create mode 100644 img/system/influxdb.svg create mode 100644 img/system/inoreader-light.svg create mode 100644 img/system/inoreader.svg create mode 100644 img/system/invidious.svg create mode 100644 img/system/invoice-ninja-light.svg create mode 100644 img/system/invoice-ninja.svg create mode 100644 img/system/it-tools-light.svg create mode 100644 img/system/it-tools.svg create mode 100644 img/system/jackett-light.svg create mode 100644 img/system/jackett.svg create mode 100644 img/system/jekyll.svg create mode 100644 img/system/jellyfin-light.svg create mode 100644 img/system/jellyfin.svg create mode 100644 img/system/jellyseerr.svg create mode 100644 img/system/jira.svg create mode 100644 img/system/jitsi-meet.svg create mode 100644 img/system/jwt-io-light.svg create mode 100644 img/system/jwt-io.svg create mode 100644 img/system/kanboard-light.svg create mode 100644 img/system/kanboard.svg create mode 100644 img/system/kanidm.svg create mode 100644 img/system/kapowarr.svg create mode 100644 img/system/kavita.svg create mode 100644 img/system/kbin.svg create mode 100644 img/system/keepassxc.svg create mode 100644 img/system/keila.svg create mode 100644 img/system/kestra.svg create mode 100644 img/system/keycloak.svg create mode 100644 img/system/komga.svg create mode 100644 img/system/kontoj.svg create mode 100644 img/system/krakend.svg create mode 100644 img/system/kyoo-light.svg create mode 100644 img/system/kyoo.svg create mode 100644 img/system/lancommander-light.svg create mode 100644 img/system/lancommander.svg create mode 100644 img/system/leantime.svg create mode 100644 img/system/lets-encrypt-light.svg create mode 100644 img/system/lets-encrypt.svg create mode 100644 img/system/librespeed.svg create mode 100644 img/system/librum.svg create mode 100644 img/system/lidarr.svg create mode 100644 img/system/limesurvey.svg create mode 100644 img/system/linkace-light.svg create mode 100644 img/system/linkace.svg create mode 100644 img/system/linkding.svg create mode 100644 img/system/linkstack.svg create mode 100644 img/system/linuxserver-io.svg create mode 100644 img/system/listmonk.svg create mode 100644 img/system/lodestone.svg create mode 100644 img/system/logseq.svg create mode 100644 img/system/logto.svg create mode 100644 img/system/loki.svg create mode 100644 img/system/mail-in-a-box.svg create mode 100644 img/system/mailcow.svg create mode 100644 img/system/mailjet-light.svg create mode 100644 img/system/mailjet.svg create mode 100644 img/system/manyfold.svg create mode 100644 img/system/mariadb.svg create mode 100644 img/system/mastodon.svg create mode 100644 img/system/matomo.svg create mode 100644 img/system/matrix-light.svg create mode 100644 img/system/matrix.svg create mode 100644 img/system/mattermost-light.svg create mode 100644 img/system/mattermost.svg create mode 100644 img/system/mautic-light.svg create mode 100644 img/system/mautic.svg create mode 100644 img/system/maybe.svg create mode 100644 img/system/mbin.svg create mode 100644 img/system/mealie-light.svg create mode 100644 img/system/mealie.svg create mode 100644 img/system/medama.svg create mode 100644 img/system/mediux-light.svg create mode 100644 img/system/mediux.svg create mode 100644 img/system/medusa-light.svg create mode 100644 img/system/medusa.svg create mode 100644 img/system/meilisearch-light.svg create mode 100644 img/system/meilisearch.svg create mode 100644 img/system/memories-light.svg create mode 100644 img/system/memories.svg create mode 100644 img/system/mergeable.svg create mode 100644 img/system/meshping-light.svg create mode 100644 img/system/meshping.svg create mode 100644 img/system/metabase.svg create mode 100644 img/system/metube.svg create mode 100644 img/system/minecraft.svg create mode 100644 img/system/miniflux-light.svg create mode 100644 img/system/miniflux.svg create mode 100644 img/system/minio-light.svg create mode 100644 img/system/minio.svg create mode 100644 img/system/mirotalk.svg create mode 100644 img/system/misskey-light.svg create mode 100644 img/system/misskey.svg create mode 100644 img/system/mitra-light.svg create mode 100644 img/system/mitra.svg create mode 100644 img/system/mixpost.svg create mode 100644 img/system/mobilizon.svg create mode 100644 img/system/mongodb.svg create mode 100644 img/system/monica-light.svg create mode 100644 img/system/monica.svg create mode 100644 img/system/mosquitto.svg create mode 100644 img/system/motioneye.svg create mode 100644 img/system/mqtt-light.svg create mode 100644 img/system/mqtt.svg create mode 100644 img/system/mullvad-vpn.svg create mode 100644 img/system/mumble.svg create mode 100644 img/system/music-assistant-light.svg create mode 100644 img/system/music-assistant.svg create mode 100644 img/system/myheats-light.svg create mode 100644 img/system/myheats.svg create mode 100644 img/system/mysql-light.svg create mode 100644 img/system/mysql.svg create mode 100644 img/system/n8n.svg create mode 100644 img/system/navidrome.svg create mode 100644 img/system/neko-light.svg create mode 100644 img/system/neko.svg create mode 100644 img/system/neodb.svg create mode 100644 img/system/netalertx.svg create mode 100644 img/system/netbird.svg create mode 100644 img/system/netboot-xyz-light.svg create mode 100644 img/system/netboot-xyz.svg create mode 100644 img/system/netdata-light.svg create mode 100644 img/system/netdata.svg create mode 100644 img/system/netlify.svg create mode 100644 img/system/newsblur.svg create mode 100644 img/system/nextcloud-light.svg create mode 100644 img/system/nextcloud-news-light.svg create mode 100644 img/system/nextcloud-news.svg create mode 100644 img/system/nextcloud-social-light.svg create mode 100644 img/system/nextcloud-social.svg create mode 100644 img/system/nextcloud-tables-light.svg create mode 100644 img/system/nextcloud-tables.svg create mode 100644 img/system/nextcloud.svg create mode 100644 img/system/nginx-proxy-manager.svg create mode 100644 img/system/nocodb-light.svg create mode 100644 img/system/nocodb.svg create mode 100644 img/system/node-red.svg create mode 100644 img/system/nodebb.svg create mode 100644 img/system/nordvpn-light.svg create mode 100644 img/system/nordvpn.svg create mode 100644 img/system/note-mark.svg create mode 100644 img/system/notesnook-light.svg create mode 100644 img/system/notesnook.svg create mode 100644 img/system/notion-light.svg create mode 100644 img/system/notion.svg create mode 100644 img/system/ntfy-light.svg create mode 100644 img/system/ntfy.svg create mode 100644 img/system/obsidian.svg create mode 100644 img/system/obtainium.svg create mode 100644 img/system/octoprint.svg create mode 100644 img/system/olivetin.svg create mode 100644 img/system/omada.svg create mode 100644 img/system/ombi.svg create mode 100644 img/system/omnivore.svg create mode 100644 img/system/onedev-light.svg create mode 100644 img/system/onedev.svg create mode 100644 img/system/oneuptime-light.svg create mode 100644 img/system/oneuptime.svg create mode 100644 img/system/open-source-initiative.svg create mode 100644 img/system/openchangelog-light.svg create mode 100644 img/system/openchangelog.svg create mode 100644 img/system/openemr-light.svg create mode 100644 img/system/openemr.svg create mode 100644 img/system/openldap.svg create mode 100644 img/system/openpanel-light.svg create mode 100644 img/system/openpanel.svg create mode 100644 img/system/openreads.svg create mode 100644 img/system/openspeedtest-light.svg create mode 100644 img/system/openspeedtest.svg create mode 100644 img/system/opentalk.svg create mode 100644 img/system/opentofu-light.svg create mode 100644 img/system/opentofu.svg create mode 100644 img/system/openvpn-light.svg create mode 100644 img/system/openvpn.svg create mode 100644 img/system/openwrt-light.svg create mode 100644 img/system/openwrt.svg create mode 100644 img/system/opnsense.svg create mode 100644 img/system/outline.svg create mode 100644 img/system/overleaf.svg create mode 100644 img/system/overseerr.svg create mode 100644 img/system/owncast.svg create mode 100644 img/system/owncloud-light.svg create mode 100644 img/system/owncloud.svg create mode 100644 img/system/owntone.svg create mode 100644 img/system/oxker.svg create mode 100644 img/system/paperless-ngx-light.svg create mode 100644 img/system/paperless-ngx.svg create mode 100644 img/system/papermark-light.svg create mode 100644 img/system/papermark.svg create mode 100644 img/system/papermerge.svg create mode 100644 img/system/parseable.svg create mode 100644 img/system/passbolt.svg create mode 100644 img/system/payload-light.svg create mode 100644 img/system/payload.svg create mode 100644 img/system/pdfding-light.svg create mode 100644 img/system/pdfding.svg create mode 100644 img/system/peanut.svg create mode 100644 img/system/peertube.svg create mode 100644 img/system/pelican-panel.svg create mode 100644 img/system/penpot-light.svg create mode 100644 img/system/penpot.svg create mode 100644 img/system/peppermint.svg create mode 100644 img/system/pepperminty-wiki.svg create mode 100644 img/system/pfsense-light.svg create mode 100644 img/system/pfsense.svg create mode 100644 img/system/pg-back-web.svg create mode 100644 img/system/photopea-light.svg create mode 100644 img/system/photopea.svg create mode 100644 img/system/photoprism.svg create mode 100644 img/system/photoview.svg create mode 100644 img/system/pi-hole.svg create mode 100644 img/system/pikapods-light.svg create mode 100644 img/system/pikapods.svg create mode 100644 img/system/pingvin-share.svg create mode 100644 img/system/pinkary.svg create mode 100644 img/system/piwigo.svg create mode 100644 img/system/pixelfed.svg create mode 100644 img/system/plane.svg create mode 100644 img/system/plausible.svg create mode 100644 img/system/pleroma.svg create mode 100644 img/system/plex-rewind.svg create mode 100644 img/system/plex.svg create mode 100644 img/system/pocket-casts-light.svg create mode 100644 img/system/pocket-casts.svg create mode 100644 img/system/pocket-id-light.svg create mode 100644 img/system/pocket-id.svg create mode 100644 img/system/podfetch-light.svg create mode 100644 img/system/podfetch.svg create mode 100644 img/system/podman.svg create mode 100644 img/system/portainer.svg create mode 100644 img/system/postal.svg create mode 100644 img/system/postgresql.svg create mode 100644 img/system/posthog.svg create mode 100644 img/system/private-internet-access.svg create mode 100644 img/system/privatebin.svg create mode 100644 img/system/projectsend.svg create mode 100644 img/system/prometheus.svg create mode 100644 img/system/prowlarr.svg create mode 100644 img/system/proxmox-light.svg create mode 100644 img/system/proxmox.svg create mode 100644 img/system/pterodactyl.svg create mode 100644 img/system/pushover-light.svg create mode 100644 img/system/pushover.svg create mode 100644 img/system/pyload.svg create mode 100644 img/system/python-light.svg create mode 100644 img/system/python.svg create mode 100644 img/system/qbittorrent.svg create mode 100644 img/system/quickwit.svg create mode 100644 img/system/radarr-light.svg create mode 100644 img/system/radarr.svg create mode 100644 img/system/radicale.svg create mode 100644 img/system/rallly-light.svg create mode 100644 img/system/rallly.svg create mode 100644 img/system/rancher-light.svg create mode 100644 img/system/rancher.svg create mode 100644 img/system/raspberry-pi.svg create mode 100644 img/system/rclone.svg create mode 100644 img/system/reactive-resume-light.svg create mode 100644 img/system/reactive-resume.svg create mode 100644 img/system/readarr.svg create mode 100644 img/system/readeck.svg create mode 100644 img/system/receipt-wrangler.svg create mode 100644 img/system/recipesage.svg create mode 100644 img/system/redict.svg create mode 100644 img/system/redlib.svg create mode 100644 img/system/reolink-light.svg create mode 100644 img/system/reolink.svg create mode 100644 img/system/requestly.svg create mode 100644 img/system/restreamer.svg create mode 100644 img/system/rhasspy.svg create mode 100644 img/system/richy.svg create mode 100644 img/system/rocket-chat.svg create mode 100644 img/system/romm.svg create mode 100644 img/system/roundcube.svg create mode 100644 img/system/rss-bridge.svg create mode 100644 img/system/rss-translator.svg create mode 100644 img/system/rundeck.svg create mode 100644 img/system/runson-light.svg create mode 100644 img/system/runson.svg create mode 100644 img/system/sabnzbd.svg create mode 100644 img/system/saltcorn.svg create mode 100644 img/system/scrutiny-light.svg create mode 100644 img/system/scrutiny.svg create mode 100644 img/system/seafile.svg create mode 100644 img/system/secureai-tools-light.svg create mode 100644 img/system/secureai-tools.svg create mode 100644 img/system/seelf.svg create mode 100644 img/system/self-hosted-gateway.svg create mode 100644 img/system/shaarli.svg create mode 100644 img/system/shellhub-light.svg create mode 100644 img/system/shellhub.svg create mode 100644 img/system/shlink.svg create mode 100644 img/system/shoko-server-light.svg create mode 100644 img/system/shoko-server.svg create mode 100644 img/system/signal-light.svg create mode 100644 img/system/signal.svg create mode 100644 img/system/simplex-chat-light.svg create mode 100644 img/system/simplex-chat.svg create mode 100644 img/system/siyuan-light.svg create mode 100644 img/system/siyuan.svg create mode 100644 img/system/slash-light.svg create mode 100644 img/system/slash.svg create mode 100644 img/system/snikket.svg create mode 100644 img/system/socialhome-light.svg create mode 100644 img/system/socialhome.svg create mode 100644 img/system/solidtime-light.svg create mode 100644 img/system/solidtime.svg create mode 100644 img/system/sonarqube.svg create mode 100644 img/system/sonarr.svg create mode 100644 img/system/specifically-clementines.svg create mode 100644 img/system/squirrel-servers-manager.svg create mode 100644 img/system/sshwifty.svg create mode 100644 img/system/stalwart-mail-server.svg create mode 100644 img/system/standard-notes.svg create mode 100644 img/system/step-ca.svg create mode 100644 img/system/stirling-pdf.svg create mode 100644 img/system/stormkit.svg create mode 100644 img/system/subatic.svg create mode 100644 img/system/supabase.svg create mode 100644 img/system/synapse-light.svg create mode 100644 img/system/synapse.svg create mode 100644 img/system/syncthing.svg create mode 100644 img/system/tailscale-light.svg create mode 100644 img/system/tailscale.svg create mode 100644 img/system/tangerine-ui.svg create mode 100644 img/system/tautulli.svg create mode 100644 img/system/telegram.svg create mode 100644 img/system/teleport-light.svg create mode 100644 img/system/teleport.svg create mode 100644 img/system/threads-light.svg create mode 100644 img/system/threads.svg create mode 100644 img/system/thunderbird-light.svg create mode 100644 img/system/thunderbird.svg create mode 100644 img/system/tiddlywiki-light.svg create mode 100644 img/system/tiddlywiki.svg create mode 100644 img/system/tmdb-light.svg create mode 100644 img/system/tmdb.svg create mode 100644 img/system/tooljet.svg create mode 100644 img/system/touitomamout.svg create mode 100644 img/system/tp-link-light.svg create mode 100644 img/system/tp-link.svg create mode 100644 img/system/tpdb-light.svg create mode 100644 img/system/tpdb.svg create mode 100644 img/system/traccar.svg create mode 100644 img/system/traefik.svg create mode 100644 img/system/transmission.svg create mode 100644 img/system/trilium.svg create mode 100644 img/system/triliumnext.svg create mode 100644 img/system/truenas-core-light.svg create mode 100644 img/system/truenas-core.svg create mode 100644 img/system/truenas-scale-light.svg create mode 100644 img/system/truenas-scale.svg create mode 100644 img/system/tubesync-light.svg create mode 100644 img/system/tubesync.svg create mode 100644 img/system/tumblr-light.svg create mode 100644 img/system/tumblr.svg create mode 100644 img/system/tvdb-light.svg create mode 100644 img/system/tvdb.svg create mode 100644 img/system/ubiquiti-unifi-light.svg create mode 100644 img/system/ubiquiti-unifi.svg create mode 100644 img/system/umami-light.svg create mode 100644 img/system/umami.svg create mode 100644 img/system/umbrel.svg create mode 100644 img/system/unbound.svg create mode 100644 img/system/undb.svg create mode 100644 img/system/unifi-voucher-site.svg create mode 100644 img/system/unraid.svg create mode 100644 img/system/upsnap.svg create mode 100644 img/system/uptime-kuma.svg create mode 100644 img/system/valkey-light.svg create mode 100644 img/system/valkey.svg create mode 100644 img/system/vaultwarden-light.svg create mode 100644 img/system/vaultwarden.svg create mode 100644 img/system/vector.svg create mode 100644 img/system/victoriametrics-light.svg create mode 100644 img/system/victoriametrics.svg create mode 100644 img/system/vidzy.svg create mode 100644 img/system/vikunja.svg create mode 100644 img/system/viseron.svg create mode 100644 img/system/voilib-light.svg create mode 100644 img/system/voilib.svg create mode 100644 img/system/voltaserve-light.svg create mode 100644 img/system/voltaserve.svg create mode 100644 img/system/wallabag-light.svg create mode 100644 img/system/wallabag.svg create mode 100644 img/system/wanderer-light.svg create mode 100644 img/system/wanderer.svg create mode 100644 img/system/webtrees.svg create mode 100644 img/system/wekan.svg create mode 100644 img/system/wger.svg create mode 100644 img/system/whats-up-docker-light.svg create mode 100644 img/system/whats-up-docker.svg create mode 100644 img/system/wiki-js.svg create mode 100644 img/system/wikidocs.svg create mode 100644 img/system/wikipedia-light.svg create mode 100644 img/system/wikipedia.svg create mode 100644 img/system/willow.svg create mode 100644 img/system/windows-retro-light.svg create mode 100644 img/system/windows-retro.svg create mode 100644 img/system/wireguard.svg create mode 100644 img/system/wizarr.svg create mode 100644 img/system/woocommerce.svg create mode 100644 img/system/worklenz-light.svg create mode 100644 img/system/worklenz.svg create mode 100644 img/system/writefreely-light.svg create mode 100644 img/system/writefreely.svg create mode 100644 img/system/xbackbone.svg create mode 100644 img/system/xwiki-light.svg create mode 100644 img/system/xwiki.svg create mode 100644 img/system/yacht-light.svg create mode 100644 img/system/yacht.svg create mode 100644 img/system/yamtrack-light.svg create mode 100644 img/system/yamtrack.svg create mode 100644 img/system/yarr-light.svg create mode 100644 img/system/yarr.svg create mode 100644 img/system/your-spotify.svg create mode 100644 img/system/yourls.svg create mode 100644 img/system/youtube-dl.svg create mode 100644 img/system/zabbix.svg create mode 100644 img/system/zammad.svg create mode 100644 img/system/zigbee2mqtt.svg create mode 100644 img/system/zipcaptions-light.svg create mode 100644 img/system/zipcaptions.svg create mode 100644 img/system/zitadel-light.svg create mode 100644 img/system/zitadel.svg create mode 100644 img/system/zoraxy-light.svg create mode 100644 img/system/zoraxy.svg create mode 100644 img/system/zwave-js-ui-light.svg create mode 100644 img/system/zwave-js-ui.svg create mode 100644 lang/app/texts/vault_da.md create mode 100644 lang/app/texts/vault_de.md create mode 100644 lang/app/texts/vault_en.md create mode 100644 lang/app/texts/vault_es.md create mode 100644 lang/app/texts/vault_fr.md create mode 100644 lang/app/texts/vault_it.md create mode 100644 lang/app/texts/vault_ja.md create mode 100644 lang/app/texts/vault_nl.md create mode 100644 lang/app/texts/vault_pt.md create mode 100644 lang/app/texts/vault_ru.md create mode 100644 lang/app/texts/vault_tr.md create mode 100644 lang/app/texts/vault_zh.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c609ab2b6..33648c595 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,15 +25,15 @@ components from it when it is run in a development environment. Note that in case the current master branch is ahead of the latest release, it might happen that there are some incompatibilities when loading data from your local XPipe installation. You should therefore always check out the matching version tag for your local repository and local XPipe installation. You can find the available version tags at https://github.com/xpipe-io/xpipe/tags. -So for example if you currently have XPipe `10.0` installed, you should run `git reset --hard 10.0` first to properly compile against it. +So for example if you currently have XPipe `11.3` installed, you should run `git reset --hard 11.3` first to properly compile against it. You need to have JDK for Java 21 installed to compile the project. If you are on Linux or macOS, you can easily accomplish that by running ```bash curl -s "https://get.sdkman.io" | bash . "$HOME/.sdkman/bin/sdkman-init.sh" -sdk install java 21.0.1-graalce -sdk default java 21.0.1-graalce +sdk install java 22.0.2-graalce +sdk default java 22.0.2-graalce ``` . On Windows, you have to manually install a JDK, e.g. from [Adoptium](https://adoptium.net/temurin/releases/?version=21). @@ -74,7 +74,7 @@ Especially when starting out, it might be a good idea to start with easy tasks f ### Interacting via the HTTP API -You can create clients they communicate with the XPipe daemon via its HTTP API. +You can create clients that communicate with the XPipe daemon via its HTTP API. To get started, see the [OpenAPI spec](/openapi.yaml). ### Implementing support for a new editor @@ -98,9 +98,13 @@ All actions that you can perform for certain connections in the connection overv You can add custom script definitions [here](https://github.com/xpipe-io/xpipe/tree/master/ext/base/src/main/java/io/xpipe/ext/base/script/PredefinedScriptStore.java) and [here](https://github.com/xpipe-io/xpipe/tree/master/ext/base/src/main/resources/io/xpipe/ext/base/resources/scripts). +### Adding more system icons for system autodetection + +You can register new system types [here](https://github.com/xpipe-io/xpipe/blob/master/app/src/main/java/io/xpipe/app/resources/SystemIcons.java) and add the respective icons [here](https://github.com/xpipe-io/xpipe/tree/master/app/src/main/resources/io/xpipe/app/resources/img/system). + ### Adding more file icons for specific types -You can register file types [here](https://github.com/xpipe-io/xpipe/blob/master/app/src/main/resources/io/xpipe/app/resources/file_list.txt) and add the respective icons [here](https://github.com/xpipe-io/xpipe/tree/master/app/src/main/resources/io/xpipe/app/resources/browser_icons). +You can register file types [here](https://github.com/xpipe-io/xpipe/blob/master/app/src/main/resources/io/xpipe/app/resources/file_list.txt) and add the respective icons [here](https://github.com/xpipe-io/xpipe/tree/master/app/src/main/resources/io/xpipe/app/resources/img/browser). The existing file list and icons are taken from the [vscode-icons](https://github.com/vscode-icons/vscode-icons) project. Due to limitations in the file definition list compatibility, some file types might not be listed by their proper extension and are therefore not being applied correctly even though the images and definitions exist already. @@ -108,6 +112,6 @@ The existing file list and icons are taken from the [vscode-icons](https://githu if you want to work on something that was not listed here, you can still do so of course. You can reach out on the [Discord server](https://discord.gg/8y89vS8cRb) to discuss any development plans and get you started. -### Translations +### Adding translations See the [translation guide](/lang) for details. diff --git a/README.md b/README.md index ade164d71..fe79cd336 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,10 @@ It currently supports: - [Docker](https://www.docker.com/), [Podman](https://podman.io/), and [LXD](https://linuxcontainers.org/lxd/introduction/) container instances located on any host - [Windows Subsystem for Linux](https://ubuntu.com/wsl), [Cygwin](https://www.cygwin.com/), and [MSYS2](https://www.msys2.org/) instances - [Proxmox PVE](https://www.proxmox.com/en/proxmox-virtual-environment/overview) virtual machines and containers +- [Hyper-V](https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/) and [VMware Player/Workstation/Fusion](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion) virtual machines - [Kubernetes](https://kubernetes.io/) clusters, pods, and containers - [Powershell Remote Sessions](https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7.3) +- Built-in VNC connections and RDP launchers - Any other custom remote connection methods that work through the command-line ## Connection hub @@ -50,6 +52,8 @@ It currently supports: - Works with all command shells such as bash, zsh, cmd, PowerShell, and more, locally and remote - Connects to a system while the terminal is still starting up, allowing for faster connections than otherwise possible +![Terminal](https://github.com/xpipe-io/.github/raw/main/img/terminal_shadow.png) +

Terminal launcher diff --git a/app/build.gradle b/app/build.gradle index 0160355de..b7fdfcf1b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,10 +52,10 @@ dependencies { api files("$rootDir/gradle/gradle_scripts/vernacular-1.16.jar") api 'org.bouncycastle:bcprov-jdk18on:1.78.1' api 'info.picocli:picocli:4.7.6' - api ('org.kohsuke:github-api:1.324') { + api ('org.kohsuke:github-api:1.326') { exclude group: 'org.apache.commons', module: 'commons-lang3' } - api 'org.apache.commons:commons-lang3:3.16.0' + api 'org.apache.commons:commons-lang3:3.17.0' api 'io.sentry:sentry:7.14.0' api 'commons-io:commons-io:2.16.1' api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "2.17.2" diff --git a/app/src/main/java/io/xpipe/app/beacon/AppBeaconServer.java b/app/src/main/java/io/xpipe/app/beacon/AppBeaconServer.java index 972307a24..aac5156aa 100644 --- a/app/src/main/java/io/xpipe/app/beacon/AppBeaconServer.java +++ b/app/src/main/java/io/xpipe/app/beacon/AppBeaconServer.java @@ -1,8 +1,8 @@ package io.xpipe.app.beacon; -import io.xpipe.app.core.AppResources; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; +import io.xpipe.app.resources.AppResources; import io.xpipe.app.util.MarkdownHelper; import io.xpipe.beacon.BeaconConfig; import io.xpipe.beacon.BeaconInterface; diff --git a/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java b/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java index ab2467d4e..0a391696d 100644 --- a/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java +++ b/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java @@ -39,7 +39,8 @@ public class BeaconRequestHandler implements HttpHandler { } } - if (beaconInterface.requiresEnabledApi() && !AppPrefs.get().enableHttpApi().get()) { + if (beaconInterface.requiresEnabledApi() + && !AppPrefs.get().enableHttpApi().get()) { var ex = new BeaconServerException("HTTP API is not enabled in the settings menu"); writeError(exchange, ex, 403); return; diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/ConnectionRefreshExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/ConnectionRefreshExchangeImpl.java index 5fa336528..3c97868e9 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/ConnectionRefreshExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/ConnectionRefreshExchangeImpl.java @@ -15,9 +15,9 @@ public class ConnectionRefreshExchangeImpl extends ConnectionRefreshExchange { .getStoreEntryIfPresent(msg.getConnection()) .orElseThrow(() -> new BeaconClientException("Unknown connection: " + msg.getConnection())); if (e.getStore() instanceof FixedHierarchyStore) { - DataStorage.get().refreshChildren(e, true); + DataStorage.get().refreshChildren(e, null, true); } else { - e.validateOrThrow(); + e.validateOrThrowAndClose(null); } return Response.builder().build(); } diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/FsReadExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/FsReadExchangeImpl.java index 97f9c7ed1..590a3f229 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/FsReadExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/FsReadExchangeImpl.java @@ -43,7 +43,6 @@ public class FsReadExchangeImpl extends FsReadExchange { var out = exchange.getResponseBody()) { fileIn.transferTo(out); } - return Response.builder().build(); } else { byte[] bytes; try (var in = fs.openInput(msg.getPath().toString())) { @@ -55,7 +54,7 @@ public class FsReadExchangeImpl extends FsReadExchange { try (var out = exchange.getResponseBody()) { out.write(bytes); } - return Response.builder().build(); } + return Response.builder().build(); } } diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/ShellStartExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/ShellStartExchangeImpl.java index c43be274d..21cefe252 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/ShellStartExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/ShellStartExchangeImpl.java @@ -1,12 +1,13 @@ package io.xpipe.app.beacon.impl; -import com.sun.net.httpserver.HttpExchange; import io.xpipe.app.beacon.AppBeaconServer; import io.xpipe.app.beacon.BeaconShellSession; import io.xpipe.app.storage.DataStorage; import io.xpipe.beacon.BeaconClientException; import io.xpipe.beacon.api.ShellStartExchange; import io.xpipe.core.store.ShellStore; + +import com.sun.net.httpserver.HttpExchange; import lombok.SneakyThrows; public class ShellStartExchangeImpl extends ShellStartExchange { diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/SshLaunchExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/SshLaunchExchangeImpl.java index e9d4bfeff..2b8c8c410 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/SshLaunchExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/SshLaunchExchangeImpl.java @@ -1,11 +1,12 @@ package io.xpipe.app.beacon.impl; -import com.sun.net.httpserver.HttpExchange; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.util.TerminalLauncherManager; import io.xpipe.beacon.api.SshLaunchExchange; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.core.process.ShellDialects; +import com.sun.net.httpserver.HttpExchange; + import java.util.List; public class SshLaunchExchangeImpl extends SshLaunchExchange { @@ -27,7 +28,7 @@ public class SshLaunchExchangeImpl extends SshLaunchExchange { // There are sometimes multiple requests by a terminal client (e.g. Termius) // This might fail sometimes, but it is expected - var r = TerminalLauncherManager.waitForNextLaunch(); + var r = TerminalLauncherManager.sshLaunchExchange(); var c = ProcessControlProvider.get() .getEffectiveLocalDialect() .getOpenScriptCommand(r.toString()) diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/TerminalLaunchExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/TerminalLaunchExchangeImpl.java index 1d732bbb9..d1982ca7f 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/TerminalLaunchExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/TerminalLaunchExchangeImpl.java @@ -9,7 +9,7 @@ import com.sun.net.httpserver.HttpExchange; public class TerminalLaunchExchangeImpl extends TerminalLaunchExchange { @Override public Object handle(HttpExchange exchange, Request msg) throws BeaconClientException { - var r = TerminalLauncherManager.performLaunch(msg.getRequest()); + var r = TerminalLauncherManager.launchExchange(msg.getRequest()); return Response.builder().targetFile(r).build(); } diff --git a/app/src/main/java/io/xpipe/app/beacon/impl/TerminalWaitExchangeImpl.java b/app/src/main/java/io/xpipe/app/beacon/impl/TerminalWaitExchangeImpl.java index 4f6729c5d..885247908 100644 --- a/app/src/main/java/io/xpipe/app/beacon/impl/TerminalWaitExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/beacon/impl/TerminalWaitExchangeImpl.java @@ -10,7 +10,7 @@ import com.sun.net.httpserver.HttpExchange; public class TerminalWaitExchangeImpl extends TerminalWaitExchange { @Override public Object handle(HttpExchange exchange, Request msg) throws BeaconClientException, BeaconServerException { - TerminalLauncherManager.waitForCompletion(msg.getRequest()); + TerminalLauncherManager.waitExchange(msg.getRequest()); return Response.builder().build(); } diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserClipboard.java b/app/src/main/java/io/xpipe/app/browser/BrowserClipboard.java index 1921d9a3a..c07dfc0e6 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserClipboard.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserClipboard.java @@ -3,9 +3,9 @@ package io.xpipe.app.browser; import io.xpipe.app.browser.file.BrowserEntry; import io.xpipe.app.browser.file.BrowserFileTransferMode; import io.xpipe.app.browser.file.LocalFileSystem; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.util.ThreadHelper; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.core.store.FileEntry; import io.xpipe.core.util.FailableRunnable; diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFileOpener.java b/app/src/main/java/io/xpipe/app/browser/BrowserFileOpener.java index a25524f50..c66cc2ff3 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFileOpener.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFileOpener.java @@ -1,20 +1,76 @@ package io.xpipe.app.browser; import io.xpipe.app.browser.fs.OpenFileSystemModel; +import io.xpipe.app.core.window.AppWindowHelper; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.util.BooleanScope; import io.xpipe.app.util.FileBridge; import io.xpipe.app.util.FileOpener; +import io.xpipe.core.process.ElevationFunction; +import io.xpipe.core.process.OsType; +import io.xpipe.core.store.ConnectionFileSystem; import io.xpipe.core.store.FileEntry; +import io.xpipe.core.store.FileInfo; import io.xpipe.core.store.FileNames; +import java.io.FilterOutputStream; +import java.io.IOException; import java.io.OutputStream; +import java.util.Objects; public class BrowserFileOpener { + private static OutputStream openFileOutput(OpenFileSystemModel model, FileEntry file, long totalBytes) + throws Exception { + var fileSystem = model.getFileSystem(); + if (model.isClosed() || fileSystem.getShell().isEmpty()) { + return OutputStream.nullOutputStream(); + } + + var sc = fileSystem.getShell().get(); + if (sc.getOsType() == OsType.WINDOWS) { + return fileSystem.openOutput(file.getPath(), totalBytes); + } + + var info = (FileInfo.Unix) file.getInfo(); + var zero = Integer.valueOf(0); + var otherWrite = info.getPermissions().charAt(7) == 'w'; + var requiresRoot = zero.equals(info.getUid()) && zero.equals(info.getGid()) && !otherWrite; + if (!requiresRoot || model.getCache().isRoot()) { + return fileSystem.openOutput(file.getPath(), totalBytes); + } + + var elevate = AppWindowHelper.showConfirmationAlert( + "app.fileWriteSudoTitle", "app.fileWriteSudoHeader", "app.fileWriteSudoContent"); + if (!elevate) { + return fileSystem.openOutput(file.getPath(), totalBytes); + } + + var rootSc = sc.identicalSubShell() + .elevated(ElevationFunction.elevated("sudo")) + .start(); + var rootFs = new ConnectionFileSystem(rootSc); + try { + return new FilterOutputStream(rootFs.openOutput(file.getPath(), totalBytes)) { + @Override + public void close() throws IOException { + super.close(); + rootFs.close(); + } + }; + } catch (Exception ex) { + rootFs.close(); + throw ex; + } + } + + private static int calculateKey(FileEntry entry) { + return Objects.hash(entry.getPath(), entry.getFileSystem(), entry.getKind(), entry.getInfo()); + } + public static void openWithAnyApplication(OpenFileSystemModel model, FileEntry entry) { var file = entry.getPath(); - var key = entry.getPath().hashCode() + entry.getFileSystem().hashCode(); + var key = calculateKey(entry); FileBridge.get() .openIO( FileNames.getFileName(file), @@ -35,7 +91,7 @@ public class BrowserFileOpener { public static void openInDefaultApplication(OpenFileSystemModel model, FileEntry entry) { var file = entry.getPath(); - var key = entry.getPath().hashCode() + entry.getFileSystem().hashCode(); + var key = calculateKey(entry); FileBridge.get() .openIO( FileNames.getFileName(file), @@ -61,7 +117,7 @@ public class BrowserFileOpener { } var file = entry.getPath(); - var key = entry.getPath().hashCode() + entry.getFileSystem().hashCode(); + var key = calculateKey(entry); FileBridge.get() .openIO( FileNames.getFileName(file), @@ -71,11 +127,7 @@ public class BrowserFileOpener { return entry.getFileSystem().openInput(file); }, (size) -> { - if (model.isClosed()) { - return OutputStream.nullOutputStream(); - } - - return entry.getFileSystem().openOutput(file, size); + return openFileOutput(model, entry, size); }, FileOpener::openInTextEditor); } diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserNavBar.java b/app/src/main/java/io/xpipe/app/browser/BrowserNavBar.java index f4c4f55f6..06fb8cd32 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserNavBar.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserNavBar.java @@ -84,7 +84,7 @@ public class BrowserNavBar extends Comp { var graphic = Bindings.createStringBinding( () -> { return model.getCurrentDirectory() != null - ? FileIconManager.getFileIcon(model.getCurrentDirectory(), false) + ? FileIconManager.getFileIcon(model.getCurrentDirectory()) : null; }, model.getCurrentPath()); diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserStatusBarComp.java b/app/src/main/java/io/xpipe/app/browser/BrowserStatusBarComp.java index 8d853d5fd..43edfb8e3 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserStatusBarComp.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserStatusBarComp.java @@ -55,7 +55,7 @@ public class BrowserStatusBarComp extends SimpleComp { private Comp createProgressEstimateStatus() { var text = BindingsHelper.map(model.getProgress(), p -> { - if (p == null || p.done()) { + if (p == null) { return null; } else { var expected = p.expectedTimeRemaining(); @@ -74,7 +74,7 @@ public class BrowserStatusBarComp extends SimpleComp { private Comp createProgressStatus() { var text = BindingsHelper.map(model.getProgress(), p -> { - if (p == null || p.done()) { + if (p == null) { return null; } else { var transferred = HumanReadableFormat.progressByteCount(p.getTransferred()); @@ -91,7 +91,7 @@ public class BrowserStatusBarComp extends SimpleComp { private Comp createProgressNameStatus() { var text = BindingsHelper.map(model.getProgress(), p -> { - if (p == null || p.done()) { + if (p == null) { return null; } else { return p.getName(); diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserTransferModel.java b/app/src/main/java/io/xpipe/app/browser/BrowserTransferModel.java index 87e44d064..5f1818bba 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserTransferModel.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserTransferModel.java @@ -10,12 +10,14 @@ import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.util.DesktopHelper; import io.xpipe.app.util.ShellTemp; import io.xpipe.app.util.ThreadHelper; + import javafx.beans.binding.Bindings; import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableBooleanValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; + import lombok.Value; import org.apache.commons.io.FileUtils; @@ -133,6 +135,12 @@ public class BrowserTransferModel { BrowserFileTransferMode.COPY, false, progress -> { + // Don't update item progress to keep it as finished + if (progress == null) { + item.getOpenFileSystemModel().getProgress().setValue(null); + return; + } + synchronized (item.getProgress()) { item.getProgress().setValue(progress); } @@ -170,7 +178,7 @@ public class BrowserTransferModel { if (Files.isDirectory(file)) { FileUtils.moveDirectory(file.toFile(), target.toFile()); } else { - FileUtils.moveFile(file.toFile(), target.toFile(), StandardCopyOption.REPLACE_EXISTING); + Files.move(file, target, StandardCopyOption.REPLACE_EXISTING); } } DesktopHelper.browseFileInDirectory(downloads.resolve(files.getFirst().getFileName())); diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserTransferProgress.java b/app/src/main/java/io/xpipe/app/browser/BrowserTransferProgress.java index bb1e16ec7..7486afdb6 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserTransferProgress.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserTransferProgress.java @@ -14,14 +14,6 @@ public class BrowserTransferProgress { long total; Instant start; - public static BrowserTransferProgress empty() { - return new BrowserTransferProgress(null, 0, 0, Instant.now()); - } - - static BrowserTransferProgress empty(String name, long size) { - return new BrowserTransferProgress(name, 0, size, Instant.now()); - } - public static BrowserTransferProgress finished(String name, long size) { return new BrowserTransferProgress(name, size, size, Instant.now()); } diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserWelcomeComp.java b/app/src/main/java/io/xpipe/app/browser/BrowserWelcomeComp.java index 08f4f4d4a..87a1b186f 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserWelcomeComp.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserWelcomeComp.java @@ -52,7 +52,7 @@ public class BrowserWelcomeComp extends SimpleComp { var vbox = new VBox(welcome, new Spacer(4, Orientation.VERTICAL)); vbox.setAlignment(Pos.CENTER_LEFT); - var img = new PrettySvgComp(new SimpleStringProperty("Hips.svg"), 50, 75) + var img = new PrettySvgComp(new SimpleStringProperty("graphics/Hips.svg"), 50, 75) .padding(new Insets(5, 0, 0, 0)) .createRegion(); @@ -145,8 +145,7 @@ public class BrowserWelcomeComp extends SimpleComp { private Comp entryButton(BrowserSavedState.Entry e, BooleanProperty disable) { var entry = DataStorage.get().getStoreEntryIfPresent(e.getUuid()); - var graphic = - entry.get().getProvider().getDisplayIconFileName(entry.get().getStore()); + var graphic = entry.get().getEffectiveIconFile(); var view = PrettyImageHelper.ofFixedSize(graphic, 30, 24); return new ButtonComp( new SimpleStringProperty(DataStorage.get().getStoreEntryDisplayName(entry.get())), diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserAlerts.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserAlerts.java index 80e71cdff..6f0350188 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserAlerts.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserAlerts.java @@ -2,6 +2,7 @@ package io.xpipe.app.browser.file; import io.xpipe.app.core.AppI18n; import io.xpipe.app.core.window.AppWindowHelper; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.core.store.FileEntry; import io.xpipe.core.store.FileKind; import io.xpipe.core.store.FilePath; @@ -62,7 +63,8 @@ public class BrowserAlerts { } public static boolean showDeleteAlert(List source) { - if (source.stream().noneMatch(entry -> entry.getKind() == FileKind.DIRECTORY)) { + if (!AppPrefs.get().confirmDeletions().get() + && source.stream().noneMatch(entry -> entry.getKind() == FileKind.DIRECTORY)) { return true; } diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserEntry.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserEntry.java index 616693aab..184cc12a7 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserEntry.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserEntry.java @@ -65,11 +65,11 @@ public class BrowserEntry { if (fileType != null) { return fileType.getIcon(); } else if (directoryType != null) { - return directoryType.getIcon(rawFileEntry, false); + return directoryType.getIcon(rawFileEntry); } else { return rawFileEntry != null && rawFileEntry.resolved().getKind() == FileKind.DIRECTORY - ? "default_folder.svg" - : "default_file.svg"; + ? "browser/default_folder.svg" + : "browser/default_file.svg"; } } diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java index 9eaba89c9..f9cfb23a2 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListComp.java @@ -194,9 +194,9 @@ public final class BrowserFileListComp extends SimpleComp { ? unix.getGroup() : m.getCache().getGroups().getOrDefault(unix.getGid(), "?"); var uid = String.valueOf( - unix.getUid() != null ? unix.getUid() : m.getCache().getUidForUser(user)); + unix.getUid() != null ? unix.getUid() : m.getCache().getUidForUser(user)); var gid = String.valueOf( - unix.getGid() != null ? unix.getGid() : m.getCache().getGidForGroup(group)); + unix.getGid() != null ? unix.getGid() : m.getCache().getGidForGroup(group)); if (uid.equals(gid) && user.equals(group)) { return user + " [" + uid + "]"; } @@ -248,7 +248,6 @@ public final class BrowserFileListComp extends SimpleComp { if (inCooldown) { lastType.set(Instant.now()); event.consume(); - return; } else { lastType.set(null); typedSelection.set(""); @@ -256,8 +255,8 @@ public final class BrowserFileListComp extends SimpleComp { if (!recursive) { updateTypedSelection(table, lastType, event, true); } - return; } + return; } lastType.set(Instant.now()); @@ -631,6 +630,10 @@ public final class BrowserFileListComp extends SimpleComp { () -> getTableRow().getItem(), fileList.getFileSystemModel()) .hide(Bindings.createBooleanBinding( () -> { + if (getTableRow() == null) { + return true; + } + var item = getTableRow().getItem(); var notDir = item.getRawFileEntry().resolved().getKind() != FileKind.DIRECTORY; var isParentLink = item.getRawFileEntry() diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java index 65af868aa..6e49f8a4a 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileTransferOperation.java @@ -102,7 +102,7 @@ public class BrowserFileTransferOperation { public void execute() throws Exception { if (files.isEmpty()) { - updateProgress(BrowserTransferProgress.empty()); + updateProgress(null); return; } @@ -115,18 +115,22 @@ public class BrowserFileTransferOperation { } } - for (var file : files) { - if (same) { - handleSingleOnSameFileSystem(file); - } else { - handleSingleAcrossFileSystems(file); - } - } - - if (!same && doesMove) { + try { for (var file : files) { - deleteSingle(file); + if (same) { + handleSingleOnSameFileSystem(file); + } else { + handleSingleAcrossFileSystems(file); + } } + + if (!same && doesMove) { + for (var file : files) { + deleteSingle(file); + } + } + } finally { + updateProgress(null); } } diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java index 83d3d6a33..6f5735534 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java @@ -142,8 +142,7 @@ public class BrowserQuickAccessContextMenu extends ContextMenu { this.menu = new Menu( // Use original name, not the link target browserEntry.getRawFileEntry().getName(), - PrettyImageHelper.ofFixedRasterized( - FileIconManager.getFileIcon(browserEntry.getRawFileEntry(), false), 24, 24) + PrettyImageHelper.ofFixedSize(FileIconManager.getFileIcon(browserEntry.getRawFileEntry()), 24, 24) .createRegion()); createMenu(); addInputListeners(); diff --git a/app/src/main/java/io/xpipe/app/browser/file/LocalFileSystem.java b/app/src/main/java/io/xpipe/app/browser/file/LocalFileSystem.java index 6b07cd7c8..48b74d368 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/LocalFileSystem.java +++ b/app/src/main/java/io/xpipe/app/browser/file/LocalFileSystem.java @@ -1,9 +1,9 @@ package io.xpipe.app.browser.file; +import io.xpipe.app.ext.LocalStore; import io.xpipe.core.store.FileEntry; import io.xpipe.core.store.FileKind; import io.xpipe.core.store.FileSystem; -import io.xpipe.app.ext.LocalStore; import java.nio.file.Files; import java.nio.file.Path; @@ -19,6 +19,13 @@ public class LocalFileSystem { } } + public static void reset() throws Exception { + if (localFileSystem != null) { + localFileSystem.close(); + localFileSystem = null; + } + } + public static FileEntry getLocalFileEntry(Path file) throws Exception { if (localFileSystem == null) { throw new IllegalStateException(); diff --git a/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemCache.java b/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemCache.java index 9a750cdb3..9d9037af9 100644 --- a/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemCache.java +++ b/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemCache.java @@ -60,7 +60,8 @@ public class OpenFileSystemCache extends ShellControlCache { var split = s.split(":"); try { users.putIfAbsent(Integer.parseInt(split[2]), split[0]); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } }); if (users.isEmpty()) { @@ -81,7 +82,8 @@ public class OpenFileSystemCache extends ShellControlCache { var split = s.split(":"); try { groups.putIfAbsent(Integer.parseInt(split[2]), split[0]); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } }); if (groups.isEmpty()) { diff --git a/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemModel.java b/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemModel.java index 3697c98e0..fffc99126 100644 --- a/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemModel.java +++ b/app/src/main/java/io/xpipe/app/browser/fs/OpenFileSystemModel.java @@ -11,6 +11,7 @@ import io.xpipe.app.browser.file.FileSystemHelper; import io.xpipe.app.browser.session.BrowserAbstractSessionModel; import io.xpipe.app.browser.session.BrowserSessionTab; import io.xpipe.app.comp.base.ModalOverlayComp; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.storage.DataStorage; @@ -18,7 +19,7 @@ import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.util.BooleanScope; import io.xpipe.app.util.TerminalLauncher; import io.xpipe.app.util.ThreadHelper; -import io.xpipe.app.ext.ProcessControlProvider; +import io.xpipe.core.process.CommandBuilder; import io.xpipe.core.process.ShellControl; import io.xpipe.core.process.ShellDialects; import io.xpipe.core.process.ShellOpenFunction; @@ -47,8 +48,7 @@ public final class OpenFileSystemModel extends BrowserSessionTab overlay = new SimpleObjectProperty<>(); private final BooleanProperty inOverview = new SimpleBooleanProperty(); - private final Property progress = - new SimpleObjectProperty<>(BrowserTransferProgress.empty()); + private final Property progress = new SimpleObjectProperty<>(); private FileSystem fileSystem; private OpenFileSystemSavedState savedState; private OpenFileSystemCache cache; @@ -73,10 +73,13 @@ public final class OpenFileSystemModel extends BrowserSessionTab 4 ? "browser/" + split[4].trim() : closedIcon; - var lightClosedIcon = split.length > 4 ? split[4].trim() : closedIcon; - var lightOpenIcon = split.length > 4 ? split[5].trim() : openIcon; - - ALL.add(new Simple( - id, - new IconVariant(lightClosedIcon, closedIcon), - new IconVariant(lightOpenIcon, openIcon), - filter)); + ALL.add(new Simple(id, new IconVariant(lightClosedIcon, closedIcon), filter)); } } }); @@ -84,7 +77,7 @@ public abstract class BrowserIconDirectoryType { public abstract boolean matches(FileEntry entry); - public abstract String getIcon(FileEntry entry, boolean open); + public abstract String getIcon(FileEntry entry); public static class Simple extends BrowserIconDirectoryType { @@ -92,13 +85,11 @@ public abstract class BrowserIconDirectoryType { private final String id; private final IconVariant closed; - private final IconVariant open; private final Set names; - public Simple(String id, IconVariant closed, IconVariant open, Set names) { + public Simple(String id, IconVariant closed, Set names) { this.id = id; this.closed = closed; - this.open = open; this.names = names; } @@ -113,8 +104,8 @@ public abstract class BrowserIconDirectoryType { } @Override - public String getIcon(FileEntry entry, boolean open) { - return open ? this.open.getIcon() : this.closed.getIcon(); + public String getIcon(FileEntry entry) { + return this.closed.getIcon(); } } } diff --git a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconFileType.java b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconFileType.java index d955481f8..4293aa2b6 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconFileType.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIconFileType.java @@ -1,6 +1,6 @@ package io.xpipe.app.browser.icon; -import io.xpipe.app.core.AppResources; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.store.FileEntry; import io.xpipe.core.store.FileKind; import io.xpipe.core.store.FileNames; @@ -47,8 +47,8 @@ public abstract class BrowserIconFileType { return "." + r; }) .collect(Collectors.toSet()); - var darkIcon = split[2].trim(); - var lightIcon = split.length > 3 ? split[3].trim() : darkIcon; + var darkIcon = "browser/" + split[2].trim(); + var lightIcon = (split.length > 3 ? "browser/" + split[3].trim() : darkIcon); ALL.add(new BrowserIconFileType.Simple(id, lightIcon, darkIcon, filter)); } } diff --git a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIcons.java b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIcons.java index e156867ea..18fc39bde 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/BrowserIcons.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/BrowserIcons.java @@ -7,11 +7,11 @@ import io.xpipe.core.store.FileEntry; public class BrowserIcons { public static Comp createDefaultFileIcon() { - return PrettyImageHelper.ofFixedSizeSquare("default_file.svg", 24); + return PrettyImageHelper.ofFixedSizeSquare("browser/default_file.svg", 24); } public static Comp createDefaultDirectoryIcon() { - return PrettyImageHelper.ofFixedSizeSquare("default_folder.svg", 24); + return PrettyImageHelper.ofFixedSizeSquare("browser/default_folder.svg", 24); } public static Comp createIcon(BrowserIconFileType type) { @@ -19,6 +19,6 @@ public class BrowserIcons { } public static Comp createIcon(FileEntry entry) { - return PrettyImageHelper.ofFixedSizeSquare(FileIconManager.getFileIcon(entry, false), 24); + return PrettyImageHelper.ofFixedSizeSquare(FileIconManager.getFileIcon(entry), 24); } } diff --git a/app/src/main/java/io/xpipe/app/browser/icon/FileIconManager.java b/app/src/main/java/io/xpipe/app/browser/icon/FileIconManager.java index 4df214cd7..1b28618df 100644 --- a/app/src/main/java/io/xpipe/app/browser/icon/FileIconManager.java +++ b/app/src/main/java/io/xpipe/app/browser/icon/FileIconManager.java @@ -1,7 +1,5 @@ package io.xpipe.app.browser.icon; -import io.xpipe.app.core.AppImages; -import io.xpipe.app.core.AppResources; import io.xpipe.core.store.FileEntry; import io.xpipe.core.store.FileKind; @@ -13,12 +11,11 @@ public class FileIconManager { if (!loaded) { BrowserIconFileType.loadDefinitions(); BrowserIconDirectoryType.loadDefinitions(); - AppImages.loadDirectory(AppResources.XPIPE_MODULE, "browser_icons", true, false); loaded = true; } } - public static synchronized String getFileIcon(FileEntry entry, boolean open) { + public static synchronized String getFileIcon(FileEntry entry) { if (entry == null) { return null; } @@ -33,13 +30,11 @@ public class FileIconManager { } else { for (var f : BrowserIconDirectoryType.getAll()) { if (f.matches(r)) { - return f.getIcon(r, open); + return f.getIcon(r); } } } - return r.getKind() == FileKind.DIRECTORY - ? (open ? "default_folder_opened.svg" : "default_folder.svg") - : "default_file.svg"; + return "browser/" + (r.getKind() == FileKind.DIRECTORY ? "default_folder.svg" : "default_file.svg"); } } diff --git a/app/src/main/java/io/xpipe/app/browser/session/BrowserChooserComp.java b/app/src/main/java/io/xpipe/app/browser/session/BrowserChooserComp.java index 8b38c6bb9..59189e207 100644 --- a/app/src/main/java/io/xpipe/app/browser/session/BrowserChooserComp.java +++ b/app/src/main/java/io/xpipe/app/browser/session/BrowserChooserComp.java @@ -9,11 +9,8 @@ import io.xpipe.app.comp.base.DialogComp; import io.xpipe.app.comp.base.SideSplitPaneComp; import io.xpipe.app.comp.store.StoreEntryWrapper; import io.xpipe.app.core.AppFont; -import io.xpipe.app.core.AppI18n; import io.xpipe.app.core.AppLayoutModel; -import io.xpipe.app.core.window.AppWindowHelper; import io.xpipe.app.fxcomps.Comp; -import io.xpipe.app.fxcomps.SimpleComp; import io.xpipe.app.fxcomps.impl.StackComp; import io.xpipe.app.fxcomps.impl.VerticalComp; import io.xpipe.app.fxcomps.util.BindingsHelper; @@ -30,7 +27,6 @@ import javafx.geometry.Pos; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; -import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; import javafx.scene.shape.Rectangle; @@ -40,7 +36,7 @@ import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.Supplier; -public class BrowserChooserComp extends SimpleComp { +public class BrowserChooserComp extends DialogComp { private final BrowserFileChooserModel model; @@ -52,24 +48,16 @@ public class BrowserChooserComp extends SimpleComp { Supplier> store, Consumer file, boolean save) { PlatformThread.runLaterIfNeeded(() -> { var model = new BrowserFileChooserModel(OpenFileSystemModel.SelectionMode.SINGLE_FILE); - var comp = new BrowserChooserComp(model) - .apply(struc -> struc.get().setPrefSize(1200, 700)) - .apply(struc -> AppFont.normal(struc.get())); - var window = AppWindowHelper.sideWindow( - AppI18n.get(save ? "saveFileTitle" : "openFileTitle"), - stage -> { - return comp; - }, - false, - null); + DialogComp.showWindow(save ? "saveFileTitle" : "openFileTitle", stage -> { + var comp = new BrowserChooserComp(model); + comp.apply(struc -> struc.get().setPrefSize(1200, 700)) + .apply(struc -> AppFont.normal(struc.get())) + .styleClass("browser") + .styleClass("chooser"); + return comp; + }); model.setOnFinish(fileStores -> { file.accept(fileStores.size() > 0 ? fileStores.getFirst() : null); - window.close(); - }); - window.show(); - window.setOnHidden(event -> { - model.finishWithoutChoice(); - event.consume(); }); ThreadHelper.runAsync(() -> { model.openFileSystemAsync(store.get(), null, null); @@ -78,7 +66,27 @@ public class BrowserChooserComp extends SimpleComp { } @Override - protected Region createSimple() { + protected String finishKey() { + return "select"; + } + + @Override + protected Comp pane(Comp content) { + return content; + } + + @Override + protected void finish() { + model.finishChooser(); + } + + @Override + protected void discard() { + model.finishWithoutChoice(); + } + + @Override + public Comp content() { Predicate applicable = storeEntryWrapper -> { return (storeEntryWrapper.getEntry().getStore() instanceof ShellStore) && storeEntryWrapper.getEntry().getValidity().isUsable(); @@ -96,7 +104,7 @@ public class BrowserChooserComp extends SimpleComp { return; } - if (entry.getStore() instanceof ShellStore fileSystem) { + if (entry.getStore() instanceof ShellStore) { model.openFileSystemAsync(entry.ref(), null, busy); } }); @@ -144,60 +152,33 @@ public class BrowserChooserComp extends SimpleComp { struc.getLeft().setMinWidth(200); struc.getLeft().setMaxWidth(500); }); + return splitPane; + } - var dialogPane = new DialogComp() { - - @Override - protected String finishKey() { - return "select"; - } - - @Override - protected Comp pane(Comp content) { - return content; - } - - @Override - protected void finish() { - model.finishChooser(); - } - - @Override - public Comp content() { - return splitPane; - } - - @Override - public Comp bottom() { - return Comp.of(() -> { - var selected = new HBox(); - selected.setAlignment(Pos.CENTER_LEFT); - model.getFileSelection().addListener((ListChangeListener) c -> { - PlatformThread.runLaterIfNeeded(() -> { - selected.getChildren() - .setAll(c.getList().stream() - .map(s -> { - var field = new TextField( - s.getRawFileEntry().getPath()); - field.setEditable(false); - field.getStyleClass().add("chooser-selection"); - HBox.setHgrow(field, Priority.ALWAYS); - return field; - }) - .toList()); - }); - }); - var bottomBar = new HBox(selected); - HBox.setHgrow(selected, Priority.ALWAYS); - bottomBar.setAlignment(Pos.CENTER); - return bottomBar; + @Override + public Comp bottom() { + return Comp.of(() -> { + var selected = new HBox(); + selected.setAlignment(Pos.CENTER_LEFT); + model.getFileSelection().addListener((ListChangeListener) c -> { + PlatformThread.runLaterIfNeeded(() -> { + selected.getChildren() + .setAll(c.getList().stream() + .map(s -> { + var field = new TextField( + s.getRawFileEntry().getPath()); + field.setEditable(false); + field.getStyleClass().add("chooser-selection"); + HBox.setHgrow(field, Priority.ALWAYS); + return field; + }) + .toList()); }); - } - }; - - var r = dialogPane.createRegion(); - r.getStyleClass().add("browser"); - r.getStyleClass().add("chooser"); - return r; + }); + var bottomBar = new HBox(selected); + HBox.setHgrow(selected, Priority.ALWAYS); + bottomBar.setAlignment(Pos.CENTER); + return bottomBar; + }); } } diff --git a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java index 4063dc75a..3fdc6fa43 100644 --- a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java +++ b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionModel.java @@ -51,11 +51,12 @@ public class BrowserSessionModel extends BrowserAbstractSessionModel(sessionEntries)) { // Don't close busy connections gracefully // as we otherwise might lock up - if (o.canImmediatelyClose()) { + if (!o.canImmediatelyClose()) { continue; } - closeSync(o); + // Prevent blocking of shutdown + closeAsync(o); } BrowserSavedStateImpl.get().save(); } diff --git a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionTabsComp.java b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionTabsComp.java index 9a1331273..e4cb2ef1a 100644 --- a/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionTabsComp.java +++ b/app/src/main/java/io/xpipe/app/browser/session/BrowserSessionTabsComp.java @@ -9,6 +9,7 @@ import io.xpipe.app.fxcomps.impl.PrettyImageHelper; import io.xpipe.app.fxcomps.impl.TooltipAugment; import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.fxcomps.util.PlatformThread; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.util.BooleanScope; import io.xpipe.app.util.ContextMenuHelper; @@ -238,7 +239,6 @@ public class BrowserSessionTabsComp extends SimpleComp { % tabs.getTabs().size(); tabs.getSelectionModel().select(previous); keyEvent.consume(); - return; } }); @@ -329,12 +329,14 @@ public class BrowserSessionTabsComp extends SimpleComp { ring.setMaxSize(16, 16); ring.progressProperty() .bind(Bindings.createDoubleBinding( - () -> model.getBusy().get() ? -1d : 0, PlatformThread.sync(model.getBusy()))); + () -> model.getBusy().get() + && !AppPrefs.get().performanceMode().get() + ? -1d + : 0, + PlatformThread.sync(model.getBusy()), + AppPrefs.get().performanceMode())); - var image = model.getEntry() - .get() - .getProvider() - .getDisplayIconFileName(model.getEntry().getStore()); + var image = model.getEntry().get().getEffectiveIconFile(); var logo = PrettyImageHelper.ofFixedSizeSquare(image, 16).createRegion(); tab.graphicProperty() diff --git a/app/src/main/java/io/xpipe/app/comp/AppLayoutComp.java b/app/src/main/java/io/xpipe/app/comp/AppLayoutComp.java index 32c419d36..650948036 100644 --- a/app/src/main/java/io/xpipe/app/comp/AppLayoutComp.java +++ b/app/src/main/java/io/xpipe/app/comp/AppLayoutComp.java @@ -64,7 +64,6 @@ public class AppLayoutComp extends Comp> { if (shortcut != null && shortcut.match(event)) { ((ButtonBase) ((Parent) node).getChildrenUnmodifiable().get(1)).fire(); event.consume(); - return; } }); }); diff --git a/app/src/main/java/io/xpipe/app/comp/base/DialogComp.java b/app/src/main/java/io/xpipe/app/comp/base/DialogComp.java index a5963378f..782bc981b 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/DialogComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/DialogComp.java @@ -20,22 +20,30 @@ import javafx.stage.Stage; import atlantafx.base.theme.Styles; import java.util.List; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; public abstract class DialogComp extends Comp> { public static void showWindow(String titleKey, Function f) { var loading = new SimpleBooleanProperty(); + var dialog = new AtomicReference(); Platform.runLater(() -> { var stage = AppWindowHelper.sideWindow( AppI18n.get(titleKey), window -> { var c = f.apply(window); + dialog.set(c); loading.bind(c.busy()); return c; }, false, loading); + stage.setOnCloseRequest(event -> { + if (dialog.get() != null) { + dialog.get().discard(); + } + }); stage.show(); }); } @@ -60,12 +68,16 @@ public abstract class DialogComp extends Comp> { .addAll(customButtons().stream() .map(buttonComp -> buttonComp.createRegion()) .toList()); - var nextButton = new ButtonComp(AppI18n.observable(finishKey()), null, this::finish) + var nextButton = finishButton(); + buttons.getChildren().add(nextButton.createRegion()); + return buttons; + } + + protected Comp finishButton() { + return new ButtonComp(AppI18n.observable(finishKey()), null, this::finish) .apply(struc -> struc.get().setDefaultButton(true)) .styleClass(Styles.ACCENT) .styleClass("next"); - buttons.getChildren().add(nextButton.createRegion()); - return buttons; } protected String finishKey() { @@ -93,6 +105,8 @@ public abstract class DialogComp extends Comp> { protected abstract void finish(); + protected abstract void discard(); + public abstract Comp content(); protected Comp pane(Comp content) { diff --git a/app/src/main/java/io/xpipe/app/comp/base/ListBoxViewComp.java b/app/src/main/java/io/xpipe/app/comp/base/ListBoxViewComp.java index cc4921cac..f013c329b 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ListBoxViewComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ListBoxViewComp.java @@ -26,6 +26,8 @@ public class ListBoxViewComp extends Comp> { private static final PseudoClass ODD = PseudoClass.getPseudoClass("odd"); private static final PseudoClass EVEN = PseudoClass.getPseudoClass("even"); + private static final PseudoClass FIRST = PseudoClass.getPseudoClass("first"); + private static final PseudoClass LAST = PseudoClass.getPseudoClass("last"); private final ObservableList shown; private final ObservableList all; @@ -114,9 +116,10 @@ public class ListBoxViewComp extends Comp> { for (int i = 0; i < newShown.size(); i++) { var r = newShown.get(i); - r.pseudoClassStateChanged(ODD, false); - r.pseudoClassStateChanged(EVEN, false); - r.pseudoClassStateChanged(i % 2 == 0 ? EVEN : ODD, true); + r.pseudoClassStateChanged(ODD, i % 2 != 0); + r.pseudoClassStateChanged(EVEN, i % 2 == 0); + r.pseudoClassStateChanged(FIRST, i == 0); + r.pseudoClassStateChanged(LAST, i == newShown.size() - 1); } var d = new DerivedObservableList<>(listView.getChildren(), true); diff --git a/app/src/main/java/io/xpipe/app/comp/base/MarkdownComp.java b/app/src/main/java/io/xpipe/app/comp/base/MarkdownComp.java index b977727df..cec482fbe 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/MarkdownComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/MarkdownComp.java @@ -1,13 +1,13 @@ package io.xpipe.app.comp.base; import io.xpipe.app.core.AppProperties; -import io.xpipe.app.core.AppResources; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.fxcomps.CompStructure; import io.xpipe.app.fxcomps.SimpleCompStructure; import io.xpipe.app.fxcomps.util.PlatformThread; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppResources; import io.xpipe.app.util.Hyperlinks; import io.xpipe.app.util.MarkdownHelper; import io.xpipe.app.util.ShellTemp; diff --git a/app/src/main/java/io/xpipe/app/comp/base/OsLogoComp.java b/app/src/main/java/io/xpipe/app/comp/base/OsLogoComp.java index 74cf6a2b0..288cb31ff 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/OsLogoComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/OsLogoComp.java @@ -1,11 +1,11 @@ package io.xpipe.app.comp.base; import io.xpipe.app.comp.store.StoreEntryWrapper; -import io.xpipe.app.core.AppResources; import io.xpipe.app.fxcomps.SimpleComp; -import io.xpipe.app.fxcomps.impl.PrettyImageComp; +import io.xpipe.app.fxcomps.impl.PrettyImageHelper; import io.xpipe.app.fxcomps.impl.StackComp; import io.xpipe.app.fxcomps.util.BindingsHelper; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.process.OsNameState; import io.xpipe.core.store.FileNames; @@ -22,8 +22,7 @@ import java.util.Map; public class OsLogoComp extends SimpleComp { private static final Map ICONS = new HashMap<>(); - private static final String LINUX_DEFAULT = "linux-24.png"; - private static final String LINUX_DEFAULT_SVG = "linux.svg"; + private static final String LINUX_DEFAULT_24 = "linux-24.png"; private final StoreEntryWrapper wrapper; private final ObservableValue state; @@ -54,8 +53,9 @@ public class OsLogoComp extends SimpleComp { wrapper.getPersistentState(), state); var hide = BindingsHelper.map(img, s -> s != null); - return new StackComp( - List.of(new SystemStateComp(state).hide(hide), new PrettyImageComp(img, 24, 24).visible(hide))) + return new StackComp(List.of( + new SystemStateComp(state).hide(hide), + PrettyImageHelper.ofFixedSize(img, 24, 24).visible(hide))) .createRegion(); } @@ -67,11 +67,12 @@ public class OsLogoComp extends SimpleComp { if (ICONS.isEmpty()) { AppResources.with(AppResources.XPIPE_MODULE, "img/os", file -> { try (var list = Files.list(file)) { - list.filter(path -> path.toString().endsWith(".svg") - && !path.toString().endsWith(LINUX_DEFAULT_SVG)) + list.filter(path -> path.toString().endsWith(".png") + && !path.toString().endsWith(LINUX_DEFAULT_24) + && !path.toString().endsWith("-40.png")) .map(path -> FileNames.getFileName(path.toString())) .forEach(path -> { - var base = FileNames.getBaseName(path).replace("-dark", "") + "-24.png"; + var base = path.replace("-dark", "").replace("-24.png", ".svg"); ICONS.put(FileNames.getBaseName(base).split("-")[0], "os/" + base); }); } @@ -82,6 +83,6 @@ public class OsLogoComp extends SimpleComp { .filter(e -> name.toLowerCase().contains(e.getKey())) .findAny() .map(e -> e.getValue()) - .orElse("os/" + LINUX_DEFAULT); + .orElse("os/linux.svg"); } } diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreCreationComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreCreationComp.java index c2c97fbbf..e0dd41b68 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreCreationComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreCreationComp.java @@ -20,6 +20,7 @@ import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.util.*; import io.xpipe.core.store.DataStore; +import io.xpipe.core.store.ValidationContext; import io.xpipe.core.util.ValidationException; import javafx.application.Platform; @@ -42,14 +43,13 @@ import net.synedra.validatorfx.GraphicDecorationStackPane; import java.util.List; import java.util.Objects; import java.util.UUID; -import java.util.function.BiConsumer; import java.util.function.Predicate; @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class StoreCreationComp extends DialogComp { Stage window; - BiConsumer consumer; + CreationConsumer consumer; Property provider; ObjectProperty store; Predicate filter; @@ -67,7 +67,7 @@ public class StoreCreationComp extends DialogComp { public StoreCreationComp( Stage window, - BiConsumer consumer, + CreationConsumer consumer, Property provider, ObjectProperty store, Predicate filter, @@ -165,8 +165,11 @@ public class StoreCreationComp extends DialogComp { e.getProvider(), e.getStore(), v -> true, - (newE, validated) -> { + (newE, context, validated) -> { ThreadHelper.runAsync(() -> { + if (context != null) { + context.close(); + } if (!DataStorage.get().getStoreEntries().contains(e)) { DataStorage.get().addStoreEntryIfNotPresent(newE); } else { @@ -193,15 +196,16 @@ public class StoreCreationComp extends DialogComp { base != null ? DataStoreProviders.byStore(base) : null, base, dataStoreProvider -> category.equals(dataStoreProvider.getCreationCategory()), - (e, validated) -> { + (e, context, validated) -> { try { DataStorage.get().addStoreEntryIfNotPresent(e); - if (validated + if (context != null + && validated && e.getProvider().shouldShowScan() && AppPrefs.get() .openConnectionSearchWindowOnConnectionCreation() .get()) { - ScanAlert.showAsync(e); + ScanAlert.showAsync(e, context); } } catch (Exception ex) { ErrorEvent.fromThrowable(ex).handle(); @@ -211,12 +215,17 @@ public class StoreCreationComp extends DialogComp { null); } + public interface CreationConsumer { + + void consume(DataStoreEntry entry, ValidationContext validationContext, boolean validated); + } + private static void show( String initialName, DataStoreProvider provider, DataStore s, Predicate filter, - BiConsumer con, + CreationConsumer con, boolean staticDisplay, DataStoreEntry existingEntry) { var prop = new SimpleObjectProperty<>(provider); @@ -247,7 +256,7 @@ public class StoreCreationComp extends DialogComp { return List.of( new ButtonComp(AppI18n.observable("skip"), null, () -> { if (showInvalidConfirmAlert()) { - commit(false); + commit(null, false); } else { finish(); } @@ -275,6 +284,9 @@ public class StoreCreationComp extends DialogComp { return busy; } + @Override + protected void discard() {} + @Override protected void finish() { if (finished.get()) { @@ -287,7 +299,7 @@ public class StoreCreationComp extends DialogComp { // We didn't change anything if (existingEntry != null && existingEntry.getStore().equals(store.getValue())) { - commit(false); + commit(null, false); return; } @@ -315,10 +327,10 @@ public class StoreCreationComp extends DialogComp { return; } - try (var b = new BooleanScope(busy).start()) { + try (var ignored = new BooleanScope(busy).start()) { DataStorage.get().addStoreEntryInProgress(entry.getValue()); - entry.getValue().validateOrThrow(); - commit(true); + var context = entry.getValue().validateAndKeepOpenOrThrowAndClose(null); + commit(context, true); } catch (Throwable ex) { if (ex instanceof ValidationException) { ErrorEvent.expected(ex); @@ -403,14 +415,14 @@ public class StoreCreationComp extends DialogComp { .createRegion(); } - private void commit(boolean validated) { + private void commit(ValidationContext validationContext, boolean validated) { if (finished.get()) { return; } finished.setValue(true); if (entry.getValue() != null) { - consumer.accept(entry.getValue(), validated); + consumer.consume(entry.getValue(), validationContext, validated); } PlatformThread.runLaterIfNeeded(() -> { diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreCreationMenu.java b/app/src/main/java/io/xpipe/app/comp/store/StoreCreationMenu.java index 13ad741f3..df546265f 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreCreationMenu.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreCreationMenu.java @@ -22,7 +22,7 @@ public class StoreCreationMenu { automatically.setGraphic(new FontIcon("mdi2e-eye-plus-outline")); automatically.textProperty().bind(AppI18n.observable("addAutomatically")); automatically.setOnAction(event -> { - ScanAlert.showAsync(null); + ScanAlert.showAsync(null, null); event.consume(); }); menu.getItems().add(automatically); @@ -32,17 +32,21 @@ public class StoreCreationMenu { menu.getItems().add(category("addDesktop", "mdi2c-camera-plus", DataStoreCreationCategory.DESKTOP, null)); - menu.getItems().add(category("addShell", "mdi2t-text-box-multiple", DataStoreCreationCategory.SHELL, "shellEnvironment")); + menu.getItems() + .add(category( + "addShell", "mdi2t-text-box-multiple", DataStoreCreationCategory.SHELL, "shellEnvironment")); menu.getItems() .add(category("addScript", "mdi2s-script-text-outline", DataStoreCreationCategory.SCRIPT, "script")); menu.getItems() - .add(category("addTunnel", "mdi2v-vector-polyline-plus", DataStoreCreationCategory.TUNNEL, "customService")); + .add(category( + "addTunnel", "mdi2v-vector-polyline-plus", DataStoreCreationCategory.TUNNEL, "customService")); menu.getItems().add(category("addSerial", "mdi2s-serial-port", DataStoreCreationCategory.SERIAL, "serial")); - // menu.getItems().add(category("addDatabase", "mdi2d-database-plus", DataStoreCreationCategory.DATABASE, null)); + // menu.getItems().add(category("addDatabase", "mdi2d-database-plus", DataStoreCreationCategory.DATABASE, + // null)); } private static MenuItem category( @@ -85,8 +89,7 @@ public class StoreCreationMenu { .sorted(Comparator.comparingInt(dataStoreProvider -> dataStoreProvider.getOrderPriority())) .toList(); int lastOrder = providers.getFirst().getOrderPriority(); - for (int i = 0; i < providers.size(); i++) { - var dataStoreProvider = providers.get(i); + for (io.xpipe.app.ext.DataStoreProvider dataStoreProvider : providers) { if (dataStoreProvider.getOrderPriority() != lastOrder) { menu.getItems().add(new SeparatorMenuItem()); lastOrder = dataStoreProvider.getOrderPriority(); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java index 94883bd98..7f74eeafe 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryComp.java @@ -10,12 +10,12 @@ import io.xpipe.app.fxcomps.augment.ContextMenuAugment; import io.xpipe.app.fxcomps.augment.GrowAugment; import io.xpipe.app.fxcomps.impl.IconButtonComp; import io.xpipe.app.fxcomps.impl.LabelComp; -import io.xpipe.app.fxcomps.impl.PrettyImageHelper; import io.xpipe.app.fxcomps.impl.TooltipAugment; import io.xpipe.app.fxcomps.util.BindingsHelper; import io.xpipe.app.fxcomps.util.DerivedObservableList; import io.xpipe.app.fxcomps.util.PlatformThread; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppResources; import io.xpipe.app.storage.DataColor; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; @@ -33,7 +33,6 @@ import javafx.scene.control.*; import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Region; -import javafx.scene.layout.StackPane; import atlantafx.base.layout.InputGroup; import atlantafx.base.theme.Styles; @@ -192,26 +191,7 @@ public abstract class StoreEntryComp extends SimpleComp { } protected Node createIcon(int w, int h) { - var img = getWrapper().disabledProperty().get() - ? "disabled_icon.png" - : getWrapper() - .getEntry() - .getProvider() - .getDisplayIconFileName(getWrapper().getEntry().getStore()); - var imageComp = PrettyImageHelper.ofFixedSize(img, w, h); - var storeIcon = imageComp.createRegion(); - if (getWrapper().getValidity().getValue().isUsable()) { - new TooltipAugment<>(getWrapper().getEntry().getProvider().displayName(), null).augment(storeIcon); - } - - var stack = new StackPane(storeIcon); - stack.setMinHeight(w + 7); - stack.setMinWidth(w + 7); - stack.setMaxHeight(w + 7); - stack.setMaxWidth(w + 7); - stack.getStyleClass().add("icon"); - stack.setAlignment(Pos.CENTER); - return stack; + return new StoreIconComp(getWrapper(), w, h).createRegion(); } protected Region createButtonBar() { @@ -265,12 +245,14 @@ public abstract class StoreEntryComp extends SimpleComp { button.apply(new ContextMenuAugment<>( mouseEvent -> mouseEvent.getButton() == MouseButton.PRIMARY, keyEvent -> false, () -> { var cm = ContextMenuHelper.create(); - branch.getChildren(getWrapper().getEntry().ref()).forEach(childProvider -> { - var menu = buildMenuItemForAction(childProvider); - if (menu != null) { - cm.getItems().add(menu); - } - }); + branch.getChildren(getWrapper().getEntry().ref()).stream() + .filter(actionProvider -> getWrapper().showActionProvider(actionProvider)) + .forEach(childProvider -> { + var menu = buildMenuItemForAction(childProvider); + if (menu != null) { + cm.getItems().add(menu); + } + }); return cm; })); } @@ -341,14 +323,16 @@ public abstract class StoreEntryComp extends SimpleComp { if (DataStorage.get().isRootEntry(getWrapper().getEntry())) { var color = new Menu(AppI18n.get("color"), new FontIcon("mdi2f-format-color-fill")); - var none = new MenuItem("None"); + var none = new MenuItem(); + none.textProperty().bind(AppI18n.observable("none")); none.setOnAction(event -> { getWrapper().getEntry().setColor(null); event.consume(); }); color.getItems().add(none); Arrays.stream(DataColor.values()).forEach(dataStoreColor -> { - MenuItem m = new MenuItem(DataStoreFormatter.capitalize(dataStoreColor.getId())); + MenuItem m = new MenuItem(); + m.textProperty().bind(AppI18n.observable(dataStoreColor.getId())); m.setOnAction(event -> { getWrapper().getEntry().setColor(dataStoreColor); event.consume(); @@ -463,6 +447,7 @@ public abstract class StoreEntryComp extends SimpleComp { if (branch != null) { var items = branch.getChildren(getWrapper().getEntry().ref()).stream() + .filter(actionProvider -> getWrapper().showActionProvider(actionProvider)) .map(c -> buildMenuItemForAction(c)) .toList(); menu.getItems().addAll(items); @@ -475,6 +460,7 @@ public abstract class StoreEntryComp extends SimpleComp { getWrapper() .runAction(leaf.createAction(getWrapper().getEntry().ref()), leaf.showBusy()); }); + event.consume(); }); menu.getItems().add(run); @@ -493,6 +479,7 @@ public abstract class StoreEntryComp extends SimpleComp { .getName(getWrapper().getEntry().ref()) .getValue() + ")"); }); + event.consume(); }); menu.getItems().add(sc); @@ -504,6 +491,7 @@ public abstract class StoreEntryComp extends SimpleComp { AppActionLinkDetector.setLastDetectedAction(url); ClipboardHelper.copyUrl(url); }); + event.consume(); }); menu.getItems().add(l); } @@ -518,10 +506,13 @@ public abstract class StoreEntryComp extends SimpleComp { return; } - event.consume(); ThreadHelper.runFailableAsync(() -> { getWrapper().runAction(leaf.createAction(getWrapper().getEntry().ref()), leaf.showBusy()); }); + event.consume(); + if (event.getTarget() instanceof Menu m) { + m.getParentPopup().hide(); + } }); return item; diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListComp.java index 53b775696..71474e3f7 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListComp.java @@ -2,6 +2,7 @@ package io.xpipe.app.comp.store; import io.xpipe.app.comp.base.ListBoxViewComp; import io.xpipe.app.comp.base.MultiContentComp; +import io.xpipe.app.core.AppLayoutModel; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.fxcomps.SimpleComp; @@ -34,6 +35,12 @@ public class StoreEntryListComp extends SimpleComp { struc.get().setVvalue(0); }); }); + content.apply(struc -> { + // Reset scroll + AppLayoutModel.get().getSelected().addListener((observable, oldValue, newValue) -> { + struc.get().setVvalue(0); + }); + }); return content.styleClass("store-list-comp"); } @@ -44,7 +51,8 @@ public class StoreEntryListComp extends SimpleComp { () -> { var allCat = StoreViewState.get().getAllConnectionsCategory(); var connections = StoreViewState.get().getAllEntries().getList().stream() - .filter(wrapper -> allCat.equals(wrapper.getCategory().getValue().getRoot())) + .filter(wrapper -> allCat.equals( + wrapper.getCategory().getValue().getRoot())) .toList(); return initialCount == connections.size() && StoreViewState.get() diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListOverviewComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListOverviewComp.java index 62440566c..92a3640b5 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListOverviewComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryListOverviewComp.java @@ -8,6 +8,7 @@ import io.xpipe.app.fxcomps.SimpleComp; import io.xpipe.app.fxcomps.impl.FilterComp; import io.xpipe.app.fxcomps.impl.IconButtonComp; import io.xpipe.app.fxcomps.util.BindingsHelper; +import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.process.OsType; @@ -72,8 +73,13 @@ public class StoreEntryListOverviewComp extends SimpleComp { // But it is good enough. var showProvider = true; try { - showProvider = storeEntryWrapper.getEntry().getProvider().shouldShow(storeEntryWrapper); - } catch (Exception ignored) {} + showProvider = storeEntryWrapper.getEntry().getProvider() == null + || storeEntryWrapper + .getEntry() + .getProvider() + .shouldShow(storeEntryWrapper); + } catch (Exception ignored) { + } return inRootCategory && showProvider; }, StoreViewState.get().getActiveCategory()); @@ -143,15 +149,15 @@ public class StoreEntryListOverviewComp extends SimpleComp { } private Comp createAlphabeticalSortButton() { - var icon = Bindings.createStringBinding( + var icon = Bindings.createObjectBinding( () -> { if (sortMode.getValue() == StoreSortMode.ALPHABETICAL_ASC) { - return "mdi2s-sort-alphabetical-descending"; + return new LabelGraphic.IconGraphic("mdi2s-sort-alphabetical-descending"); } if (sortMode.getValue() == StoreSortMode.ALPHABETICAL_DESC) { - return "mdi2s-sort-alphabetical-ascending"; + return new LabelGraphic.IconGraphic("mdi2s-sort-alphabetical-ascending"); } - return "mdi2s-sort-alphabetical-descending"; + return new LabelGraphic.IconGraphic("mdi2s-sort-alphabetical-descending"); }, sortMode); var alphabetical = new IconButtonComp(icon, () -> { @@ -184,15 +190,15 @@ public class StoreEntryListOverviewComp extends SimpleComp { } private Comp createDateSortButton() { - var icon = Bindings.createStringBinding( + var icon = Bindings.createObjectBinding( () -> { if (sortMode.getValue() == StoreSortMode.DATE_ASC) { - return "mdi2s-sort-clock-ascending-outline"; + return new LabelGraphic.IconGraphic("mdi2s-sort-clock-ascending-outline"); } if (sortMode.getValue() == StoreSortMode.DATE_DESC) { - return "mdi2s-sort-clock-descending-outline"; + return new LabelGraphic.IconGraphic("mdi2s-sort-clock-descending-outline"); } - return "mdi2s-sort-clock-ascending-outline"; + return new LabelGraphic.IconGraphic("mdi2s-sort-clock-ascending-outline"); }, sortMode); var date = new IconButtonComp(icon, () -> { diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java index adb9cce0e..4e43f2087 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreEntryWrapper.java @@ -17,7 +17,9 @@ import lombok.Getter; import java.time.Duration; import java.time.Instant; -import java.util.*; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; @Getter public class StoreEntryWrapper { @@ -40,6 +42,8 @@ public class StoreEntryWrapper { private final Property category = new SimpleObjectProperty<>(); private final Property summary = new SimpleObjectProperty<>(); private final Property notes; + private final Property customIcon = new SimpleObjectProperty<>(); + private final Property iconFile = new SimpleObjectProperty<>(); public StoreEntryWrapper(DataStoreEntry entry) { this.entry = entry; @@ -137,6 +141,8 @@ public class StoreEntryWrapper { } color.setValue(entry.getColor()); notes.setValue(new StoreNotes(entry.getNotes(), entry.getNotes())); + customIcon.setValue(entry.getIcon()); + iconFile.setValue(entry.getEffectiveIconFile()); busy.setValue(entry.getBusyCounter().get() != 0); deletable.setValue(entry.getConfiguration().isDeletable() @@ -191,7 +197,7 @@ public class StoreEntryWrapper { } } - private boolean showActionProvider(ActionProvider p) { + public boolean showActionProvider(ActionProvider p) { var leaf = p.getLeafDataStoreCallSite(); if (leaf != null) { return (entry.getValidity().isUsable() || (!leaf.requiresValidStore() && entry.getProvider() != null)) @@ -214,7 +220,7 @@ public class StoreEntryWrapper { } public void refreshChildren() { - var hasChildren = DataStorage.get().refreshChildren(entry); + var hasChildren = DataStorage.get().refreshChildren(entry, null); PlatformThread.runLaterIfNeeded(() -> { expanded.set(hasChildren); }); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceComp.java new file mode 100644 index 000000000..d853331b2 --- /dev/null +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceComp.java @@ -0,0 +1,145 @@ +package io.xpipe.app.comp.store; + +import io.xpipe.app.fxcomps.SimpleComp; +import io.xpipe.app.fxcomps.impl.PrettyImageHelper; +import io.xpipe.app.resources.SystemIcon; + +import javafx.beans.property.Property; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; +import javafx.scene.control.*; +import javafx.scene.input.MouseButton; +import javafx.scene.layout.Region; + +import atlantafx.base.theme.Tweaks; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Locale; + +import static atlantafx.base.theme.Styles.TEXT_SMALL; + +public class StoreIconChoiceComp extends SimpleComp { + + private final Property selected; + private final List icons; + private final int columns; + private final SimpleStringProperty filter; + private final Runnable doubleClick; + + public StoreIconChoiceComp( + Property selected, + List icons, + int columns, + SimpleStringProperty filter, + Runnable doubleClick) { + this.selected = selected; + this.icons = icons; + this.columns = columns; + this.filter = filter; + this.doubleClick = doubleClick; + } + + @Override + protected Region createSimple() { + var table = new TableView>(); + initTable(table); + updateData(table, null); + filter.addListener((observable, oldValue, newValue) -> updateData(table, newValue)); + return table; + } + + private void initTable(TableView> table) { + for (int i = 0; i < columns; i++) { + var col = new TableColumn, SystemIcon>("col" + i); + final int colIndex = i; + col.setCellValueFactory(cb -> { + var row = cb.getValue(); + var item = row.size() > colIndex ? row.get(colIndex) : null; + return new SimpleObjectProperty<>(item); + }); + col.setCellFactory(cb -> new IconCell()); + col.getStyleClass().add(Tweaks.ALIGN_CENTER); + table.getColumns().add(col); + } + + table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS); + table.getSelectionModel().setCellSelectionEnabled(true); + table.getStyleClass().add("icon-browser"); + table.setPlaceholder(new Region()); + } + + private void updateData(TableView> table, String filterString) { + var displayedIcons = filterString == null || filterString.isBlank() || filterString.length() < 2 + ? icons + : icons.stream() + .filter(icon -> containsString(icon.getDisplayName(), filterString)) + .toList(); + + var data = partitionList(displayedIcons, columns); + table.getItems().setAll(data); + } + + private Collection> partitionList(List list, int size) { + List> partitions = new ArrayList<>(); + if (list.size() == 0) { + return partitions; + } + + int length = list.size(); + int numOfPartitions = length / size + ((length % size == 0) ? 0 : 1); + + for (int i = 0; i < numOfPartitions; i++) { + int from = i * size; + int to = Math.min((i * size + size), length); + partitions.add(list.subList(from, to)); + } + return partitions; + } + + private boolean containsString(String s1, String s2) { + return s1.toLowerCase(Locale.ROOT).contains(s2.toLowerCase(Locale.ROOT)); + } + + public class IconCell extends TableCell, SystemIcon> { + + private final Label root = new Label(); + private final StringProperty image = new SimpleStringProperty(); + + public IconCell() { + super(); + + root.setContentDisplay(ContentDisplay.TOP); + Region imageView = PrettyImageHelper.ofFixedSize(image, 40, 40).createRegion(); + root.setGraphic(imageView); + root.setGraphicTextGap(10); + root.getStyleClass().addAll("icon-label", TEXT_SMALL); + + setOnMouseClicked(event -> { + if (event.getButton() == MouseButton.PRIMARY) { + selected.setValue(getItem()); + } + + if (event.getClickCount() > 1) { + doubleClick.run(); + } + }); + } + + @Override + protected void updateItem(SystemIcon icon, boolean empty) { + super.updateItem(icon, empty); + + if (icon == null) { + setGraphic(null); + return; + } + + root.setText(icon.getDisplayName()); + image.set("app:system/" + icon.getIconName() + ".svg"); + setGraphic(root); + } + } +} diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceDialogComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceDialogComp.java new file mode 100644 index 000000000..d66f1bb25 --- /dev/null +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIconChoiceDialogComp.java @@ -0,0 +1,99 @@ +package io.xpipe.app.comp.store; + +import io.xpipe.app.comp.base.ButtonComp; +import io.xpipe.app.comp.base.DialogComp; +import io.xpipe.app.core.AppI18n; +import io.xpipe.app.core.window.AppWindowHelper; +import io.xpipe.app.fxcomps.Comp; +import io.xpipe.app.fxcomps.SimpleComp; +import io.xpipe.app.fxcomps.impl.FilterComp; +import io.xpipe.app.fxcomps.impl.HorizontalComp; +import io.xpipe.app.resources.SystemIcon; +import io.xpipe.app.resources.SystemIcons; +import io.xpipe.app.storage.DataStoreEntry; +import io.xpipe.app.util.Hyperlinks; + +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.scene.layout.Region; +import javafx.stage.Modality; +import javafx.stage.Stage; + +import org.kordamp.ikonli.javafx.FontIcon; + +import java.util.List; + +public class StoreIconChoiceDialogComp extends SimpleComp { + + public static void show(DataStoreEntry entry) { + var window = AppWindowHelper.sideWindow( + AppI18n.get("chooseCustomIcon"), stage -> new StoreIconChoiceDialogComp(entry, stage), false, null); + window.initModality(Modality.APPLICATION_MODAL); + window.show(); + } + + private final ObjectProperty selected = new SimpleObjectProperty<>(); + private final DataStoreEntry entry; + private final Stage dialogStage; + + public StoreIconChoiceDialogComp(DataStoreEntry entry, Stage dialogStage) { + this.entry = entry; + this.dialogStage = dialogStage; + } + + @Override + protected Region createSimple() { + var filterText = new SimpleStringProperty(); + var filter = new FilterComp(filterText).apply(struc -> { + dialogStage.setOnShowing(event -> { + struc.get().requestFocus(); + event.consume(); + }); + }); + var github = new ButtonComp(null, new FontIcon("mdi2g-github"), () -> { + Hyperlinks.open(Hyperlinks.SELFHST_ICONS); + }) + .grow(false, true); + var dialog = new DialogComp() { + @Override + protected void finish() { + entry.setIcon(selected.get() != null ? selected.getValue().getIconName() : null, true); + dialogStage.close(); + } + + @Override + protected void discard() {} + + @Override + public Comp content() { + return new StoreIconChoiceComp(selected, SystemIcons.getSystemIcons(), 5, filterText, () -> { + finish(); + }); + } + + @Override + protected Comp pane(Comp content) { + return content; + } + + @Override + public Comp bottom() { + var clear = new ButtonComp(AppI18n.observable("clear"), () -> { + selected.setValue(null); + finish(); + }) + .grow(false, true); + return new HorizontalComp(List.of(github, filter.hgrow(), clear)).spacing(10); + } + + @Override + protected Comp finishButton() { + return super.finishButton().disable(selected.isNull()); + } + }; + dialog.prefWidth(600); + dialog.prefHeight(600); + return dialog.createRegion(); + } +} diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIconComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIconComp.java new file mode 100644 index 000000000..4d7c26095 --- /dev/null +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIconComp.java @@ -0,0 +1,64 @@ +package io.xpipe.app.comp.store; + +import io.xpipe.app.fxcomps.SimpleComp; +import io.xpipe.app.fxcomps.impl.PrettyImageHelper; +import io.xpipe.app.fxcomps.impl.TooltipAugment; + +import javafx.beans.binding.Bindings; +import javafx.geometry.Pos; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.Region; +import javafx.scene.layout.StackPane; + +import lombok.AllArgsConstructor; +import org.kordamp.ikonli.javafx.FontIcon; + +@AllArgsConstructor +public class StoreIconComp extends SimpleComp { + + private final StoreEntryWrapper wrapper; + private final int w; + private final int h; + + @Override + protected Region createSimple() { + var imageComp = PrettyImageHelper.ofFixedSize(wrapper.getIconFile(), w, h); + var storeIcon = imageComp.createRegion(); + if (wrapper.getValidity().getValue().isUsable()) { + new TooltipAugment<>(wrapper.getEntry().getProvider().displayName(), null).augment(storeIcon); + } + + var background = new Region(); + background.getStyleClass().add("background"); + + var dots = new FontIcon("mdi2d-dots-horizontal"); + dots.setIconSize((int) (h * 1.3)); + + var stack = new StackPane(background, storeIcon, dots); + stack.setMinHeight(w + 7); + stack.setMinWidth(w + 7); + stack.setMaxHeight(w + 7); + stack.setMaxWidth(w + 7); + stack.getStyleClass().add("icon"); + stack.setAlignment(Pos.CENTER); + + dots.visibleProperty().bind(stack.hoverProperty()); + storeIcon + .opacityProperty() + .bind(Bindings.createDoubleBinding( + () -> { + return stack.isHover() ? 0.5 : 1.0; + }, + stack.hoverProperty())); + + stack.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> { + if (event.getButton() == MouseButton.PRIMARY) { + StoreIconChoiceDialogComp.show(wrapper.getEntry()); + event.consume(); + } + }); + + return stack; + } +} diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java index 60719766a..c427fca82 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java @@ -39,12 +39,12 @@ public class StoreIntroComp extends SimpleComp { var scanButton = new Button(null, new FontIcon("mdi2m-magnify")); scanButton.textProperty().bind(AppI18n.observable("detectConnections")); - scanButton.setOnAction(event -> ScanAlert.showAsync(DataStorage.get().local())); + scanButton.setOnAction(event -> ScanAlert.showAsync(DataStorage.get().local(), null)); scanButton.setDefaultButton(true); var scanPane = new StackPane(scanButton); scanPane.setAlignment(Pos.CENTER); - var img = new PrettySvgComp(new SimpleStringProperty("Wave.svg"), 80, 150).createRegion(); + var img = new PrettySvgComp(new SimpleStringProperty("graphics/Wave.svg"), 80, 150).createRegion(); var text = new VBox(title, introDesc); text.setSpacing(5); text.setAlignment(Pos.CENTER_LEFT); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreNotesComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreNotesComp.java index 35431fb16..654ede6df 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreNotesComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreNotesComp.java @@ -96,6 +96,9 @@ public class StoreNotesComp extends Comp { ref.get().hide(); } + @Override + protected void discard() {} + @Override protected String finishKey() { return "apply"; diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java index 47a513865..d53029e53 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreQuickAccessButtonComp.java @@ -41,8 +41,7 @@ public class StoreQuickAccessButtonComp extends Comp> { private MenuItem recurse(ContextMenu contextMenu, StoreSection section) { var c = section.getShownChildren(); var w = section.getWrapper(); - var graphic = - w.getEntry().getProvider().getDisplayIconFileName(w.getEntry().getStore()); + var graphic = w.getEntry().getEffectiveIconFile(); if (c.getList().isEmpty()) { var item = ContextMenuHelper.item( new LabelGraphic.ImageGraphic(graphic, 16), w.getName().getValue()); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreSection.java b/app/src/main/java/io/xpipe/app/comp/store/StoreSection.java index 8c244d783..1961c8da4 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreSection.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreSection.java @@ -176,7 +176,8 @@ public class StoreSection { var showProvider = true; try { showProvider = other.getEntry().getProvider().shouldShow(other); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return showProvider; }, e.getPersistentState(), diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreSectionComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreSectionComp.java index 154e72013..7303c7127 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreSectionComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreSectionComp.java @@ -7,6 +7,7 @@ import io.xpipe.app.fxcomps.augment.GrowAugment; import io.xpipe.app.fxcomps.impl.HorizontalComp; import io.xpipe.app.fxcomps.impl.IconButtonComp; import io.xpipe.app.fxcomps.impl.VerticalComp; +import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.storage.DataColor; import io.xpipe.app.util.ThreadHelper; @@ -68,11 +69,15 @@ public class StoreSectionComp extends Comp> { private Comp> createExpandButton() { var expandButton = new IconButtonComp( - Bindings.createStringBinding( - () -> section.getWrapper().getExpanded().get() - && section.getShownChildren().getList().size() > 0 - ? "mdal-keyboard_arrow_down" - : "mdal-keyboard_arrow_right", + Bindings.createObjectBinding( + () -> new LabelGraphic.IconGraphic( + section.getWrapper().getExpanded().get() + && section.getShownChildren() + .getList() + .size() + > 0 + ? "mdal-keyboard_arrow_down" + : "mdal-keyboard_arrow_right"), section.getWrapper().getExpanded(), section.getShownChildren().getList()), () -> { diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreSectionMiniComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreSectionMiniComp.java index 9e35bf600..a02c91314 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreSectionMiniComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreSectionMiniComp.java @@ -8,6 +8,7 @@ import io.xpipe.app.fxcomps.impl.HorizontalComp; import io.xpipe.app.fxcomps.impl.IconButtonComp; import io.xpipe.app.fxcomps.impl.PrettyImageHelper; import io.xpipe.app.fxcomps.impl.VerticalComp; +import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.storage.DataColor; import javafx.beans.binding.Bindings; @@ -52,15 +53,9 @@ public class StoreSectionMiniComp extends Comp> { if (section.getWrapper() != null) { var root = new ButtonComp(section.getWrapper().nameProperty(), () -> {}) .apply(struc -> { - var provider = section.getWrapper().getEntry().getProvider(); struc.get() - .setGraphic(PrettyImageHelper.ofFixedSizeSquare( - provider != null - ? provider.getDisplayIconFileName(section.getWrapper() - .getEntry() - .getStore()) - : null, - 16) + .setGraphic(PrettyImageHelper.ofFixedSize( + section.getWrapper().getIconFile(), 16, 16) .createRegion()); }) .apply(struc -> { @@ -81,8 +76,9 @@ public class StoreSectionMiniComp extends Comp> { new SimpleBooleanProperty(section.getWrapper().getExpanded().get() && section.getShownChildren().getList().size() > 0); var button = new IconButtonComp( - Bindings.createStringBinding( - () -> expanded.get() ? "mdal-keyboard_arrow_down" : "mdal-keyboard_arrow_right", + Bindings.createObjectBinding( + () -> new LabelGraphic.IconGraphic( + expanded.get() ? "mdal-keyboard_arrow_down" : "mdal-keyboard_arrow_right"), expanded), () -> { expanded.set(!expanded.get()); diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java b/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java index c86b069dc..c2297d6d2 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java @@ -98,10 +98,11 @@ public class StoreViewState { private void initFilterJump() { var all = getAllConnectionsCategory(); filter.addListener((observable, oldValue, newValue) -> { - var matchingCats = categories.getList().stream().filter(storeCategoryWrapper -> storeCategoryWrapper.getRoot().equals(all)) - .filter(storeCategoryWrapper -> storeCategoryWrapper.getDirectContainedEntries() - .stream() - .anyMatch(wrapper -> wrapper.matchesFilter(newValue))) + var matchingCats = categories.getList().stream() + .filter(storeCategoryWrapper -> + storeCategoryWrapper.getRoot().equals(all)) + .filter(storeCategoryWrapper -> storeCategoryWrapper.getDirectContainedEntries().stream() + .anyMatch(wrapper -> wrapper.matchesFilter(newValue))) .toList(); if (matchingCats.size() == 1) { activeCategory.setValue(matchingCats.getFirst()); diff --git a/app/src/main/java/io/xpipe/app/core/App.java b/app/src/main/java/io/xpipe/app/core/App.java index c370764a2..8b1f3bcb7 100644 --- a/app/src/main/java/io/xpipe/app/core/App.java +++ b/app/src/main/java/io/xpipe/app/core/App.java @@ -10,6 +10,8 @@ import io.xpipe.app.util.LicenseProvider; import javafx.application.Application; import javafx.beans.binding.Bindings; +import javafx.beans.property.SimpleDoubleProperty; +import javafx.beans.value.ObservableDoubleValue; import javafx.stage.Stage; import lombok.Getter; @@ -63,4 +65,12 @@ public class App extends Application { stage.requestFocus(); }); } + + public ObservableDoubleValue displayScale() { + if (getStage() == null) { + return new SimpleDoubleProperty(1.0); + } + + return getStage().outputScaleXProperty(); + } } diff --git a/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java b/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java index 8f680a9ca..bdad8b00d 100644 --- a/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java +++ b/app/src/main/java/io/xpipe/app/core/AppDesktopIntegration.java @@ -9,10 +9,10 @@ import io.xpipe.app.util.PlatformState; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.process.OsType; -import javax.imageio.ImageIO; import java.awt.*; import java.awt.desktop.*; import java.util.List; +import javax.imageio.ImageIO; public class AppDesktopIntegration { @@ -36,7 +36,8 @@ public class AppDesktopIntegration { ThreadHelper.sleep(1000); OperationMode.close(); }); - }} + } + } }); } diff --git a/app/src/main/java/io/xpipe/app/core/AppExtensionManager.java b/app/src/main/java/io/xpipe/app/core/AppExtensionManager.java index 6a9f064a0..58e6776ca 100644 --- a/app/src/main/java/io/xpipe/app/core/AppExtensionManager.java +++ b/app/src/main/java/io/xpipe/app/core/AppExtensionManager.java @@ -1,10 +1,11 @@ package io.xpipe.app.core; import io.xpipe.app.ext.ExtensionException; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.process.OsType; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.core.util.ModuleHelper; import io.xpipe.core.util.ModuleLayerLoader; import io.xpipe.core.util.XPipeInstallation; @@ -55,8 +56,8 @@ public class AppExtensionManager { ErrorEvent.fromThrowable(t).handle(); }); } catch (Throwable t) { - throw new ExtensionException( - "Service provider initialization failed. Is the installation data corrupt?", t); + throw ExtensionException.corrupt( + "Service provider initialization failed", t); } } } @@ -72,7 +73,7 @@ public class AppExtensionManager { private void loadBaseExtension() { var baseModule = findAndParseExtension("base", ModuleLayer.boot()); if (baseModule.isEmpty()) { - throw new ExtensionException("Missing base module. Is the installation data corrupt?"); + throw ExtensionException.corrupt("Missing base module"); } baseLayer = baseModule.get().getModule().getLayer(); @@ -205,8 +206,8 @@ public class AppExtensionManager { var ext = getExtensionFromDir(layer, dir); if (ext.isEmpty()) { if (AppProperties.get().isFullVersion()) { - throw new ExtensionException( - "Unable to load extension from directory " + dir + ". Is the installation corrupted?"); + throw ExtensionException.corrupt( + "Unable to load extension from directory " + dir); } } else { if (loadedExtensions.stream() diff --git a/app/src/main/java/io/xpipe/app/core/AppFont.java b/app/src/main/java/io/xpipe/app/core/AppFont.java index 92af9378c..99ca4dfd2 100644 --- a/app/src/main/java/io/xpipe/app/core/AppFont.java +++ b/app/src/main/java/io/xpipe/app/core/AppFont.java @@ -1,6 +1,7 @@ package io.xpipe.app.core; import io.xpipe.app.issue.TrackEvent; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.process.OsType; import javafx.scene.Node; diff --git a/app/src/main/java/io/xpipe/app/core/AppGreetings.java b/app/src/main/java/io/xpipe/app/core/AppGreetings.java index b44ac8813..4d061087d 100644 --- a/app/src/main/java/io/xpipe/app/core/AppGreetings.java +++ b/app/src/main/java/io/xpipe/app/core/AppGreetings.java @@ -4,6 +4,7 @@ import io.xpipe.app.comp.base.MarkdownComp; import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.core.window.AppWindowHelper; import io.xpipe.app.fxcomps.Comp; +import io.xpipe.app.resources.AppResources; import javafx.beans.property.SimpleBooleanProperty; import javafx.geometry.Insets; diff --git a/app/src/main/java/io/xpipe/app/core/AppImages.java b/app/src/main/java/io/xpipe/app/core/AppImages.java deleted file mode 100644 index f0101fadc..000000000 --- a/app/src/main/java/io/xpipe/app/core/AppImages.java +++ /dev/null @@ -1,144 +0,0 @@ -package io.xpipe.app.core; - -import io.xpipe.app.issue.ErrorEvent; -import io.xpipe.app.issue.TrackEvent; - -import javafx.scene.image.Image; -import javafx.scene.image.WritableImage; - -import org.apache.commons.io.FilenameUtils; - -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.HashMap; -import java.util.Map; - -public class AppImages { - - public static final Image DEFAULT_IMAGE = new WritableImage(1, 1); - private static final Map images = new HashMap<>(); - private static final Map svgImages = new HashMap<>(); - - public static void init() { - if (images.size() > 0 || svgImages.size() > 0) { - return; - } - - TrackEvent.info("Loading images ..."); - for (var module : AppExtensionManager.getInstance().getContentModules()) { - loadDirectory(module.getName(), "img", true, true); - } - } - - public static void loadDirectory(String module, String dir, boolean loadImages, boolean loadSvgs) { - AppResources.with(module, dir, basePath -> { - if (!Files.exists(basePath)) { - return; - } - - var simpleName = FilenameUtils.getExtension(module); - String defaultPrefix = simpleName + ":"; - Files.walkFileTree(basePath, new SimpleFileVisitor<>() { - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - var relativeFileName = FilenameUtils.separatorsToUnix( - basePath.relativize(file).toString()); - try { - if (FilenameUtils.getExtension(file.toString()).equals("svg") && loadSvgs) { - var s = Files.readString(file); - svgImages.put(defaultPrefix + relativeFileName, s); - } else if (loadImages) { - images.put(defaultPrefix + relativeFileName, loadImage(file)); - } - } catch (IOException ex) { - ErrorEvent.fromThrowable(ex).omitted(true).build().handle(); - } - return FileVisitResult.CONTINUE; - } - }); - }); - } - - public static String svgImage(String file) { - if (file == null) { - return ""; - } - - var key = file.contains(":") ? file : "app:" + file; - - if (svgImages.containsKey(key)) { - return svgImages.get(key); - } - - TrackEvent.warn("Svg image " + key + " not found"); - return ""; - } - - public static boolean hasNormalImage(String file) { - if (file == null) { - return false; - } - - var key = file.contains(":") ? file : "app:" + file; - return images.containsKey(key); - } - - public static boolean hasSvgImage(String file) { - if (file == null) { - return false; - } - - var key = file.contains(":") ? file : "app:" + file; - return svgImages.containsKey(key); - } - - public static Image image(String file) { - if (file == null) { - return DEFAULT_IMAGE; - } - - var key = file.contains(":") ? file : "app:" + file; - - if (images.containsKey(key)) { - return images.get(key); - } - - TrackEvent.warn("Normal image " + key + " not found"); - return DEFAULT_IMAGE; - } - - public static BufferedImage toAwtImage(Image fxImage) { - BufferedImage img = - new BufferedImage((int) fxImage.getWidth(), (int) fxImage.getHeight(), BufferedImage.TYPE_INT_ARGB); - for (int x = 0; x < fxImage.getWidth(); x++) { - for (int y = 0; y < fxImage.getHeight(); y++) { - int rgb = fxImage.getPixelReader().getArgb(x, y); - img.setRGB(x, y, rgb); - } - } - return img; - } - - public static Image loadImage(Path p) { - if (p == null) { - return DEFAULT_IMAGE; - } - - if (!Files.isRegularFile(p)) { - TrackEvent.error("Image file " + p + " not found."); - return DEFAULT_IMAGE; - } - - try (var in = Files.newInputStream(p)) { - return new Image(in, -1, -1, true, true); - } catch (IOException e) { - ErrorEvent.fromThrowable(e).omitted(true).build().handle(); - return DEFAULT_IMAGE; - } - } -} diff --git a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java index b58fb9e2e..de0ffc4eb 100644 --- a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java +++ b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java @@ -5,12 +5,14 @@ import io.xpipe.app.browser.session.BrowserSessionComp; import io.xpipe.app.browser.session.BrowserSessionModel; import io.xpipe.app.comp.store.StoreLayoutComp; import io.xpipe.app.fxcomps.Comp; +import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.prefs.AppPrefsComp; import io.xpipe.app.util.Hyperlinks; import io.xpipe.app.util.LicenseProvider; import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ObservableValue; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCodeCombination; @@ -21,6 +23,7 @@ import lombok.Data; import lombok.Getter; import lombok.extern.jackson.Jacksonized; +import java.time.*; import java.util.ArrayList; import java.util.List; @@ -75,47 +78,71 @@ public class AppLayoutModel { var l = new ArrayList<>(List.of( new Entry( AppI18n.observable("browser"), - "mdi2f-file-cabinet", + new LabelGraphic.IconGraphic("mdi2f-file-cabinet"), new BrowserSessionComp(BrowserSessionModel.DEFAULT), null, new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.SHORTCUT_DOWN)), new Entry( AppI18n.observable("connections"), - "mdi2c-connection", + new LabelGraphic.IconGraphic("mdi2c-connection"), new StoreLayoutComp(), null, new KeyCodeCombination(KeyCode.DIGIT2, KeyCombination.SHORTCUT_DOWN)), new Entry( AppI18n.observable("settings"), - "mdsmz-miscellaneous_services", + new LabelGraphic.IconGraphic("mdsmz-miscellaneous_services"), new AppPrefsComp(), null, new KeyCodeCombination(KeyCode.DIGIT3, KeyCombination.SHORTCUT_DOWN)), new Entry( AppI18n.observable("explorePlans"), - "mdi2p-professional-hexagon", + new LabelGraphic.IconGraphic("mdi2p-professional-hexagon"), LicenseProvider.get().overviewPage(), null, null), new Entry( AppI18n.observable("visitGithubRepository"), - "mdi2g-github", + new LabelGraphic.IconGraphic("mdi2g-github"), null, () -> Hyperlinks.open(Hyperlinks.GITHUB), null), new Entry( AppI18n.observable("discord"), - "mdi2d-discord", + new LabelGraphic.IconGraphic("mdi2d-discord"), null, () -> Hyperlinks.open(Hyperlinks.DISCORD), null), new Entry( AppI18n.observable("api"), - "mdi2c-code-json", + new LabelGraphic.IconGraphic("mdi2c-code-json"), null, () -> Hyperlinks.open( "http://localhost:" + AppBeaconServer.get().getPort()), - null))); + null) + // new Entry( + // AppI18n.observable("webtop"), + // "mdi2d-desktop-mac", + // null, + // () -> Hyperlinks.open(Hyperlinks.GITHUB_WEBTOP), + // null) + )); + + var now = Instant.now(); + var zone = ZoneId.of(ZoneId.SHORT_IDS.get("PST")); + var phStart = ZonedDateTime.of(2024, 10, 22, 0, 1, 0, 0, zone).toInstant(); + var clicked = AppCache.get("phClicked",Boolean.class,() -> false); + var phShow = now.isAfter(phStart) && !clicked; + if (phShow) { + l.add(new Entry( + new SimpleStringProperty("Product Hunt"), + new LabelGraphic.ImageGraphic("app:producthunt-color.png", 24), + null, + () -> { + AppCache.update("phClicked", true); + Hyperlinks.open(Hyperlinks.PRODUCT_HUNT); + }, + null)); + } return l; } @@ -129,5 +156,9 @@ public class AppLayoutModel { } public record Entry( - ObservableValue name, String icon, Comp comp, Runnable action, KeyCombination combination) {} + ObservableValue name, + LabelGraphic icon, + Comp comp, + Runnable action, + KeyCombination combination) {} } diff --git a/app/src/main/java/io/xpipe/app/core/AppResources.java b/app/src/main/java/io/xpipe/app/core/AppResources.java deleted file mode 100644 index ec0bc9119..000000000 --- a/app/src/main/java/io/xpipe/app/core/AppResources.java +++ /dev/null @@ -1,132 +0,0 @@ -package io.xpipe.app.core; - -import io.xpipe.app.issue.ErrorEvent; -import io.xpipe.core.util.FailableConsumer; -import io.xpipe.modulefs.ModuleFileSystem; - -import java.io.IOException; -import java.net.JarURLConnection; -import java.net.URI; -import java.net.URL; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; - -public class AppResources { - - public static final String XPIPE_MODULE = "io.xpipe.app"; - - private static final Map fileSystems = new ConcurrentHashMap<>(); - - public static void reset() { - fileSystems.forEach((s, moduleFileSystem) -> { - try { - moduleFileSystem.close(); - } catch (IOException ignored) { - // Usually when updating, a SIGTERM is sent to this application. - // However, it takes a while to shut down but the installer is deleting files meanwhile. - // It can happen that the jar it does not exist anymore - } - }); - fileSystems.clear(); - } - - private static ModuleFileSystem openFileSystemIfNeeded(String module) throws IOException { - var layer = AppExtensionManager.getInstance() != null - ? AppExtensionManager.getInstance().getExtendedLayer() - : null; - - // Only cache file systems with extended layer - if (layer != null && fileSystems.containsKey(module)) { - return fileSystems.get(module); - } - - if (layer == null) { - layer = ModuleLayer.boot(); - } - - var fs = (ModuleFileSystem) FileSystems.newFileSystem(URI.create("module:/" + module), Map.of("layer", layer)); - if (AppExtensionManager.getInstance() != null) { - fileSystems.put(module, fs); - } - return fs; - } - - public static Optional getResourceURL(String module, String file) { - try { - var fs = openFileSystemIfNeeded(module); - var f = fs.getPath(module.replace('.', '/') + "/resources/" + file); - var url = f.getWrappedPath().toUri().toURL(); - return Optional.of(url); - } catch (IOException e) { - ErrorEvent.fromThrowable(e).omitted(true).build().handle(); - return Optional.empty(); - } - } - - public static void with(String module, String file, FailableConsumer con) { - if (AppProperties.get() != null - && !AppProperties.get().isImage() - && AppProperties.get().isDeveloperMode()) { - // Check if resource was found. If we use external processed resources, we can't use local dev resources - if (withLocalDevResource(module, file, con)) { - return; - } - } - - withResource(module, file, con); - } - - public static void withResourceInLayer( - String module, String file, ModuleLayer layer, FailableConsumer con) { - try (var fs = FileSystems.newFileSystem(URI.create("module:/" + module), Map.of("layer", layer))) { - var f = fs.getPath(module.replace('.', '/') + "/resources/" + file); - con.accept(f); - } catch (IOException e) { - ErrorEvent.fromThrowable(e).omitted(true).build().handle(); - } - } - - private static void withResource(String module, String file, FailableConsumer con) { - var path = module.startsWith("io.xpipe") ? module.replace('.', '/') + "/resources/" + file : file; - try { - var fs = openFileSystemIfNeeded(module); - var f = fs.getPath(path); - con.accept(f); - } catch (IOException e) { - ErrorEvent.fromThrowable(e).omitted(true).build().handle(); - } - } - - private static boolean withLocalDevResource(String module, String file, FailableConsumer con) { - try { - var fs = openFileSystemIfNeeded(module); - var url = fs.getPath("").getWrappedPath().toUri().toURL(); - if (!url.getProtocol().equals("jar")) { - return false; - } - - JarURLConnection connection = (JarURLConnection) url.openConnection(); - URL fileUrl = connection.getJarFileURL(); - var jarFile = Path.of(fileUrl.toURI()); - var resDir = jarFile.getParent() - .getParent() - .getParent() - .resolve("src") - .resolve("main") - .resolve("resources"); - var f = resDir.resolve(module.replace('.', '/') + "/resources/" + file); - if (!Files.exists(f)) { - return false; - } - - con.accept(f); - } catch (Exception e) { - ErrorEvent.fromThrowable(e).omitted(true).build().handle(); - } - return true; - } -} diff --git a/app/src/main/java/io/xpipe/app/core/AppStyle.java b/app/src/main/java/io/xpipe/app/core/AppStyle.java index e009c3f4b..44486a20e 100644 --- a/app/src/main/java/io/xpipe/app/core/AppStyle.java +++ b/app/src/main/java/io/xpipe/app/core/AppStyle.java @@ -3,6 +3,7 @@ package io.xpipe.app.core; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppResources; import javafx.scene.Scene; diff --git a/app/src/main/java/io/xpipe/app/core/AppTheme.java b/app/src/main/java/io/xpipe/app/core/AppTheme.java index 05cdb6cb8..b0ac3c689 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTheme.java +++ b/app/src/main/java/io/xpipe/app/core/AppTheme.java @@ -6,6 +6,7 @@ import io.xpipe.app.fxcomps.util.PlatformThread; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.process.OsType; import javafx.animation.Interpolator; diff --git a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java index 7a641ccd7..cfd8c881b 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java +++ b/app/src/main/java/io/xpipe/app/core/AppTrayIcon.java @@ -2,6 +2,8 @@ package io.xpipe.app.core; import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.issue.ErrorEvent; +import io.xpipe.app.resources.AppImages; +import io.xpipe.app.resources.AppResources; import io.xpipe.core.process.OsType; import java.awt.*; diff --git a/app/src/main/java/io/xpipe/app/core/check/AppAvCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppAvCheck.java index 4dff8398a..d75c301cb 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppAvCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppAvCheck.java @@ -1,9 +1,13 @@ package io.xpipe.app.core.check; import io.xpipe.app.comp.base.MarkdownComp; -import io.xpipe.app.core.*; +import io.xpipe.app.core.AppI18n; +import io.xpipe.app.core.AppProperties; +import io.xpipe.app.core.AppState; +import io.xpipe.app.core.AppStyle; import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.core.window.AppWindowHelper; +import io.xpipe.app.resources.AppResources; import io.xpipe.app.util.PlatformState; import io.xpipe.app.util.WindowsRegistry; import io.xpipe.core.process.OsType; @@ -42,7 +46,6 @@ public class AppAvCheck { PlatformState.initPlatformOrThrow(); AppStyle.init(); - AppImages.init(); var a = AppWindowHelper.showBlockingAlert(alert -> { alert.setTitle(AppI18n.get("antivirusNoticeTitle")); diff --git a/app/src/main/java/io/xpipe/app/core/check/AppBundledToolsCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppBundledToolsCheck.java index 57aefbcab..7c745b1a1 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppBundledToolsCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppBundledToolsCheck.java @@ -8,7 +8,9 @@ import java.util.concurrent.TimeUnit; public class AppBundledToolsCheck { private static boolean getResult() { - var fc = new ProcessBuilder("where", "ssh").redirectErrorStream(true).redirectOutput(ProcessBuilder.Redirect.DISCARD); + var fc = new ProcessBuilder("where", "ssh") + .redirectErrorStream(true) + .redirectOutput(ProcessBuilder.Redirect.DISCARD); try { var proc = fc.start(); proc.waitFor(2, TimeUnit.SECONDS); diff --git a/app/src/main/java/io/xpipe/app/core/check/AppGpuCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppGpuCheck.java new file mode 100644 index 000000000..1b669a94e --- /dev/null +++ b/app/src/main/java/io/xpipe/app/core/check/AppGpuCheck.java @@ -0,0 +1,22 @@ +package io.xpipe.app.core.check; + +import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.util.PlatformState; + +import javafx.application.ConditionalFeature; +import javafx.application.Platform; + +public class AppGpuCheck { + + public static void check() { + if (PlatformState.getCurrent() != PlatformState.RUNNING) { + return; + } + + if (Platform.isSupported(ConditionalFeature.SCENE3D)) { + return; + } + + AppPrefs.get().performanceMode.setValue(true); + } +} diff --git a/app/src/main/java/io/xpipe/app/core/check/AppJavaOptionsCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppJavaOptionsCheck.java new file mode 100644 index 000000000..e351e3c5c --- /dev/null +++ b/app/src/main/java/io/xpipe/app/core/check/AppJavaOptionsCheck.java @@ -0,0 +1,28 @@ +package io.xpipe.app.core.check; + +import io.xpipe.app.core.AppCache; +import io.xpipe.app.issue.ErrorEvent; + +public class AppJavaOptionsCheck { + + public static void check() { + if (AppCache.get("javaOptionsWarningShown", Boolean.class,() -> false)) { + return; + } + + var env = System.getenv("_JAVA_OPTIONS"); + if (env == null) { + return; + } + + ErrorEvent.fromMessage( + "You have configured the global environment variable _JAVA_OPTIONS=%s on your system." + .formatted(env) + + " This will forcefully apply all custom JVM options to XPipe and can cause a variety of different issues." + + " Please remove this global environment variable and use local configuration instead for your other JVM programs.") + .noDefaultActions() + .expected() + .handle(); + AppCache.update("javaOptionsWarningShown", true); + } +} diff --git a/app/src/main/java/io/xpipe/app/core/check/AppRosettaCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppRosettaCheck.java index e555e7c00..c97b14478 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppRosettaCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppRosettaCheck.java @@ -25,8 +25,11 @@ public class AppRosettaCheck { if (ret.get().equals("1")) { ErrorEvent.fromMessage("You are running the Intel version of XPipe on an Apple Silicon system." - + " There is a native build available that comes with much better performance." - + " Please install that one instead."); + + " There is a native build available that comes with much better performance." + + " Please install that one instead.") + .noDefaultActions() + .expected() + .handle(); } } } diff --git a/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java b/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java index 9d792cea7..15dc09272 100644 --- a/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java +++ b/app/src/main/java/io/xpipe/app/core/check/AppShellCheck.java @@ -1,9 +1,9 @@ package io.xpipe.app.core.check; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.util.LocalShell; import io.xpipe.core.process.OsType; -import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.core.process.ProcessOutputException; import lombok.Value; diff --git a/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java b/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java index 79be0a3a7..5e22ae223 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/BaseMode.java @@ -8,8 +8,11 @@ import io.xpipe.app.core.*; import io.xpipe.app.core.check.*; import io.xpipe.app.ext.ActionProvider; import io.xpipe.app.ext.DataStoreProviders; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppResources; +import io.xpipe.app.resources.SystemIcons; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStorageSyncHandler; import io.xpipe.app.update.XPipeDistributionType; @@ -44,6 +47,7 @@ public class BaseMode extends OperationMode { AppCertutilCheck.check(); AppBundledToolsCheck.check(); AppAvCheck.check(); + AppJavaOptionsCheck.check(); AppSid.init(); LocalShell.init(); AppShellCheck.check(); @@ -56,6 +60,7 @@ public class BaseMode extends OperationMode { DataStorageSyncHandler.getInstance().retrieveSyncedData(); AppPrefs.initSharedRemote(); UnlockAlert.showIfNeeded(); + SystemIcons.init(); DataStorage.init(); DataStoreProviders.init(); AppFileWatcher.init(); @@ -70,7 +75,7 @@ public class BaseMode extends OperationMode { public void onSwitchFrom() {} @Override - public void finalTeardown() { + public void finalTeardown() throws Exception { TrackEvent.info("Background mode shutdown started"); BrowserSessionModel.DEFAULT.reset(); SshLocalBridge.reset(); @@ -78,12 +83,14 @@ public class BaseMode extends OperationMode { DataStoreProviders.reset(); DataStorage.reset(); AppPrefs.reset(); + DataStorageSyncHandler.getInstance().reset(); + LocalShell.reset(); + ProcessControlProvider.get().reset(); AppResources.reset(); AppExtensionManager.reset(); AppDataLock.unlock(); BlobManager.reset(); FileBridge.reset(); - // Shut down server last to keep a non-daemon thread running AppBeaconServer.reset(); TrackEvent.info("Background mode shutdown finished"); } diff --git a/app/src/main/java/io/xpipe/app/core/mode/GuiMode.java b/app/src/main/java/io/xpipe/app/core/mode/GuiMode.java index ad26c5d96..80c2280c4 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/GuiMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/GuiMode.java @@ -4,6 +4,7 @@ import io.xpipe.app.browser.file.LocalFileSystem; import io.xpipe.app.browser.icon.FileIconManager; import io.xpipe.app.core.App; import io.xpipe.app.core.AppGreetings; +import io.xpipe.app.core.AppLayoutModel; import io.xpipe.app.core.check.AppPtbCheck; import io.xpipe.app.core.window.AppMainWindow; import io.xpipe.app.fxcomps.util.PlatformThread; @@ -39,6 +40,7 @@ public class GuiMode extends PlatformMode { AppGreetings.showIfNeeded(); AppPtbCheck.check(); NativeBridge.init(); + AppLayoutModel.init(); TrackEvent.info("Waiting for window setup completion ..."); PlatformThread.runLaterIfNeededBlocking(() -> { @@ -63,4 +65,10 @@ public class GuiMode extends PlatformMode { UpdateChangelogAlert.showIfNeeded(); } + + @Override + public void finalTeardown() throws Throwable { + LocalFileSystem.reset(); + super.finalTeardown(); + } } diff --git a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java index fd5b6c206..cabdad67e 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/OperationMode.java @@ -225,6 +225,8 @@ public abstract class OperationMode { CURRENT.finalTeardown(); } CURRENT = null; + // Restart local shell + LocalShell.init(); r.run(); } catch (Throwable ex) { ErrorEvent.fromThrowable(ex).handle(); @@ -293,17 +295,27 @@ public abstract class OperationMode { inShutdown = true; OperationMode.inShutdownHook = inShutdownHook; - try { - if (CURRENT != null) { - CURRENT.finalTeardown(); + // Keep a non-daemon thread running + var thread = ThreadHelper.createPlatformThread("shutdown", false, () -> { + try { + if (CURRENT != null) { + CURRENT.finalTeardown(); + } + CURRENT = null; + } catch (Throwable t) { + ErrorEvent.fromThrowable(t).term().handle(); + OperationMode.halt(1); } - CURRENT = null; - } catch (Throwable t) { - ErrorEvent.fromThrowable(t).term().handle(); + + OperationMode.halt(hasError ? 1 : 0); + }); + thread.start(); + + try { + thread.join(); + } catch (InterruptedException ignored) { OperationMode.halt(1); } - - OperationMode.halt(hasError ? 1 : 0); } // public static synchronized void reload() { diff --git a/app/src/main/java/io/xpipe/app/core/mode/PlatformMode.java b/app/src/main/java/io/xpipe/app/core/mode/PlatformMode.java index b5cb69efe..3499dd5e6 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/PlatformMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/PlatformMode.java @@ -3,8 +3,10 @@ package io.xpipe.app.core.mode; import io.xpipe.app.comp.store.StoreViewState; import io.xpipe.app.core.*; import io.xpipe.app.core.check.AppFontLoadingCheck; +import io.xpipe.app.core.check.AppGpuCheck; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppImages; import io.xpipe.app.update.UpdateAvailableAlert; import io.xpipe.app.util.PlatformState; import io.xpipe.app.util.ThreadHelper; @@ -29,11 +31,14 @@ public abstract class PlatformMode extends OperationMode { PlatformState.initPlatformOrThrow(); // Check if we can load system fonts or fail AppFontLoadingCheck.check(); + // Can be loaded async + var imageThread = ThreadHelper.runFailableAsync(() -> { + AppImages.init(); + }); + AppGpuCheck.check(); AppFont.init(); AppTheme.init(); AppStyle.init(); - AppImages.init(); - AppLayoutModel.init(); TrackEvent.info("Finished essential component initialization before platform"); TrackEvent.info("Launching application ..."); @@ -56,6 +61,7 @@ public abstract class PlatformMode extends OperationMode { } StoreViewState.init(); + imageThread.join(); } @Override diff --git a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java index 025100903..c7eab9f37 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java @@ -1,7 +1,6 @@ package io.xpipe.app.core.window; import io.xpipe.app.core.AppCache; -import io.xpipe.app.core.AppImages; import io.xpipe.app.core.AppProperties; import io.xpipe.app.core.AppTheme; import io.xpipe.app.core.mode.OperationMode; @@ -10,8 +9,10 @@ import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.CloseBehaviourAlert; +import io.xpipe.app.resources.AppImages; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.process.OsType; + import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.geometry.Rectangle2D; @@ -24,17 +25,18 @@ import javafx.scene.layout.Region; import javafx.scene.paint.Color; import javafx.stage.Screen; import javafx.stage.Stage; + import lombok.Builder; import lombok.Getter; import lombok.Value; import lombok.extern.jackson.Jacksonized; -import javax.imageio.ImageIO; import java.io.IOException; import java.nio.file.Path; import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; +import javax.imageio.ImageIO; public class AppMainWindow { diff --git a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java index ae4d0b5e2..79070c556 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java @@ -5,6 +5,8 @@ import io.xpipe.app.core.*; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; +import io.xpipe.app.resources.AppImages; +import io.xpipe.app.resources.AppResources; import io.xpipe.app.util.InputHelper; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.process.OsType; diff --git a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java index c15d14a10..315a22680 100644 --- a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java +++ b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java @@ -1,11 +1,13 @@ package io.xpipe.app.core.window; -import com.sun.jna.NativeLong; import io.xpipe.app.core.AppProperties; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.util.NativeBridge; import io.xpipe.core.util.ModuleHelper; + import javafx.stage.Window; + +import com.sun.jna.NativeLong; import lombok.Getter; import lombok.SneakyThrows; diff --git a/app/src/main/java/io/xpipe/app/ext/ContainerImageStore.java b/app/src/main/java/io/xpipe/app/ext/ContainerImageStore.java new file mode 100644 index 000000000..fa5139226 --- /dev/null +++ b/app/src/main/java/io/xpipe/app/ext/ContainerImageStore.java @@ -0,0 +1,6 @@ +package io.xpipe.app.ext; + +public interface ContainerImageStore { + + String getImageName(); +} diff --git a/app/src/main/java/io/xpipe/app/ext/DataStoreProvider.java b/app/src/main/java/io/xpipe/app/ext/DataStoreProvider.java index cb1e01cd1..27ab1af3d 100644 --- a/app/src/main/java/io/xpipe/app/ext/DataStoreProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/DataStoreProvider.java @@ -7,9 +7,9 @@ import io.xpipe.app.comp.store.StoreEntryWrapper; import io.xpipe.app.comp.store.StoreSection; import io.xpipe.app.comp.store.StoreSectionComp; import io.xpipe.app.core.AppI18n; -import io.xpipe.app.core.AppImages; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.issue.ErrorEvent; +import io.xpipe.app.resources.AppImages; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.core.store.DataStore; import io.xpipe.core.util.JacksonizedValue; @@ -57,12 +57,12 @@ public interface DataStoreProvider { default void validate() { for (Class storeClass : getStoreClasses()) { if (!JacksonizedValue.class.isAssignableFrom(storeClass)) { - throw new ExtensionException( + throw ExtensionException.corrupt( String.format("Store class %s is not a Jacksonized value", storeClass.getSimpleName())); } if (getUsageCategory() == null) { - throw new ExtensionException("Provider %s does not have the usage category".formatted(getId())); + throw ExtensionException.corrupt("Provider %s does not have the usage category".formatted(getId())); } } } diff --git a/app/src/main/java/io/xpipe/app/ext/ExtensionException.java b/app/src/main/java/io/xpipe/app/ext/ExtensionException.java index e26db7670..d89baeb8c 100644 --- a/app/src/main/java/io/xpipe/app/ext/ExtensionException.java +++ b/app/src/main/java/io/xpipe/app/ext/ExtensionException.java @@ -1,14 +1,16 @@ package io.xpipe.app.ext; +import io.xpipe.core.util.XPipeInstallation; + public class ExtensionException extends RuntimeException { public ExtensionException() {} - public ExtensionException(String message) { + private ExtensionException(String message) { super(message); } - public ExtensionException(String message, Throwable cause) { + private ExtensionException(String message, Throwable cause) { super(message, cause); } @@ -20,7 +22,18 @@ public class ExtensionException extends RuntimeException { super(message, cause, enableSuppression, writableStackTrace); } + public static ExtensionException corrupt(String message, Throwable cause) { + try { + var loc = XPipeInstallation.getCurrentInstallationBasePath(); + var full = message + ".\n\n" + "Please check whether the XPipe installation data at " + loc + " is corrupted."; + return new ExtensionException(full, cause); + } catch (Throwable t) { + var full = message + ".\n\n" + "Please check whether the XPipe installation data is corrupted."; + return new ExtensionException(full, cause); + } + } + public static ExtensionException corrupt(String message) { - return new ExtensionException(message + ". Is the installation data corrupt?"); + return corrupt(message, null); } } diff --git a/app/src/main/java/io/xpipe/app/ext/LocalStore.java b/app/src/main/java/io/xpipe/app/ext/LocalStore.java index fe2c79287..ab23d77a1 100644 --- a/app/src/main/java/io/xpipe/app/ext/LocalStore.java +++ b/app/src/main/java/io/xpipe/app/ext/LocalStore.java @@ -20,7 +20,7 @@ public class LocalStore extends JacksonizedValue } @Override - public ShellControl control() { + public ShellControl parentControl() { var pc = ProcessControlProvider.get().createLocalProcessControl(true); pc.withSourceStore(this); pc.withShellStateInit(this); @@ -28,6 +28,11 @@ public class LocalStore extends JacksonizedValue return pc; } + @Override + public ShellControl control(ShellControl parent) { + return parent; + } + @Override public DataStore getNetworkParent() { return null; diff --git a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java index 3196ac000..99c6468d6 100644 --- a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java @@ -3,6 +3,7 @@ package io.xpipe.app.ext; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.core.process.*; import io.xpipe.core.store.DataStore; + import lombok.NonNull; import java.util.ServiceLoader; @@ -22,6 +23,8 @@ public abstract class ProcessControlProvider { return INSTANCE; } + public abstract void reset(); + public abstract ShellControl withDefaultScripts(ShellControl pc); public abstract ShellControl sub( diff --git a/app/src/main/java/io/xpipe/app/ext/ScanProvider.java b/app/src/main/java/io/xpipe/app/ext/ScanProvider.java index 8bc28c6c9..e7bae26a9 100644 --- a/app/src/main/java/io/xpipe/app/ext/ScanProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/ScanProvider.java @@ -31,11 +31,11 @@ public abstract class ScanProvider { String nameKey; boolean disabled; boolean defaultSelected; - FailableRunnable scanner; + FailableRunnable scanner; String licenseFeatureId; public ScanOperation( - String nameKey, boolean disabled, boolean defaultSelected, FailableRunnable scanner) { + String nameKey, boolean disabled, boolean defaultSelected, FailableRunnable scanner) { this.nameKey = nameKey; this.disabled = disabled; this.defaultSelected = defaultSelected; diff --git a/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreChoiceComp.java b/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreChoiceComp.java index 24e8ecc9c..320d0a529 100644 --- a/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreChoiceComp.java @@ -4,6 +4,7 @@ import io.xpipe.app.comp.base.ButtonComp; import io.xpipe.app.comp.store.*; import io.xpipe.app.core.AppFont; import io.xpipe.app.core.AppI18n; +import io.xpipe.app.ext.LocalStore; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.fxcomps.SimpleComp; import io.xpipe.app.storage.DataStorage; @@ -11,7 +12,6 @@ import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.util.DataStoreCategoryChoiceComp; import io.xpipe.core.store.DataStore; -import io.xpipe.app.ext.LocalStore; import io.xpipe.core.store.ShellStore; import javafx.beans.binding.Bindings; @@ -200,18 +200,10 @@ public class DataStoreChoiceComp extends SimpleComp { button.apply(struc -> { struc.get().setMaxWidth(2000); struc.get().setAlignment(Pos.CENTER_LEFT); - Comp graphic = new PrettySvgComp( + Comp graphic = PrettyImageHelper.ofFixedSize( Bindings.createStringBinding( () -> { - if (selected.getValue() == null) { - return null; - } - - return selected.getValue() - .get() - .getProvider() - .getDisplayIconFileName( - selected.getValue().getStore()); + return selected.getValue().get().getEffectiveIconFile(); }, selected), 16, diff --git a/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreListChoiceComp.java b/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreListChoiceComp.java index 2e901e5e8..12341a04f 100644 --- a/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreListChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/fxcomps/impl/DataStoreListChoiceComp.java @@ -46,7 +46,7 @@ public class DataStoreListChoiceComp extends SimpleComp { var label = new LabelComp(t.get().getName()).apply(struc -> struc.get() .setGraphic(PrettyImageHelper.ofFixedSizeSquare( - t.get().getProvider().getDisplayIconFileName(t.getStore()), 16) + t.get().getEffectiveIconFile(), 16) .createRegion())); var delete = new IconButtonComp("mdal-delete_outline", () -> { selectedList.remove(t); diff --git a/app/src/main/java/io/xpipe/app/fxcomps/impl/IconButtonComp.java b/app/src/main/java/io/xpipe/app/fxcomps/impl/IconButtonComp.java index 438247b0e..eeba80d85 100644 --- a/app/src/main/java/io/xpipe/app/fxcomps/impl/IconButtonComp.java +++ b/app/src/main/java/io/xpipe/app/fxcomps/impl/IconButtonComp.java @@ -3,6 +3,7 @@ package io.xpipe.app.fxcomps.impl; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.fxcomps.CompStructure; import io.xpipe.app.fxcomps.SimpleCompStructure; +import io.xpipe.app.fxcomps.util.LabelGraphic; import io.xpipe.app.fxcomps.util.PlatformThread; import javafx.beans.property.SimpleObjectProperty; @@ -16,23 +17,31 @@ import org.kordamp.ikonli.javafx.FontIcon; public class IconButtonComp extends Comp> { - private final ObservableValue icon; + private final ObservableValue icon; private final Runnable listener; public IconButtonComp(String defaultVal) { + this(new SimpleObjectProperty<>(new LabelGraphic.IconGraphic(defaultVal)), null); + } + + public IconButtonComp(String defaultVal, Runnable listener) { + this(new SimpleObjectProperty<>(new LabelGraphic.IconGraphic(defaultVal)), listener); + } + + public IconButtonComp(LabelGraphic defaultVal) { this(new SimpleObjectProperty<>(defaultVal), null); } - public IconButtonComp(ObservableValue icon) { + public IconButtonComp(ObservableValue icon) { this.icon = icon; this.listener = null; } - public IconButtonComp(String defaultVal, Runnable listener) { + public IconButtonComp(LabelGraphic defaultVal, Runnable listener) { this(new SimpleObjectProperty<>(defaultVal), listener); } - public IconButtonComp(ObservableValue icon, Runnable listener) { + public IconButtonComp(ObservableValue icon, Runnable listener) { this.icon = PlatformThread.sync(icon); this.listener = listener; } @@ -41,18 +50,17 @@ public class IconButtonComp extends Comp> { public CompStructure