From aef596ada283b62bd98119689241fba5218a9e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=97=8F=E6=9F=8F?= Date: Tue, 18 Mar 2025 14:45:55 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E5=88=B7=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../help/JetbrainsHelpApplication.java | 17 +- .../help/context/AgentContextHolder.java | 16 +- .../context/CertificateContextHolder.java | 16 +- .../help/context/LicenseContextHolder.java | 4 +- .../help/context/PluginsContextHolder.java | 58 +- .../help/context/ProductsContextHolder.java | 10 +- .../com/jetbrains/help/util/FileTools.java | 2 +- src/main/resources/banner.txt | 16 +- src/main/resources/external/data/plugin.json | 3202 ++++++++++------- 9 files changed, 2014 insertions(+), 1327 deletions(-) diff --git a/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java b/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java index 8235b84..8b19bee 100644 --- a/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java +++ b/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java @@ -1,9 +1,7 @@ package com.jetbrains.help; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.net.Ipv4Util; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.extra.spring.SpringUtil; import com.jetbrains.help.context.*; import lombok.SneakyThrows; @@ -13,14 +11,11 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.annotation.Import; import org.springframework.context.event.EventListener; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.scheduling.annotation.*; import java.net.InetAddress; -import java.util.Collection; -import java.util.List; -@Slf4j +@Slf4j(topic = "源项目入口") @EnableScheduling @Import(SpringUtil.class) @SpringBootApplication @@ -41,15 +36,15 @@ public class JetbrainsHelpApplication { InetAddress localHost = InetAddress.getLocalHost(); String address = CharSequenceUtil.format("http://{}:{}", localHost.getHostAddress(), SpringUtil.getProperty("server.port")); String runSuccessWarn = "\n====================================================================================\n" + - "= Jetbrains-Help Run Success~ =\n" + - "= address:" + address + " =\n" + + "= Jetbrains-Help 启动成功~ =\n" + + "= 访问地址:" + address + " =\n" + "====================================================================================\n"; log.info(runSuccessWarn); } @Scheduled(cron = "0 0 12 * * ?") public void refresh() { - PluginsContextHolder.refreshJsonFile(); + ThreadUtil.execute(PluginsContextHolder::refreshJsonFile); } } diff --git a/src/main/java/com/jetbrains/help/context/AgentContextHolder.java b/src/main/java/com/jetbrains/help/context/AgentContextHolder.java index 166f303..bbedddc 100644 --- a/src/main/java/com/jetbrains/help/context/AgentContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/AgentContextHolder.java @@ -20,7 +20,7 @@ import java.security.cert.X509Certificate; import java.security.interfaces.RSAPublicKey; import java.util.concurrent.CompletableFuture; -@Slf4j +@Slf4j(topic = "代理上下文") @NoArgsConstructor(access = AccessLevel.PRIVATE) public class AgentContextHolder { @@ -33,18 +33,18 @@ public class AgentContextHolder { private static File jaNetfilterZipFile; public static void init() { - log.info("Agent context init loading..."); + log.info("初始化中..."); jaNetfilterZipFile = FileTools.getFileOrCreat(JA_NETFILTER_FILE_PATH + ".zip"); if (!FileTools.fileExists(JA_NETFILTER_FILE_PATH)) { unzipJaNetfilter(); if (!powerConfHasInit()) { - log.info("Agent config init loading..."); + log.info("配置初始化中..."); loadPowerConf(); zipJaNetfilter(); - log.info("Agent config init success !"); + log.info("配置初始化成功!"); } } - log.info("Agent context init success !"); + log.info("初始化成功!"); } public static File jaNetfilterZipFile() { @@ -57,7 +57,7 @@ public class AgentContextHolder { try { powerConfStr = IoUtil.readUtf8(FileUtil.getInputStream(powerConfFile)); } catch (IORuntimeException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File read failed", POWER_CONF_FILE_NAME), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件读取失败!", POWER_CONF_FILE_NAME), e); } return CharSequenceUtil.containsAll(powerConfStr, "[Result]", "EQUAL,"); } @@ -68,7 +68,7 @@ public class AgentContextHolder { .thenApply(AgentContextHolder::generatePowerConfigStr) .thenAccept(AgentContextHolder::overridePowerConfFileContent) .exceptionally(throwable -> { - log.error("agent context init or refresh failed", throwable); + log.error("配置初始化失败!", throwable); return null; }).join(); } @@ -94,7 +94,7 @@ public class AgentContextHolder { try { FileUtil.writeString(configStr, powerConfFile, StandardCharsets.UTF_8); } catch (IORuntimeException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File write failed", POWER_CONF_FILE_NAME), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件写入失败!", POWER_CONF_FILE_NAME), e); } } diff --git a/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java b/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java index 154c24c..2409a00 100644 --- a/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java @@ -27,7 +27,7 @@ import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; -@Slf4j +@Slf4j(topic = "证书上下文") @NoArgsConstructor(access = AccessLevel.PRIVATE) public class CertificateContextHolder { @@ -45,20 +45,20 @@ public class CertificateContextHolder { private static File crtFile; public static void init() { - log.info("certificate context init loading..."); + log.info("初始化中..."); rootKeyFile = FileTools.getFileOrCreat(ROOT_KEY_FILE_NAME); if (!FileTools.fileExists(PRIVATE_KEY_FILE_NAME) || !FileTools.fileExists(PUBLIC_KEY_FILE_NAME) || !FileTools.fileExists(CET_FILE_NAME)) { - log.info("certificate context generate loading..."); + log.info("证书生成中..."); generateCertificate(); - log.info("certificate context generate success!"); + log.info("证书生成成功!"); } else { privateKeyFile = FileTools.getFileOrCreat(PRIVATE_KEY_FILE_NAME); publicKeyFile = FileTools.getFileOrCreat(PUBLIC_KEY_FILE_NAME); crtFile = FileTools.getFileOrCreat(CET_FILE_NAME); } - log.info("certificate context init success !"); + log.info("初始化成功!"); } @@ -99,11 +99,11 @@ public class CertificateContextHolder { crtFile = FileTools.getFileOrCreat(CET_FILE_NAME); PemUtil.writePemObject("CERTIFICATE", certificate.getEncoded(), FileUtil.getWriter(crtFile, StandardCharsets.UTF_8, false)); } catch (OperatorCreationException e) { - throw new IllegalArgumentException("Certificate operator creation exception", e); + throw new IllegalArgumentException("证书运算符创建异常!", e); } catch (CertificateEncodingException e) { - throw new IllegalArgumentException("The certificate encoding exception", e); + throw new IllegalArgumentException("证书编码异常", e); } catch (CertificateException e) { - throw new IllegalArgumentException("The certificate read exception", e); + throw new IllegalArgumentException("证书读取异常", e); } } diff --git a/src/main/java/com/jetbrains/help/context/LicenseContextHolder.java b/src/main/java/com/jetbrains/help/context/LicenseContextHolder.java index c1c69e2..46a6a3b 100644 --- a/src/main/java/com/jetbrains/help/context/LicenseContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/LicenseContextHolder.java @@ -24,7 +24,7 @@ import java.util.Set; import static cn.hutool.crypto.asymmetric.SignAlgorithm.SHA1withRSA; -@Slf4j +@Slf4j(topic = "授权上下文") @NoArgsConstructor(access = AccessLevel.PRIVATE) public class LicenseContextHolder { @@ -52,7 +52,7 @@ public class LicenseContextHolder { try { certBase64 = Base64.encode(certificate.getEncoded()); } catch (CertificateEncodingException e) { - throw new IllegalArgumentException("Certificate extraction failed", e); + throw new IllegalArgumentException("证书编码异常", e); } return CharSequenceUtil.format("{}-{}-{}-{}", licenseId, licensePartBase64, signatureBase64, certBase64); } diff --git a/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java b/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java index 4b25698..ffc358f 100644 --- a/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java @@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.jetbrains.help.util.FileTools; @@ -16,10 +17,10 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; -@Slf4j +@Slf4j(topic = "插件上下文") @NoArgsConstructor(access = AccessLevel.PRIVATE) public class PluginsContextHolder { @@ -36,20 +37,22 @@ public class PluginsContextHolder { private static File pluginsJsonFile; public static void init() { - log.info("Plugin context init loading..."); + log.info("初始化中..."); pluginsJsonFile = FileTools.getFileOrCreat(PLUGIN_JSON_FILE_NAME); String pluginJsonArray; try { pluginJsonArray = IoUtil.readUtf8(FileUtil.getInputStream(pluginsJsonFile)); } catch (IORuntimeException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File read failed", PLUGIN_JSON_FILE_NAME), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件读取失败!", PLUGIN_JSON_FILE_NAME), e); } if (CharSequenceUtil.isBlank(pluginJsonArray) || !JSONUtil.isTypeJSON(pluginJsonArray)) { + pluginCacheList = new ArrayList<>(); refreshJsonFile(); } else { pluginCacheList = JSONUtil.toList(pluginJsonArray, PluginCache.class); - log.info("Plugin context init success !"); + log.info("初始化成功!"); + refreshJsonFile(); } } @@ -58,26 +61,28 @@ public class PluginsContextHolder { } public static void refreshJsonFile() { - log.info("Init or Refresh plugin context from 'JetBrains.com' loading..."); + log.info("从'JetBrains.com'刷新中..."); CompletableFuture .supplyAsync(PluginsContextHolder::pluginList) .thenApply(PluginsContextHolder::pluginListFilter) .thenApply(PluginsContextHolder::pluginConversion) .thenAccept(PluginsContextHolder::overrideJsonFile) + .thenRun(() -> log.info("刷新成功!")) .exceptionally(throwable -> { - log.error("Plugin context init or refresh failed", throwable); + log.error("刷新失败!", throwable); return null; }); - log.info("Init or Refresh plugin context success !"); } public static void overrideJsonFile(List pluginCaches) { + log.info("源大小 => [{}], 新增大小 => [{}]", pluginCacheList.size(), pluginCaches.size()); pluginCacheList.addAll(pluginCaches); String jsonStr = JSONUtil.toJsonStr(pluginCacheList); try { - FileUtil.writeString(jsonStr, pluginsJsonFile, StandardCharsets.UTF_8); + FileUtil.writeString(JSONUtil.formatJsonStr(jsonStr), pluginsJsonFile, StandardCharsets.UTF_8); + log.info("Json文件已覆写!"); } catch (IORuntimeException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File write failed", PLUGIN_JSON_FILE_NAME), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件写入失败!", PLUGIN_JSON_FILE_NAME), e); } } @@ -87,49 +92,58 @@ public class PluginsContextHolder { .thenFunction(response -> { try (InputStream is = response.bodyStream()) { if (!response.isOk()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_LIST_URL, response)); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 请求失败! = {}", PLUGIN_LIST_URL, response)); } - return IoUtil.readObj(is, PluginList.class); + PluginList pluginList = JSONUtil.toBean(IoUtil.readUtf8(is), PluginList.class); + log.info("获取大小 => [{}]", pluginList.getTotal()); + return pluginList; } catch (IOException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request io read failed", PLUGIN_LIST_URL), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 请求IO读取失败!", PLUGIN_LIST_URL), e); } }); } public static List pluginListFilter(PluginList pluginList) { - return pluginList.getPlugins() + List plugins = pluginList.getPlugins() .stream() .filter(plugin -> !PluginsContextHolder.pluginCacheList.contains(new PluginCache().setId(plugin.getId()))) .filter(plugin -> !CharSequenceUtil.equals(plugin.getPricingModel(), "FREE")) .toList(); + log.info("过滤后大小 => [{}]", plugins.size()); + return plugins; } public static List pluginConversion(List pluginList) { - return pluginList + List list = pluginList .stream() + .parallel() .map(plugin -> { - String productCode = pluginInfo(plugin.getId()).getPurchaseInfo().getProductCode(); + String productCode = pluginInfo(plugin).getPurchaseInfo().getProductCode(); return new PluginCache() .setId(plugin.getId()) .setProductCode(productCode) .setName(plugin.getName()) .setPricingModel(plugin.getPricingModel()) - .setIcon(PLUGIN_BASIC_URL + plugin.getIcon()) + .setIcon(StrUtil.isNotBlank(plugin.getIcon()) ? PLUGIN_BASIC_URL + plugin.getIcon() : null) ; }) .toList(); + log.info("转换后大小 => [{}]", list.size()); + return list; } - public static PluginInfo pluginInfo(Long pluginId) { - return HttpUtil.createGet(PLUGIN_INFO_URL + pluginId) + public static PluginInfo pluginInfo(PluginList.Plugin plugin) { + return HttpUtil.createGet(PLUGIN_INFO_URL + plugin.getId()) .thenFunction(response -> { try (InputStream is = response.bodyStream()) { if (!response.isOk()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_INFO_URL, response)); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 请求失败! = {}", PLUGIN_INFO_URL, response)); } - return IoUtil.readObj(is, PluginInfo.class); + PluginInfo pluginInfo = JSONUtil.toBean(IoUtil.readUtf8(is), PluginInfo.class); + log.info("已抓取 => ID = [{}], 名称 = [{}], Code = [{}]", pluginInfo.getId(), plugin.getName(), pluginInfo.getPurchaseInfo().getProductCode()); + return pluginInfo; } catch (IOException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request io read failed", PLUGIN_LIST_URL), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 请求IO读取失败!", PLUGIN_LIST_URL), e); } }); } diff --git a/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java b/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java index a43066d..045f9d9 100644 --- a/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java @@ -14,7 +14,7 @@ import lombok.extern.slf4j.Slf4j; import java.io.File; import java.util.List; -@Slf4j +@Slf4j(topic = "产品上下文") @NoArgsConstructor(access = AccessLevel.PRIVATE) public class ProductsContextHolder { @@ -23,20 +23,20 @@ public class ProductsContextHolder { private static List productCacheList; public static void init() { - log.info("Product context init loading..."); + log.info("初始化中..."); File productJsonFile = FileTools.getFileOrCreat(PRODUCT_JSON_FILE_NAME); String productJsonArray; try { productJsonArray = IoUtil.readUtf8(FileUtil.getInputStream(productJsonFile)); } catch (IORuntimeException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File read failed !", PRODUCT_JSON_FILE_NAME), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件读取失败!", PRODUCT_JSON_FILE_NAME), e); } if (CharSequenceUtil.isBlank(productJsonArray) || !JSONUtil.isTypeJSON(productJsonArray)) { - log.error("Jetbrains Product data does not exist !"); + log.error("产品数据不存在!"); } else { productCacheList = JSONUtil.toList(productJsonArray, ProductCache.class); - log.info("Product context init success !"); + log.info("初始化成功!"); } } diff --git a/src/main/java/com/jetbrains/help/util/FileTools.java b/src/main/java/com/jetbrains/help/util/FileTools.java index 5b78a16..abf26f2 100644 --- a/src/main/java/com/jetbrains/help/util/FileTools.java +++ b/src/main/java/com/jetbrains/help/util/FileTools.java @@ -35,7 +35,7 @@ public interface FileTools { try { FileUtil.writeFromStream(classPathResource.getInputStream(), classPathFile); } catch (Exception e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File read failed", classPathFile.getPath()), e); + throw new IllegalArgumentException(CharSequenceUtil.format("{} 文件读取失败!", classPathFile.getPath()), e); } FileUtil.copy(classPathFile, file, true); } diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt index c019b0b..243b2c4 100644 --- a/src/main/resources/banner.txt +++ b/src/main/resources/banner.txt @@ -1,10 +1,8 @@ +${AnsiColor.RED} ██╗███████╗████████╗██████╗ ██████╗ █████╗ ██╗███╗ ██╗███████╗ ██╗ ██╗███████╗██╗ ██████╗ +${AnsiColor.CYAN} ██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗██║████╗ ██║██╔════╝ ██║ ██║██╔════╝██║ ██╔══██╗ +${AnsiColor.BRIGHT_YELLOW} ██║█████╗ ██║ ██████╔╝██████╔╝███████║██║██╔██╗ ██║███████╗█████╗███████║█████╗ ██║ ██████╔╝ +${AnsiColor.GREEN}██ ██║██╔══╝ ██║ ██╔══██╗██╔══██╗██╔══██║██║██║╚██╗██║╚════██║╚════╝██╔══██║██╔══╝ ██║ ██╔═══╝ +${AnsiColor.BLUE}╚█████╔╝███████╗ ██║ ██████╔╝██║ ██║██║ ██║██║██║ ╚████║███████║ ██║ ██║███████╗███████╗██║ +${AnsiColor.MAGENTA} ╚════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ - ██╗███████╗████████╗██████╗ ██████╗ █████╗ ██╗███╗ ██╗███████╗ ██╗ ██╗███████╗██╗ ██████╗ - ██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗██║████╗ ██║██╔════╝ ██║ ██║██╔════╝██║ ██╔══██╗ - ██║█████╗ ██║ ██████╔╝██████╔╝███████║██║██╔██╗ ██║███████╗█████╗███████║█████╗ ██║ ██████╔╝ -██ ██║██╔══╝ ██║ ██╔══██╗██╔══██╗██╔══██║██║██║╚██╗██║╚════██║╚════╝██╔══██║██╔══╝ ██║ ██╔═══╝ -╚█████╔╝███████╗ ██║ ██████╔╝██║ ██║██║ ██║██║██║ ╚████║███████║ ██║ ██║███████╗███████╗██║ - ╚════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ - -${AnsiColor.BRIGHT_YELLOW} Spring Boot Version: ${spring-boot.version} - +${AnsiColor.BRIGHT_YELLOW} Spring Boot Version: ${spring-boot.version}${AnsiColor.DEFAULT} \ No newline at end of file diff --git a/src/main/resources/external/data/plugin.json b/src/main/resources/external/data/plugin.json index d16d18c..249f9ba 100644 --- a/src/main/resources/external/data/plugin.json +++ b/src/main/resources/external/data/plugin.json @@ -1,1619 +1,2299 @@ [ + { + "id": 25828, + "productCode": "PLOG", + "name": ".log", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25828/694715/icon/default.svg" + }, + { + "id": 26365, + "productCode": "PACTIONATE", + "name": "Actionate", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26365/689903/icon/default.svg" + }, { "id": 9269, "productCode": "PAEMIDE", "name": "AEM IDE", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/9269/503057/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/9269/658192/icon/default.svg" }, { "id": 9863, "productCode": "PAEM", "name": "AEM Support", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/9863/509753/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/9863/633318/icon/default.svg" }, { "id": 21263, "productCode": "PAICODING", "name": "AI Coding", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21263/513630/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/21263/693649/icon/default.svg" }, { "id": 21289, "productCode": "PCAICOMMITAPP", "name": "AICommit", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21289/504423/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/21289/658026/icon/default.svg" + }, + { + "id": 24318, + "productCode": "PDLXASAS", + "name": "Alibaba Sentinel Annotation Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24318/598743/icon/default.svg" + }, + { + "id": 24767, + "productCode": "PDLXASASF", + "name": "Alibaba Sentinel Annotation Support Freemium", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24767/598742/icon/default.svg" }, { "id": 12408, "productCode": "PBISAA", "name": "Android Antidecompiler", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12408/229970/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/12408/229970/icon/default.svg" }, { "id": 15456, "productCode": "PAPH", "name": "Android Package Helper", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15456/104869/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/15456/104869/icon/default.svg" }, { "id": 13156, "productCode": "PWIFIADB", "name": "Android WiFiADB", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13156/154275/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/13156/154275/icon/default.svg" + }, + { + "id": 26478, + "productCode": "PANNOTE", + "name": "AnNote", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26478/698814/icon/default.svg" }, { "id": 9707, "productCode": "PANSIHIGHLIGHT", - "name": "ANSI Highlighter Premium", + "name": "ansi-highlighter-premium", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/9707/518674/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/9707/698973/icon/default.svg" }, { "id": 18357, "productCode": "PCDAPIRUNNER", "name": "API Runner", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18357/269544/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/18357/269544/icon/default.svg" }, { "id": 16682, "productCode": "PAPPLETRUNNER", "name": "Applet Runner", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/16682/506565/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/16682/686767/icon/default.svg" }, { "id": 21566, "productCode": "PARMADILLO", "name": "Armadillo", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/21566/354792/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/21566/354792/icon/default.svg" + }, + { + "id": 26817, + "productCode": "PARTHASENHANCEM", + "name": "Arthas Enhance Mybatis", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26817/699489/icon/default.svg" }, { "id": 17699, "productCode": "PASTOCK", "name": "AStock", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17699/468853/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/17699/674987/icon/default.svg" }, { "id": 13016, "productCode": "PATOMONEDARK", "name": "Atom One Dark By Mayke", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13016/122178/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/13016/122178/icon/default.svg" + }, + { + "id": 25063, + "productCode": "PAUTOAPIGENERAT", + "name": "Auto API Generator", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25063/680255/icon/default.svg" }, { "id": 14088, "productCode": "PGOLANGCODESUGG", "name": "Auto GOLang Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14088/191484/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14088/191484/icon/default.svg" }, { "id": 14070, "productCode": "PJAVACODESUGG", "name": "Auto Java Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14070/191711/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14070/191711/icon/default.svg" }, { "id": 14166, "productCode": "PJSCODESUGG", "name": "Auto Javascript Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14166/191485/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14166/191485/icon/default.svg" }, { "id": 14167, "productCode": "PPHPCODESUGG", "name": "Auto PHP Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14167/191710/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14167/191710/icon/default.svg" }, { "id": 14594, "productCode": "PPYCODESUGG", "name": "Auto Python Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14594/190896/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14594/190896/icon/default.svg" }, { "id": 14089, "productCode": "PRUBYCODESUGG", "name": "Auto Ruby Code Suggestions", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14089/191482/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14089/191482/icon/default.svg" }, { "id": 10904, "productCode": "PBRWJV", "name": "AutoCode for Java", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" + "pricingModel": "PAID" }, { "id": 23577, "productCode": "PAUTOLOG", "name": "AutoLog", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23577/473858/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/23577/473858/icon/default.svg" + }, + { + "id": 26223, + "productCode": "PCODEPIPELINE", + "name": "AWS CodePipeline Dashboard - Execute & Monitor Pipelines", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26223/658810/icon/default.svg" }, { "id": 14742, "productCode": "PAWSLAMBDADEPLR", "name": "AWS Lambda Deployer", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" + "pricingModel": "PAID" }, { "id": 22319, "productCode": "PAZD", "name": "Azd", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22319/517134/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/22319/694698/icon/default.svg" }, { "id": 22194, "productCode": "PAZURECODING", "name": "Azure Coding", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22194/355932/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/22194/355932/icon/default.svg" + }, + { + "id": 25737, + "productCode": "PBACKLOG", + "name": "Backlog Integration", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25737/635537/icon/default.svg" + }, + { + "id": 25896, + "productCode": "PBASEFILE", + "name": "Base64 File", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25896/690603/icon/default.svg" }, { "id": 13841, "productCode": "PBASHSUPPORTPRO", "name": "BashSupport Pro", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13841/514417/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/13841/698085/icon/default.svg" }, { "id": 12895, "productCode": "PBETTERHIGHLIGH", "name": "Better Highlights", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/12895/514904/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/12895/681976/icon/default.svg" + }, + { + "id": 26356, + "productCode": "PBETTERXTOOLS", + "name": "BetterX Tools", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26356/683596/icon/default.svg" }, { "id": 13538, "productCode": "PCREVIEW", - "name": "Bitbucket Pull Requests", + "name": "Bitbucket Integration Pro", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13538/516839/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/13538/680759/icon/default.svg" }, { "id": 16222, "productCode": "PBITRISECI", "name": "Bitrise Dashboard", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16222/463944/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/16222/594536/icon/default.svg" }, { "id": 20061, "productCode": "PBREWBUNDLE", "name": "Brew Bundle", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20061/471756/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/20061/666796/icon/default.svg" + }, + { + "id": 26344, + "productCode": "PBUGGREGATOR", + "name": "Buggregator", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/26344/698666/icon/default.svg" }, { "id": 20985, "productCode": "PBUILDMON", "name": "Build Monitor", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/20985/452340/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/20985/452340/icon/default.svg" + }, + { + "id": 24568, + "productCode": "PCAMUNDASTARTER", + "name": "Camunda Starter", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24568/551328/icon/default.svg" }, { "id": 17692, "productCode": "PCAPELASTIC", "name": "Cap-Elasticsearch", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17692/256059/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/17692/256059/icon/default.svg" }, { "id": 17785, "productCode": "PCAPREDIS", "name": "Cap-Redis", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17785/256060/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/17785/256060/icon/default.svg" }, { - "id": 21314, - "productCode": "PCHATGPTCODING", - "name": "ChatGPT Coding", + "id": 25810, + "productCode": "PLANGUAGEPACKTW", + "name": "Chinese (Traditional) Language Pack / IDE 本地化為繁體中文", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21314/346162/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/25810/635942/icon/default.svg" }, { "id": 19114, "productCode": "PCIINTG", "name": "CIclone", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19114/472822/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/19114/632068/icon/default.svg" }, { "id": 15458, "productCode": "PCIRCLECI", "name": "CircleCI Dashboard", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15458/463945/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/15458/594537/icon/default.svg" }, { "id": 22813, "productCode": "PCITRIC", "name": "Citric", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22813/515382/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/22813/684524/icon/default.svg" }, { "id": 23887, "productCode": "PCLAI", "name": "CLAi", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23887/515259/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/23887/519870/icon/default.svg" + }, + { + "id": 26638, + "productCode": "PCLIPPS", + "name": "ClippS", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26638/690498/icon/default.svg" }, { "id": 12869, "productCode": "PCMAKEPLUS", "name": "CMake Plus", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12869/496990/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/12869/671553/icon/default.svg" }, { "id": 17501, "productCode": "PISCRATCH", - "name": "Code Note: In IDE Note-Taking, Project Notes", + "name": "Code Notes:Project Notes, Visual Markdown Editor", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17501/509149/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/17501/682878/icon/default.svg" }, { "id": 18394, "productCode": "PCODEREFACTORAI", "name": "Code Refactor AI", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18394/153532/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/18394/153532/icon/default.svg" }, { "id": 14896, "productCode": "PCWMP", "name": "Code With Me", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com" + "pricingModel": "FREEMIUM" }, { "id": 19097, "productCode": "PWGCODECREATOR", "name": "codeCreator", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com" + "pricingModel": "FREEMIUM" }, { "id": 19578, "productCode": "PCODEKITS", "name": "CodeKits", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/19578/302019/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/19578/302019/icon/default.svg" + }, + { + "id": 21314, + "productCode": "PCHATGPTCODING", + "name": "CodeMate", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/21314/682167/icon/default.svg" }, { "id": 10811, "productCode": "PCODEMRBASE", "name": "CodeMR", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/10811/186959/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/10811/585540/icon/default.svg" + }, + { + "id": 24958, + "productCode": "PCODEQL", + "name": "CodeQL", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24958/684477/icon/default.svg" + }, + { + "id": 24753, + "productCode": "PAAAA", + "name": "Combine and Copy Files to Clipboard For AI and LLM", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24753/667150/icon/default.svg" }, { "id": 14104, "productCode": "PVCS", "name": "commit-template", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14104/250600/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14104/250600/icon/default.svg" + }, + { + "id": 25716, + "productCode": "PCOMPOSEPREVIEW", + "name": "Compose Preview Generator", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/25716/672162/icon/default.svg" }, { "id": 20293, "productCode": "PCONNECTUI", "name": "Connect Api", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/20293/452254/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/20293/452254/icon/default.svg" + }, + { + "id": 26736, + "productCode": "PCONSOLELOGPRO", + "name": "Console Log Pro", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/26736/694373/icon/default.svg" + }, + { + "id": 26716, + "productCode": "PCSVCOLORPRO", + "name": "CSV Color Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26716/690176/icon/default.svg" }, { "id": 21857, "productCode": "PCUEFY", "name": "Cuefy", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21857/428708/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/21857/522713/icon/default.svg" }, { - "id": 23561, - "productCode": "PDATABASEBUDDY", - "name": "Database Buddy", + "id": 13819, + "productCode": "PCYPRESSSUPPORT", + "name": "Cypresso", + "pricingModel": "FREEMIUM" + }, + { + "id": 25811, + "productCode": "PLANGUAGEPACKCS", + "name": "Czech Language Pack / Lokalizace IDE Do Češtiny", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23561/474923/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/25811/635931/icon/default.svg" + }, + { + "id": 24593, + "productCode": "PDAOGENERATOR", + "name": "DaoGenerator", + "pricingModel": "PAID" }, { "id": 16861, "productCode": "PDATABASE", "name": "Database Helper", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16861/500171/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/16861/610054/icon/default.svg" }, { "id": 19161, "productCode": "PDBDATABASETOOL", "name": "Database Tool", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19161/514290/icon/pluginIcon.svg" - }, - { - "id": 10925, - "productCode": "PDB", - "name": "Database Tools and SQL for WebStorm", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/10925/511241/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/19161/681979/icon/default.svg" }, { "id": 22472, "productCode": "PDATAGRAPH", - "name": "DataGraph - JSON, YAML, XML Visualization", + "name": "DataGraph", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22472/503936/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/22472/668877/icon/default.svg" }, { - "id": 11461, - "productCode": "DC", - "name": "dotCover", + "id": 14371, + "productCode": "PIMAGEVIEWER", + "name": "Debug Image Viewer", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/14371/681721/icon/default.svg" + }, + { + "id": 24543, + "productCode": "PLANGUAGEPACKDE", + "name": "Deutsch (German) Language Pack / Deutsches Sprachpaket", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/11461/81836/icon/META-INF_pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/24543/635932/icon/default.svg" + }, + { + "id": 25496, + "productCode": "PDOCGENIE", + "name": "DocGenie", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25496/627176/icon/default.svg" }, { "id": 11462, "productCode": "DPN", "name": "dotTrace", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/11462/81835/icon/META-INF_pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/11462/81835/icon/default.svg" + }, + { + "id": 22884, + "productCode": "PDRYPUSH", + "name": "DryPush: AWS | GCP | Alibaba Deploy & Upload", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22884/699484/icon/default.svg" + }, + { + "id": 26476, + "productCode": "PDSL", + "name": "Dsl", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26476/695179/icon/default.svg" }, { "id": 18896, "productCode": "PDYNAMODB", "name": "DynamoDB", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18896/503820/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/18896/619265/icon/default.svg" + }, + { + "id": 13847, + "productCode": "PEASYCODEMYBATI", + "name": "EasyCode-MybatisCodeHelper", + "pricingModel": "FREEMIUM" + }, + { + "id": 24396, + "productCode": "PEDITORASSISTFO", + "name": "Editor Assist For Code", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24396/621646/icon/default.svg" }, { "id": 14512, "productCode": "PELASTICSEARCH", "name": "Elasticsearch", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14512/511081/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/14512/671231/icon/default.svg" }, { "id": 18209, "productCode": "PELSA", "name": "ElasticSearch-Admin", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" + "pricingModel": "PAID" }, { "id": 18663, "productCode": "PEXCELEDITOR", "name": "ExcelEditor", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/18663/510865/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/18663/633838/icon/default.svg" }, { "id": 15379, "productCode": "PGODRUNNER", "name": "Execution God Recorder", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15379/102175/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/15379/102175/icon/default.svg" }, { "id": 20238, "productCode": "PEXTENSION", "name": "Extensions Manager", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20238/308627/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/20238/308627/icon/default.svg" }, { "id": 11058, "productCode": "PEXTRAICONS", "name": "Extra Icons", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/11058/516273/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/11058/699177/icon/default.svg" }, { "id": 23927, "productCode": "PEXTRAIDETWEAKS", "name": "Extra IDE Tweaks", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23927/515986/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/23927/699176/icon/default.svg" }, { - "id": 16988, - "productCode": "PFASTREQUEST", - "name": "Fast Request - API Buddy", + "id": 24559, + "productCode": "PEXTPACK", + "name": "Extra Tools Pack", "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16988/498000/icon/pluginIcon.svg" - }, - { - "id": 18971, - "productCode": "PFASTSHELL", - "name": "FastShell", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/18971/200999/icon/pluginIcon.svg" - }, - { - "id": 23146, - "productCode": "PFEIGNHELPER", - "name": "Feign-Helper", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23146/473643/icon/pluginIcon.svg" - }, - { - "id": 16217, - "productCode": "PFUZYFIPC", - "name": "Find In Files (Favorites)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16217/518682/icon/pluginIcon.svg" - }, - { - "id": 23609, - "productCode": "PFIREBASE", - "name": "Firebase Firestore", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23609/503413/icon/pluginIcon.svg" - }, - { - "id": 15189, - "productCode": "PFIREHIGHLIGHT", - "name": "Firebase Rules", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15189/471752/icon/pluginIcon.svg" - }, - { - "id": 23685, - "productCode": "PSCIPIOFTL", - "name": "Flexible Freemarker", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23685/483800/icon/pluginIcon.svg" - }, - { - "id": 14718, - "productCode": "PFLUTTER", - "name": "Flutter Storm", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14718/367205/icon/pluginIcon.svg" - }, - { - "id": 13086, - "productCode": "PGDOC", - "name": "Generate Document", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13086/499172/icon/pluginIcon.svg" - }, - { - "id": 22971, - "productCode": "PGENSETANDSET", - "name": "GenerateSetAndGet", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22971/467619/icon/pluginIcon.svg" - }, - { - "id": 20319, - "productCode": "PGERRYAURORA", - "name": "Gerry Aurora", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20319/435418/icon/pluginIcon.svg" - }, - { - "id": 20246, - "productCode": "PGERRYCHERRY", - "name": "Gerry Cherry", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20246/435417/icon/pluginIcon.svg" - }, - { - "id": 20247, - "productCode": "PGERRYCOFFEE", - "name": "Gerry Coffee", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20247/435420/icon/pluginIcon.svg" - }, - { - "id": 20049, - "productCode": "PGERRYCYBERPUNK", - "name": "Gerry Cyberpunk", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20049/435415/icon/pluginIcon.svg" - }, - { - "id": 20236, - "productCode": "PGERRYNATURE", - "name": "Gerry Nature", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20236/435419/icon/pluginIcon.svg" - }, - { - "id": 20075, - "productCode": "PGERRYSPACE", - "name": "Gerry Space", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20075/435416/icon/pluginIcon.svg" - }, - { - "id": 19668, - "productCode": "PGERRYTHEMESPRO", - "name": "Gerry Themes Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19668/517943/icon/pluginIcon.svg" - }, - { - "id": 10083, - "productCode": "PGITSCOPE", - "name": "Git Scope", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/10083/396420/icon/pluginIcon.svg" - }, - { - "id": 23813, - "productCode": "PGITWORKTREE", - "name": "Git Worktree", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/23813/493642/icon/pluginIcon.svg" - }, - { - "id": 14056, - "productCode": "PGITFLOWPLUS", - "name": "GitFlowPlus", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14056/506220/icon/pluginIcon.svg" - }, - { - "id": 20144, - "productCode": "PGITHUBCI", - "name": "Github CI Dashboard", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20144/463946/icon/pluginIcon.svg" - }, - { - "id": 15457, - "productCode": "PGITLABCI", - "name": "Gitlab CI Pipeline Dashboard", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15457/463947/icon/pluginIcon.svg" - }, - { - "id": 22202, - "productCode": "PGITLABCICD", - "name": "GitLab CICD - Pipelines \u0026 Jobs, Builds Run Cancel Retry View Log", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22202/517828/icon/pluginIcon.svg" - }, - { - "id": 18689, - "productCode": "PGITLAB", - "name": "GitLab Merge Requests", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18689/516838/icon/pluginIcon.svg" - }, - { - "id": 7499, - "productCode": "PGITTOOLBOX", - "name": "GitToolBox", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/7499/512954/icon/pluginIcon.svg" - }, - { - "id": 19906, - "productCode": "PGOPARSER", - "name": "GoParser", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19906/293012/icon/pluginIcon.svg" - }, - { - "id": 20411, - "productCode": "PWXUFQYRHZCRSEO", - "name": "Gorm", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20411/502598/icon/pluginIcon.svg" - }, - { - "id": 22035, - "productCode": "PGPTASSISTANT", - "name": "GPT Assistant", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22035/510722/icon/pluginIcon.svg" - }, - { - "id": 15535, - "productCode": "PHEROKU", - "name": "Heroku Dashboard", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15535/463948/icon/pluginIcon.svg" - }, - { - "id": 7525, - "productCode": "PHYBRISCOMMERCE", - "name": "Hybris Integration", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/7525/517492/icon/pluginIcon.svg" - }, - { - "id": 12634, - "productCode": "PIEDIS", - "name": "Iedis 2", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12634/167816/icon/pluginIcon.svg" - }, - { - "id": 22459, - "productCode": "PIMAGETOVECTOR", - "name": "ImageToVector", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22459/376877/icon/pluginIcon.svg" - }, - { - "id": 23859, - "productCode": "PINTELLIPHP", - "name": "IntelliPHP - AI Autocomplete for PHP", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23859/505657/icon/pluginIcon.svg" - }, - { - "id": 20526, - "productCode": "PWAUFKYVHQCRXEO", - "name": "IoGame", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20526/468605/icon/pluginIcon.svg" - }, - { - "id": 11560, - "productCode": "PBISJ", - "name": "Java Antidecompiler", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/11560/367010/icon/pluginIcon.svg" - }, - { - "id": 10828, - "productCode": "PJDCLEANREAD", - "name": "JavaDoc Clean Read", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/10828/375796/icon/pluginIcon.svg" - }, - { - "id": 20888, - "productCode": "PWXUQQYVOXCRSEO", - "name": "JavaOrm", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20888/438337/icon/pluginIcon.svg" - }, - { - "id": 14557, - "productCode": "PVISUALGC", - "name": "JDK VisualGC", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14557/453632/icon/pluginIcon.svg" - }, - { - "id": 22282, - "productCode": "AIP", - "name": "JetBrains AI Assistant", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22282/515367/icon/pluginIcon.svg" - }, - { - "id": 21173, - "productCode": "PJETCLIENT", - "name": "JetClient - The Ultimate REST Client", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/21173/515501/icon/pluginIcon.svg" - }, - { - "id": 9238, - "productCode": "PJETFORCER", - "name": "JetForcer | The Smartest Force.com IDE", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 12621, - "productCode": "PJFORMDESIGNER", - "name": "JFormDesigner (Marketplace Edition)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12621/516265/icon/pluginIcon.svg" - }, - { - "id": 23812, - "productCode": "PJMETERPLUGINSM", - "name": "JMeter Plugins Manager", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23812/492356/icon/pluginIcon.svg" - }, - { - "id": 23855, - "productCode": "PJMETERRUNNER", - "name": "JMeter Runner", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23855/494217/icon/pluginIcon.svg" - }, - { - "id": 15242, - "productCode": "PJPASQL", - "name": "JPA SQL", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/15242/510410/icon/pluginIcon.svg" - }, - { - "id": 23360, - "productCode": "PJQEXPRESS", - "name": "jqExpress", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23360/492713/icon/pluginIcon.svg" - }, - { - "id": 22597, - "productCode": "POXYJSONSCHGEN", - "name": "JSON Schema Generator", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22597/471041/icon/pluginIcon.svg" - }, - { - "id": 23554, - "productCode": "POXYJSONDIAGRAM", - "name": "JSON Schema Visualizer/Editor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23554/503415/icon/pluginIcon.svg" - }, - { - "id": 20297, - "productCode": "POXYJSONCONVERT", - "name": "JSON-YAML-XML Converter", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20297/472486/icon/pluginIcon.svg" - }, - { - "id": 18975, - "productCode": "PJSONNETEMLSUP", - "name": "Jsonnet Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18975/458972/icon/pluginIcon.svg" - }, - { - "id": 19297, - "productCode": "PJSONTOANYLANGU", - "name": "JsonToAnyLanguage", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/19297/351202/icon/pluginIcon.svg" - }, - { - "id": 14393, - "productCode": "PJSONTOTS", - "name": "JsonToTypeScript", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14393/321300/icon/pluginIcon.svg" - }, - { - "id": 22284, - "productCode": "PKAFKA", - "name": "Kafka Client", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22284/428744/icon/pluginIcon.svg" - }, - { - "id": 20111, - "productCode": "PKAFKAIDE", - "name": "Kafkaide", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20111/425515/icon/pluginIcon.svg" - }, - { - "id": 18286, - "productCode": "PKSEXPLORER", - "name": "KS-Explorer", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18286/518701/icon/pluginIcon.svg" - }, - { - "id": 13441, - "productCode": "PLARAVEL", - "name": "Laravel Idea", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13441/507406/icon/pluginIcon.svg" - }, - { - "id": 19661, - "productCode": "PLATTEPRO", - "name": "Latte Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19661/440924/icon/pluginIcon.svg" - }, - { - "id": 15405, - "productCode": "PLEDGER", - "name": "Ledger CLI", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15405/458942/icon/pluginIcon.svg" - }, - { - "id": 17166, - "productCode": "PLEP", - "name": "LeetCode Editor Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17166/502109/icon/pluginIcon.svg" - }, - { - "id": 22223, - "productCode": "PLOCALSTACK", - "name": "LocalStack Integrator", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22223/518671/icon/pluginIcon.svg" - }, - { - "id": 20554, - "productCode": "PMAGE", - "name": "Magento and Adobe Commerce PhpStorm by Atwix", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/20554/505887/icon/pluginIcon.svg" - }, - { - "id": 23556, - "productCode": "PSCIPIOMGNL", - "name": "Magnolia CMS Integration", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23556/483799/icon/pluginIcon.svg" - }, - { - "id": 17688, - "productCode": "PRSMGNL", - "name": "Magnolia YAML Assistant", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/17688/511232/icon/pluginIcon.svg" - }, - { - "id": 8006, - "productCode": "PMATERIALUI", - "name": "Material Theme UI", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/8006/518563/icon/pluginIcon.svg" - }, - { - "id": 19308, - "productCode": "PMATERIALCUSTOM", - "name": "Material Theme UI Custom Theme", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19308/384272/icon/pluginIcon.svg" - }, - { - "id": 19250, - "productCode": "PMATERIALEXTRAS", - "name": "Material Theme UI Extras", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19250/384271/icon/pluginIcon.svg" - }, - { - "id": 17456, - "productCode": "PMATERIALHC", - "name": "Material Theme UI High Contrast", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17456/384270/icon/pluginIcon.svg" - }, - { - "id": 19309, - "productCode": "PMATERIALLANG", - "name": "Material Theme UI Language Additions", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19309/384269/icon/pluginIcon.svg" - }, - { - "id": 19310, - "productCode": "PMATERIALFRAME", - "name": "Material Theme UI Project Frame", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19310/385745/icon/pluginIcon.svg" - }, - { - "id": 13615, - "productCode": "PMRINTEGEE", - "name": "Merge Request Integration EE - Code Review for GitLab", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13615/113000/icon/pluginIcon.svg" - }, - { - "id": 23687, - "productCode": "PMICRONAUTLAUNC", - "name": "Micronaut Launch", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23687/478379/icon/pluginIcon.svg" - }, - { - "id": 13720, - "productCode": "PMINBATIS", - "name": "MinBatis", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13720/116149/icon/pluginIcon.svg" - }, - { - "id": 23999, - "productCode": "PMONGODB", - "name": "Mongo DB", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23999/518250/icon/pluginIcon.svg" - }, - { - "id": 20761, - "productCode": "PMONGOEXPERT", - "name": "Mongo Expert", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20761/510302/icon/pluginIcon.svg" - }, - { - "id": 17465, - "productCode": "PCDMQTTCLIENT", - "name": "MQTT Client", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/17465/308433/icon/pluginIcon.svg" - }, - { - "id": 13905, - "productCode": "PMYBATISLOG", - "name": "MyBatis Log", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13905/447241/icon/pluginIcon.svg" - }, - { - "id": 18389, - "productCode": "PMBCODEHELPPRO", - "name": "Mybatis Smart Code Help Pro", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/18389/516824/icon/pluginIcon.svg" - }, - { - "id": 23478, - "productCode": "PMYBATISCODE", - "name": "MybatisCode", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23478/472229/icon/pluginIcon.svg" - }, - { - "id": 14522, - "productCode": "PMYBATISHELPER", - "name": "MyBatisCodeHelperPro (Marketplace Edition)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14522/510194/icon/pluginIcon.svg" - }, - { - "id": 22655, - "productCode": "PMYSQLPROXY", - "name": "MySQL Proxy", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22655/436599/icon/pluginIcon.svg" - }, - { - "id": 18387, - "productCode": "PNEONPRO", - "name": "NEON Nette Support", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18387/479200/icon/pluginIcon.svg" - }, - { - "id": 19977, - "productCode": "PNETLIFY", - "name": "Netlify Dashboard", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19977/463949/icon/pluginIcon.svg" - }, - { - "id": 19963, - "productCode": "PNEXTSKETCH", - "name": "NextSketch", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19963/272018/icon/pluginIcon.svg" - }, - { - "id": 20805, - "productCode": "PNEXTSKETCHTWO", - "name": "NextSketch2", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20805/308349/icon/pluginIcon.svg" - }, - { - "id": 23765, - "productCode": "PNFLUTTER", - "name": "NFlutter", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23765/492994/icon/pluginIcon.svg" - }, - { - "id": 18280, - "productCode": "PNGINX", - "name": "Nginx Configuration Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18280/239000/icon/pluginIcon.svg" - }, - { - "id": 19205, - "productCode": "PNGROK", - "name": "Ngrok", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/19205/510423/icon/pluginIcon.svg" - }, - { - "id": 21833, - "productCode": "PNOSQLNAVMDB", - "name": "NoSQL Navigator For MongoDB", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21833/433051/icon/pluginIcon.svg" - }, - { - "id": 22128, - "productCode": "PNPMPACKAGEJSON", - "name": "NPM Package Json", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22128/451192/icon/pluginIcon.svg" - }, - { - "id": 13499, - "productCode": "PODOO", - "name": "Odoo", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13499/512679/icon/pluginIcon.svg" - }, - { - "id": 13151, - "productCode": "POFFICEFLOOR", - "name": "OfficeFloor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13151/131867/icon/pluginIcon.svg" - }, - { - "id": 19889, - "productCode": "POPENAPICRUDWIZ", - "name": "OpenAPI CRUD Wizard", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/19889/478359/icon/pluginIcon.svg" - }, - { - "id": 12887, - "productCode": "POPENAPI", - "name": "OpenAPI Editor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12887/512174/icon/pluginIcon.svg" - }, - { - "id": 14371, - "productCode": "PIMAGEVIEWER", - "name": "OpenCV Image Viewer", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14371/480879/icon/pluginIcon.svg" - }, - { - "id": 12626, - "productCode": "PORCHIDE", - "name": "OrchidE - Ansible Language Support", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 19660, - "productCode": "PAWSQLADVISOR", - "name": "PawSQL Advisor,SQL Audit/Rewrite/Index Advice,Tune SQL by Clicks", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19660/502106/icon/pluginIcon.svg" - }, - { - "id": 17440, - "productCode": "PHPBUILDER", - "name": "PHP Data Object Generator", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/17440/458368/icon/pluginIcon.svg" - }, - { - "id": 18981, - "productCode": "PPHPHOUDINI", - "name": "PHP Houdini", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18981/271233/icon/pluginIcon.svg" - }, - { - "id": 16935, - "productCode": "PHPEAPLUGIN", - "name": "Php Inspections (EA Ultimate)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 14821, - "productCode": "PPUMLSTUDIO", - "name": "PlantUML Studio", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14821/172312/icon/pluginIcon.svg" - }, - { - "id": 13733, - "productCode": "PPOJOTOJSONSCH", - "name": "POJO to JSON Schema", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13733/95154/icon/pluginIcon.svg" - }, - { - "id": 22429, - "productCode": "PPOLARISTOMCATS", - "name": "Polaris Tomcat Server", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22429/506445/icon/pluginIcon.svg" - }, - { - "id": 21361, - "productCode": "POLYBPMNGDNEXT", - "name": "PolyBPMN visualizer", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21361/479001/icon/pluginIcon.svg" - }, - { - "id": 14434, - "productCode": "PQMLEDITOR", - "name": "QmlEditor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14434/314029/icon/pluginIcon.svg" - }, - { - "id": 16405, - "productCode": "PQTSQSSEDITOR", - "name": "Qt Style Sheets Editor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16405/193379/icon/pluginIcon.svg" - }, - { - "id": 19027, - "productCode": "PQUARKUSHELPER", - "name": "Quarkus Assistant", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19027/477162/icon/pluginIcon.svg" - }, - { - "id": 18269, - "productCode": "PQUERYFLAG", - "name": "QueryFlag", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18269/508126/icon/pluginIcon.svg" - }, - { - "id": 10080, - "productCode": "PRAINBOWBRACKET", - "name": "Rainbow Brackets", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/10080/509542/icon/pluginIcon.svg" - }, - { - "id": 19316, - "productCode": "PRANCHER", - "name": "Rancher", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19316/367013/icon/pluginIcon.svg" - }, - { - "id": 13838, - "productCode": "PRDFANDSPARQL", - "name": "RDF and SPARQL", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13838/499816/icon/pluginIcon.svg" - }, - { - "id": 9564, - "productCode": "PRNCONSOLE", - "name": "React Native Console", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/9564/514551/icon/pluginIcon.svg" - }, - { - "id": 12820, - "productCode": "PREDIS", - "name": "Redis", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12820/433300/icon/pluginIcon.svg" - }, - { - "id": 19360, - "productCode": "PREDISCLIHELPER", - "name": "Redis Client", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19360/479210/icon/pluginIcon.svg" - }, - { - "id": 15722, - "productCode": "PREDISMANAGER", - "name": "Redis Manager", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15722/270538/icon/pluginIcon.svg" - }, - { - "id": 19599, - "productCode": "PREDISS", - "name": "Redis Operator", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19599/518569/icon/pluginIcon.svg" - }, - { - "id": 16160, - "productCode": "PREDISTOOLS", - "name": "Redis-Cli", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/16160/286263/icon/pluginIcon.svg" - }, - { - "id": 15433, - "productCode": "PREGEXTOOL", - "name": "Regex Tool", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15433/510718/icon/pluginIcon.svg" - }, - { - "id": 14723, - "productCode": "PRESTKIT", - "name": "RestfulBox", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14723/464469/icon/pluginIcon.svg" - }, - { - "id": 22726, - "productCode": "PRETROFITASSIT", - "name": "Retrofit Assistant", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22726/514538/icon/pluginIcon.svg" - }, - { - "id": 22428, - "productCode": "PWXUQRYTOXCRSEO", - "name": "RustTool", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22428/513930/icon/pluginIcon.svg" - }, - { - "id": 13668, - "productCode": "PSFCC", - "name": "Salesforce B2C Commerce (SFCC)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/13668/510847/icon/pluginIcon.svg" - }, - { - "id": 22748, - "productCode": "PSCHEMAREGVIEW", - "name": "Schema Registry Viewer", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22748/496140/icon/pluginIcon.svg" - }, - { - "id": 12108, - "productCode": "PSCIPIO", - "name": "Scipio ERP Integration", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/12108/478355/icon/pluginIcon.svg" - }, - { - "id": 19556, - "productCode": "PSCREENCODEPRO", - "name": "ScreenCodePro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19556/198086/icon/pluginIcon.svg" - }, - { - "id": 22232, - "productCode": "PSENTRY", - "name": "Sentry", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22232/514906/icon/pluginIcon.svg" - }, - { - "id": 15945, - "productCode": "PSENTRYINTEG", - "name": "Sentry Integration", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15945/111527/icon/pluginIcon.svg" - }, - { - "id": 8286, - "productCode": "PSEQUENCEDIAGRA", - "name": "SequenceDiagram", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/8286/485614/icon/pluginIcon.svg" - }, - { - "id": 23115, - "productCode": "PSEQDIAORG", - "name": "SequenceDiagram.org", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23115/485275/icon/pluginIcon.svg" - }, - { - "id": 14437, - "productCode": "PSI", - "name": "Shared Project Indexes", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14437/508994/icon/pluginIcon.svg" - }, - { - "id": 7410, - "productCode": "PSWPLUGIN", - "name": "Shopware", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/7410/167127/icon/pluginIcon.svg" - }, - { - "id": 18151, - "productCode": "PBEANCONVERTER", - "name": "Simple Object Copy", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 20243, - "productCode": "PSKOL", - "name": "Skol", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20243/518236/icon/pluginIcon.svg" - }, - { - "id": 14053, - "productCode": "PSMARTJUMP", - "name": "Smart Jump", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14053/274462/icon/pluginIcon.svg" - }, - { - "id": 20565, - "productCode": "PTAILWINDTOOLS", - "name": "Snippet Toolkit for Tailwind CSS", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20565/502104/icon/pluginIcon.svg" - }, - { - "id": 23743, - "productCode": "PSOTERISECURITY", - "name": "Soteri Secret Scanner", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23743/484143/icon/pluginIcon.svg" - }, - { - "id": 22318, - "productCode": "PSOURCESYNCPRO", - "name": "Source Synchronizer Pro", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22318/503948/icon/pluginIcon.svg" - }, - { - "id": 14338, - "productCode": "PSPARQL", - "name": "SPARQL", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/14338/165810/icon/pluginIcon.svg" - }, - { - "id": 22635, - "productCode": "PSPEECHTOTEXT", - "name": "Speech-To-Text (AWS Transcribe)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22635/388024/icon/pluginIcon.svg" - }, - { - "id": 18622, - "productCode": "PSPRINGBOOTIDEA", - "name": "Spring Boot Helper", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18622/472683/icon/pluginIcon.svg" - }, - { - "id": 22304, - "productCode": "PSRCODEGEN", - "name": "Spring Rest Code Generator", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22304/391163/icon/pluginIcon.svg" - }, - { - "id": 15574, - "productCode": "PFLYINSKYZJBZ", - "name": "spring-assistant-@valueToYml", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15574/412050/icon/pluginIcon.svg" - }, - { - "id": 20534, - "productCode": "PSQLFLUFFLINTER", - "name": "Sqlfluff Linter (Ultimate Edition)", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20534/502715/icon/pluginIcon.svg" - }, - { - "id": 22742, - "productCode": "PSQLFORMATTER", - "name": "SQLFormatter", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 22713, - "productCode": "PDBSSH", - "name": "SSH Tool", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/22713/516730/icon/pluginIcon.svg" - }, - { - "id": 15851, - "productCode": "PSTORMSECTIONS", - "name": "StormSections", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/15851/449282/icon/pluginIcon.svg" - }, - { - "id": 14482, - "productCode": "PSTRKER", - "name": "Stryker", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14482/134911/icon/pluginIcon.svg" - }, - { - "id": 23458, - "productCode": "PSWISSKITCONVER", - "name": "SwissKit Converter", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23458/469170/icon/pluginIcon.svg" - }, - { - "id": 7219, - "productCode": "PSYMFONYPLUGIN", - "name": "Symfony Support", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/7219/514919/icon/pluginIcon.svg" - }, - { - "id": 10695, - "productCode": "PVLOG", - "name": "SystemVerilog", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/10695/163626/icon/pluginIcon.svg" - }, - { - "id": 14203, - "productCode": "PSVERILOG", - "name": "SystemVerilog Studio", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 22685, - "productCode": "PNEKOCAT", - "name": "TamaCat the Embedded Internet Browser", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/22685/456002/icon/pluginIcon.svg" - }, - { - "id": 18857, - "productCode": "PTERMINAL", - "name": "Terminal Pro", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/18857/505301/icon/pluginIcon.svg" - }, - { - "id": 20050, - "productCode": "PTLDRAI", - "name": "TLDR", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/20050/394140/icon/pluginIcon.svg" - }, - { - "id": 14384, - "productCode": "PTOOLSET", - "name": "Toolset", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/14384/497387/icon/pluginIcon.svg" - }, - { - "id": 20683, - "productCode": "PTRAVISCI", - "name": "Travis CI Dashboard", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/20683/463950/icon/pluginIcon.svg" - }, - { - "id": 18232, - "productCode": "PDJANGOTPLPEP", - "name": "Typed Django Template", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/18232/370564/icon/pluginIcon.svg" - }, - { - "id": 19675, - "productCode": "PUNIAPPSUPPORT", - "name": "Uniapp Support", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/19675/450668/icon/pluginIcon.svg" - }, - { - "id": 21813, - "productCode": "PVERILOGLANGUAG", - "name": "Verilog Language Support", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/21813/472208/icon/pluginIcon.svg" - }, - { - "id": 23086, - "productCode": "PVOQAL", - "name": "Voqal Assistant", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23086/518244/icon/pluginIcon.svg" - }, - { - "id": 18860, - "productCode": "PWIREMOCHA", - "name": "WireMocha", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18860/517127/icon/pluginIcon.svg" - }, - { - "id": 7232, - "productCode": "PWLANG", - "name": "Wolfram Language", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/7232/476166/icon/pluginIcon.svg" - }, - { - "id": 18425, - "productCode": "PXSDVISUALIZER", - "name": "XSD / WSDL Visualizer", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/18425/515020/icon/pluginIcon.svg" - }, - { - "id": 19024, - "productCode": "POXYXSDJSONSCH", - "name": "XSD to JSON Schema", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/19024/472499/icon/pluginIcon.svg" - }, - { - "id": 9739, - "productCode": "PYAOQIANGBPMN", - "name": "Yaoqiang BPMN Editor", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" - }, - { - "id": 23693, - "productCode": "PYIIFRAMEWORK", - "name": "Yii2 Framework Support", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/23693/504334/icon/pluginIcon.svg" - }, - { - "id": 12437, - "productCode": "PZENUML", - "name": "ZenUML Support", - "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/12437/466910/icon/pluginIcon.svg" - }, - { - "id": 15773, - "productCode": "PZEROCODE", - "name": "Zerocode Scenario Helper", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com/files/15773/155295/icon/pluginIcon.svg" - }, - { - "id": 18341, - "productCode": "PZKA", - "name": "Zookeeper-Admin", - "pricingModel": "PAID", - "icon": "https://plugins.jetbrains.com" + "icon": "https://plugins.jetbrains.com/files/24559/699180/icon/default.svg" }, { "id": 16604, "productCode": "PEXTRATOOLWINDO", "name": "Extra ToolWindow Colorful Icons", "pricingModel": "FREEMIUM", - "icon": "https://plugins.jetbrains.com/files/16604/591101/icon/pluginIcon.svg" + "icon": "https://plugins.jetbrains.com/files/16604/699178/icon/default.svg" + }, + { + "id": 26404, + "productCode": "PEXTRATCILIF", + "name": "Extra ToolWindow Colorful Icons Lifetime", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26404/699179/icon/default.svg" + }, + { + "id": 16988, + "productCode": "PFASTREQUEST", + "name": "Fast Request – API Buddy", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/16988/695634/icon/default.svg" + }, + { + "id": 18971, + "productCode": "PFASTSHELL", + "name": "FastShell", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/18971/200999/icon/default.svg" + }, + { + "id": 23146, + "productCode": "PFEIGNHELPER", + "name": "Feign-Helper", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23146/648950/icon/default.svg" + }, + { + "id": 16217, + "productCode": "PFUZYFIPC", + "name": "Find In Files (Favorites)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/16217/637973/icon/default.svg" + }, + { + "id": 23609, + "productCode": "PFIREBASE", + "name": "Firebase Firestore", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23609/690270/icon/default.svg" + }, + { + "id": 15189, + "productCode": "PFIREHIGHLIGHT", + "name": "Firebase Rules", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15189/666806/icon/default.svg" + }, + { + "id": 23685, + "productCode": "PSCIPIOFTL", + "name": "Flexible Freemarker", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23685/670077/icon/default.svg" + }, + { + "id": 25912, + "productCode": "PFLINKSQLHELPER", + "name": "Flink SQL Helper", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25912/674689/icon/default.svg" + }, + { + "id": 14718, + "productCode": "PFLUTTER", + "name": "Flutter Storm", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14718/522809/icon/default.svg" + }, + { + "id": 24539, + "productCode": "PLANGUAGEPACKFR", + "name": "French Language Pack / Pack De Langue Français", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24539/635946/icon/default.svg" + }, + { + "id": 26734, + "productCode": "PLOCALIZATIONFR", + "name": "French Language Pack – Français", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26734/690611/icon/default.svg" + }, + { + "id": 13086, + "productCode": "PGDOC", + "name": "Generate Document", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13086/659466/icon/default.svg" + }, + { + "id": 22971, + "productCode": "PGENSETANDSET", + "name": "GenerateSetAndGet", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22971/610911/icon/default.svg" + }, + { + "id": 16361, + "productCode": "PGENERATORCRUD", + "name": "Generator Crud", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/16361/636729/icon/default.svg" + }, + { + "id": 26792, + "productCode": "PLOCALIZATIONDE", + "name": "German Language Pack – Deutsch", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26792/695550/icon/default.svg" + }, + { + "id": 20319, + "productCode": "PGERRYAURORA", + "name": "Gerry Aurora", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20319/435418/icon/default.svg" + }, + { + "id": 20246, + "productCode": "PGERRYCHERRY", + "name": "Gerry Cherry", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20246/435417/icon/default.svg" + }, + { + "id": 20247, + "productCode": "PGERRYCOFFEE", + "name": "Gerry Coffee", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20247/435420/icon/default.svg" + }, + { + "id": 20049, + "productCode": "PGERRYCYBERPUNK", + "name": "Gerry Cyberpunk", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20049/435415/icon/default.svg" + }, + { + "id": 20236, + "productCode": "PGERRYNATURE", + "name": "Gerry Nature", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20236/435419/icon/default.svg" + }, + { + "id": 20075, + "productCode": "PGERRYSPACE", + "name": "Gerry Space", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20075/435416/icon/default.svg" + }, + { + "id": 19668, + "productCode": "PGERRYTHEMESPRO", + "name": "Gerry Themes Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19668/694218/icon/default.svg" + }, + { + "id": 26472, + "productCode": "PGERRYTHEMESLT", + "name": "Gerry Themes Pro (Lifetime)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26472/694219/icon/default.svg" + }, + { + "id": 15457, + "productCode": "PGITLABCI", + "name": "Git CI Pipeline Dashboard", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15457/627899/icon/default.svg" + }, + { + "id": 10083, + "productCode": "PGITSCOPE", + "name": "Git Scope", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/10083/396420/icon/default.svg" + }, + { + "id": 23813, + "productCode": "PGITWORKTREE", + "name": "Git Worktree", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/23813/698992/icon/default.svg" + }, + { + "id": 14056, + "productCode": "PGITFLOWPLUS", + "name": "GitFlowPlus", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/14056/678064/icon/default.svg" + }, + { + "id": 19347, + "productCode": "PGHACTNSMGRPRO", + "name": "GitHub Actions Manager", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/19347/670488/icon/default.svg" + }, + { + "id": 20144, + "productCode": "PGITHUBCI", + "name": "Github CI Dashboard", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20144/594538/icon/default.svg" + }, + { + "id": 22202, + "productCode": "PGITLABCICD", + "name": "GitLab CICD - Pipelines & Jobs, Builds Run Cancel Retry View Log", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22202/633878/icon/default.svg" + }, + { + "id": 26717, + "productCode": "PGITLABEVAREDIT", + "name": "GitLab Environment Variables Manager", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26717/691909/icon/default.svg" + }, + { + "id": 18689, + "productCode": "PGITLAB", + "name": "GitLab Integration Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18689/680758/icon/default.svg" + }, + { + "id": 20347, + "productCode": "PGITLABMASTER", + "name": "GitLab Master", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20347/634287/icon/default.svg" + }, + { + "id": 26095, + "productCode": "PGITLABMULTIREP", + "name": "GitLab Multi-Repo Search", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26095/655605/icon/default.svg" + }, + { + "id": 7499, + "productCode": "PGITTOOLBOX", + "name": "GitToolBox", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/7499/690185/icon/default.svg" + }, + { + "id": 19906, + "productCode": "PGOPARSER", + "name": "GoParser", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19906/293012/icon/default.svg" + }, + { + "id": 20411, + "productCode": "PWXUFQYRHZCRSEO", + "name": "Gorm", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20411/634455/icon/default.svg" + }, + { + "id": 22035, + "productCode": "PGPTASSISTANT", + "name": "GPT Assistant", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22035/696515/icon/default.svg" + }, + { + "id": 16136, + "productCode": "GZL", + "name": "Grazie Pro", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/16136/699463/icon/default.svg" + }, + { + "id": 15535, + "productCode": "PHEROKU", + "name": "Heroku Dashboard", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15535/594541/icon/default.svg" + }, + { + "id": 24844, + "productCode": "PHTMXPRO", + "name": "HTMX Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24844/681998/icon/default.svg" + }, + { + "id": 26436, + "productCode": "PHTMXPROLIFETIM", + "name": "HTMX Pro (Lifetime)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26436/682000/icon/default.svg" + }, + { + "id": 25814, + "productCode": "PLANGUAGEPACKHU", + "name": "Hungarian Language Pack / Magyar Nyelvi Csomag", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25814/635936/icon/default.svg" + }, + { + "id": 7525, + "productCode": "PHYBRISCOMMERCE", + "name": "Hybris Integration", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/7525/640160/icon/default.svg" + }, + { + "id": 24053, + "productCode": "PPLUGDEVKITM", + "name": "IDE Plug DevKit Maven", + "pricingModel": "PAID" + }, + { + "id": 12634, + "productCode": "PIEDIS", + "name": "Iedis 2", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/12634/167816/icon/default.svg" + }, + { + "id": 22459, + "productCode": "PIMAGETOVECTOR", + "name": "ImageToVector", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22459/376877/icon/default.svg" + }, + { + "id": 23859, + "productCode": "PINTELLIPHP", + "name": "IntelliPHP - AI Autocomplete for PHP", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23859/606769/icon/default.svg" + }, + { + "id": 20526, + "productCode": "PWAUFKYVHQCRXEO", + "name": "IoGame", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20526/468605/icon/default.svg" + }, + { + "id": 26785, + "productCode": "PIREPORTSIX", + "name": "IReport 6", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26785/695805/icon/default.svg" + }, + { + "id": 24494, + "productCode": "PLANGUAGEPACKIT", + "name": "Italian Language Pack / Pacchetto Lingua Italiano", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24494/635947/icon/default.svg" + }, + { + "id": 11560, + "productCode": "PBISJ", + "name": "Java Antidecompiler", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/11560/367010/icon/default.svg" + }, + { + "id": 10828, + "productCode": "PJDCLEANREAD", + "name": "JavaDoc Clean Read", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/10828/375796/icon/default.svg" + }, + { + "id": 20888, + "productCode": "PWXUQQYVOXCRSEO", + "name": "JavaKit", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20888/635381/icon/default.svg" + }, + { + "id": 14557, + "productCode": "PVISUALGC", + "name": "JDK VisualGC", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/14557/697775/icon/default.svg" + }, + { + "id": 24505, + "productCode": "PJEKADEV", + "name": "JeKa", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24505/666036/icon/default.svg" + }, + { + "id": 26270, + "productCode": "PJENKINSFILE", + "name": "Jenkinsfile", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26270/679717/icon/default.svg" + }, + { + "id": 26405, + "productCode": "PJENKINSLINTER", + "name": "Jenkinsfile Linter Offline", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26405/676491/icon/default.svg" + }, + { + "id": 26583, + "productCode": "PJENKINSFPRO", + "name": "Jenkinsfile Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26583/690288/icon/default.svg" + }, + { + "id": 22282, + "productCode": "AIP", + "name": "JetBrains AI Assistant", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/22282/698410/icon/default.svg" + }, + { + "id": 21173, + "productCode": "PJETCLIENT", + "name": "JetClient - The Ultimate REST Client", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/21173/698391/icon/default.svg" + }, + { + "id": 9238, + "productCode": "PJETFORCER", + "name": "JetForcer | The Smartest Force.com IDE", + "pricingModel": "PAID" + }, + { + "id": 12621, + "productCode": "PJFORMDESIGNER", + "name": "JFormDesigner (Marketplace Edition)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/12621/585119/icon/default.svg" + }, + { + "id": 23812, + "productCode": "PJMETERPLUGINSM", + "name": "JMeter Manager", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23812/668418/icon/default.svg" + }, + { + "id": 23855, + "productCode": "PJMETERRUNNER", + "name": "JMeter Runner", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23855/668416/icon/default.svg" + }, + { + "id": 22087, + "productCode": "PJMETERVIEWER", + "name": "JMeter Viewer", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/22087/667442/icon/default.svg" + }, + { + "id": 15242, + "productCode": "PJPASQL", + "name": "JPA SQL", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/15242/522748/icon/default.svg" + }, + { + "id": 23360, + "productCode": "PJQEXPRESS", + "name": "jqExpress", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23360/635358/icon/default.svg" + }, + { + "id": 20013, + "productCode": "PJSONBROWSER", + "name": "JSON Browser", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20013/610491/icon/default.svg" + }, + { + "id": 15064, + "productCode": "PJSONKEYFINDER", + "name": "JSON Key Finder", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15064/669783/icon/default.svg" + }, + { + "id": 22597, + "productCode": "POXYJSONSCHGEN", + "name": "JSON Schema Generator", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22597/627717/icon/default.svg" + }, + { + "id": 23554, + "productCode": "POXYJSONDIAGRAM", + "name": "JSON Schema Visualizer/Editor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23554/629335/icon/default.svg" + }, + { + "id": 20297, + "productCode": "POXYJSONCONVERT", + "name": "JSON-YAML-XML Converter", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20297/629842/icon/default.svg" + }, + { + "id": 18975, + "productCode": "PJSONNETEMLSUP", + "name": "Jsonnet Pro", + "pricingModel": "PAID" + }, + { + "id": 19297, + "productCode": "PJSONTOANYLANGU", + "name": "JsonToAnyLanguage", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/19297/351202/icon/default.svg" + }, + { + "id": 24694, + "productCode": "PJTRACKER", + "name": "JTracker: MyBatis Log & JPA Log", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24694/567175/icon/default.svg" + }, + { + "id": 16141, + "productCode": "PKSIX", + "name": "k6", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/16141/650126/icon/default.svg" + }, + { + "id": 22284, + "productCode": "PKAFKA", + "name": "Kafka Client", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22284/695617/icon/default.svg" + }, + { + "id": 20111, + "productCode": "PKAFKAIDE", + "name": "Kafkaide", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20111/425515/icon/default.svg" + }, + { + "id": 25083, + "productCode": "PKOTLINPARAMETE", + "name": "Kotlin Parameter Object", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25083/613913/icon/default.svg" + }, + { + "id": 18286, + "productCode": "PKSEXPLORER", + "name": "KS-Explorer", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18286/666586/icon/default.svg" + }, + { + "id": 13441, + "productCode": "PLARAVEL", + "name": "Laravel Idea", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13441/686550/icon/default.svg" + }, + { + "id": 19661, + "productCode": "PLATTEPRO", + "name": "Latte Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19661/650159/icon/default.svg" + }, + { + "id": 15405, + "productCode": "PLEDGER", + "name": "LedgerPlugin", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15405/635196/icon/default.svg" + }, + { + "id": 17166, + "productCode": "PLEP", + "name": "LeetCode Editor Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/17166/585832/icon/default.svg" + }, + { + "id": 24979, + "productCode": "PLOCALESPHERE", + "name": "Locale Sphere", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24979/636127/icon/default.svg" + }, + { + "id": 22223, + "productCode": "PLOCALSTACK", + "name": "LocalStack Toolkit", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22223/674818/icon/default.svg" + }, + { + "id": 20554, + "productCode": "PMAGE", + "name": "Magento and Adobe Commerce PhpStorm by Atwix", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/20554/668589/icon/default.svg" + }, + { + "id": 23556, + "productCode": "PSCIPIOMGNL", + "name": "Magnolia CMS Integration", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23556/670078/icon/default.svg" + }, + { + "id": 17688, + "productCode": "PRSMGNL", + "name": "Magnolia YAML Assistant", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/17688/666561/icon/default.svg" + }, + { + "id": 25250, + "productCode": "PMANAGEPROJECTS", + "name": "Manage Projects", + "pricingModel": "PAID" + }, + { + "id": 26084, + "productCode": "PMARKDTASK", + "name": "MarkdTask", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26084/680234/icon/default.svg" + }, + { + "id": 26080, + "productCode": "PMARVIN", + "name": "Marvin", + "pricingModel": "PAID" + }, + { + "id": 8006, + "productCode": "PMATERIALUI", + "name": "Material Theme UI", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/8006/678397/icon/default.svg" + }, + { + "id": 19308, + "productCode": "PMATERIALCUSTOM", + "name": "Material Theme UI Custom Theme", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19308/384272/icon/default.svg" + }, + { + "id": 19250, + "productCode": "PMATERIALEXTRAS", + "name": "Material Theme UI Extras", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19250/384271/icon/default.svg" + }, + { + "id": 17456, + "productCode": "PMATERIALHC", + "name": "Material Theme UI High Contrast", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/17456/384270/icon/default.svg" + }, + { + "id": 19309, + "productCode": "PMATERIALLANG", + "name": "Material Theme UI Language Additions", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19309/384269/icon/default.svg" + }, + { + "id": 19310, + "productCode": "PMATERIALFRAME", + "name": "Material Theme UI Project Frame", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19310/385745/icon/default.svg" + }, + { + "id": 26139, + "productCode": "POZMAVENPLUGINX", + "name": "Maven Plug-in Extensions", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/26139/671003/icon/default.svg" + }, + { + "id": 24111, + "productCode": "PMAVENSEARCHER", + "name": "MavenSearcher", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24111/678940/icon/default.svg" + }, + { + "id": 13615, + "productCode": "PMRINTEGEE", + "name": "Merge Request Integration EE - Code Review for GitLab", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13615/113000/icon/default.svg" + }, + { + "id": 23687, + "productCode": "PMICRONAUTLAUNC", + "name": "Micronaut Launch", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23687/478379/icon/default.svg" + }, + { + "id": 13720, + "productCode": "PMINBATIS", + "name": "MinBatis", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13720/116149/icon/default.svg" + }, + { + "id": 23999, + "productCode": "PMONGODB", + "name": "Mongo DB", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23999/615626/icon/default.svg" + }, + { + "id": 20761, + "productCode": "PMONGOEXPERT", + "name": "MongoExpert", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20761/668205/icon/default.svg" + }, + { + "id": 13643, + "productCode": "PMONOKAIPRO", + "name": "Monokai Pro Theme", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/13643/672488/icon/default.svg" + }, + { + "id": 17465, + "productCode": "PCDMQTTCLIENT", + "name": "MQTT Client", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/17465/308433/icon/default.svg" + }, + { + "id": 25259, + "productCode": "PMYBATISDAOGEN", + "name": "MyBatis Dao Generator", + "pricingModel": "PAID" + }, + { + "id": 13905, + "productCode": "PMYBATISLOG", + "name": "MyBatis Log", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13905/617368/icon/default.svg" + }, + { + "id": 26550, + "productCode": "PMYBATISLOGULTR", + "name": "Mybatis Log Ultra", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26550/699611/icon/default.svg" + }, + { + "id": 23478, + "productCode": "PMYBATISCODE", + "name": "MyBatis Plus Tools", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23478/628011/icon/default.svg" + }, + { + "id": 18389, + "productCode": "PMBCODEHELPPRO", + "name": "Mybatis Smart Code Help Pro", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/18389/681996/icon/default.svg" + }, + { + "id": 14522, + "productCode": "PMYBATISHELPER", + "name": "MyBatisCodeHelperPro (Marketplace Edition)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14522/664510/icon/default.svg" + }, + { + "id": 25549, + "productCode": "PMYBATISTOOLS", + "name": "MybatisTools", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25549/635036/icon/default.svg" + }, + { + "id": 22655, + "productCode": "PMYSQLPROXY", + "name": "MySQL Proxy", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/22655/542161/icon/default.svg" + }, + { + "id": 18387, + "productCode": "PNEONPRO", + "name": "NEON Nette Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18387/666037/icon/default.svg" + }, + { + "id": 19977, + "productCode": "PNETLIFY", + "name": "Netlify Dashboard", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19977/594542/icon/default.svg" + }, + { + "id": 19963, + "productCode": "PNEXTSKETCH", + "name": "NextSketch", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19963/272018/icon/default.svg" + }, + { + "id": 20805, + "productCode": "PNEXTSKETCHTWO", + "name": "NextSketch2", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20805/308349/icon/default.svg" + }, + { + "id": 23765, + "productCode": "PNFLUTTER", + "name": "NFlutter", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23765/492994/icon/default.svg" + }, + { + "id": 18280, + "productCode": "PNGINX", + "name": "Nginx Configuration Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18280/699005/icon/default.svg" + }, + { + "id": 19205, + "productCode": "PNGROK", + "name": "Ngrok", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/19205/666812/icon/default.svg" + }, + { + "id": 21833, + "productCode": "PNOSQLNAVMDB", + "name": "NoSQL Navigator For MongoDB", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/21833/664767/icon/default.svg" + }, + { + "id": 22128, + "productCode": "PNPMPACKAGEJSON", + "name": "NPM Package Json", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22128/594555/icon/default.svg" + }, + { + "id": 13499, + "productCode": "PODOO", + "name": "Odoo", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13499/696778/icon/default.svg" + }, + { + "id": 13151, + "productCode": "POFFICEFLOOR", + "name": "OfficeFloor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13151/131867/icon/default.svg" + }, + { + "id": 21410, + "productCode": "PONEGAICOPILOT", + "name": "Onegai Copilot", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/21410/693603/icon/default.svg" + }, + { + "id": 19889, + "productCode": "POPENAPICRUDWIZ", + "name": "OpenAPI CRUD Wizard", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/19889/478359/icon/default.svg" + }, + { + "id": 12887, + "productCode": "POPENAPI", + "name": "OpenAPI Editor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/12887/658050/icon/default.svg" + }, + { + "id": 12626, + "productCode": "PORCHIDE", + "name": "OrchidE - Ansible Language Support", + "pricingModel": "PAID" + }, + { + "id": 21353, + "productCode": "POWASPIDEVULSCA", + "name": "OWASP IDE-VulScanner", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/21353/584074/icon/default.svg" + }, + { + "id": 17440, + "productCode": "PHPBUILDER", + "name": "PHP Data Object Generator", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/17440/458368/icon/default.svg" + }, + { + "id": 18981, + "productCode": "PPHPHOUDINI", + "name": "PHP Houdini", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18981/271233/icon/default.svg" + }, + { + "id": 16935, + "productCode": "PHPEAPLUGIN", + "name": "Php Inspections (EA Ultimate)", + "pricingModel": "PAID" + }, + { + "id": 23869, + "productCode": "PPKXCODEGENERAT", + "name": "PKXCodeGenerator", + "pricingModel": "PAID" + }, + { + "id": 14821, + "productCode": "PPUMLSTUDIO", + "name": "PlantUML Studio", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14821/172312/icon/default.svg" + }, + { + "id": 13733, + "productCode": "PPOJOTOJSONSCH", + "name": "POJO to JSON Schema", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13733/95154/icon/default.svg" + }, + { + "id": 22429, + "productCode": "PPOLARISTOMCATS", + "name": "Polaris Tomcat Server", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22429/555142/icon/default.svg" + }, + { + "id": 25812, + "productCode": "PLANGUAGEPACKPL", + "name": "Polish Language Pack / Lokalizacja IDE Na Język Polski", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25812/635934/icon/default.svg" + }, + { + "id": 21361, + "productCode": "POLYBPMNGDNEXT", + "name": "PolyBPMN visualizer", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/21361/592087/icon/default.svg" + }, + { + "id": 24542, + "productCode": "PLANGUAGEPACKPT", + "name": "Portuguese Language Pack / Pacote De Idioma Português", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24542/635943/icon/default.svg" + }, + { + "id": 26724, + "productCode": "PLOCALIZATIONPT", + "name": "Portuguese Language Pack – Português", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26724/690241/icon/default.svg" + }, + { + "id": 25582, + "productCode": "PPRFLOWTRACKER", + "name": "PR-FlowTracker", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25582/628502/icon/default.svg" + }, + { + "id": 25326, + "productCode": "PPRSNAPVIEW", + "name": "PR-SnapView", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25326/604773/icon/default.svg" + }, + { + "id": 14434, + "productCode": "PQMLEDITOR", + "name": "QmlEditor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14434/314029/icon/default.svg" + }, + { + "id": 16405, + "productCode": "PQTSQSSEDITOR", + "name": "Qt Style Sheets Editor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/16405/193379/icon/default.svg" + }, + { + "id": 19027, + "productCode": "PQUARKUSHELPER", + "name": "Quarkus Assistant", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19027/477162/icon/default.svg" + }, + { + "id": 18269, + "productCode": "PQUERYFLAG", + "name": "QueryFlag", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18269/633474/icon/default.svg" + }, + { + "id": 26348, + "productCode": "PCODETOOLKIT", + "name": "Quickly-Code-Toolkit", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26348/678215/icon/default.svg" + }, + { + "id": 10080, + "productCode": "PRAINBOWBRACKET", + "name": "Rainbow Brackets", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/10080/689210/icon/default.svg" + }, + { + "id": 19316, + "productCode": "PRANCHER", + "name": "Rancher", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19316/656524/icon/default.svg" + }, + { + "id": 26218, + "productCode": "PRCHSPRINGCODEG", + "name": "rch-spring-code-generation", + "pricingModel": "PAID" + }, + { + "id": 13838, + "productCode": "PRDFANDSPARQL", + "name": "RDF and SPARQL", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13838/699002/icon/default.svg" + }, + { + "id": 9564, + "productCode": "PRNCONSOLE", + "name": "React Native Console", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/9564/697769/icon/default.svg" + }, + { + "id": 12820, + "productCode": "PREDIS", + "name": "Redis", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/12820/666089/icon/default.svg" + }, + { + "id": 19360, + "productCode": "PREDISCLIHELPER", + "name": "Redis Client", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19360/612259/icon/default.svg" + }, + { + "id": 15722, + "productCode": "PREDISMANAGER", + "name": "Redis Manager", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15722/270538/icon/default.svg" + }, + { + "id": 19599, + "productCode": "PREDISS", + "name": "Redis Operator", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19599/558218/icon/default.svg" + }, + { + "id": 16160, + "productCode": "PREDISTOOLS", + "name": "Redis-Cli", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/16160/619509/icon/default.svg" + }, + { + "id": 15433, + "productCode": "PREGEXTOOL", + "name": "Regex Tool", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15433/521938/icon/default.svg" + }, + { + "id": 24265, + "productCode": "PDLXRJAS", + "name": "Resilience4j Annotation Support", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24265/598747/icon/default.svg" + }, + { + "id": 22726, + "productCode": "PRETROFITASSIT", + "name": "Retrofit Assistant", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22726/514538/icon/default.svg" + }, + { + "id": 24544, + "productCode": "PLANGUAGEPACKRU", + "name": "Russian Language Pack / Локализация IDE На Русский Язык", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24544/635933/icon/default.svg" + }, + { + "id": 26495, + "productCode": "PLOCALIZATIONRU", + "name": "Russian Language Pack – Русский Язык", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26495/684251/icon/default.svg" + }, + { + "id": 22407, + "productCode": "PRR", + "name": "Rust", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22407/698058/icon/default.svg" + }, + { + "id": 22428, + "productCode": "PWXUQRYTOXCRSEO", + "name": "RustTool", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22428/634725/icon/default.svg" + }, + { + "id": 13668, + "productCode": "PSFCC", + "name": "Salesforce B2C Commerce (SFCC)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/13668/634476/icon/default.svg" + }, + { + "id": 22748, + "productCode": "PSCHEMAREGVIEW", + "name": "Schema Registry Viewer", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22748/496140/icon/default.svg" + }, + { + "id": 12108, + "productCode": "PSCIPIO", + "name": "Scipio ERP Integration", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/12108/692856/icon/default.svg" + }, + { + "id": 19556, + "productCode": "PSCREENCODEPRO", + "name": "ScreenCodePro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19556/198086/icon/default.svg" + }, + { + "id": 22232, + "productCode": "PSENTRY", + "name": "Sentry", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22232/668882/icon/default.svg" + }, + { + "id": 15945, + "productCode": "PSENTRYINTEG", + "name": "Sentry Integration", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15945/111527/icon/default.svg" + }, + { + "id": 25807, + "productCode": "PSEQUENCECPP", + "name": "SequenceDiagram C/C++", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25807/698045/icon/default.svg" + }, + { + "id": 8286, + "productCode": "PSEQUENCEDIAGRA", + "name": "SequenceDiagram Core", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/8286/667138/icon/default.svg" + }, + { + "id": 25623, + "productCode": "PSEQUENCEGO", + "name": "SequenceDiagram Go", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25623/686539/icon/default.svg" + }, + { + "id": 24973, + "productCode": "PSEQUENCEJS", + "name": "SequenceDiagram JS", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24973/686111/icon/default.svg" + }, + { + "id": 25978, + "productCode": "PSEQUENCEPYTHON", + "name": "SequenceDiagram Python", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25978/689195/icon/default.svg" + }, + { + "id": 25376, + "productCode": "PSEQUENCERUST", + "name": "SequenceDiagram Rust", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25376/682159/icon/default.svg" + }, + { + "id": 23115, + "productCode": "PSEQDIAORG", + "name": "SequenceDiagram.org", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23115/675161/icon/default.svg" + }, + { + "id": 19727, + "productCode": "PSEQUENCEOUTLIN", + "name": "SequenceOutline", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19727/561485/icon/default.svg" + }, + { + "id": 14437, + "productCode": "PSI", + "name": "Shared Project Indexes", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14437/692150/icon/default.svg" + }, + { + "id": 7410, + "productCode": "PSWPLUGIN", + "name": "Shopware", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/7410/586732/icon/default.svg" + }, + { + "id": 18151, + "productCode": "PBEANCONVERTER", + "name": "Simple Object Copy", + "pricingModel": "PAID" + }, + { + "id": 20243, + "productCode": "PSKOL", + "name": "Skol", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20243/667209/icon/default.svg" + }, + { + "id": 24754, + "productCode": "PSMARTCRYPTOR", + "name": "Smart Cryptor", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24754/651506/icon/default.svg" + }, + { + "id": 25751, + "productCode": "PSMARTINPUT", + "name": "Smart Input Pro (Japan, South Korea, Russia & more)", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/25751/682487/icon/default.svg" + }, + { + "id": 14053, + "productCode": "PSMARTJUMP", + "name": "Smart Jump", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14053/274462/icon/default.svg" + }, + { + "id": 24555, + "productCode": "PSMARTTOMCATPRO", + "name": "Smart Tomcat Pro", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/24555/620387/icon/default.svg" + }, + { + "id": 24889, + "productCode": "PSNAPSHOTSFORAI", + "name": "Snapshots for AI", + "pricingModel": "PAID" + }, + { + "id": 20565, + "productCode": "PTAILWINDTOOLS", + "name": "Snippet Toolkit for Tailwind CSS", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20565/502104/icon/default.svg" + }, + { + "id": 23743, + "productCode": "PSOTERISECURITY", + "name": "Soteri Secret Scanner", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23743/587653/icon/default.svg" + }, + { + "id": 22318, + "productCode": "PSOURCESYNCPRO", + "name": "Source Synchronizer Pro", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22318/503948/icon/default.svg" + }, + { + "id": 24541, + "productCode": "PLANGUAGEPACKES", + "name": "Spanish Language Pack / Paquete De Idioma Español", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24541/635935/icon/default.svg" + }, + { + "id": 26581, + "productCode": "PLOCALIZATIONES", + "name": "Spanish Language Pack – Español", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26581/684253/icon/default.svg" + }, + { + "id": 26079, + "productCode": "PSPARKSQLHELPER", + "name": "Spark SQL Helper", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26079/671851/icon/default.svg" + }, + { + "id": 14338, + "productCode": "PSPARQL", + "name": "SPARQL", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/14338/165810/icon/default.svg" + }, + { + "id": 22635, + "productCode": "PSPEECHTOTEXT", + "name": "Speech-To-Text (AWS Transcribe)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22635/388024/icon/default.svg" + }, + { + "id": 18622, + "productCode": "PSPRINGBOOTIDEA", + "name": "Spring Boot Helper", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18622/623187/icon/default.svg" + }, + { + "id": 22304, + "productCode": "PSRCODEGEN", + "name": "Spring Rest Code Generator", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22304/391163/icon/default.svg" + }, + { + "id": 15574, + "productCode": "PFLYINSKYZJBZ", + "name": "spring-assistant-@valueToYml", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15574/412050/icon/default.svg" + }, + { + "id": 25538, + "productCode": "PSQLCOP", + "name": "SQL COP", + "pricingModel": "PAID" + }, + { + "id": 19660, + "productCode": "PAWSQLADVISOR", + "name": "SQL Optimizer,Index Advisor MySQL/Postgre/Oracle, Tune by PawSQL", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19660/690227/icon/default.svg" + }, + { + "id": 24205, + "productCode": "PSQLDEBUGGER", + "name": "SQLDebugger", + "pricingModel": "PAID" + }, + { + "id": 20534, + "productCode": "PSQLFLUFFLINTER", + "name": "Sqlfluff Linter (Ultimate Edition)", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20534/666844/icon/default.svg" + }, + { + "id": 22742, + "productCode": "PSQLFORMATTER", + "name": "SQLFormatter", + "pricingModel": "PAID" + }, + { + "id": 22713, + "productCode": "PDBSSH", + "name": "SSH Tool", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/22713/681987/icon/default.svg" + }, + { + "id": 24625, + "productCode": "PKUOYGHHDS", + "name": "SSHMatrix", + "pricingModel": "PAID" + }, + { + "id": 15851, + "productCode": "PSTORMSECTIONS", + "name": "StormSections", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/15851/681043/icon/default.svg" + }, + { + "id": 14482, + "productCode": "PSTRKER", + "name": "Stryker", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/14482/134911/icon/default.svg" + }, + { + "id": 22150, + "productCode": "PSWIFTSUPPORT", + "name": "Swift Support", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/22150/693948/icon/default.svg" + }, + { + "id": 23458, + "productCode": "PSWISSKITCONVER", + "name": "SwissKit Converter", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23458/538669/icon/default.svg" + }, + { + "id": 7219, + "productCode": "PSYMFONYPLUGIN", + "name": "Symfony Support", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/7219/605730/icon/default.svg" + }, + { + "id": 10695, + "productCode": "PVLOG", + "name": "SystemVerilog", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/10695/163626/icon/default.svg" + }, + { + "id": 26514, + "productCode": "PSYSTEMVERILOGL", + "name": "SystemVerilog Language Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26514/682287/icon/default.svg" + }, + { + "id": 14203, + "productCode": "PSVERILOG", + "name": "SystemVerilog Studio", + "pricingModel": "PAID" + }, + { + "id": 23937, + "productCode": "PTAILWINDFOLD", + "name": "Tailwind Fold", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/23937/688749/icon/default.svg" + }, + { + "id": 22685, + "productCode": "PNEKOCAT", + "name": "TamaCat Web Browser", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/22685/698234/icon/default.svg" + }, + { + "id": 18857, + "productCode": "PTERMINAL", + "name": "Terminal Pro", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/18857/699167/icon/default.svg" + }, + { + "id": 26761, + "productCode": "PTIMETRACKERX", + "name": "TimeTracker X", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26761/699452/icon/default.svg" + }, + { + "id": 20050, + "productCode": "PTLDRAI", + "name": "TLDR", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/20050/394140/icon/default.svg" + }, + { + "id": 14384, + "productCode": "PTOOLSET", + "name": "Toolset", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/14384/681853/icon/default.svg" + }, + { + "id": 20683, + "productCode": "PTRAVISCI", + "name": "Travis CI Dashboard", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/20683/594543/icon/default.svg" + }, + { + "id": 25813, + "productCode": "PLANGUAGEPACKTR", + "name": "Turkish Language Pack / IDE'nin Türkçe'ye Yerelleştirilmesi", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/25813/635938/icon/default.svg" + }, + { + "id": 18232, + "productCode": "PDJANGOTPLPEP", + "name": "Typed Django Template", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/18232/370564/icon/default.svg" + }, + { + "id": 19675, + "productCode": "PUNIAPPSUPPORT", + "name": "Uniapp Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/19675/625817/icon/default.svg" + }, + { + "id": 21813, + "productCode": "PVERILOGLANGUAG", + "name": "Verilog Language Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/21813/666097/icon/default.svg" + }, + { + "id": 26267, + "productCode": "PVHDLLANGUAGESU", + "name": "VHDL Language Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26267/671860/icon/default.svg" + }, + { + "id": 23086, + "productCode": "PVOQAL", + "name": "Voqal Coder", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23086/619943/icon/default.svg" + }, + { + "id": 24816, + "productCode": "PVSCODEICONS", + "name": "VSCode Icons", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/24816/635813/icon/default.svg" + }, + { + "id": 18860, + "productCode": "PWIREMOCHA", + "name": "WireMocha", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18860/687614/icon/default.svg" + }, + { + "id": 7232, + "productCode": "PWLANG", + "name": "Wolfram Language", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/7232/650671/icon/default.svg" + }, + { + "id": 18425, + "productCode": "PXSDVISUALIZER", + "name": "XSD / WSDL Visualizer", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/18425/695783/icon/default.svg" + }, + { + "id": 19024, + "productCode": "POXYXSDJSONSCH", + "name": "XSD to JSON Schema", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/19024/627712/icon/default.svg" + }, + { + "id": 9739, + "productCode": "PYAOQIANGBPMN", + "name": "Yaoqiang BPMN Editor", + "pricingModel": "PAID" + }, + { + "id": 23693, + "productCode": "PYIIFRAMEWORK", + "name": "Yii2 Framework Support", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/23693/671528/icon/default.svg" + }, + { + "id": 26463, + "productCode": "PYIMICODEGEN", + "name": "Yimi CodeGen", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/26463/699631/icon/default.svg" + }, + { + "id": 12437, + "productCode": "PZENUML", + "name": "ZenUML Support", + "pricingModel": "FREEMIUM", + "icon": "https://plugins.jetbrains.com/files/12437/656093/icon/default.svg" + }, + { + "id": 15773, + "productCode": "PZEROCODE", + "name": "Zerocode Scenario Helper", + "pricingModel": "PAID", + "icon": "https://plugins.jetbrains.com/files/15773/155295/icon/default.svg" + }, + { + "id": 18341, + "productCode": "PZKA", + "name": "Zookeeper-Admin", + "pricingModel": "PAID" } -] +] \ No newline at end of file